From 091de7db7d20294bb8d64d825f4786c1e49dad68 Mon Sep 17 00:00:00 2001 From: mattyrob Date: Wed, 31 Jan 2024 18:40:16 +0000 Subject: [PATCH] Release 1.7.2 --- index.php | 2 +- license.txt | 4 +- readme.html | 96 +- wp-activate.php | 78 +- wp-admin/about.php | 478 +- wp-admin/admin-ajax.php | 66 +- wp-admin/admin-footer.php | 35 +- wp-admin/admin-functions.php | 4 +- wp-admin/admin-header.php | 113 +- wp-admin/admin-post.php | 33 +- wp-admin/admin.php | 143 +- wp-admin/async-upload.php | 90 +- wp-admin/authorize-application.php | 325 - wp-admin/comment.php | 123 +- wp-admin/credits.php | 10 +- wp-admin/css/about-rtl.css | 1399 +- wp-admin/css/about-rtl.min.css | 2 +- wp-admin/css/about.css | 1399 +- wp-admin/css/about.min.css | 2 +- wp-admin/css/admin-menu-rtl.css | 299 +- wp-admin/css/admin-menu-rtl.min.css | 2 +- wp-admin/css/admin-menu.css | 299 +- wp-admin/css/admin-menu.min.css | 2 +- wp-admin/css/code-editor-rtl.css | 20 +- wp-admin/css/code-editor-rtl.min.css | 2 +- wp-admin/css/code-editor.css | 20 +- wp-admin/css/code-editor.min.css | 2 +- wp-admin/css/color-picker-rtl.css | 120 +- wp-admin/css/color-picker-rtl.min.css | 2 +- wp-admin/css/color-picker.css | 120 +- wp-admin/css/color-picker.min.css | 2 +- wp-admin/css/colors/_admin.scss | 351 +- wp-admin/css/colors/_mixins.scss | 53 +- wp-admin/css/colors/_variables.scss | 16 +- wp-admin/css/colors/blue/colors-rtl.css | 357 +- wp-admin/css/colors/blue/colors-rtl.min.css | 2 +- wp-admin/css/colors/blue/colors.css | 357 +- wp-admin/css/colors/blue/colors.min.css | 2 +- wp-admin/css/colors/blue/colors.scss | 3 - wp-admin/css/colors/coffee/colors-rtl.css | 316 +- wp-admin/css/colors/coffee/colors-rtl.min.css | 2 +- wp-admin/css/colors/coffee/colors.css | 316 +- wp-admin/css/colors/coffee/colors.min.css | 2 +- wp-admin/css/colors/coffee/colors.scss | 2 - wp-admin/css/colors/ectoplasm/colors-rtl.css | 357 +- .../css/colors/ectoplasm/colors-rtl.min.css | 2 +- wp-admin/css/colors/ectoplasm/colors.css | 357 +- wp-admin/css/colors/ectoplasm/colors.min.css | 2 +- wp-admin/css/colors/ectoplasm/colors.scss | 3 - wp-admin/css/colors/light/colors-rtl.css | 367 +- wp-admin/css/colors/light/colors-rtl.min.css | 2 +- wp-admin/css/colors/light/colors.css | 367 +- wp-admin/css/colors/light/colors.min.css | 2 +- wp-admin/css/colors/light/colors.scss | 15 +- wp-admin/css/colors/midnight/colors-rtl.css | 359 +- .../css/colors/midnight/colors-rtl.min.css | 2 +- wp-admin/css/colors/midnight/colors.css | 359 +- wp-admin/css/colors/midnight/colors.min.css | 2 +- wp-admin/css/colors/midnight/colors.scss | 4 - wp-admin/css/colors/modern/colors-rtl.css | 771 - wp-admin/css/colors/modern/colors-rtl.min.css | 2 - wp-admin/css/colors/modern/colors.css | 771 - wp-admin/css/colors/modern/colors.min.css | 2 - wp-admin/css/colors/modern/colors.scss | 14 - wp-admin/css/colors/ocean/colors-rtl.css | 316 +- wp-admin/css/colors/ocean/colors-rtl.min.css | 2 +- wp-admin/css/colors/ocean/colors.css | 316 +- wp-admin/css/colors/ocean/colors.min.css | 2 +- wp-admin/css/colors/ocean/colors.scss | 2 - wp-admin/css/colors/sunrise/colors-rtl.css | 359 +- .../css/colors/sunrise/colors-rtl.min.css | 2 +- wp-admin/css/colors/sunrise/colors.css | 359 +- wp-admin/css/colors/sunrise/colors.min.css | 2 +- wp-admin/css/colors/sunrise/colors.scss | 1 - wp-admin/css/common-rtl.css | 1117 +- wp-admin/css/common-rtl.min.css | 4 +- wp-admin/css/common.css | 1117 +- wp-admin/css/common.min.css | 4 +- wp-admin/css/customize-controls-rtl.css | 575 +- wp-admin/css/customize-controls-rtl.min.css | 2 +- wp-admin/css/customize-controls.css | 575 +- wp-admin/css/customize-controls.min.css | 2 +- wp-admin/css/customize-nav-menus-rtl.css | 104 +- wp-admin/css/customize-nav-menus-rtl.min.css | 2 +- wp-admin/css/customize-nav-menus.css | 104 +- wp-admin/css/customize-nav-menus.min.css | 2 +- wp-admin/css/customize-widgets-rtl.css | 133 +- wp-admin/css/customize-widgets-rtl.min.css | 2 +- wp-admin/css/customize-widgets.css | 133 +- wp-admin/css/customize-widgets.min.css | 2 +- wp-admin/css/dashboard-rtl.css | 787 +- wp-admin/css/dashboard-rtl.min.css | 2 +- wp-admin/css/dashboard.css | 787 +- wp-admin/css/dashboard.min.css | 2 +- wp-admin/css/deprecated-media-rtl.css | 44 +- wp-admin/css/deprecated-media-rtl.min.css | 2 +- wp-admin/css/deprecated-media.css | 44 +- wp-admin/css/deprecated-media.min.css | 2 +- wp-admin/css/edit-rtl.css | 783 +- wp-admin/css/edit-rtl.min.css | 2 +- wp-admin/css/edit.css | 783 +- wp-admin/css/edit.min.css | 2 +- wp-admin/css/forms-rtl.css | 816 +- wp-admin/css/forms-rtl.min.css | 2 +- wp-admin/css/forms.css | 816 +- wp-admin/css/forms.min.css | 2 +- wp-admin/css/ie-rtl.css | 770 + wp-admin/css/ie-rtl.min.css | 2 + wp-admin/css/ie.css | 770 + wp-admin/css/ie.min.css | 2 + wp-admin/css/install-rtl.css | 255 +- wp-admin/css/install-rtl.min.css | 2 +- wp-admin/css/install.css | 255 +- wp-admin/css/install.min.css | 2 +- wp-admin/css/list-tables-rtl.css | 792 +- wp-admin/css/list-tables-rtl.min.css | 2 +- wp-admin/css/list-tables.css | 792 +- wp-admin/css/list-tables.min.css | 2 +- wp-admin/css/login-rtl.css | 331 +- wp-admin/css/login-rtl.min.css | 2 +- wp-admin/css/login.css | 331 +- wp-admin/css/login.min.css | 2 +- wp-admin/css/media-rtl.css | 428 +- wp-admin/css/media-rtl.min.css | 2 +- wp-admin/css/media.css | 428 +- wp-admin/css/media.min.css | 2 +- wp-admin/css/nav-menus-rtl.css | 276 +- wp-admin/css/nav-menus-rtl.min.css | 2 +- wp-admin/css/nav-menus.css | 276 +- wp-admin/css/nav-menus.min.css | 2 +- wp-admin/css/revisions-rtl.css | 131 +- wp-admin/css/revisions-rtl.min.css | 2 +- wp-admin/css/revisions.css | 131 +- wp-admin/css/revisions.min.css | 2 +- wp-admin/css/site-health-rtl.css | 357 - wp-admin/css/site-health-rtl.min.css | 2 - wp-admin/css/site-health.css | 357 - wp-admin/css/site-health.min.css | 2 - wp-admin/css/themes-rtl.css | 387 +- wp-admin/css/themes-rtl.min.css | 2 +- wp-admin/css/themes.css | 389 +- wp-admin/css/themes.min.css | 2 +- wp-admin/css/widgets-rtl.css | 252 +- wp-admin/css/widgets-rtl.min.css | 2 +- wp-admin/css/widgets.css | 252 +- wp-admin/css/widgets.min.css | 2 +- wp-admin/css/wp-admin-rtl.css | 1 - wp-admin/css/wp-admin-rtl.min.css | 1 - wp-admin/css/wp-admin.css | 1 - wp-admin/css/wp-admin.min.css | 1 - wp-admin/custom-background.php | 2 +- wp-admin/custom-header.php | 4 +- wp-admin/customize.php | 65 +- wp-admin/edit-comments.php | 133 +- wp-admin/edit-form-advanced.php | 428 +- wp-admin/edit-form-comment.php | 144 +- wp-admin/edit-link-form.php | 50 +- wp-admin/edit-tag-form.php | 198 +- wp-admin/edit-tags.php | 262 +- wp-admin/edit.php | 192 +- wp-admin/erase-personal-data.php | 165 - wp-admin/export-personal-data.php | 165 - wp-admin/export.php | 94 +- wp-admin/freedoms.php | 11 +- wp-admin/images/classicpress-logo-white.svg | 1 - ...rdmark-gradient-on-transparent-600x115.png | Bin 0 -> 12408 bytes ...-logo-wordmark-gradient-on-transparent.svg | 1 + wp-admin/images/classicpress-logo.png | Bin 3860 -> 0 bytes wp-admin/images/classicpress-logo.svg | 1 - wp-admin/images/cp-logo-aqua.png | Bin 1986 -> 0 bytes wp-admin/images/cp-logo-white.png | Bin 3262 -> 0 bytes wp-admin/images/w-logo-blue.png | Bin 0 -> 2888 bytes wp-admin/images/w-logo-white.png | Bin 0 -> 4587 bytes wp-admin/images/wordpress-logo-white.svg | 1 + wp-admin/images/wordpress-logo.png | Bin 0 -> 5544 bytes wp-admin/images/wordpress-logo.svg | 1 + wp-admin/import.php | 44 +- wp-admin/includes/admin-filters.php | 46 +- wp-admin/includes/admin.php | 21 +- wp-admin/includes/ajax-actions.php | 1491 +- wp-admin/includes/bookmark.php | 113 +- .../class-automatic-upgrader-skin.php | 56 +- .../class-bulk-plugin-upgrader-skin.php | 27 +- .../class-bulk-theme-upgrader-skin.php | 28 +- .../includes/class-bulk-upgrader-skin.php | 69 +- wp-admin/includes/class-core-upgrader.php | 104 +- wp-admin/includes/class-custom-background.php | 174 +- .../includes/class-custom-image-header.php | 436 +- .../includes/class-file-upload-upgrader.php | 51 +- wp-admin/includes/class-ftp-pure.php | 14 +- wp-admin/includes/class-ftp-sockets.php | 22 +- wp-admin/includes/class-ftp.php | 75 +- .../class-language-pack-upgrader-skin.php | 19 +- .../includes/class-language-pack-upgrader.php | 145 +- wp-admin/includes/class-pclzip.php | 85 +- .../includes/class-plugin-installer-skin.php | 101 +- .../includes/class-plugin-upgrader-skin.php | 58 +- wp-admin/includes/class-plugin-upgrader.php | 267 +- .../includes/class-theme-installer-skin.php | 107 +- .../includes/class-theme-upgrader-skin.php | 59 +- wp-admin/includes/class-theme-upgrader.php | 254 +- .../class-walker-category-checklist.php | 52 +- .../class-walker-nav-menu-checklist.php | 107 +- .../includes/class-walker-nav-menu-edit.php | 165 +- .../includes/class-wp-ajax-upgrader-skin.php | 78 +- ...ss-wp-application-passwords-list-table.php | 267 - .../includes/class-wp-automatic-updater.php | 771 +- .../includes/class-wp-comments-list-table.php | 528 +- wp-admin/includes/class-wp-debug-data.php | 1672 - .../includes/class-wp-filesystem-base.php | 406 +- .../includes/class-wp-filesystem-direct.php | 321 +- .../includes/class-wp-filesystem-ftpext.php | 314 +- .../class-wp-filesystem-ftpsockets.php | 306 +- .../includes/class-wp-filesystem-ssh2.php | 354 +- wp-admin/includes/class-wp-importer.php | 97 +- .../includes/class-wp-internal-pointers.php | 82 +- .../includes/class-wp-links-list-table.php | 96 +- .../includes/class-wp-list-table-compat.php | 21 +- wp-admin/includes/class-wp-list-table.php | 704 +- .../includes/class-wp-media-list-table.php | 447 +- .../includes/class-wp-ms-sites-list-table.php | 325 +- .../class-wp-ms-themes-list-table.php | 395 +- .../includes/class-wp-ms-users-list-table.php | 250 +- .../class-wp-plugin-install-list-table.php | 274 +- .../includes/class-wp-plugins-list-table.php | 766 +- .../class-wp-post-comments-list-table.php | 9 +- .../includes/class-wp-posts-list-table.php | 1270 +- ...rivacy-data-export-requests-list-table.php | 160 - ...ivacy-data-removal-requests-list-table.php | 167 - .../class-wp-privacy-policy-content.php | 672 - .../class-wp-privacy-requests-table.php | 559 - wp-admin/includes/class-wp-screen.php | 469 +- .../class-wp-site-health-auto-updates.php | 458 - wp-admin/includes/class-wp-site-health.php | 3387 -- wp-admin/includes/class-wp-site-icon.php | 65 +- .../includes/class-wp-terms-list-table.php | 368 +- .../class-wp-theme-install-list-table.php | 161 +- .../includes/class-wp-themes-list-table.php | 91 +- wp-admin/includes/class-wp-upgrader-skin.php | 124 +- wp-admin/includes/class-wp-upgrader-skins.php | 5 +- wp-admin/includes/class-wp-upgrader.php | 343 +- .../includes/class-wp-users-list-table.php | 315 +- wp-admin/includes/comment.php | 78 +- wp-admin/includes/continents-cities.php | 17 +- wp-admin/includes/dashboard.php | 888 +- wp-admin/includes/deprecated.php | 606 +- wp-admin/includes/edit-tag-messages.php | 6 +- wp-admin/includes/export.php | 289 +- wp-admin/includes/file.php | 1756 +- wp-admin/includes/image-edit.php | 466 +- wp-admin/includes/image.php | 796 +- wp-admin/includes/import.php | 45 +- wp-admin/includes/list-table.php | 88 +- wp-admin/includes/media.php | 2030 +- wp-admin/includes/menu.php | 113 +- wp-admin/includes/meta-boxes.php | 1323 +- wp-admin/includes/misc.php | 1273 +- wp-admin/includes/ms-admin-filters.php | 23 +- wp-admin/includes/ms-deprecated.php | 77 +- wp-admin/includes/ms.php | 514 +- wp-admin/includes/nav-menu.php | 294 +- wp-admin/includes/network.php | 369 +- wp-admin/includes/noop.php | 13 +- wp-admin/includes/options.php | 59 +- wp-admin/includes/plugin-install.php | 353 +- wp-admin/includes/plugin.php | 1451 +- wp-admin/includes/post.php | 818 +- wp-admin/includes/privacy-tools.php | 968 - wp-admin/includes/revision.php | 116 +- wp-admin/includes/schema.php | 894 +- wp-admin/includes/screen.php | 72 +- wp-admin/includes/taxonomy.php | 108 +- wp-admin/includes/template.php | 1122 +- wp-admin/includes/theme-install.php | 75 +- wp-admin/includes/theme.php | 656 +- wp-admin/includes/translation-install.php | 73 +- wp-admin/includes/update-core.php | 786 +- wp-admin/includes/update.php | 465 +- wp-admin/includes/upgrade.php | 978 +- wp-admin/includes/user.php | 1328 +- wp-admin/includes/widgets.php | 121 +- wp-admin/index.php | 73 +- wp-admin/install-helper.php | 165 +- wp-admin/install.php | 600 +- wp-admin/js/accordion.js | 93 + wp-admin/js/accordion.min.js | 1 + wp-admin/js/application-passwords.js | 219 - wp-admin/js/application-passwords.min.js | 1 - wp-admin/js/auth-app.js | 165 - wp-admin/js/auth-app.min.js | 1 - wp-admin/js/code-editor.js | 55 +- wp-admin/js/code-editor.min.js | 2 +- wp-admin/js/color-picker.js | 125 +- wp-admin/js/color-picker.min.js | 2 +- wp-admin/js/comment.js | 41 +- wp-admin/js/comment.min.js | 2 +- wp-admin/js/common.js | 1156 +- wp-admin/js/common.min.js | 2 +- wp-admin/js/custom-background.js | 64 +- wp-admin/js/custom-background.min.js | 2 +- wp-admin/js/custom-header.js | 37 +- wp-admin/js/customize-controls.js | 1493 +- wp-admin/js/customize-controls.min.js | 2 +- wp-admin/js/customize-nav-menus.js | 445 +- wp-admin/js/customize-nav-menus.min.js | 2 +- wp-admin/js/customize-widgets.js | 484 +- wp-admin/js/customize-widgets.min.js | 2 +- wp-admin/js/dashboard.js | 196 +- wp-admin/js/dashboard.min.js | 2 +- wp-admin/js/edit-comments.js | 571 +- wp-admin/js/edit-comments.min.js | 2 +- wp-admin/js/editor-expand.js | 287 +- wp-admin/js/editor-expand.min.js | 2 +- wp-admin/js/editor.js | 133 +- wp-admin/js/editor.min.js | 2 +- wp-admin/js/gallery.js | 34 +- wp-admin/js/gallery.min.js | 2 +- wp-admin/js/image-edit.js | 559 +- wp-admin/js/image-edit.min.js | 2 +- wp-admin/js/inline-edit-post.js | 252 +- wp-admin/js/inline-edit-post.min.js | 2 +- wp-admin/js/inline-edit-tax.js | 84 +- wp-admin/js/inline-edit-tax.min.js | 2 +- wp-admin/js/iris.min.js | 7 +- wp-admin/js/language-chooser.js | 20 +- wp-admin/js/language-chooser.min.js | 2 +- wp-admin/js/link.js | 105 +- wp-admin/js/link.min.js | 2 +- wp-admin/js/media-gallery.js | 12 +- wp-admin/js/media-gallery.min.js | 2 +- wp-admin/js/media-upload.js | 64 +- wp-admin/js/media-upload.min.js | 2 +- wp-admin/js/media.js | 117 +- wp-admin/js/media.min.js | 2 +- wp-admin/js/nav-menu.js | 533 +- wp-admin/js/nav-menu.min.js | 2 +- wp-admin/js/password-strength-meter.js | 111 +- wp-admin/js/password-strength-meter.min.js | 2 +- wp-admin/js/plugin-install.js | 49 +- wp-admin/js/plugin-install.min.js | 2 +- wp-admin/js/post.js | 445 +- wp-admin/js/post.min.js | 2 +- wp-admin/js/postbox.js | 423 +- wp-admin/js/postbox.min.js | 2 +- wp-admin/js/privacy-tools.js | 346 - wp-admin/js/privacy-tools.min.js | 1 - wp-admin/js/revisions.js | 138 +- wp-admin/js/revisions.min.js | 2 +- wp-admin/js/set-post-thumbnail.js | 18 +- wp-admin/js/set-post-thumbnail.min.js | 2 +- wp-admin/js/site-health.js | 455 - wp-admin/js/site-health.min.js | 1 - wp-admin/js/svg-painter.js | 40 +- wp-admin/js/svg-painter.min.js | 2 +- wp-admin/js/tags-box.js | 243 +- wp-admin/js/tags-box.min.js | 2 +- wp-admin/js/tags-suggest.js | 62 +- wp-admin/js/tags-suggest.min.js | 2 +- wp-admin/js/tags.js | 87 +- wp-admin/js/tags.min.js | 2 +- wp-admin/js/theme-plugin-editor.js | 166 +- wp-admin/js/theme-plugin-editor.min.js | 10 +- wp-admin/js/theme.js | 608 +- wp-admin/js/theme.min.js | 2 +- wp-admin/js/updates.js | 1161 +- wp-admin/js/updates.min.js | 2 +- wp-admin/js/user-profile.js | 330 +- wp-admin/js/user-profile.min.js | 2 +- wp-admin/js/user-suggest.js | 36 +- wp-admin/js/user-suggest.min.js | 2 +- wp-admin/js/widgets.js | 419 +- wp-admin/js/widgets.min.js | 2 +- wp-admin/js/widgets/custom-html-widgets.js | 103 +- .../js/widgets/custom-html-widgets.min.js | 2 +- wp-admin/js/widgets/media-audio-widget.js | 28 +- wp-admin/js/widgets/media-gallery-widget.js | 75 +- wp-admin/js/widgets/media-image-widget.js | 24 +- wp-admin/js/widgets/media-video-widget.js | 36 +- wp-admin/js/widgets/media-widgets.js | 200 +- wp-admin/js/widgets/media-widgets.min.js | 2 +- wp-admin/js/widgets/text-widgets.js | 122 +- wp-admin/js/widgets/text-widgets.min.js | 2 +- wp-admin/js/word-count.js | 30 +- wp-admin/js/wp-fullscreen-stub.js | 39 + wp-admin/js/wp-fullscreen-stub.min.js | 1 + wp-admin/js/xfn.js | 266 +- wp-admin/js/xfn.min.js | 2 +- wp-admin/link-add.php | 5 +- wp-admin/link-manager.php | 47 +- wp-admin/link-parse-opml.php | 29 +- wp-admin/link.php | 15 +- wp-admin/load-scripts.php | 23 +- wp-admin/load-styles.php | 27 +- wp-admin/maint/repair.php | 102 +- wp-admin/media-new.php | 29 +- wp-admin/media-upload.php | 37 +- wp-admin/media.php | 65 +- wp-admin/menu-header.php | 83 +- wp-admin/menu.php | 151 +- wp-admin/moderation.php | 2 +- wp-admin/ms-admin.php | 4 +- wp-admin/ms-delete-site.php | 72 +- wp-admin/ms-edit.php | 4 +- wp-admin/ms-options.php | 4 +- wp-admin/ms-sites.php | 4 +- wp-admin/ms-themes.php | 4 +- wp-admin/ms-upgrade-network.php | 4 +- wp-admin/ms-users.php | 4 +- wp-admin/my-sites.php | 39 +- wp-admin/nav-menus.php | 363 +- wp-admin/network.php | 24 +- wp-admin/network/about.php | 4 +- wp-admin/network/admin.php | 10 +- wp-admin/network/credits.php | 4 +- wp-admin/network/edit.php | 18 +- wp-admin/network/freedoms.php | 4 +- wp-admin/network/index.php | 11 +- wp-admin/network/menu.php | 66 +- wp-admin/network/plugin-editor.php | 6 +- wp-admin/network/plugin-install.php | 4 +- wp-admin/network/plugins.php | 4 +- wp-admin/network/privacy.php | 4 +- wp-admin/network/profile.php | 4 +- wp-admin/network/security.php | 14 + wp-admin/network/settings.php | 206 +- wp-admin/network/setup.php | 4 +- wp-admin/network/site-info.php | 63 +- wp-admin/network/site-new.php | 124 +- wp-admin/network/site-settings.php | 31 +- wp-admin/network/site-themes.php | 27 +- wp-admin/network/site-users.php | 79 +- wp-admin/network/sites.php | 94 +- wp-admin/network/theme-editor.php | 4 +- wp-admin/network/theme-install.php | 4 +- wp-admin/network/themes.php | 182 +- wp-admin/network/update-core.php | 4 +- wp-admin/network/update.php | 4 +- wp-admin/network/upgrade.php | 52 +- wp-admin/network/user-edit.php | 4 +- wp-admin/network/user-new.php | 79 +- wp-admin/network/users.php | 62 +- wp-admin/options-discussion.php | 214 +- wp-admin/options-general.php | 274 +- wp-admin/options-head.php | 2 +- wp-admin/options-media.php | 78 +- wp-admin/options-permalink.php | 617 +- wp-admin/options-privacy.php | 315 - wp-admin/options-reading.php | 134 +- wp-admin/options-writing.php | 54 +- wp-admin/options.php | 162 +- wp-admin/plugin-editor.php | 267 +- wp-admin/plugin-install.php | 64 +- wp-admin/plugins.php | 295 +- wp-admin/post-new.php | 15 +- wp-admin/post.php | 79 +- wp-admin/press-this.php | 6 +- wp-admin/privacy-policy-guide.php | 96 - wp-admin/privacy.php | 8 +- wp-admin/profile.php | 4 +- wp-admin/revision.php | 47 +- wp-admin/security.php | 235 + wp-admin/setup-config.php | 574 +- wp-admin/site-health-info.php | 137 - wp-admin/site-health.php | 311 - wp-admin/term.php | 21 +- wp-admin/theme-editor.php | 296 +- wp-admin/theme-install.php | 306 +- wp-admin/themes.php | 671 +- wp-admin/tools.php | 124 +- wp-admin/update-core.php | 413 +- wp-admin/update.php | 113 +- wp-admin/upgrade-functions.php | 4 +- wp-admin/upgrade.php | 102 +- wp-admin/upload.php | 262 +- wp-admin/user-edit.php | 1357 +- wp-admin/user-new.php | 214 +- wp-admin/user/about.php | 4 +- wp-admin/user/admin.php | 11 +- wp-admin/user/credits.php | 4 +- wp-admin/user/freedoms.php | 4 +- wp-admin/user/index.php | 4 +- wp-admin/user/menu.php | 2 +- wp-admin/user/privacy.php | 4 +- wp-admin/user/profile.php | 4 +- wp-admin/user/user-edit.php | 4 +- wp-admin/users.php | 257 +- wp-admin/widgets-form.php | 558 - wp-admin/widgets.php | 551 +- wp-blog-header.php | 2 +- wp-comments-post.php | 27 +- wp-config-sample.php | 61 +- .../classicpress-twentyfifteen/footer.php | 2 +- .../classicpress-twentysixteen/footer.php | 6 +- wp-content/themes/twentyfifteen/404.php | 2 +- wp-content/themes/twentyfifteen/archive.php | 2 +- wp-content/themes/twentyfifteen/footer.php | 2 +- wp-content/themes/twentyfifteen/functions.php | 15 + wp-content/themes/twentyfifteen/header.php | 2 +- wp-content/themes/twentyfifteen/image.php | 2 +- .../twentyfifteen/inc/custom-header.php | 2 +- .../twentyfifteen/inc/template-tags.php | 2 +- wp-content/themes/twentyfifteen/index.php | 2 +- .../twentyfifteen/js/customize-preview.js | 2 +- .../themes/twentyfifteen/js/functions.js | 2 +- wp-content/themes/twentyfifteen/page.php | 2 +- wp-content/themes/twentyfifteen/search.php | 2 +- wp-content/themes/twentyfifteen/sidebar.php | 4 +- wp-content/themes/twentyfifteen/single.php | 2 +- wp-content/themes/twentyseventeen/404.php | 2 +- wp-content/themes/twentyseventeen/archive.php | 2 +- .../twentyseventeen/assets/js/global.js | 8 +- wp-content/themes/twentyseventeen/footer.php | 4 +- .../themes/twentyseventeen/front-page.php | 2 +- .../themes/twentyseventeen/functions.php | 18 +- wp-content/themes/twentyseventeen/header.php | 2 +- .../twentyseventeen/inc/custom-header.php | 2 +- wp-content/themes/twentyseventeen/index.php | 2 +- wp-content/themes/twentyseventeen/page.php | 2 +- wp-content/themes/twentyseventeen/search.php | 2 +- .../themes/twentyseventeen/searchform.php | 2 +- wp-content/themes/twentyseventeen/sidebar.php | 2 +- wp-content/themes/twentyseventeen/single.php | 2 +- .../template-parts/footer/footer-widgets.php | 2 +- .../navigation/navigation-top.php | 2 +- wp-content/themes/twentysixteen/404.php | 2 +- wp-content/themes/twentysixteen/archive.php | 2 +- wp-content/themes/twentysixteen/footer.php | 6 +- wp-content/themes/twentysixteen/functions.php | 17 + wp-content/themes/twentysixteen/header.php | 6 +- wp-content/themes/twentysixteen/image.php | 2 +- .../themes/twentysixteen/inc/customizer.php | 2 +- wp-content/themes/twentysixteen/index.php | 2 +- .../twentysixteen/js/customize-preview.js | 2 +- .../themes/twentysixteen/js/functions.js | 2 +- wp-content/themes/twentysixteen/page.php | 2 +- wp-content/themes/twentysixteen/search.php | 2 +- .../themes/twentysixteen/searchform.php | 2 +- .../twentysixteen/sidebar-content-bottom.php | 2 +- wp-content/themes/twentysixteen/sidebar.php | 2 +- wp-content/themes/twentysixteen/single.php | 2 +- wp-cron.php | 107 +- wp-includes/ID3/getid3.lib.php | 38 +- wp-includes/ID3/getid3.php | 90 +- wp-includes/ID3/license.commercial.txt | 27 + wp-includes/ID3/license.txt | 3 +- wp-includes/ID3/module.audio-video.asf.php | 180 +- .../ID3/module.audio-video.matroska.php | 12 +- .../ID3/module.audio-video.quicktime.php | 177 +- wp-includes/ID3/module.audio-video.riff.php | 35 +- wp-includes/ID3/module.audio.mp3.php | 368 +- wp-includes/ID3/module.audio.ogg.php | 14 +- wp-includes/ID3/module.tag.apetag.php | 4 +- wp-includes/ID3/module.tag.id3v1.php | 2 +- wp-includes/ID3/module.tag.id3v2.php | 27 +- wp-includes/ID3/readme.txt | 3 +- wp-includes/IXR/class-IXR-base64.php | 2 +- wp-includes/IXR/class-IXR-client.php | 16 +- wp-includes/IXR/class-IXR-clientmulticall.php | 19 +- wp-includes/IXR/class-IXR-date.php | 14 +- wp-includes/IXR/class-IXR-error.php | 2 +- .../IXR/class-IXR-introspectionserver.php | 2 +- wp-includes/IXR/class-IXR-message.php | 20 +- wp-includes/IXR/class-IXR-request.php | 2 +- wp-includes/IXR/class-IXR-server.php | 11 +- wp-includes/IXR/class-IXR-value.php | 2 +- wp-includes/PHPMailer/PHPMailer.php | 70 +- wp-includes/PHPMailer/SMTP.php | 14 +- wp-includes/Requests/Auth.php | 33 + wp-includes/Requests/Auth/Basic.php | 88 + wp-includes/Requests/{src => }/Cookie.php | 243 +- wp-includes/Requests/Cookie/Jar.php | 175 + wp-includes/Requests/{src => }/Exception.php | 14 +- .../Exception/Http.php => Exception/HTTP.php} | 23 +- .../Status304.php => Exception/HTTP/304.php} | 12 +- .../Status305.php => Exception/HTTP/305.php} | 10 +- .../Status306.php => Exception/HTTP/306.php} | 10 +- .../Status400.php => Exception/HTTP/400.php} | 12 +- .../Status401.php => Exception/HTTP/401.php} | 12 +- .../Status402.php => Exception/HTTP/402.php} | 12 +- .../Status403.php => Exception/HTTP/403.php} | 12 +- .../Status404.php => Exception/HTTP/404.php} | 12 +- .../Status405.php => Exception/HTTP/405.php} | 12 +- .../Status406.php => Exception/HTTP/406.php} | 12 +- .../Status407.php => Exception/HTTP/407.php} | 12 +- .../Status408.php => Exception/HTTP/408.php} | 12 +- .../Status409.php => Exception/HTTP/409.php} | 12 +- .../Status410.php => Exception/HTTP/410.php} | 12 +- .../Status411.php => Exception/HTTP/411.php} | 12 +- .../Status412.php => Exception/HTTP/412.php} | 12 +- .../Status413.php => Exception/HTTP/413.php} | 12 +- .../Status414.php => Exception/HTTP/414.php} | 12 +- .../Status415.php => Exception/HTTP/415.php} | 12 +- .../Status416.php => Exception/HTTP/416.php} | 12 +- .../Status417.php => Exception/HTTP/417.php} | 12 +- .../Status418.php => Exception/HTTP/418.php} | 18 +- .../Status428.php => Exception/HTTP/428.php} | 18 +- wp-includes/Requests/Exception/HTTP/429.php | 29 + .../Status431.php => Exception/HTTP/431.php} | 18 +- .../Status500.php => Exception/HTTP/500.php} | 12 +- .../Status501.php => Exception/HTTP/501.php} | 12 +- .../Status502.php => Exception/HTTP/502.php} | 12 +- .../Status503.php => Exception/HTTP/503.php} | 12 +- .../Status504.php => Exception/HTTP/504.php} | 12 +- .../Status505.php => Exception/HTTP/505.php} | 12 +- .../Status511.php => Exception/HTTP/511.php} | 18 +- .../HTTP/Unknown.php} | 19 +- wp-includes/Requests/Exception/Transport.php | 5 + .../Curl.php => Exception/Transport/cURL.php} | 32 +- .../{src/HookManager.php => Hooker.php} | 16 +- wp-includes/Requests/Hooks.php | 72 + wp-includes/Requests/IDNAEncoder.php | 388 + .../Requests/{src/Ipv6.php => IPv6.php} | 89 +- wp-includes/Requests/{src/Iri.php => IRI.php} | 123 +- wp-includes/Requests/Proxy.php | 35 + .../{src/Proxy/Http.php => Proxy/HTTP.php} | 85 +- wp-includes/Requests/Response.php | 121 + wp-includes/Requests/Response/Headers.php | 98 + wp-includes/Requests/{src/Ssl.php => SSL.php} | 88 +- wp-includes/Requests/{src => }/Session.php | 154 +- wp-includes/Requests/Transport.php | 41 + .../Transport/Curl.php => Transport/cURL.php} | 322 +- wp-includes/Requests/Transport/fsockopen.php | 444 + .../Utility/CaseInsensitiveDictionary.php | 103 + .../Requests/Utility/FilteredIterator.php | 46 + wp-includes/Requests/library/Requests.php | 12 - wp-includes/Requests/src/Auth.php | 36 - wp-includes/Requests/src/Auth/Basic.php | 103 - wp-includes/Requests/src/Autoload.php | 187 - wp-includes/Requests/src/Capability.php | 36 - wp-includes/Requests/src/Cookie/Jar.php | 186 - .../Requests/src/Exception/ArgumentCount.php | 47 - .../Requests/src/Exception/Http/Status429.php | 35 - .../src/Exception/InvalidArgument.php | 41 - .../Requests/src/Exception/Transport.php | 17 - wp-includes/Requests/src/Hooks.php | 103 - wp-includes/Requests/src/IdnaEncoder.php | 412 - wp-includes/Requests/src/Port.php | 75 - wp-includes/Requests/src/Proxy.php | 38 - wp-includes/Requests/src/Requests.php | 1095 - wp-includes/Requests/src/Response.php | 165 - wp-includes/Requests/src/Response/Headers.php | 124 - wp-includes/Requests/src/Transport.php | 45 - .../Requests/src/Transport/Fsockopen.php | 505 - .../src/Utility/CaseInsensitiveDictionary.php | 127 - .../Requests/src/Utility/FilteredIterator.php | 82 - .../Requests/src/Utility/InputValidator.php | 109 - wp-includes/SimplePie/Item.php | 54 +- wp-includes/SimplePie/Sanitize.php | 2 +- wp-includes/Text/Diff.php | 26 +- wp-includes/Text/Diff/Engine/shell.php | 2 +- wp-includes/Text/Diff/Engine/string.php | 2 +- wp-includes/Text/Diff/Renderer/inline.php | 2 +- wp-includes/admin-bar.php | 424 +- wp-includes/atomlib.php | 15 +- wp-includes/author-template.php | 297 +- wp-includes/bookmark-template.php | 130 +- wp-includes/bookmark.php | 117 +- wp-includes/cache-compat.php | 185 +- wp-includes/cache.php | 334 +- wp-includes/canonical.php | 340 +- wp-includes/capabilities.php | 593 +- wp-includes/category-template.php | 632 +- wp-includes/category.php | 188 +- wp-includes/class-IXR.php | 22 +- wp-includes/class-feed.php | 3 +- wp-includes/class-fix-wpcli.php | 5 +- wp-includes/class-http.php | 1063 +- wp-includes/class-json.php | 188 +- wp-includes/class-oembed.php | 6 +- wp-includes/class-phpass.php | 116 +- wp-includes/class-phpmailer.php | 2 +- wp-includes/class-pop3.php | 12 +- wp-includes/class-requests.php | 976 +- wp-includes/class-simplepie.php | 74 +- wp-includes/class-snoopy.php | 14 +- .../class-walker-category-dropdown.php | 34 +- wp-includes/class-walker-category.php | 126 +- wp-includes/class-walker-comment.php | 245 +- wp-includes/class-walker-nav-menu.php | 182 +- wp-includes/class-walker-page-dropdown.php | 47 +- wp-includes/class-walker-page.php | 94 +- wp-includes/class-wp-admin-bar.php | 125 +- wp-includes/class-wp-ajax-response.php | 18 +- .../class-wp-application-passwords.php | 414 - wp-includes/class-wp-comment-query.php | 502 +- wp-includes/class-wp-comment.php | 89 +- wp-includes/class-wp-customize-control.php | 122 +- wp-includes/class-wp-customize-manager.php | 1186 +- wp-includes/class-wp-customize-nav-menus.php | 530 +- wp-includes/class-wp-customize-panel.php | 115 +- wp-includes/class-wp-customize-section.php | 128 +- wp-includes/class-wp-customize-setting.php | 240 +- wp-includes/class-wp-customize-widgets.php | 438 +- wp-includes/class-wp-date-query.php | 269 +- wp-includes/class-wp-dependencies.php | 493 - wp-includes/class-wp-dependency.php | 72 +- wp-includes/class-wp-editor.php | 578 +- wp-includes/class-wp-embed.php | 205 +- wp-includes/class-wp-error.php | 190 +- wp-includes/class-wp-fatal-error-handler.php | 241 - wp-includes/class-wp-feed-cache-transient.php | 27 +- wp-includes/class-wp-feed-cache.php | 11 +- wp-includes/class-wp-hook.php | 228 +- wp-includes/class-wp-http-cookie.php | 94 +- wp-includes/class-wp-http-curl.php | 83 +- wp-includes/class-wp-http-encoding.php | 82 +- wp-includes/class-wp-http-ixr-client.php | 39 +- wp-includes/class-wp-http-proxy.php | 72 +- wp-includes/class-wp-http-requests-hooks.php | 33 +- .../class-wp-http-requests-response.php | 65 +- wp-includes/class-wp-http-response.php | 29 +- wp-includes/class-wp-http-streams.php | 248 +- wp-includes/class-wp-http.php | 1104 - wp-includes/class-wp-image-editor-gd.php | 267 +- wp-includes/class-wp-image-editor-imagick.php | 484 +- wp-includes/class-wp-image-editor.php | 315 +- wp-includes/class-wp-list-util.php | 83 +- wp-includes/class-wp-locale-switcher.php | 144 +- wp-includes/class-wp-locale.php | 344 +- wp-includes/class-wp-matchesmapregex.php | 13 +- wp-includes/class-wp-meta-query.php | 339 +- wp-includes/class-wp-metadata-lazyloader.php | 90 +- wp-includes/class-wp-network-query.php | 156 +- wp-includes/class-wp-network.php | 116 +- wp-includes/class-wp-object-cache.php | 459 +- wp-includes/class-wp-oembed-controller.php | 71 +- wp-includes/class-wp-oembed.php | 196 +- .../class-wp-paused-extensions-storage.php | 226 - wp-includes/class-wp-post-type.php | 306 +- wp-includes/class-wp-post.php | 99 +- wp-includes/class-wp-query.php | 1876 +- .../class-wp-recovery-mode-cookie-service.php | 247 - .../class-wp-recovery-mode-email-service.php | 380 - .../class-wp-recovery-mode-key-service.php | 192 - .../class-wp-recovery-mode-link-service.php | 130 - wp-includes/class-wp-recovery-mode.php | 471 - wp-includes/class-wp-rewrite.php | 425 +- wp-includes/class-wp-role.php | 49 +- wp-includes/class-wp-roles.php | 122 +- wp-includes/class-wp-scripts.php | 705 - wp-includes/class-wp-session-tokens.php | 121 +- wp-includes/class-wp-simplepie-file.php | 55 +- .../class-wp-simplepie-sanitize-kses.php | 13 +- wp-includes/class-wp-site-query.php | 435 +- wp-includes/class-wp-site.php | 66 +- wp-includes/class-wp-styles.php | 444 - wp-includes/class-wp-tax-query.php | 91 +- wp-includes/class-wp-taxonomy.php | 339 +- wp-includes/class-wp-term-query.php | 738 +- wp-includes/class-wp-term.php | 42 +- .../class-wp-text-diff-renderer-inline.php | 10 +- .../class-wp-text-diff-renderer-table.php | 215 +- wp-includes/class-wp-textdomain-registry.php | 233 - wp-includes/class-wp-theme.php | 462 +- .../class-wp-user-meta-session-tokens.php | 41 +- wp-includes/class-wp-user-query.php | 656 +- wp-includes/class-wp-user-request.php | 119 - wp-includes/class-wp-user.php | 306 +- wp-includes/class-wp-walker.php | 134 +- wp-includes/class-wp-widget-factory.php | 111 +- wp-includes/class-wp-widget.php | 192 +- wp-includes/class-wp-xmlrpc-server.php | 2223 +- wp-includes/class-wp.php | 375 +- wp-includes/class-wpdb.php | 3980 --- wp-includes/class.wp-dependencies.php | 408 +- wp-includes/class.wp-scripts.php | 604 +- wp-includes/class.wp-styles.php | 454 +- .../classicpress/class-cp-customization.php | 100 - .../classicpress/class-cp-debug-compat.php | 241 - .../classicpress/class-wp-block-template.php | 45 - .../classicpress/class-wp-block-type.php | 47 - wp-includes/classicpress/class-wp-compat.php | 404 - wp-includes/comment-template.php | 1808 +- wp-includes/comment.php | 1720 +- wp-includes/compat.php | 413 +- wp-includes/cron.php | 1006 +- wp-includes/css/admin-bar-rtl.css | 379 +- wp-includes/css/admin-bar-rtl.min.css | 2 +- wp-includes/css/admin-bar.css | 379 +- wp-includes/css/admin-bar.min.css | 2 +- wp-includes/css/buttons-rtl.css | 276 +- wp-includes/css/buttons-rtl.min.css | 2 +- wp-includes/css/buttons.css | 276 +- wp-includes/css/buttons.min.css | 2 +- wp-includes/css/customize-preview-rtl.css | 23 +- wp-includes/css/customize-preview-rtl.min.css | 2 +- wp-includes/css/customize-preview.css | 23 +- wp-includes/css/customize-preview.min.css | 2 +- wp-includes/css/dashicons.css | 2 +- wp-includes/css/dashicons.min.css | 2 +- wp-includes/css/editor-rtl.css | 506 +- wp-includes/css/editor-rtl.min.css | 2 +- wp-includes/css/editor.css | 506 +- wp-includes/css/editor.min.css | 2 +- wp-includes/css/jquery-ui-dialog-rtl.css | 74 +- wp-includes/css/jquery-ui-dialog-rtl.min.css | 2 +- wp-includes/css/jquery-ui-dialog.css | 74 +- wp-includes/css/jquery-ui-dialog.min.css | 2 +- wp-includes/css/media-views-rtl.css | 1314 +- wp-includes/css/media-views-rtl.min.css | 4 +- wp-includes/css/media-views.css | 1314 +- wp-includes/css/media-views.min.css | 4 +- wp-includes/css/wp-auth-check-rtl.css | 14 +- wp-includes/css/wp-auth-check-rtl.min.css | 2 +- wp-includes/css/wp-auth-check.css | 14 +- wp-includes/css/wp-auth-check.min.css | 2 +- wp-includes/css/wp-embed-template.css | 35 +- wp-includes/css/wp-embed-template.min.css | 2 +- wp-includes/css/wp-pointer-rtl.css | 36 +- wp-includes/css/wp-pointer-rtl.min.css | 2 +- wp-includes/css/wp-pointer.css | 36 +- wp-includes/css/wp-pointer.min.css | 2 +- ...-wp-customize-background-image-control.php | 15 +- ...-wp-customize-background-image-setting.php | 15 +- ...-customize-background-position-control.php | 19 +- ...class-wp-customize-code-editor-control.php | 19 +- .../class-wp-customize-color-control.php | 27 +- ...ass-wp-customize-cropped-image-control.php | 19 +- .../class-wp-customize-custom-css-setting.php | 56 +- .../class-wp-customize-date-time-control.php | 84 +- .../class-wp-customize-filter-setting.php | 6 +- ...lass-wp-customize-header-image-control.php | 55 +- ...lass-wp-customize-header-image-setting.php | 15 +- .../class-wp-customize-image-control.php | 43 +- .../class-wp-customize-media-control.php | 71 +- ...wp-customize-nav-menu-auto-add-control.php | 12 +- .../class-wp-customize-nav-menu-control.php | 25 +- ...ass-wp-customize-nav-menu-item-control.php | 69 +- ...ass-wp-customize-nav-menu-item-setting.php | 116 +- ...wp-customize-nav-menu-location-control.php | 14 +- ...p-customize-nav-menu-locations-control.php | 46 +- ...ass-wp-customize-nav-menu-name-control.php | 12 +- .../class-wp-customize-nav-menu-section.php | 10 +- .../class-wp-customize-nav-menu-setting.php | 86 +- .../class-wp-customize-nav-menus-panel.php | 39 +- .../class-wp-customize-new-menu-control.php | 31 +- .../class-wp-customize-new-menu-section.php | 23 +- .../customize/class-wp-customize-partial.php | 77 +- .../class-wp-customize-selective-refresh.php | 95 +- .../class-wp-customize-sidebar-section.php | 12 +- .../class-wp-customize-site-icon-control.php | 47 +- .../class-wp-customize-theme-control.php | 179 +- .../class-wp-customize-themes-panel.php | 33 +- .../class-wp-customize-themes-section.php | 78 +- .../class-wp-customize-upload-control.php | 37 +- ...class-wp-widget-area-customize-control.php | 19 +- ...class-wp-widget-form-customize-control.php | 67 +- wp-includes/date.php | 4 +- wp-includes/default-constants.php | 151 +- wp-includes/default-filters.php | 276 +- wp-includes/default-widgets.php | 2 +- wp-includes/deprecated.php | 2120 +- wp-includes/embed-template.php | 6 +- wp-includes/embed.php | 547 +- wp-includes/error-protection.php | 157 - wp-includes/feed-atom-comments.php | 99 +- wp-includes/feed-atom.php | 36 +- wp-includes/feed-rdf.php | 24 +- wp-includes/feed-rss.php | 12 +- wp-includes/feed-rss2-comments.php | 107 +- wp-includes/feed-rss2.php | 45 +- wp-includes/feed.php | 336 +- wp-includes/formatting.php | 2629 +- wp-includes/functions.php | 4496 +-- wp-includes/functions.wp-scripts.php | 209 +- wp-includes/functions.wp-styles.php | 108 +- wp-includes/general-template.php | 2683 +- wp-includes/http.php | 303 +- wp-includes/https-detection.php | 220 - wp-includes/https-migration.php | 140 - wp-includes/images/wlw/wp-comments.png | Bin 0 -> 1373 bytes wp-includes/images/wlw/wp-icon.png | Bin 0 -> 311 bytes wp-includes/images/wlw/wp-watermark.png | Bin 0 -> 2192 bytes wp-includes/js/admin-bar.js | 730 +- wp-includes/js/admin-bar.min.js | 2 +- wp-includes/js/api-request.js | 67 +- wp-includes/js/api-request.min.js | 2 +- wp-includes/js/autosave.js | 338 +- wp-includes/js/autosave.min.js | 2 +- wp-includes/js/clipboard.js | 890 - wp-includes/js/clipboard.min.js | 7 - wp-includes/js/codemirror/csslint.js | 21716 ++++++------ wp-includes/js/codemirror/fakejshint.js | 43 - .../js/codemirror/{esprima.js => jshint.js} | 46 +- wp-includes/js/colorpicker.min.js | 2 +- wp-includes/js/comment-reply.js | 448 +- wp-includes/js/comment-reply.min.js | 2 +- wp-includes/js/customize-base.js | 203 +- wp-includes/js/customize-base.min.js | 2 +- wp-includes/js/customize-loader.js | 17 +- wp-includes/js/customize-models.js | 18 +- wp-includes/js/customize-preview-nav-menus.js | 42 +- wp-includes/js/customize-preview-widgets.js | 230 +- wp-includes/js/customize-preview.js | 79 +- wp-includes/js/customize-preview.min.js | 2 +- wp-includes/js/customize-selective-refresh.js | 106 +- wp-includes/js/customize-views.js | 4 - wp-includes/js/dist/a11y.js | 2386 -- wp-includes/js/dist/a11y.min.js | 1 - wp-includes/js/dist/api-fetch.js | 3179 -- wp-includes/js/dist/api-fetch.min.js | 1 - wp-includes/js/dist/dom-ready.js | 88 - wp-includes/js/dist/dom-ready.min.js | 1 - wp-includes/js/dist/hooks.js | 594 - wp-includes/js/dist/hooks.min.js | 1 - wp-includes/js/dist/i18n.js | 2152 -- wp-includes/js/dist/i18n.min.js | 1 - wp-includes/js/dist/url.js | 1438 - wp-includes/js/dist/url.min.js | 1 - wp-includes/js/dist/vendor/lodash.js | 17209 ---------- wp-includes/js/dist/vendor/lodash.min.js | 140 - wp-includes/js/dist/vendor/moment.js | 5688 ---- wp-includes/js/dist/vendor/moment.min.js | 2 - wp-includes/js/heartbeat.js | 369 +- wp-includes/js/heartbeat.min.js | 2 +- wp-includes/js/hoverIntent.js | 180 +- wp-includes/js/hoverIntent.min.js | 8 +- wp-includes/js/hoverintent-js.min.js | 2 - wp-includes/js/imagesloaded.min.js | 5 +- .../js/imgareaselect/jquery.imgareaselect.js | 19 +- .../imgareaselect/jquery.imgareaselect.min.js | 2 +- wp-includes/js/jcrop/jquery.Jcrop.min.css | 31 +- wp-includes/js/jcrop/jquery.Jcrop.min.js | 21 +- wp-includes/js/jquery/jquery-migrate.js | 1137 +- wp-includes/js/jquery/jquery-migrate.min.js | 4 +- wp-includes/js/jquery/jquery.color.min.js | 5 +- wp-includes/js/jquery/jquery.form.js | 48 +- wp-includes/js/jquery/jquery.form.min.js | 13 +- wp-includes/js/jquery/jquery.hotkeys.js | 2 +- wp-includes/js/jquery/jquery.js | 10916 +----- wp-includes/js/jquery/jquery.min.js | 3 - .../js/jquery/jquery.serialize-object.js | 16 +- wp-includes/js/jquery/jquery.table-hotkeys.js | 12 +- wp-includes/js/jquery/ui/accordion.js | 619 - wp-includes/js/jquery/ui/accordion.min.js | 6 +- wp-includes/js/jquery/ui/autocomplete.js | 674 - wp-includes/js/jquery/ui/autocomplete.min.js | 6 +- wp-includes/js/jquery/ui/button.js | 448 - wp-includes/js/jquery/ui/button.min.js | 6 +- wp-includes/js/jquery/ui/checkboxradio.js | 288 - wp-includes/js/jquery/ui/checkboxradio.min.js | 9 - wp-includes/js/jquery/ui/controlgroup.js | 302 - wp-includes/js/jquery/ui/controlgroup.min.js | 9 - wp-includes/js/jquery/ui/core.js | 1790 - wp-includes/js/jquery/ui/core.min.js | 222 +- wp-includes/js/jquery/ui/datepicker.js | 2239 -- wp-includes/js/jquery/ui/datepicker.min.js | 6 +- wp-includes/js/jquery/ui/dialog.js | 946 - wp-includes/js/jquery/ui/dialog.min.js | 6 +- wp-includes/js/jquery/ui/draggable.js | 1253 - wp-includes/js/jquery/ui/draggable.min.js | 6 +- wp-includes/js/jquery/ui/droppable.js | 502 - wp-includes/js/jquery/ui/droppable.min.js | 6 +- wp-includes/js/jquery/ui/effect-blind.js | 72 - wp-includes/js/jquery/ui/effect-blind.min.js | 6 +- wp-includes/js/jquery/ui/effect-bounce.js | 112 - wp-includes/js/jquery/ui/effect-bounce.min.js | 6 +- wp-includes/js/jquery/ui/effect-clip.js | 67 - wp-includes/js/jquery/ui/effect-clip.min.js | 6 +- wp-includes/js/jquery/ui/effect-drop.js | 71 - wp-includes/js/jquery/ui/effect-drop.min.js | 6 +- wp-includes/js/jquery/ui/effect-explode.js | 113 - .../js/jquery/ui/effect-explode.min.js | 6 +- wp-includes/js/jquery/ui/effect-fade.js | 49 - wp-includes/js/jquery/ui/effect-fade.min.js | 6 +- wp-includes/js/jquery/ui/effect-fold.js | 91 - wp-includes/js/jquery/ui/effect-fold.min.js | 6 +- wp-includes/js/jquery/ui/effect-highlight.js | 59 - .../js/jquery/ui/effect-highlight.min.js | 6 +- wp-includes/js/jquery/ui/effect-puff.js | 44 - wp-includes/js/jquery/ui/effect-puff.min.js | 6 +- wp-includes/js/jquery/ui/effect-pulsate.js | 66 - .../js/jquery/ui/effect-pulsate.min.js | 6 +- wp-includes/js/jquery/ui/effect-scale.js | 58 - wp-includes/js/jquery/ui/effect-scale.min.js | 6 +- wp-includes/js/jquery/ui/effect-shake.js | 76 - wp-includes/js/jquery/ui/effect-shake.min.js | 6 +- wp-includes/js/jquery/ui/effect-size.js | 195 - wp-includes/js/jquery/ui/effect-size.min.js | 6 +- wp-includes/js/jquery/ui/effect-slide.js | 78 - wp-includes/js/jquery/ui/effect-slide.min.js | 6 +- wp-includes/js/jquery/ui/effect-transfer.js | 42 - .../js/jquery/ui/effect-transfer.min.js | 6 +- wp-includes/js/jquery/ui/effect.js | 1689 - wp-includes/js/jquery/ui/effect.min.js | 25 +- wp-includes/js/jquery/ui/menu.js | 708 - wp-includes/js/jquery/ui/menu.min.js | 6 +- wp-includes/js/jquery/ui/mouse.js | 235 - wp-includes/js/jquery/ui/mouse.min.js | 6 +- wp-includes/js/jquery/ui/position.min.js | 11 + wp-includes/js/jquery/ui/progressbar.js | 180 - wp-includes/js/jquery/ui/progressbar.min.js | 6 +- wp-includes/js/jquery/ui/resizable.js | 1216 - wp-includes/js/jquery/ui/resizable.min.js | 6 +- wp-includes/js/jquery/ui/selectable.js | 316 - wp-includes/js/jquery/ui/selectable.min.js | 6 +- wp-includes/js/jquery/ui/selectmenu.js | 687 - wp-includes/js/jquery/ui/selectmenu.min.js | 6 +- wp-includes/js/jquery/ui/slider.js | 753 - wp-includes/js/jquery/ui/slider.min.js | 6 +- wp-includes/js/jquery/ui/sortable.js | 1613 - wp-includes/js/jquery/ui/sortable.min.js | 6 +- wp-includes/js/jquery/ui/spinner.js | 579 - wp-includes/js/jquery/ui/spinner.min.js | 6 +- wp-includes/js/jquery/ui/tabs.js | 921 - wp-includes/js/jquery/ui/tabs.min.js | 6 +- wp-includes/js/jquery/ui/tooltip.js | 523 - wp-includes/js/jquery/ui/tooltip.min.js | 6 +- wp-includes/js/jquery/ui/widget.min.js | 11 + wp-includes/js/masonry.min.js | 7 +- wp-includes/js/mce-view.js | 81 +- wp-includes/js/mce-view.min.js | 2 +- wp-includes/js/media-audiovideo.js | 11 +- wp-includes/js/media-audiovideo.min.js | 2 +- wp-includes/js/media-editor.js | 90 +- wp-includes/js/media-editor.min.js | 2 +- wp-includes/js/media-grid.js | 80 +- wp-includes/js/media-grid.min.js | 2 +- wp-includes/js/media-models.js | 243 +- wp-includes/js/media-models.min.js | 2 +- wp-includes/js/media-views.js | 2303 +- wp-includes/js/media-views.min.js | 2 +- .../mediaelement/mediaelement-and-player.js | 376 +- .../mediaelement-and-player.min.js | 2 +- .../js/mediaelement/mediaelement-migrate.js | 2 +- wp-includes/js/mediaelement/mediaelement.js | 156 +- .../js/mediaelement/mediaelement.min.js | 2 +- .../mediaelementplayer-legacy.css | 6 +- .../mediaelementplayer-legacy.min.css | 2 +- .../js/mediaelement/mediaelementplayer.css | 6 +- .../mediaelement/mediaelementplayer.min.css | 2 +- .../js/mediaelement/renderers/vimeo.js | 70 +- .../js/mediaelement/renderers/vimeo.min.js | 2 +- .../js/mediaelement/wp-mediaelement.css | 8 +- .../js/mediaelement/wp-mediaelement.js | 16 +- .../js/mediaelement/wp-mediaelement.min.css | 2 +- .../js/mediaelement/wp-mediaelement.min.js | 2 +- wp-includes/js/mediaelement/wp-playlist.js | 24 +- .../js/mediaelement/wp-playlist.min.js | 2 +- wp-includes/js/plupload/handlers.js | 586 +- wp-includes/js/plupload/handlers.min.js | 2 +- wp-includes/js/plupload/moxie.js | 2 +- wp-includes/js/plupload/moxie.min.js | 2 +- wp-includes/js/plupload/plupload.js | 18 +- wp-includes/js/plupload/plupload.min.js | 2 +- wp-includes/js/plupload/wp-plupload.js | 262 +- wp-includes/js/plupload/wp-plupload.min.js | 2 +- wp-includes/js/quicktags.js | 171 +- wp-includes/js/quicktags.min.js | 2 +- wp-includes/js/shortcode.js | 231 +- wp-includes/js/shortcode.min.js | 2 +- wp-includes/js/swfupload/swfupload.js | 2 +- wp-includes/js/thickbox/thickbox.css | 4 +- wp-includes/js/thickbox/thickbox.js | 50 +- wp-includes/js/tinymce/langs/wp-langs-en.js | 9 +- .../js/tinymce/plugins/wordpress/plugin.js | 353 +- .../tinymce/plugins/wordpress/plugin.min.js | 2 +- .../js/tinymce/plugins/wpautoresize/plugin.js | 44 +- .../js/tinymce/plugins/wpdialogs/plugin.js | 6 +- .../js/tinymce/plugins/wpeditimage/plugin.js | 107 +- .../tinymce/plugins/wpeditimage/plugin.min.js | 2 +- .../js/tinymce/plugins/wpemoji/plugin.js | 16 +- .../js/tinymce/plugins/wpgallery/plugin.js | 8 +- .../js/tinymce/plugins/wplink/plugin.js | 39 +- .../js/tinymce/plugins/wplink/plugin.min.js | 2 +- .../tinymce/plugins/wptextpattern/plugin.js | 14 +- .../js/tinymce/plugins/wpview/plugin.js | 38 +- .../js/tinymce/plugins/wpview/plugin.min.js | 2 +- .../js/tinymce/skins/lightgray/skin.min.css | 2 +- .../js/tinymce/skins/wordpress/wp-content.css | 9 +- wp-includes/js/tinymce/tinymce.js | 27440 ---------------- wp-includes/js/tinymce/wp-tinymce.js | 49 - wp-includes/js/tinymce/wp-tinymce.js.gz | Bin 0 -> 220901 bytes wp-includes/js/tinymce/wp-tinymce.php | 38 +- wp-includes/js/twemoji.js | 8 +- wp-includes/js/twemoji.min.js | 2 +- wp-includes/js/utils.js | 40 +- wp-includes/js/utils.min.js | 2 +- wp-includes/js/wp-a11y.js | 103 + wp-includes/js/wp-a11y.min.js | 1 + wp-includes/js/wp-ajax-response.js | 53 +- wp-includes/js/wp-ajax-response.min.js | 2 +- wp-includes/js/wp-api.js | 130 +- wp-includes/js/wp-api.min.js | 2 +- wp-includes/js/wp-auth-check.js | 150 +- wp-includes/js/wp-auth-check.min.js | 2 +- wp-includes/js/wp-backbone.js | 425 +- wp-includes/js/wp-custom-header.js | 25 +- wp-includes/js/wp-custom-header.min.js | 2 +- wp-includes/js/wp-embed-template.js | 63 +- wp-includes/js/wp-embed-template.min.js | 2 +- wp-includes/js/wp-embed.js | 26 +- wp-includes/js/wp-embed.min.js | 2 +- wp-includes/js/wp-emoji-loader.js | 42 +- wp-includes/js/wp-emoji-loader.min.js | 2 +- wp-includes/js/wp-emoji-release.min.js | 4 +- wp-includes/js/wp-emoji.js | 27 +- wp-includes/js/wp-emoji.min.js | 2 +- wp-includes/js/wp-list-revisions.js | 5 - wp-includes/js/wp-lists.js | 70 +- wp-includes/js/wp-lists.min.js | 2 +- wp-includes/js/wp-pointer.js | 167 +- wp-includes/js/wp-pointer.min.js | 2 +- wp-includes/js/wp-sanitize.js | 24 +- wp-includes/js/wp-sanitize.min.js | 2 +- wp-includes/js/wp-util.js | 105 +- wp-includes/js/wp-util.min.js | 2 +- wp-includes/js/wpdialog.js | 8 - wp-includes/js/wplink.js | 144 +- wp-includes/js/wplink.min.js | 2 +- wp-includes/js/zxcvbn-async.js | 12 - wp-includes/js/zxcvbn.min.js | 1 - wp-includes/kses.php | 1487 +- wp-includes/l10n.php | 1037 +- wp-includes/link-template.php | 1682 +- wp-includes/load.php | 1098 +- wp-includes/locale.php | 4 +- wp-includes/media-template.php | 1138 +- wp-includes/media.php | 2353 +- wp-includes/meta.php | 996 +- wp-includes/ms-blogs.php | 933 +- wp-includes/ms-default-constants.php | 46 +- wp-includes/ms-default-filters.php | 72 +- wp-includes/ms-deprecated.php | 366 +- wp-includes/ms-files.php | 17 +- wp-includes/ms-functions.php | 1340 +- wp-includes/ms-load.php | 149 +- wp-includes/ms-network.php | 141 - wp-includes/ms-settings.php | 12 +- wp-includes/ms-site.php | 1324 - wp-includes/nav-menu-template.php | 254 +- wp-includes/nav-menu.php | 483 +- wp-includes/option.php | 1076 +- wp-includes/php-compat/readonly.php | 28 +- wp-includes/pluggable-deprecated.php | 70 +- wp-includes/pluggable.php | 1299 +- wp-includes/plugin.php | 780 +- wp-includes/pomo/entry.php | 79 +- wp-includes/pomo/mo.php | 118 +- wp-includes/pomo/plural-forms.php | 623 +- wp-includes/pomo/po.php | 111 +- wp-includes/pomo/streams.php | 146 +- wp-includes/pomo/translations.php | 100 +- wp-includes/post-formats.php | 55 +- wp-includes/post-template.php | 737 +- wp-includes/post-thumbnail-template.php | 182 +- wp-includes/post.php | 3390 +- wp-includes/query.php | 700 +- .../random_compat/byte_safe_strings.php | 195 + wp-includes/random_compat/cast_to_int.php | 77 + wp-includes/random_compat/error_polyfill.php | 49 + wp-includes/random_compat/random.php | 226 + .../random_compat/random_bytes_com_dotnet.php | 91 + .../random_bytes_dev_urandom.php | 190 + .../random_compat/random_bytes_libsodium.php | 91 + .../random_bytes_libsodium_legacy.php | 93 + .../random_compat/random_bytes_mcrypt.php | 79 + wp-includes/random_compat/random_int.php | 204 + wp-includes/registration-functions.php | 4 +- wp-includes/registration.php | 4 +- wp-includes/rest-api.php | 2749 +- .../rest-api/class-wp-rest-request.php | 290 +- .../rest-api/class-wp-rest-response.php | 57 +- wp-includes/rest-api/class-wp-rest-server.php | 1146 +- ...-rest-application-passwords-controller.php | 848 - .../class-wp-rest-attachments-controller.php | 860 +- .../class-wp-rest-autosaves-controller.php | 461 - .../class-wp-rest-comments-controller.php | 551 +- .../endpoints/class-wp-rest-controller.php | 438 +- .../class-wp-rest-menu-items-controller.php | 1016 - ...lass-wp-rest-menu-locations-controller.php | 303 - .../class-wp-rest-menus-controller.php | 571 - .../class-wp-rest-plugins-controller.php | 1004 - ...class-wp-rest-post-statuses-controller.php | 111 +- .../class-wp-rest-post-types-controller.php | 227 +- .../class-wp-rest-posts-controller.php | 1264 +- .../class-wp-rest-revisions-controller.php | 411 +- .../class-wp-rest-search-controller.php | 407 - .../class-wp-rest-settings-controller.php | 84 +- .../class-wp-rest-sidebars-controller.php | 502 - .../class-wp-rest-site-health-controller.php | 407 - .../class-wp-rest-taxonomies-controller.php | 176 +- .../class-wp-rest-terms-controller.php | 297 +- .../class-wp-rest-themes-controller.php | 657 - .../class-wp-rest-users-controller.php | 432 +- .../class-wp-rest-comment-meta-fields.php | 14 +- .../fields/class-wp-rest-meta-fields.php | 276 +- .../fields/class-wp-rest-post-meta-fields.php | 18 +- .../fields/class-wp-rest-term-meta-fields.php | 18 +- .../fields/class-wp-rest-user-meta-fields.php | 14 +- ...ass-wp-rest-post-format-search-handler.php | 128 - .../class-wp-rest-post-search-handler.php | 205 - .../search/class-wp-rest-search-handler.php | 100 - .../class-wp-rest-term-search-handler.php | 169 - wp-includes/revision.php | 418 +- wp-includes/rewrite.php | 235 +- wp-includes/robots-template.php | 193 - wp-includes/rss-functions.php | 7 +- wp-includes/rss.php | 37 +- wp-includes/script-loader.php | 1576 +- wp-includes/session.php | 4 +- wp-includes/shortcodes.php | 282 +- wp-includes/sitemaps.php | 129 - .../sitemaps/class-wp-sitemaps-index.php | 96 - .../sitemaps/class-wp-sitemaps-provider.php | 180 - .../sitemaps/class-wp-sitemaps-registry.php | 86 - .../sitemaps/class-wp-sitemaps-renderer.php | 275 - .../sitemaps/class-wp-sitemaps-stylesheet.php | 317 - wp-includes/sitemaps/class-wp-sitemaps.php | 264 - .../providers/class-wp-sitemaps-posts.php | 231 - .../class-wp-sitemaps-taxonomies.php | 212 - .../providers/class-wp-sitemaps-users.php | 163 - wp-includes/spl-autoload-compat.php | 4 +- wp-includes/taxonomy.php | 1745 +- wp-includes/template-loader.php | 25 +- wp-includes/template.php | 234 +- wp-includes/theme-compat/comments.php | 24 +- wp-includes/theme-compat/embed-404.php | 6 +- wp-includes/theme-compat/embed-content.php | 18 +- wp-includes/theme-compat/embed.php | 2 +- wp-includes/theme-compat/footer-embed.php | 4 +- wp-includes/theme-compat/footer.php | 16 +- wp-includes/theme-compat/header-embed.php | 6 +- wp-includes/theme-compat/header.php | 29 +- wp-includes/theme-compat/sidebar.php | 26 +- wp-includes/theme.php | 1712 +- wp-includes/update.php | 321 +- wp-includes/user.php | 2826 +- wp-includes/vars.php | 34 +- wp-includes/version.php | 29 +- wp-includes/widgets.php | 739 +- .../widgets/class-wp-nav-menu-widget.php | 66 +- .../widgets/class-wp-widget-archives.php | 97 +- .../widgets/class-wp-widget-calendar.php | 22 +- .../widgets/class-wp-widget-categories.php | 83 +- .../widgets/class-wp-widget-custom-html.php | 70 +- wp-includes/widgets/class-wp-widget-links.php | 74 +- .../widgets/class-wp-widget-media-audio.php | 58 +- .../widgets/class-wp-widget-media-gallery.php | 90 +- .../widgets/class-wp-widget-media-image.php | 73 +- .../widgets/class-wp-widget-media-video.php | 84 +- wp-includes/widgets/class-wp-widget-media.php | 181 +- wp-includes/widgets/class-wp-widget-meta.php | 45 +- wp-includes/widgets/class-wp-widget-pages.php | 70 +- .../class-wp-widget-recent-comments.php | 78 +- .../widgets/class-wp-widget-recent-posts.php | 65 +- wp-includes/widgets/class-wp-widget-rss.php | 59 +- .../widgets/class-wp-widget-search.php | 18 +- .../widgets/class-wp-widget-tag-cloud.php | 63 +- wp-includes/widgets/class-wp-widget-text.php | 87 +- wp-includes/wlwmanifest.xml | 43 + wp-includes/wp-db.php | 3563 +- wp-links-opml.php | 31 +- wp-load.php | 40 +- wp-login.php | 1218 +- wp-mail.php | 50 +- wp-settings.php | 241 +- wp-signup.php | 456 +- wp-trackback.php | 92 +- xmlrpc.php | 57 +- 1260 files changed, 94030 insertions(+), 264268 deletions(-) delete mode 100644 wp-admin/authorize-application.php delete mode 100644 wp-admin/css/colors/modern/colors-rtl.css delete mode 100644 wp-admin/css/colors/modern/colors-rtl.min.css delete mode 100644 wp-admin/css/colors/modern/colors.css delete mode 100644 wp-admin/css/colors/modern/colors.min.css delete mode 100644 wp-admin/css/colors/modern/colors.scss create mode 100644 wp-admin/css/ie-rtl.css create mode 100644 wp-admin/css/ie-rtl.min.css create mode 100644 wp-admin/css/ie.css create mode 100644 wp-admin/css/ie.min.css delete mode 100644 wp-admin/css/site-health-rtl.css delete mode 100644 wp-admin/css/site-health-rtl.min.css delete mode 100644 wp-admin/css/site-health.css delete mode 100644 wp-admin/css/site-health.min.css delete mode 100644 wp-admin/erase-personal-data.php delete mode 100644 wp-admin/export-personal-data.php delete mode 100644 wp-admin/images/classicpress-logo-white.svg create mode 100644 wp-admin/images/classicpress-logo-wordmark-gradient-on-transparent-600x115.png create mode 100644 wp-admin/images/classicpress-logo-wordmark-gradient-on-transparent.svg delete mode 100644 wp-admin/images/classicpress-logo.png delete mode 100644 wp-admin/images/classicpress-logo.svg delete mode 100644 wp-admin/images/cp-logo-aqua.png delete mode 100644 wp-admin/images/cp-logo-white.png create mode 100644 wp-admin/images/w-logo-blue.png create mode 100644 wp-admin/images/w-logo-white.png create mode 100644 wp-admin/images/wordpress-logo-white.svg create mode 100644 wp-admin/images/wordpress-logo.png create mode 100644 wp-admin/images/wordpress-logo.svg delete mode 100644 wp-admin/includes/class-wp-application-passwords-list-table.php delete mode 100644 wp-admin/includes/class-wp-debug-data.php delete mode 100644 wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php delete mode 100644 wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php delete mode 100644 wp-admin/includes/class-wp-privacy-policy-content.php delete mode 100644 wp-admin/includes/class-wp-privacy-requests-table.php delete mode 100644 wp-admin/includes/class-wp-site-health-auto-updates.php delete mode 100644 wp-admin/includes/class-wp-site-health.php delete mode 100644 wp-admin/includes/privacy-tools.php create mode 100644 wp-admin/js/accordion.js create mode 100644 wp-admin/js/accordion.min.js delete mode 100644 wp-admin/js/application-passwords.js delete mode 100644 wp-admin/js/application-passwords.min.js delete mode 100644 wp-admin/js/auth-app.js delete mode 100644 wp-admin/js/auth-app.min.js delete mode 100644 wp-admin/js/privacy-tools.js delete mode 100644 wp-admin/js/privacy-tools.min.js delete mode 100644 wp-admin/js/site-health.js delete mode 100644 wp-admin/js/site-health.min.js create mode 100644 wp-admin/js/wp-fullscreen-stub.js create mode 100644 wp-admin/js/wp-fullscreen-stub.min.js create mode 100644 wp-admin/network/security.php delete mode 100644 wp-admin/options-privacy.php delete mode 100644 wp-admin/privacy-policy-guide.php create mode 100644 wp-admin/security.php delete mode 100644 wp-admin/site-health-info.php delete mode 100644 wp-admin/site-health.php delete mode 100644 wp-admin/widgets-form.php create mode 100644 wp-includes/ID3/license.commercial.txt create mode 100644 wp-includes/Requests/Auth.php create mode 100644 wp-includes/Requests/Auth/Basic.php rename wp-includes/Requests/{src => }/Cookie.php (65%) create mode 100644 wp-includes/Requests/Cookie/Jar.php rename wp-includes/Requests/{src => }/Exception.php (80%) rename wp-includes/Requests/{src/Exception/Http.php => Exception/HTTP.php} (74%) rename wp-includes/Requests/{src/Exception/Http/Status304.php => Exception/HTTP/304.php} (60%) rename wp-includes/Requests/{src/Exception/Http/Status305.php => Exception/HTTP/305.php} (60%) rename wp-includes/Requests/{src/Exception/Http/Status306.php => Exception/HTTP/306.php} (61%) rename wp-includes/Requests/{src/Exception/Http/Status400.php => Exception/HTTP/400.php} (60%) rename wp-includes/Requests/{src/Exception/Http/Status401.php => Exception/HTTP/401.php} (60%) rename wp-includes/Requests/{src/Exception/Http/Status402.php => Exception/HTTP/402.php} (61%) rename wp-includes/Requests/{src/Exception/Http/Status403.php => Exception/HTTP/403.php} (59%) rename wp-includes/Requests/{src/Exception/Http/Status404.php => Exception/HTTP/404.php} (59%) rename wp-includes/Requests/{src/Exception/Http/Status405.php => Exception/HTTP/405.php} (62%) rename wp-includes/Requests/{src/Exception/Http/Status406.php => Exception/HTTP/406.php} (61%) rename wp-includes/Requests/{src/Exception/Http/Status407.php => Exception/HTTP/407.php} (64%) rename wp-includes/Requests/{src/Exception/Http/Status408.php => Exception/HTTP/408.php} (61%) rename wp-includes/Requests/{src/Exception/Http/Status409.php => Exception/HTTP/409.php} (59%) rename wp-includes/Requests/{src/Exception/Http/Status410.php => Exception/HTTP/410.php} (58%) rename wp-includes/Requests/{src/Exception/Http/Status411.php => Exception/HTTP/411.php} (61%) rename wp-includes/Requests/{src/Exception/Http/Status412.php => Exception/HTTP/412.php} (62%) rename wp-includes/Requests/{src/Exception/Http/Status413.php => Exception/HTTP/413.php} (63%) rename wp-includes/Requests/{src/Exception/Http/Status414.php => Exception/HTTP/414.php} (62%) rename wp-includes/Requests/{src/Exception/Http/Status415.php => Exception/HTTP/415.php} (63%) rename wp-includes/Requests/{src/Exception/Http/Status416.php => Exception/HTTP/416.php} (64%) rename wp-includes/Requests/{src/Exception/Http/Status417.php => Exception/HTTP/417.php} (62%) rename wp-includes/Requests/{src/Exception/Http/Status418.php => Exception/HTTP/418.php} (50%) rename wp-includes/Requests/{src/Exception/Http/Status428.php => Exception/HTTP/428.php} (52%) create mode 100644 wp-includes/Requests/Exception/HTTP/429.php rename wp-includes/Requests/{src/Exception/Http/Status431.php => Exception/HTTP/431.php} (54%) rename wp-includes/Requests/{src/Exception/Http/Status500.php => Exception/HTTP/500.php} (62%) rename wp-includes/Requests/{src/Exception/Http/Status501.php => Exception/HTTP/501.php} (61%) rename wp-includes/Requests/{src/Exception/Http/Status502.php => Exception/HTTP/502.php} (60%) rename wp-includes/Requests/{src/Exception/Http/Status503.php => Exception/HTTP/503.php} (62%) rename wp-includes/Requests/{src/Exception/Http/Status504.php => Exception/HTTP/504.php} (61%) rename wp-includes/Requests/{src/Exception/Http/Status505.php => Exception/HTTP/505.php} (63%) rename wp-includes/Requests/{src/Exception/Http/Status511.php => Exception/HTTP/511.php} (54%) rename wp-includes/Requests/{src/Exception/Http/StatusUnknown.php => Exception/HTTP/Unknown.php} (61%) create mode 100644 wp-includes/Requests/Exception/Transport.php rename wp-includes/Requests/{src/Exception/Transport/Curl.php => Exception/Transport/cURL.php} (54%) rename wp-includes/Requests/{src/HookManager.php => Hooker.php} (65%) create mode 100644 wp-includes/Requests/Hooks.php create mode 100644 wp-includes/Requests/IDNAEncoder.php rename wp-includes/Requests/{src/Ipv6.php => IPv6.php} (71%) rename wp-includes/Requests/{src/Iri.php => IRI.php} (90%) create mode 100644 wp-includes/Requests/Proxy.php rename wp-includes/Requests/{src/Proxy/Http.php => Proxy/HTTP.php} (51%) create mode 100644 wp-includes/Requests/Response.php create mode 100644 wp-includes/Requests/Response/Headers.php rename wp-includes/Requests/{src/Ssl.php => SSL.php} (54%) rename wp-includes/Requests/{src => }/Session.php (51%) create mode 100644 wp-includes/Requests/Transport.php rename wp-includes/Requests/{src/Transport/Curl.php => Transport/cURL.php} (55%) create mode 100644 wp-includes/Requests/Transport/fsockopen.php create mode 100644 wp-includes/Requests/Utility/CaseInsensitiveDictionary.php create mode 100644 wp-includes/Requests/Utility/FilteredIterator.php delete mode 100644 wp-includes/Requests/library/Requests.php delete mode 100644 wp-includes/Requests/src/Auth.php delete mode 100644 wp-includes/Requests/src/Auth/Basic.php delete mode 100644 wp-includes/Requests/src/Autoload.php delete mode 100644 wp-includes/Requests/src/Capability.php delete mode 100644 wp-includes/Requests/src/Cookie/Jar.php delete mode 100644 wp-includes/Requests/src/Exception/ArgumentCount.php delete mode 100644 wp-includes/Requests/src/Exception/Http/Status429.php delete mode 100644 wp-includes/Requests/src/Exception/InvalidArgument.php delete mode 100644 wp-includes/Requests/src/Exception/Transport.php delete mode 100644 wp-includes/Requests/src/Hooks.php delete mode 100644 wp-includes/Requests/src/IdnaEncoder.php delete mode 100644 wp-includes/Requests/src/Port.php delete mode 100644 wp-includes/Requests/src/Proxy.php delete mode 100644 wp-includes/Requests/src/Requests.php delete mode 100644 wp-includes/Requests/src/Response.php delete mode 100644 wp-includes/Requests/src/Response/Headers.php delete mode 100644 wp-includes/Requests/src/Transport.php delete mode 100644 wp-includes/Requests/src/Transport/Fsockopen.php delete mode 100644 wp-includes/Requests/src/Utility/CaseInsensitiveDictionary.php delete mode 100644 wp-includes/Requests/src/Utility/FilteredIterator.php delete mode 100644 wp-includes/Requests/src/Utility/InputValidator.php delete mode 100644 wp-includes/class-wp-application-passwords.php delete mode 100644 wp-includes/class-wp-dependencies.php delete mode 100644 wp-includes/class-wp-fatal-error-handler.php delete mode 100644 wp-includes/class-wp-http.php delete mode 100644 wp-includes/class-wp-paused-extensions-storage.php delete mode 100644 wp-includes/class-wp-recovery-mode-cookie-service.php delete mode 100644 wp-includes/class-wp-recovery-mode-email-service.php delete mode 100644 wp-includes/class-wp-recovery-mode-key-service.php delete mode 100644 wp-includes/class-wp-recovery-mode-link-service.php delete mode 100644 wp-includes/class-wp-recovery-mode.php delete mode 100644 wp-includes/class-wp-scripts.php delete mode 100644 wp-includes/class-wp-styles.php delete mode 100644 wp-includes/class-wp-textdomain-registry.php delete mode 100644 wp-includes/class-wp-user-request.php delete mode 100644 wp-includes/class-wpdb.php delete mode 100644 wp-includes/classicpress/class-cp-customization.php delete mode 100644 wp-includes/classicpress/class-cp-debug-compat.php delete mode 100644 wp-includes/classicpress/class-wp-block-template.php delete mode 100644 wp-includes/classicpress/class-wp-block-type.php delete mode 100644 wp-includes/classicpress/class-wp-compat.php delete mode 100644 wp-includes/error-protection.php delete mode 100644 wp-includes/https-detection.php delete mode 100644 wp-includes/https-migration.php create mode 100644 wp-includes/images/wlw/wp-comments.png create mode 100644 wp-includes/images/wlw/wp-icon.png create mode 100644 wp-includes/images/wlw/wp-watermark.png delete mode 100644 wp-includes/js/clipboard.js delete mode 100644 wp-includes/js/clipboard.min.js delete mode 100644 wp-includes/js/codemirror/fakejshint.js rename wp-includes/js/codemirror/{esprima.js => jshint.js} (99%) delete mode 100644 wp-includes/js/dist/a11y.js delete mode 100644 wp-includes/js/dist/a11y.min.js delete mode 100644 wp-includes/js/dist/api-fetch.js delete mode 100644 wp-includes/js/dist/api-fetch.min.js delete mode 100644 wp-includes/js/dist/dom-ready.js delete mode 100644 wp-includes/js/dist/dom-ready.min.js delete mode 100644 wp-includes/js/dist/hooks.js delete mode 100644 wp-includes/js/dist/hooks.min.js delete mode 100644 wp-includes/js/dist/i18n.js delete mode 100644 wp-includes/js/dist/i18n.min.js delete mode 100644 wp-includes/js/dist/url.js delete mode 100644 wp-includes/js/dist/url.min.js delete mode 100644 wp-includes/js/dist/vendor/lodash.js delete mode 100644 wp-includes/js/dist/vendor/lodash.min.js delete mode 100644 wp-includes/js/dist/vendor/moment.js delete mode 100644 wp-includes/js/dist/vendor/moment.min.js delete mode 100644 wp-includes/js/hoverintent-js.min.js delete mode 100644 wp-includes/js/jquery/jquery.min.js delete mode 100644 wp-includes/js/jquery/ui/accordion.js delete mode 100644 wp-includes/js/jquery/ui/autocomplete.js delete mode 100644 wp-includes/js/jquery/ui/button.js delete mode 100644 wp-includes/js/jquery/ui/checkboxradio.js delete mode 100644 wp-includes/js/jquery/ui/checkboxradio.min.js delete mode 100644 wp-includes/js/jquery/ui/controlgroup.js delete mode 100644 wp-includes/js/jquery/ui/controlgroup.min.js delete mode 100644 wp-includes/js/jquery/ui/core.js delete mode 100644 wp-includes/js/jquery/ui/datepicker.js delete mode 100644 wp-includes/js/jquery/ui/dialog.js delete mode 100644 wp-includes/js/jquery/ui/draggable.js delete mode 100644 wp-includes/js/jquery/ui/droppable.js delete mode 100644 wp-includes/js/jquery/ui/effect-blind.js delete mode 100644 wp-includes/js/jquery/ui/effect-bounce.js delete mode 100644 wp-includes/js/jquery/ui/effect-clip.js delete mode 100644 wp-includes/js/jquery/ui/effect-drop.js delete mode 100644 wp-includes/js/jquery/ui/effect-explode.js delete mode 100644 wp-includes/js/jquery/ui/effect-fade.js delete mode 100644 wp-includes/js/jquery/ui/effect-fold.js delete mode 100644 wp-includes/js/jquery/ui/effect-highlight.js delete mode 100644 wp-includes/js/jquery/ui/effect-puff.js delete mode 100644 wp-includes/js/jquery/ui/effect-pulsate.js delete mode 100644 wp-includes/js/jquery/ui/effect-scale.js delete mode 100644 wp-includes/js/jquery/ui/effect-shake.js delete mode 100644 wp-includes/js/jquery/ui/effect-size.js delete mode 100644 wp-includes/js/jquery/ui/effect-slide.js delete mode 100644 wp-includes/js/jquery/ui/effect-transfer.js delete mode 100644 wp-includes/js/jquery/ui/effect.js delete mode 100644 wp-includes/js/jquery/ui/menu.js delete mode 100644 wp-includes/js/jquery/ui/mouse.js create mode 100644 wp-includes/js/jquery/ui/position.min.js delete mode 100644 wp-includes/js/jquery/ui/progressbar.js delete mode 100644 wp-includes/js/jquery/ui/resizable.js delete mode 100644 wp-includes/js/jquery/ui/selectable.js delete mode 100644 wp-includes/js/jquery/ui/selectmenu.js delete mode 100644 wp-includes/js/jquery/ui/slider.js delete mode 100644 wp-includes/js/jquery/ui/sortable.js delete mode 100644 wp-includes/js/jquery/ui/spinner.js delete mode 100644 wp-includes/js/jquery/ui/tabs.js delete mode 100644 wp-includes/js/jquery/ui/tooltip.js create mode 100644 wp-includes/js/jquery/ui/widget.min.js delete mode 100644 wp-includes/js/tinymce/tinymce.js delete mode 100644 wp-includes/js/tinymce/wp-tinymce.js create mode 100644 wp-includes/js/tinymce/wp-tinymce.js.gz create mode 100644 wp-includes/js/wp-a11y.js create mode 100644 wp-includes/js/wp-a11y.min.js delete mode 100644 wp-includes/ms-network.php delete mode 100644 wp-includes/ms-site.php create mode 100644 wp-includes/random_compat/byte_safe_strings.php create mode 100644 wp-includes/random_compat/cast_to_int.php create mode 100644 wp-includes/random_compat/error_polyfill.php create mode 100644 wp-includes/random_compat/random.php create mode 100644 wp-includes/random_compat/random_bytes_com_dotnet.php create mode 100644 wp-includes/random_compat/random_bytes_dev_urandom.php create mode 100644 wp-includes/random_compat/random_bytes_libsodium.php create mode 100644 wp-includes/random_compat/random_bytes_libsodium_legacy.php create mode 100644 wp-includes/random_compat/random_bytes_mcrypt.php create mode 100644 wp-includes/random_compat/random_int.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-application-passwords-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-menu-items-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-menu-locations-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-plugins-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-search-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-site-health-controller.php delete mode 100644 wp-includes/rest-api/endpoints/class-wp-rest-themes-controller.php delete mode 100644 wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php delete mode 100644 wp-includes/rest-api/search/class-wp-rest-post-search-handler.php delete mode 100644 wp-includes/rest-api/search/class-wp-rest-search-handler.php delete mode 100644 wp-includes/rest-api/search/class-wp-rest-term-search-handler.php delete mode 100644 wp-includes/robots-template.php delete mode 100644 wp-includes/sitemaps.php delete mode 100644 wp-includes/sitemaps/class-wp-sitemaps-index.php delete mode 100644 wp-includes/sitemaps/class-wp-sitemaps-provider.php delete mode 100644 wp-includes/sitemaps/class-wp-sitemaps-registry.php delete mode 100644 wp-includes/sitemaps/class-wp-sitemaps-renderer.php delete mode 100644 wp-includes/sitemaps/class-wp-sitemaps-stylesheet.php delete mode 100644 wp-includes/sitemaps/class-wp-sitemaps.php delete mode 100644 wp-includes/sitemaps/providers/class-wp-sitemaps-posts.php delete mode 100644 wp-includes/sitemaps/providers/class-wp-sitemaps-taxonomies.php delete mode 100644 wp-includes/sitemaps/providers/class-wp-sitemaps-users.php create mode 100644 wp-includes/wlwmanifest.xml diff --git a/index.php b/index.php index 60da453..304f1f2 100644 --- a/index.php +++ b/index.php @@ -14,4 +14,4 @@ define( 'WP_USE_THEMES', true ); /** Loads the ClassicPress Environment and Template */ -require __DIR__ . '/wp-blog-header.php'; +require dirname( __FILE__ ) . '/wp-blog-header.php'; diff --git a/license.txt b/license.txt index 989c4de..2135e47 100644 --- a/license.txt +++ b/license.txt @@ -1,6 +1,6 @@ ClassicPress - Web publishing software -Copyright © 2018-2024 ClassicPress and contributors +Copyright © 2018-2023 ClassicPress and contributors This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,7 +31,7 @@ and WordPress - Web publishing software - Copyright 2003-2024 by the WordPress contributors + Copyright 2003-2023 by the WordPress contributors WordPress is released under the GPL diff --git a/readme.html b/readme.html index b09c595..ff0c310 100644 --- a/readme.html +++ b/readme.html @@ -2,31 +2,28 @@ - - - + + ClassicPress › ReadMe - +

- ClassicPress ReadMe + ClassicPress

The CMS for Creators.
Stable. Lightweight. Instantly Familiar.

Welcome to ClassicPress!

-

You’ve just become part of a growing community of people who value the firm foundation WordPress +

You’ve just become part of a growing community of people who value the firm foundation WordPress 4.9.x provides for websites everywhere. Guided by our community, we can leverage our collective expertise to maintain and develop the ClassicPress platform as the content management system of choice for professionals, hobbyists, developers, sole-traders and - all website creators worldwide. -

+ all website creators worldwide.

Our purpose is to provide a stable, secure, and instantly familiar content management system driven by the needs of the community. We invite you to connect with us and add your voice to the conversation..

-

Subscribe to our newsletter, Mastodon, or Twitter to receive the latest - announcements, news, and other updates about ClassicPress.

+

— The ClassicPress Directors

Installation

For more information about installing ClassicPress, see our Installation

Updating

-

Automatic Updater

+

Using the Automatic Updater

+

If you are updating from beta version 1.0.0-beta1 or higher, you can use the automatic updater:

  1. Open wp-admin/update-core.php in your browser and follow the instructions.
  2. @@ -73,15 +71,14 @@

    Updating Manually

    For more information, see our manual update documentation.

    -
      +
      1. Before doing anything, make sure you have a working backup of the entire site as well as the database.
      2. Download the latest release of ClassicPress from our releases page.
      3. On your local computer, unzip the ClassicPress release file into a directory.
      4. On your local computer, remove the wp-config-sample.php file and the - wp-content directory. -
      5. + wp-content directory.
      6. Upload what's left over to your server, replacing the existing files (using either SSH or an application that connects over SFTP or FTP).
      7. Point the browser to /wp-admin/upgrade.php and @@ -96,25 +93,23 @@

        Migrating from WordPress

        System Requirements

          -
        • PHP version 7.4 or greater.
        • -
        • MySQL version 5.7 or greater, or MariaDB version - 10.4 - or greater.
        • -
        • Apache, Nginx, LiteSpeed or another web server that supports PHP and - MySQL/MariaDB.
        • +
        • PHP version 5.6 or higher.
        • +
        • MySQL version 5.0 or higher.
        • +
        • Apache version 2.4 server or higher.
        -

        Recommended Setup

        +

        Recommendations

        Online Resources

        @@ -133,47 +128,38 @@

        Online Resources

        ClassicPress Support Forums
        The support forums are a great way to get help from other ClassicPress users. Many community members and ClassicPress leaders are active here.
        -
        ClassicPress Zulip Chat
        +
        ClassicPress Slack
        There is an active online chat channel that is used for discussion among people who use ClassicPress and plan its further development.
        -
        ClassicPress Feature Requests -
        -
        Do you have an idea to make ClassicPress better? Consider sharing your idea on GitHub for the core team and - the community to share feedback and, possibly, implement the feature.
        +
        ClassicPress Feature Requests
        +
        Do you have an idea to make ClassicPress better? Consider sharing your idea on GitHub for the core team and the community to share feedback and, possibly, implement the feature.
        ClassicPress Governance
        Last but not least, read about the ClassicPress governance structure to understand how we do things and how - you can help. ClassicPress is a community-driven and funded fork of WordPress that enables all stakeholders - to + you can help. ClassicPress is a community-driven and funded fork of WordPress that enables all stakeholders to shape the direction that the project takes. This page aims to explain how we handle this process to ensure that power doesn't become centralised and that every voice can be heard.
        -

        Help Promote ClassicPress

        +

        Share the Love

        ClassicPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better: you and the rest of our community. If you enjoy ClassicPress, please consider:

          -
        • Participating in our forums.
        • -
        • Telling a friend about ClassicPress or sharing it on social media.
        • -
        • Setting up a ClassicPress website for someone less knowledgeable than yourself.
        • -
        • Writing a blog post about why you chose to use ClassicPress for your website.
        • -
        • Writing to WordPress plugin and theme developers to ask them to support ClassicPress.
        • +
        • Participating in our forums
        • +
        • Telling a friend about ClassicPress
        • +
        • Setting up a ClassicPress website for someone less knowledgeable than yourself
        • +
        • Sharing your favorite article about us with your social media followers
        • +
        • Writing a technical publication or other news organization to tell them about ClassicPress
        -

        Community Funding

        -

        ClassicPress is a community-driven and funded free, open-source project managed by 501(c)3 non-profit - ClassicPress Initiative.

        -

        You contributions help ClassicPress pay infrastructure and administrative costs. There are several ways you can - financially support ClassicPress:

        +

        Community Funded

        +

        ClassicPress is a community-driven and funded free open source project. You contributions help ClassicPress pay infrastructure and administrative costs. There are several ways you can financially support ClassicPress:

        Credits

        -

        ClassicPress v2.0 is a hard fork of the WordPress 6.2 - branch. +

        ClassicPress is a hard fork of the WordPress 4.9 branch. WordPress itself is a fork of b2/cafélog from Michel Valdrighi.

        License

        diff --git a/wp-activate.php b/wp-activate.php index 84d41f5..f936889 100644 --- a/wp-activate.php +++ b/wp-activate.php @@ -9,9 +9,9 @@ define( 'WP_INSTALLING', true ); /** Sets up the ClassicPress Environment. */ -require __DIR__ . '/wp-load.php'; +require dirname( __FILE__ ) . '/wp-load.php'; -require __DIR__ . '/wp-blog-header.php'; +require dirname( __FILE__ ) . '/wp-blog-header.php'; if ( ! is_multisite() ) { wp_redirect( wp_registration_url() ); @@ -37,7 +37,7 @@ if ( $key ) { $redirect_url = remove_query_arg( 'key' ); - if ( remove_query_arg( false ) !== $redirect_url ) { + if ( $redirect_url !== remove_query_arg( false ) ) { setcookie( $activate_cookie, $key, 0, $activate_path, COOKIE_DOMAIN, is_ssl(), true ); wp_safe_redirect( $redirect_url ); exit; @@ -46,13 +46,13 @@ } } -if ( null === $result && isset( $_COOKIE[ $activate_cookie ] ) ) { +if ( $result === null && isset( $_COOKIE[ $activate_cookie ] ) ) { $key = $_COOKIE[ $activate_cookie ]; $result = wpmu_activate_signup( $key ); setcookie( $activate_cookie, ' ', time() - YEAR_IN_SECONDS, $activate_path, COOKIE_DOMAIN, is_ssl(), true ); } -if ( null === $result || ( is_wp_error( $result ) && 'invalid_key' === $result->get_error_code() ) ) { +if ( $result === null || ( is_wp_error( $result ) && 'invalid_key' === $result->get_error_code() ) ) { status_header( 404 ); } elseif ( is_wp_error( $result ) ) { $error_code = $result->get_error_code(); @@ -68,13 +68,13 @@ $wp_object_cache->cache_enabled = false; } -// Fix for page title. +// Fix for page title $wp_query->is_404 = false; /** * Fires before the Site Activation page is loaded. * - * @since 3.0.0 + * @since WP-3.0.0 */ do_action( 'activate_header' ); @@ -83,7 +83,7 @@ * * Fires on {@see 'wp_head'}. * - * @since MU (3.0.0) + * @since WP-MU (3.0.0) */ function do_activate_header() { /** @@ -91,7 +91,7 @@ function do_activate_header() { * * Fires on the {@see 'wp_head'} action. * - * @since 3.0.0 + * @since WP-3.0.0 */ do_action( 'activate_wp_head' ); } @@ -100,27 +100,23 @@ function do_activate_header() { /** * Loads styles specific to this page. * - * @since MU (3.0.0) + * @since WP-MU (3.0.0) */ function wpmu_activate_stylesheet() { ?> -
        @@ -128,13 +124,13 @@ function wpmu_activate_stylesheet() {

        -
        +

        -
        +

        - +

        @@ -146,27 +142,27 @@ function wpmu_activate_stylesheet() {

        '; - if ( '' === $signup->domain . $signup->path ) { + if ( $signup->domain . $signup->path == '' ) { printf( - /* translators: 1: Login URL, 2: Username, 3: User email address, 4: Lost password URL. */ + /* translators: 1: login URL, 2: username, 3: user email, 4: lost password URL */ __( 'Your account has been activated. You may now log in to the site using your chosen username of “%2$s”. 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 reset your password.' ), - network_site_url( $blog_details->path . 'wp-login.php', 'login' ), + network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, wp_lostpassword_url() ); } else { printf( - /* translators: 1: Site URL, 2: Username, 3: User email address, 4: Lost password URL. */ + /* translators: 1: site URL, 2: username, 3: user email, 4: lost password URL */ __( 'Your site at %1$s is active. You may now log in to your site using your chosen username of “%2$s”. 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 reset your password.' ), - sprintf( '%1$s%2$s', $signup->domain, $blog_details->path ), + sprintf( '%1$s', $signup->domain ), $signup->user_login, $signup->user_email, wp_lostpassword_url() ); } echo '

        '; - } elseif ( null === $result || is_wp_error( $result ) ) { + } elseif ( $result === null || is_wp_error( $result ) ) { ?>

        @@ -180,39 +176,39 @@ function wpmu_activate_stylesheet() {

        -

        user_login; ?>

        -

        +

        user_login; ?>

        +

        View your site or Log in' ), $url, esc_url( $login_url ) ); ?>

        Log in or go back to the homepage.' ), - network_site_url( $blog_details->path . 'wp-login.php', 'login' ), - network_home_url( $blog_details->path ) - ); + /* translators: 1: login URL, 2: network home URL */ + printf( __( 'Your account is now activated. Log in or go back to the homepage.' ), network_site_url( 'wp-login.php', 'login' ), network_home_url() ); ?>

        + -
        +

        @@ -61,12 +61,10 @@

        ClassicPress is a fork of the WordPress %s branch, including the battle-tested and proven classic editor interface using TinyMCE.' ), - 'https://www.classicpress.net', - $wp_version + __( 'ClassicPress is a fork of the WordPress 4.9 branch, including the battle-tested and proven classic editor interface using TinyMCE.' ), + 'https://www.classicpress.net' ); ?>

        @@ -81,19 +79,28 @@

        join our Zulip group or our community forum.' ), - 'https://classicpress.zulipchat.com/register/', + /* translators: 1: link with instructions to join ClassicPress Slack, 2: link to community forums */ + __( 'For general discussion about ClassicPress, join our Slack group or our community forum.' ), + 'https://www.classicpress.net/join-slack/', 'https://forums.classicpress.net/c/support' ); ?>

        +

        + our petitions site.' ), + 'https://petitions.classicpress.net/' + ); + ?> +

        FAQs page. If your question is not answered there, you can make a new post on our support forum.' ), - 'https://www.classicpress.net/faq/', + 'https://docs.classicpress.net/faq-support/', 'https://forums.classicpress.net/c/support/' ); ?> @@ -102,24 +109,13 @@ on GitHub. For specific bug reports or technical suggestions, see the issues list and add your report if it is not already present.' ), + __( 'ClassicPress is developed on GitHub. For specific bug reports or technical suggestions, see the issues list and add your report if it is not already present.' ), 'https://github.com/ClassicPress/ClassicPress', 'https://github.com/ClassicPress/ClassicPress/issues' ); ?>

        -

        -

        - ClassicPress 2.0.0 (Bella) release notes.' ), - '6.2.x', - 'https://forums.classicpress.net/t/classicpress-2-0-0-bella-release-notes/910' - ); - ?> -

        ClassicPress 1.0.0 (Aurora) release notes.' ), - '4.9.x', + __( 'For a list of new features and other changes from WordPress 4.9.x, see the ClassicPress 1.0.0 (Aurora) release notes.' ), 'https://forums.classicpress.net/t/classicpress-1-0-0-aurora-release-notes/910' ); ?>

        -

        +

        Version %s addressed some security issues.' ), - '6.2.3' + '4.9.24' ); ?> the release notes.' ), sprintf( - /* translators: %s: WordPress version. */ + /* translators: %s: WordPress version */ esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), - sanitize_title( '6.2.3' ) + sanitize_title( '4.9.24' ) ) ); ?> @@ -180,14 +175,9 @@ classicpress_version()

        WordPress version %1$s addressed some security issues and fixed %2$s bug.', - 'WordPress version %1$s addressed some security issues and fixed %2$s bugs.', - 1 - ), - '6.2.2', - number_format_i18n( 1 ) + /* translators: %s: WordPress version number */ + __( 'WordPress Version %s addressed some security issues.' ), + '4.9.23' ); ?> @@ -205,14 +195,249 @@ classicpress_version()

        WordPress version %1$s addressed some security issues and fixed %2$s bug.', - 'WordPress version %1$s addressed some security issues and fixed %2$s bugs.', - 20 - ), - '6.2.1', - number_format_i18n( 20 ) + /* translators: %s: WordPress version number */ + __( 'WordPress Version %s addressed some security issues.' ), + '4.9.22' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.22' ) + ) + ); + ?> +

        +

        + WordPress Version %s addressed some security issues.' ), + '4.9.21' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.21' ) + ) + ); + ?> +

        +

        + WordPress Version %s addressed one security issue.' ), + '4.9.20' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.20' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.19' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.19' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed one security issue.' ), + '4.9.18' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.18' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.17' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.17' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.16' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.16' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.15' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.15' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.14' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.14' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.13' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.13' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.12' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.12' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.11' + ); + ?> + the release notes.' ), + sprintf( + /* translators: %s: WordPress version */ + esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ), + sanitize_title( '4.9.11' ) + ) + ); + ?> +

        +

        + WordPress version %s addressed some security issues.' ), + '4.9.10' ); ?>

        +

        + WordPress version %s addressed some security issues.' ), '4.9.9' ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.9' ); + ?> +

        +

        + WordPress version %1$s addressed %2$s bug.', + 'WordPress version %1$s addressed %2$s bugs.', + 46 + ), + '4.9.8', + number_format_i18n( 46 ) + ); + ?> + the release notes.' ), + 'https://codex.wordpress.org/Version_4.9.8' + ); + ?> +

        +

        + WordPress version %1$s addressed some security issues and fixed %2$s bug.', + 'WordPress version %1$s addressed some security issues and fixed %2$s bugs.', + 17 + ), + '4.9.7', + number_format_i18n( 17 ) + ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.7' ); + ?> +

        +

        + WordPress version %1$s addressed %2$s bug.', + 'WordPress version %1$s addressed %2$s bugs.', + 18 + ), + '4.9.6', + number_format_i18n( 18 ) + ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.6' ); + ?> +

        +

        + WordPress version %1$s addressed some security issues and fixed %2$s bug.', + 'WordPress version %1$s addressed some security issues and fixed %2$s bugs.', + 28 + ), + '4.9.5', + number_format_i18n( 28 ) + ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.5' ); + ?> +

        +

        + WordPress version %1$s addressed %2$s bug.', + 'WordPress version %1$s addressed %2$s bugs.', + 1 + ), + '4.9.4', + number_format_i18n( 1 ) + ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.4' ); + ?> +

        +

        + WordPress version %1$s addressed %2$s bug.', + 'WordPress version %1$s addressed %2$s bugs.', + 34 + ), + '4.9.3', + number_format_i18n( 34 ) + ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.3' ); + ?> +

        +

        + WordPress version %1$s addressed some security issues and fixed %2$s bug.', + 'WordPress version %1$s addressed some security issues and fixed %2$s bugs.', + 22 + ), + '4.9.2', + number_format_i18n( 22 ) + ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.2' ); + ?> +

        +

        + WordPress version %1$s addressed some security issues and fixed %2$s bug.', + 'WordPress version %1$s addressed some security issues and fixed %2$s bugs.', + 11 + ), + '4.9.1', + number_format_i18n( 11 ) + ); + ?> + the release notes.' ), 'https://codex.wordpress.org/Version_4.9.1' ); + ?> +

        - + diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php index b0433ce..d92f9d9 100644 --- a/wp-admin/admin-functions.php +++ b/wp-admin/admin-functions.php @@ -4,12 +4,12 @@ * * This file is deprecated, use 'wp-admin/includes/admin.php' instead. * - * @deprecated 2.5.0 + * @deprecated WP-2.5.0 * @package ClassicPress * @subpackage Administration */ -_deprecated_file( basename( __FILE__ ), '2.5.0', 'wp-admin/includes/admin.php' ); +_deprecated_file( basename( __FILE__ ), 'WP-2.5.0', 'wp-admin/includes/admin.php' ); /** ClassicPress Administration API: Includes all Administration functions. */ require_once ABSPATH . 'wp-admin/includes/admin.php'; diff --git a/wp-admin/admin-header.php b/wp-admin/admin-header.php index 18a2ea0..589fdb6 100644 --- a/wp-admin/admin-header.php +++ b/wp-admin/admin-header.php @@ -8,7 +8,7 @@ header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) ); if ( ! defined( 'WP_ADMIN' ) ) { - require_once __DIR__ . '/admin.php'; + require_once dirname( __FILE__ ) . '/admin.php'; } /** @@ -16,16 +16,15 @@ * * @global string $title * @global string $hook_suffix - * @global WP_Screen $current_screen WordPress current screen object. - * @global WP_Locale $wp_locale WordPress date and time locale object. - * @global string $pagenow The filename of the current screen. + * @global WP_Screen $current_screen + * @global WP_Locale $wp_locale + * @global string $pagenow * @global string $update_title * @global int $total_update_count * @global string $parent_file - * @global string $typenow The post type of the current screen. */ global $title, $hook_suffix, $current_screen, $wp_locale, $pagenow, - $update_title, $total_update_count, $parent_file, $typenow; + $update_title, $total_update_count, $parent_file; // Catch plugins that include admin-header.php before admin.php completes. if ( empty( $current_screen ) ) { @@ -33,50 +32,30 @@ } get_admin_page_title(); -$title = strip_tags( $title ); +$title = esc_html( strip_tags( $title ) ); if ( is_network_admin() ) { - /* translators: Network admin screen title. %s: Network title. */ - $admin_title = sprintf( __( 'Network Admin: %s' ), get_network()->site_name ); + /* translators: Network admin screen title. 1: Network name */ + $admin_title = sprintf( __( 'Network Admin: %s' ), esc_html( get_network()->site_name ) ); } elseif ( is_user_admin() ) { - /* translators: User dashboard screen title. %s: Network title. */ - $admin_title = sprintf( __( 'User Dashboard: %s' ), get_network()->site_name ); + /* translators: User dashboard screen title. 1: Network name */ + $admin_title = sprintf( __( 'User Dashboard: %s' ), esc_html( get_network()->site_name ) ); } else { $admin_title = get_bloginfo( 'name' ); } -if ( $admin_title === $title ) { - /* translators: Admin screen title. %s: Admin screen name. */ - $admin_title = sprintf( __( '%s — ClassicPress' ), $title ); +if ( $admin_title == $title ) { + /* translators: Admin screen title. 1: Admin screen name */ + $admin_title = sprintf( __( '%1$s — ClassicPress' ), $title ); } else { - $screen_title = $title; - - if ( 'post' === $current_screen->base && 'add' !== $current_screen->action ) { - $post_title = get_the_title(); - if ( ! empty( $post_title ) ) { - $post_type_obj = get_post_type_object( $typenow ); - $screen_title = sprintf( - /* translators: Editor admin screen title. 1: "Edit item" text for the post type, 2: Post title. */ - __( '%1$s “%2$s”' ), - $post_type_obj->labels->edit_item, - $post_title - ); - } - } - - /* translators: Admin screen title. 1: Admin screen name, 2: Network or site name. */ - $admin_title = sprintf( __( '%1$s ‹ %2$s — ClassicPress' ), $screen_title, $admin_title ); -} - -if ( wp_is_recovery_mode() ) { - /* translators: %s: Admin screen title. */ - $admin_title = sprintf( __( 'Recovery Mode — %s' ), $admin_title ); + /* translators: Admin screen title. 1: Admin screen name, 2: Network or site name */ + $admin_title = sprintf( __( '%1$s ‹ %2$s — ClassicPress' ), $title, $admin_title ); } /** * Filters the title tag content for an admin page. * - * @since 3.1.0 + * @since WP-3.1.0 * * @param string $admin_title The page title, with extra context added. * @param string $title The original page title. @@ -87,17 +66,18 @@ _wp_admin_html_begin(); ?> -<?php echo esc_html( $admin_title ); ?> +<?php echo $admin_title; ?> - + taxonomy; } -$admin_body_class .= ' branch-' . str_replace( array( '.', ',' ), '-', (float) get_bloginfo( 'version' ) ); +$admin_body_class .= ' branch-' . str_replace( array( '.', ',' ), '-', floatval( get_bloginfo( 'version' ) ) ); $admin_body_class .= ' version-' . str_replace( '.', '-', preg_replace( '/^([.0-9]+).*/', '$1', get_bloginfo( '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_user_locale() ) ) ); @@ -205,19 +186,6 @@ $admin_body_class .= ' no-customize-support no-svg'; -$error_get_last = error_get_last(); - -// Print a CSS class to make PHP errors visible. -if ( $error_get_last && WP_DEBUG && WP_DEBUG_DISPLAY && ini_get( 'display_errors' ) - // Don't print the class for PHP notices in wp-config.php, as they happen before WP_DEBUG takes effect, - // and should not be displayed with the `error_reporting` level previously set in wp-load.php. - && ( E_NOTICE !== $error_get_last['type'] || 'wp-config.php' !== wp_basename( $error_get_last['file'] ) ) -) { - $admin_body_class .= ' php-error'; -} - -unset( $error_get_last ); - ?> - - @@ -258,20 +225,20 @@ /** * Fires at the beginning of the content section in an admin page. * - * @since 3.0.0 + * @since WP-3.0.0 */ do_action( 'in_admin_header' ); ?>
        set_parentage( $parent_file ); ?> -
        +
        render_screen_meta(); @@ -280,21 +247,21 @@ /** * Prints network admin screen notices. * - * @since 3.1.0 + * @since WP-3.1.0 */ do_action( 'network_admin_notices' ); } elseif ( is_user_admin() ) { /** * Prints user admin screen notices. * - * @since 3.1.0 + * @since WP-3.1.0 */ do_action( 'user_admin_notices' ); } else { /** * Prints admin screen notices. * - * @since 3.1.0 + * @since WP-3.1.0 */ do_action( 'admin_notices' ); } @@ -302,7 +269,7 @@ /** * Prints generic admin screen notices. * - * @since 3.1.0 + * @since WP-3.1.0 */ do_action( 'all_admin_notices' ); diff --git a/wp-admin/admin-post.php b/wp-admin/admin-post.php index 539d544..8740735 100644 --- a/wp-admin/admin-post.php +++ b/wp-admin/admin-post.php @@ -16,7 +16,7 @@ if ( defined( 'ABSPATH' ) ) { require_once ABSPATH . 'wp-load.php'; } else { - require_once dirname( __DIR__ ) . '/wp-load.php'; + require_once dirname( dirname( __FILE__ ) ) . '/wp-load.php'; } /** Allow for cross-domain requests (from the front end). */ @@ -29,58 +29,43 @@ /** This action is documented in wp-admin/admin.php */ do_action( 'admin_init' ); -$action = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : ''; +$action = empty( $_REQUEST['action'] ) ? '' : $_REQUEST['action']; -// Reject invalid parameters. -if ( ! is_scalar( $action ) ) { - wp_die( '', 400 ); -} - -if ( ! is_user_logged_in() ) { +if ( ! wp_validate_auth_cookie() ) { if ( empty( $action ) ) { /** - * Fires on a non-authenticated admin post request where no action is supplied. + * Fires on a non-authenticated admin post request where no action was supplied. * - * @since 2.6.0 + * @since WP-2.6.0 */ do_action( 'admin_post_nopriv' ); } else { - // If no action is registered, return a Bad Request response. - if ( ! has_action( "admin_post_nopriv_{$action}" ) ) { - wp_die( '', 400 ); - } - /** * Fires on a non-authenticated admin post request for the given action. * * The dynamic portion of the hook name, `$action`, refers to the given * request action. * - * @since 2.6.0 + * @since WP-2.6.0 */ do_action( "admin_post_nopriv_{$action}" ); } } else { if ( empty( $action ) ) { /** - * Fires on an authenticated admin post request where no action is supplied. + * Fires on an authenticated admin post request where no action was supplied. * - * @since 2.6.0 + * @since WP-2.6.0 */ do_action( 'admin_post' ); } else { - // If no action is registered, return a Bad Request response. - if ( ! has_action( "admin_post_{$action}" ) ) { - wp_die( '', 400 ); - } - /** * Fires on an authenticated admin post request for the given action. * * The dynamic portion of the hook name, `$action`, refers to the given * request action. * - * @since 2.6.0 + * @since WP-2.6.0 */ do_action( "admin_post_{$action}" ); } diff --git a/wp-admin/admin.php b/wp-admin/admin.php index 25c42b3..343de88 100644 --- a/wp-admin/admin.php +++ b/wp-admin/admin.php @@ -9,7 +9,7 @@ /** * In ClassicPress Administration Screens * - * @since 2.3.2 + * @since WP-2.3.2 */ if ( ! defined( 'WP_ADMIN' ) ) { define( 'WP_ADMIN', true ); @@ -31,53 +31,47 @@ define( 'WP_LOAD_IMPORTERS', true ); } -require_once dirname( __DIR__ ) . '/wp-load.php'; +require_once dirname( dirname( __FILE__ ) ) . '/wp-load.php'; nocache_headers(); if ( get_option( 'db_upgraded' ) ) { - flush_rewrite_rules(); update_option( 'db_upgraded', false ); /** * Fires on the next page load after a successful DB upgrade. * - * @since 2.8.0 + * @since WP-2.8.0 */ do_action( 'after_db_upgrade' ); - -} elseif ( ! wp_doing_ajax() && empty( $_POST ) - && (int) get_option( 'db_version' ) !== $wp_db_version -) { - +} elseif ( get_option( 'db_version' ) != $wp_db_version && empty( $_POST ) ) { if ( ! is_multisite() ) { wp_redirect( admin_url( 'upgrade.php?_wp_http_referer=' . urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) ); exit; - } - /** - * Filters whether to attempt to perform the multisite DB upgrade routine. - * - * In single site, the user would be redirected to wp-admin/upgrade.php. - * In multisite, the DB upgrade routine is automatically fired, but only - * when this filter returns true. - * - * If the network is 50 sites or less, it will run every time. Otherwise, - * it will throttle itself to reduce load. - * - * @since MU (3.0.0) - * - * @param bool $do_mu_upgrade Whether to perform the Multisite upgrade routine. Default true. - */ - if ( apply_filters( 'do_mu_upgrade', true ) ) { + /** + * Filters whether to attempt to perform the multisite DB upgrade routine. + * + * In single site, the user would be redirected to wp-admin/upgrade.php. + * In multisite, the DB upgrade routine is automatically fired, but only + * when this filter returns true. + * + * If the network is 50 sites or less, it will run every time. Otherwise, + * it will throttle itself to reduce load. + * + * @since WP-3.0.0 + * + * @param bool $do_mu_upgrade Whether to perform the Multisite upgrade routine. Default true. + */ + } elseif ( apply_filters( 'do_mu_upgrade', true ) ) { $c = get_blog_count(); /* * If there are 50 or fewer sites, run every time. Otherwise, throttle to reduce load: * attempt to do no more than threshold value, with some +/- allowed. */ - if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int) ( $c / 50 ) ) === 1 ) ) { + if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int) ( $c / 50 ) ) == 1 ) ) { require_once ABSPATH . WPINC . '/http.php'; $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), @@ -98,12 +92,12 @@ auth_redirect(); -// Schedule Trash collection. +// Schedule trash collection if ( ! wp_next_scheduled( 'wp_scheduled_delete' ) && ! wp_installing() ) { wp_schedule_event( time(), 'daily', 'wp_scheduled_delete' ); } -// Schedule transient cleanup. +// Schedule Transient cleanup. if ( ! wp_next_scheduled( 'delete_expired_transients' ) && ! wp_installing() ) { wp_schedule_event( time(), 'daily', 'delete_expired_transients' ); } @@ -116,16 +110,16 @@ wp_enqueue_script( 'common' ); /** - * $pagenow is set in vars.php. - * $wp_importers is sometimes set in wp-admin/includes/import.php. - * The remaining variables are imported as globals elsewhere, declared as globals here. + * $pagenow is set in vars.php + * $wp_importers is sometimes set in wp-admin/includes/import.php + * The remaining variables are imported as globals elsewhere, declared as globals here * - * @global string $pagenow The filename of the current screen. + * @global string $pagenow * @global array $wp_importers * @global string $hook_suffix * @global string $plugin_page - * @global string $typenow The post type of the current screen. - * @global string $taxnow The taxonomy of the current screen. + * @global string $typenow + * @global string $taxnow */ global $pagenow, $wp_importers, $hook_suffix, $plugin_page, $typenow, $taxnow; @@ -170,7 +164,7 @@ * * This is roughly analogous to the more general {@see 'init'} hook, which fires earlier. * - * @since 2.5.0 + * @since WP-2.5.0 */ do_action( 'admin_init' ); @@ -180,9 +174,7 @@ } else { $the_parent = $pagenow; } - - $page_hook = get_plugin_page_hook( $plugin_page, $the_parent ); - if ( ! $page_hook ) { + if ( ! $page_hook = get_plugin_page_hook( $plugin_page, $the_parent ) ) { $page_hook = get_plugin_page_hook( $plugin_page, $plugin_page ); // Back-compat for plugins using add_management_page(). @@ -232,7 +224,7 @@ * * @see get_plugin_page_hook() * - * @since 2.1.0 + * @since WP-2.1.0 */ do_action( "load-{$page_hook}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores if ( ! isset( $_GET['noheader'] ) ) { @@ -242,19 +234,8 @@ /** * Used to call the registered callback for a plugin screen. * - * This hook uses a dynamic hook name, `$page_hook`, which refers to a mixture of plugin - * page information including: - * 1. The page type. If the plugin page is registered as a submenu page, such as for - * Settings, the page type would be 'settings'. Otherwise the type is 'toplevel'. - * 2. A separator of '_page_'. - * 3. The plugin basename minus the file extension. - * - * Together, the three parts form the `$page_hook`. Citing the example above, - * the hook name used would be 'settings_page_pluginbasename'. - * - * @see get_plugin_page_hook() - * - * @since 1.5.0 + * @ignore + * @since WP-1.5.0 */ do_action( $page_hook ); } else { @@ -262,10 +243,7 @@ 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" ) ) - ) { - /* translators: %s: Admin page generated by a plugin. */ + 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 ) ) ); } @@ -279,7 +257,7 @@ * * @see plugin_basename() * - * @since 1.5.0 + * @since WP-1.5.0 */ do_action( "load-{$plugin_page}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores @@ -294,7 +272,7 @@ } } - require_once ABSPATH . 'wp-admin/admin-footer.php'; + include ABSPATH . 'wp-admin/admin-footer.php'; exit; } elseif ( isset( $_GET['import'] ) ) { @@ -302,7 +280,7 @@ $importer = $_GET['import']; if ( ! current_user_can( 'import' ) ) { - wp_die( __( 'Sorry, you are not allowed to import content into this site.' ) ); + wp_die( __( 'Sorry, you are not allowed to import content.' ) ); } if ( validate_file( $importer ) ) { @@ -320,24 +298,13 @@ * * The dynamic portion of the hook name, `$importer`, refers to the importer slug. * - * Possible hook names include: - * - * - `load-importer-blogger` - * - `load-importer-wpcat2tag` - * - `load-importer-livejournal` - * - `load-importer-mt` - * - `load-importer-rss` - * - `load-importer-tumblr` - * - `load-importer-wordpress` - * - * @since 3.5.0 + * @since WP-3.5.0 */ do_action( "load-importer-{$importer}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores - // Used in the HTML title tag. - $title = __( 'Import' ); $parent_file = 'tools.php'; $submenu_file = 'import.php'; + $title = __( 'Import' ); if ( ! isset( $_GET['noheader'] ) ) { require_once ABSPATH . 'wp-admin/admin-header.php'; @@ -353,7 +320,7 @@ * Multisite uses this hook to filter all data through kses by default, * as a super administrator may be assisting an untrusted user. * - * @since 3.1.0 + * @since WP-3.1.0 * * @param bool $force Whether to force data to be filtered through kses. Default false. */ @@ -363,9 +330,9 @@ call_user_func( $wp_importers[ $importer ][2] ); - require_once ABSPATH . 'wp-admin/admin-footer.php'; + include ABSPATH . 'wp-admin/admin-footer.php'; - // Make sure rules are flushed. + // Make sure rules are flushed flush_rewrite_rules( false ); exit; @@ -376,11 +343,11 @@ * The load-* hook fires in a number of contexts. This hook is for core screens. * * The dynamic portion of the hook name, `$pagenow`, is a global variable - * referring to the filename of the current screen, such as 'admin.php', + * referring to the filename of the current page, such as 'admin.php', * 'post-new.php' etc. A complete hook for the latter would be * 'load-post-new.php'. * - * @since 2.1.0 + * @since WP-2.1.0 */ do_action( "load-{$pagenow}" ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores @@ -388,16 +355,16 @@ * The following hooks are fired to ensure backward compatibility. * In all other cases, 'load-' . $pagenow should be used instead. */ - if ( 'page' === $typenow ) { - if ( 'post-new.php' === $pagenow ) { + if ( $typenow == 'page' ) { + if ( $pagenow == 'post-new.php' ) { do_action( 'load-page-new.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores - } elseif ( 'post.php' === $pagenow ) { + } elseif ( $pagenow == 'post.php' ) { do_action( 'load-page.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } - } elseif ( 'edit-tags.php' === $pagenow ) { - if ( 'category' === $taxnow ) { + } elseif ( $pagenow == 'edit-tags.php' ) { + if ( $taxnow == 'category' ) { do_action( 'load-categories.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores - } elseif ( 'link_category' === $taxnow ) { + } elseif ( $taxnow == 'link_category' ) { do_action( 'load-edit-link-categories.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores } } elseif ( 'term.php' === $pagenow ) { @@ -406,15 +373,13 @@ } if ( ! empty( $_REQUEST['action'] ) ) { - $action = $_REQUEST['action']; - /** * Fires when an 'action' request variable is sent. * - * The dynamic portion of the hook name, `$action`, refers to - * the action derived from the `GET` or `POST` request. + * The dynamic portion of the hook name, `$_REQUEST['action']`, + * refers to the action derived from the `GET` or `POST` request. * - * @since 2.6.0 + * @since WP-2.6.0 */ - do_action( "admin_action_{$action}" ); + do_action( 'admin_action_' . $_REQUEST['action'] ); } diff --git a/wp-admin/async-upload.php b/wp-admin/async-upload.php index 19e6f3a..9ce23d1 100644 --- a/wp-admin/async-upload.php +++ b/wp-admin/async-upload.php @@ -17,7 +17,7 @@ if ( defined( 'ABSPATH' ) ) { require_once ABSPATH . 'wp-load.php'; } else { - require_once dirname( __DIR__ ) . '/wp-load.php'; + require_once dirname( dirname( __FILE__ ) ) . '/wp-load.php'; } require_once ABSPATH . 'wp-admin/admin.php'; @@ -25,7 +25,7 @@ header( 'Content-Type: text/plain; charset=' . get_option( 'blog_charset' ) ); if ( isset( $_REQUEST['action'] ) && 'upload-attachment' === $_REQUEST['action'] ) { - require ABSPATH . 'wp-admin/includes/ajax-actions.php'; + include ABSPATH . 'wp-admin/includes/ajax-actions.php'; send_nosniff_header(); nocache_headers(); @@ -38,50 +38,29 @@ wp_die( __( 'Sorry, you are not allowed to upload files.' ) ); } -// Just fetch the detail form for that attachment. -if ( isset( $_REQUEST['attachment_id'] ) && (int) $_REQUEST['attachment_id'] && $_REQUEST['fetch'] ) { - $id = (int) $_REQUEST['attachment_id']; +// just fetch the detail form for that attachment +if ( isset( $_REQUEST['attachment_id'] ) && intval( $_REQUEST['attachment_id'] ) && $_REQUEST['fetch'] ) { + $id = intval( $_REQUEST['attachment_id'] ); $post = get_post( $id ); - if ( 'attachment' !== $post->post_type ) { + if ( 'attachment' != $post->post_type ) { wp_die( __( 'Invalid post type.' ) ); } + if ( ! current_user_can( 'edit_post', $id ) ) { + wp_die( __( 'Sorry, you are not allowed to edit this item.' ) ); + } switch ( $_REQUEST['fetch'] ) { case 3: - ?> -
        -
        - '; - } - - // Title shouldn't ever be empty, but use filename just in case. - $file = get_attached_file( $post->ID ); - $file_url = wp_get_attachment_url( $post->ID ); - $title = $post->post_title ? $post->post_title : wp_basename( $file ); - ?> -
        - - -
        -
        -
        - - - - - ' . _x( 'Edit', 'media item' ) . ''; - } else { - echo '' . _x( 'Success', 'media item' ) . ''; - } - ?> -
        -
        - '; + } + echo '' . _x( 'Edit', 'media item' ) . ''; + + // Title shouldn't ever be empty, but use filename just in case. + $file = get_attached_file( $post->ID ); + $title = $post->post_title ? $post->post_title : wp_basename( $file ); + echo '
        ' . esc_html( wp_html_excerpt( $title, 60, '…' ) ) . '
        '; break; case 2: add_filter( 'attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2 ); @@ -113,19 +92,10 @@ $id = media_handle_upload( 'async-upload', $post_id ); if ( is_wp_error( $id ) ) { - printf( - '
        %s %s
        %s
        ', - sprintf( - '', - __( 'Dismiss' ) - ), - sprintf( - /* translators: %s: Name of the file that failed to upload. */ - __( '“%s” has failed to upload.' ), - esc_html( $_FILES['async-upload']['name'] ) - ), - esc_html( $id->get_error_message() ) - ); + echo '
        + + ' . sprintf( __( '“%s” has failed to upload.' ), esc_html( $_FILES['async-upload']['name'] ) ) . '
        ' . + esc_html( $id->get_error_message() ) . '
        '; exit; } @@ -133,22 +103,16 @@ // Short form response - attachment ID only. echo $id; } else { - // Long form response - big chunk of HTML. + // Long form response - big chunk o html. $type = $_REQUEST['type']; /** * Filters the returned ID of an uploaded attachment. * - * The dynamic portion of the hook name, `$type`, refers to the attachment type. - * - * Possible hook names include: - * - * - `async_upload_audio` - * - `async_upload_file` - * - `async_upload_image` - * - `async_upload_video` + * The dynamic portion of the hook name, `$type`, refers to the attachment type, + * such as 'image', 'audio', 'video', 'file', etc. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $id Uploaded attachment ID. */ diff --git a/wp-admin/authorize-application.php b/wp-admin/authorize-application.php deleted file mode 100644 index 08793a5..0000000 --- a/wp-admin/authorize-application.php +++ /dev/null @@ -1,325 +0,0 @@ - $app_name, - 'app_id' => $app_id, - ) - ); - - if ( is_wp_error( $created ) ) { - $error = $created; - } else { - list( $new_password ) = $created; - - if ( $success_url ) { - $redirect = add_query_arg( - array( - 'site_url' => urlencode( site_url() ), - 'user_login' => urlencode( wp_get_current_user()->user_login ), - 'password' => urlencode( $new_password ), - ), - $success_url - ); - } - } - } - - if ( $redirect ) { - // Explicitly not using wp_safe_redirect b/c sends to arbitrary domain. - wp_redirect( $redirect ); - exit; - } -} - -// Used in the HTML title tag. -$title = __( 'Authorize Application' ); - -$app_name = ! empty( $_REQUEST['app_name'] ) ? $_REQUEST['app_name'] : ''; -$app_id = ! empty( $_REQUEST['app_id'] ) ? $_REQUEST['app_id'] : ''; -$success_url = ! empty( $_REQUEST['success_url'] ) ? $_REQUEST['success_url'] : null; - -if ( ! empty( $_REQUEST['reject_url'] ) ) { - $reject_url = $_REQUEST['reject_url']; -} elseif ( $success_url ) { - $reject_url = add_query_arg( 'success', 'false', $success_url ); -} else { - $reject_url = null; -} - -$user = wp_get_current_user(); - -$request = compact( 'app_name', 'app_id', 'success_url', 'reject_url' ); -$is_valid = wp_is_authorize_application_password_request_valid( $request, $user ); - -if ( is_wp_error( $is_valid ) ) { - wp_die( - __( 'The Authorize Application request is not allowed.' ) . ' ' . implode( ' ', $is_valid->get_error_messages() ), - __( 'Cannot Authorize Application' ) - ); -} - -if ( wp_is_site_protected_by_basic_auth( 'front' ) ) { - wp_die( - __( 'Your website appears to use Basic Authentication, which is not currently compatible with application passwords.' ), - __( 'Cannot Authorize Application' ), - array( - 'response' => 501, - 'link_text' => __( 'Go Back' ), - 'link_url' => $reject_url ? add_query_arg( 'error', 'disabled', $reject_url ) : admin_url(), - ) - ); -} - -if ( ! wp_is_application_passwords_available_for_user( $user ) ) { - if ( wp_is_application_passwords_available() ) { - $message = __( 'Application passwords are not available for your account. Please contact the site administrator for assistance.' ); - } else { - $message = __( 'Application passwords are not available.' ); - } - - wp_die( - $message, - __( 'Cannot Authorize Application' ), - array( - 'response' => 501, - 'link_text' => __( 'Go Back' ), - 'link_url' => $reject_url ? add_query_arg( 'error', 'disabled', $reject_url ) : admin_url(), - ) - ); -} - -wp_enqueue_script( 'auth-app' ); -wp_localize_script( - 'auth-app', - 'authApp', - array( - 'site_url' => site_url(), - 'user_login' => $user->user_login, - 'success' => $success_url, - 'reject' => $reject_url ? $reject_url : admin_url(), - ) -); - -require_once ABSPATH . 'wp-admin/admin-header.php'; - -?> -
        -

        - - -

        get_error_message(); ?>

        - - -
        -

        - -

        - ' . esc_html( $app_name ) . '' - ); - ?> -

        - -

        - - - ID, true ); - $blogs_count = count( $blogs ); - - if ( $blogs_count > 1 ) { - ?> -

        - the %2$s site in this installation that you have permissions on.', - 'This will grant access to all %2$s sites in this installation that you have permissions on.', - $blogs_count - ); - - if ( is_super_admin() ) { - /* translators: 1: URL to my-sites.php, 2: Number of sites the user has. */ - $message = _n( - 'This will grant access to the %2$s site on the network as you have Super Admin rights.', - 'This will grant access to all %2$s sites on the network as you have Super Admin rights.', - $blogs_count - ); - } - - printf( - $message, - admin_url( 'my-sites.php' ), - number_format_i18n( $blogs_count ) - ); - ?> -

        - - - -
        -

        - - -

        -

        -
        - - - -
        - - - - - - -
        - - -
        - - - - 'description-approve', - ) - ); - ?> -

        - ' . esc_html( - add_query_arg( - array( - 'site_url' => site_url(), - 'user_login' => $user->user_login, - 'password' => '[------]', - ), - $success_url - ) - ) . '' - ); - } else { - _e( 'You will be given a password to manually enter into the application in question.' ); - } - ?> -

        - - 'description-reject', - ) - ); - ?> -

        - ' . esc_html( $reject_url ) . '' - ); - } else { - _e( 'You will be returned to the ClassicPress Dashboard, and no changes will be made.' ); - } - ?> -

        -
        - -
        -
        -comment_post_ID ) ) { - wp_die( - __( 'You cannot edit this comment because the associated post is in the Trash. Please restore the post first, then try again.' ) - ); - } -} else { - $comment = null; -} - switch ( $action ) { case 'editcomment': - // Used in the HTML title tag. $title = __( 'Edit Comment' ); get_current_screen()->add_help_tab( @@ -61,20 +46,23 @@ 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => - '

        ' . __( 'You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.' ) . '

        ' . - '

        ' . __( 'You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.' ) . '

        ', + '

        ' . __( 'You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.' ) . '

        ' . + '

        ' . __( 'You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.' ) . '

        ', ) ); get_current_screen()->set_help_sidebar( '

        ' . __( 'For more information:' ) . '

        ' . - '

        ' . __( 'Documentation on Comments' ) . '

        ' . - '

        ' . __( 'Support forums' ) . '

        ' + '

        ' . __( 'Documentation on Comments' ) . '

        ' . + '

        ' . __( 'Support Forums' ) . '

        ' ); wp_enqueue_script( 'comment' ); require_once ABSPATH . 'wp-admin/admin-header.php'; + $comment_id = absint( $_GET['c'] ); + + $comment = get_comment( $comment_id ); if ( ! $comment ) { comment_footer_die( __( 'Invalid comment ID.' ) . sprintf( ' ' . __( 'Go back' ) . '.', 'javascript:history.go(-1)' ) ); } @@ -83,13 +71,13 @@ comment_footer_die( __( 'Sorry, you are not allowed to edit this comment.' ) ); } - if ( 'trash' === $comment->comment_approved ) { + 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.' ) ); } $comment = get_comment_to_edit( $comment_id ); - require ABSPATH . 'wp-admin/edit-form-comment.php'; + include ABSPATH . 'wp-admin/edit-form-comment.php'; break; @@ -97,9 +85,11 @@ case 'approve': case 'trash': case 'spam': - // Used in the HTML title tag. $title = __( 'Moderate Comment' ); + $comment_id = absint( $_GET['c'] ); + + $comment = get_comment( $comment_id ); if ( ! $comment ) { wp_redirect( admin_url( 'edit-comments.php?error=1' ) ); die(); @@ -111,7 +101,7 @@ } // No need to re-approve/re-trash/re-spam a comment. - if ( str_replace( '1', 'approve', $comment->comment_approved ) === $action ) { + if ( str_replace( '1', 'approve', $comment->comment_approved ) == $action ) { wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) ); die(); } @@ -119,19 +109,19 @@ require_once ABSPATH . 'wp-admin/admin-header.php'; $formaction = $action . 'comment'; - $nonce_action = ( 'approve' === $action ) ? 'approve-comment_' : 'delete-comment_'; + $nonce_action = 'approve' == $action ? 'approve-comment_' : 'delete-comment_'; $nonce_action .= $comment_id; ?> -
        +
        -

        +

        comment_approved ) { // If not unapproved. + if ( '0' != $comment->comment_approved ) { // If not unapproved. $message = ''; switch ( $comment->comment_approved ) { case '1': @@ -169,23 +159,23 @@ - - + + - - + + - - + + - + - - + +

        comment_ID}" ); ?>">

        +
        comment_post_ID; @@ -202,7 +192,7 @@ $parent_link = esc_url( get_comment_link( $parent ) ); $name = get_comment_author( $parent ); printf( - /* translators: %s: Comment link. */ + /* translators: %s: comment link */ ' | ' . __( 'In reply to %s.' ), '' . $name . '' ); @@ -214,12 +204,11 @@ comment_post_ID ) ) { @@ -231,26 +220,25 @@
        + -

        - comment_ID}" ) ); ?>"> -

        -
        -

        + +

        - -

        + +

        - - - + + +
        @@ -282,9 +270,9 @@ comment_footer_die( __( 'Sorry, you are not allowed to edit comments on this post.' ) ); } - if ( wp_get_referer() && ! $noredir && false === strpos( wp_get_referer(), 'comment.php' ) ) { + if ( '' != wp_get_referer() && ! $noredir && false === strpos( wp_get_referer(), 'comment.php' ) ) { $redir = wp_get_referer(); - } elseif ( wp_get_original_referer() && ! $noredir ) { + } elseif ( '' != wp_get_original_referer() && ! $noredir ) { $redir = wp_get_original_referer(); } elseif ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ), true ) ) { $redir = admin_url( 'edit-comments.php?p=' . absint( $comment->comment_post_ID ) ); @@ -346,29 +334,26 @@ check_admin_referer( 'update-comment_' . $comment_id ); - $updated = edit_comment(); - if ( is_wp_error( $updated ) ) { - wp_die( $updated->get_error_message() ); - } + edit_comment(); $location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id; /** * Filters the URI the user is redirected to after editing a comment in the admin. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $location The URI the user will be redirected to. * @param int $comment_id The ID of the comment being edited. */ $location = apply_filters( 'comment_edit_redirect', $location, $comment_id ); - wp_redirect( $location ); - exit; + + exit(); default: wp_die( __( 'Unknown action.' ) ); -} // End switch. +} // end switch -require_once ABSPATH . 'wp-admin/admin-footer.php'; +require ABSPATH . 'wp-admin/admin-footer.php'; diff --git a/wp-admin/credits.php b/wp-admin/credits.php index eca4c01..7c3e313 100644 --- a/wp-admin/credits.php +++ b/wp-admin/credits.php @@ -7,15 +7,11 @@ */ /** ClassicPress Administration Bootstrap */ -require_once __DIR__ . '/admin.php'; +require_once dirname( __FILE__ ) . '/admin.php'; -// Used in the HTML title tag. $title = __( 'Credits' ); -list( $display_version ) = explode( '-', get_bloginfo( 'version' ) ); - -require_once ABSPATH . 'wp-admin/admin-header.php'; - +require ABSPATH . 'wp-admin/admin-header.php'; ?>
        @@ -28,7 +24,7 @@

        CMS for Creators.' ), 'https://link.classicpress.net/the-cms-for-creators' ); diff --git a/wp-admin/css/about-rtl.css b/wp-admin/css/about-rtl.css index 6c5e64d..b4a9d1f 100644 --- a/wp-admin/css/about-rtl.css +++ b/wp-admin/css/about-rtl.css @@ -1,969 +1,18 @@ /*------------------------------------------------------------------------------ 22.0 - About Pages - 1.0 Global: About, Credits, Freedoms, Privacy - 1.1 Layout - 1.2 Typography & Elements - 1.3 Header - 2.0 Credits Page - 3.0 Freedoms Page - 4.0 Privacy Page - x.2.0 Legacy About Styles: Global - x.2.1 Typography - x.2.2 Structure - x.2.3 Point Releases - x.3.0 Legacy About Styles: About Page - x.3.1 Typography - x.3.2 Structure - x.4.0 Legacy About Styles: Credits & Freedoms Pages - x.5.0 Legacy About Styles: Media Queries + 1.0 Global: About, Credits, Freedoms + 1.1 Typography + 1.2 Structure + 1.3 Point Releases + 2.0 About Page + 2.1 Typography + 2.2 Structure + 3.0 Credits & Freedoms Pages ------------------------------------------------------------------------------*/ -.about__container { - /* Section backgrounds */ - --background: #274acd; - --subtle-background: #eff2ff; - - /* Main text color */ - --text: #000; - --text-light: #fff; - - /* Accent colors: used in header, on special classes. */ - --accent-1: #3858e9; /* Link color, credit image overlay */ - --accent-2: #fffcb5; /* Accent background */ - - /* Navigation colors. */ - --nav-background: #fff; - --nav-border: transparent; - --nav-color: var(--text); - --nav-current: var(--accent-1); - - --gap: 2rem; -} - -/*------------------------------------------------------------------------------ - 1.0 - Global: About, Credits, Freedoms, Privacy -------------------------------------------------------------------------------*/ - -.about-php, -.credits-php, -.freedoms-php, -.privacy-php { - background: #fff; -} - -.about-php #wpcontent, -.credits-php #wpcontent, -.freedoms-php #wpcontent, -.privacy-php #wpcontent { - background: #fff; - padding: 0 24px; -} - -@media screen and (max-width: 782px) { - .about-php.auto-fold #wpcontent, - .credits-php.auto-fold #wpcontent, - .freedoms-php.auto-fold #wpcontent, - .privacy-php.auto-fold #wpcontent { - padding-right: 24px; - } -} - -.about__container { - max-width: 1000px; - margin: 24px auto; - clear: both; -} - -.about__container .alignleft { - float: right; -} - -.about__container .alignright { - float: left; -} - -.about__container .aligncenter { - text-align: center; -} - -.about__container .is-vertically-aligned-top { - align-self: start; -} - -.about__container .is-vertically-aligned-center { - align-self: center; -} - -.about__container .is-vertically-aligned-bottom { - align-self: end; -} - -.about__section { - background: transparent; - clear: both; -} - -.about__container .has-accent-background-color { - background-color: var(--accent-2); -} - -.about__container .has-transparent-background-color { - background-color: transparent; -} - -.about__container .has-accent-color { - color: var(--accent-2); -} - -.about__container .has-border { - border: 3px solid currentColor; -} - -.about__container .has-subtle-background-color { - background-color: var(--subtle-background); -} - -.about__container .has-background-image { - background-size: contain; - background-repeat: no-repeat; - background-position: center; -} - -/* 1.1 - Layout */ - -.about__section { - margin: 0; -} - -.about__section .column:not(.is-edge-to-edge) { - padding: var(--gap); -} - -.about__section + .about__section .is-section-header { - padding-bottom: var(--gap); -} - -.about__section .column[class*="background-color"]:not(.is-edge-to-edge), -.about__section:where([class*="background-color"]) .column:not(.is-edge-to-edge), -.about__section .column.has-border:not(.is-edge-to-edge) { - padding-top: var(--gap); - padding-bottom: var(--gap); -} - -.about__section .column p:first-of-type { - margin-top: 0; -} - -.about__section .column p:last-of-type { - margin-bottom: 0; -} - -.about__section .has-text-columns { - columns: 2; - column-gap: calc(var(--gap) * 2); -} - -.about__section .is-section-header { - margin-bottom: 0; - padding: var(--gap) var(--gap) 0; -} - -.about__section .is-section-header p:last-child { - margin-bottom: 0; -} - -/* Section header is alone in a container. */ -.about__section .is-section-header:first-child:last-child { - padding: 0; -} - -.about__section.is-feature { - padding: var(--gap); -} - -.about__section.is-feature p { - margin: 0; -} - -.about__section.is-feature p + p { - margin-top: calc(var(--gap) / 2); -} - -.about__section.has-1-column { - margin-right: auto; - margin-left: auto; - max-width: 36em; -} - -.about__section.has-2-columns, -.about__section.has-3-columns, -.about__section.has-4-columns, -.about__section.has-overlap-style { - display: grid; -} - -.about__section.has-gutters { - gap: var(--gap); - margin-bottom: var(--gap); -} - -.about__section.has-2-columns { - grid-template-columns: 1fr 1fr; -} - -.about__section.has-2-columns.is-wider-right { - grid-template-columns: 2fr 3fr; -} - -.about__section.has-2-columns.is-wider-left { - grid-template-columns: 3fr 2fr; -} - -.about__section.has-2-columns .is-section-header { - grid-column-start: 1; - -ms-grid-column-span: 2; - grid-column-end: span 2; -} - -.about__section.has-2-columns .column:nth-of-type(2n+1) { - grid-column-start: 1; -} - -.about__section.has-2-columns .column:nth-of-type(2n) { - grid-column-start: 2; -} - -.about__section.has-3-columns { - grid-template-columns: repeat(3, 1fr); -} - -.about__section.has-3-columns .is-section-header { - grid-column-start: 1; - -ms-grid-column-span: 3; - grid-column-end: span 3; -} - -.about__section.has-3-columns .column:nth-of-type(3n+1) { - grid-column-start: 1; -} - -.about__section.has-3-columns .column:nth-of-type(3n+2) { - grid-column-start: 2; -} - -.about__section.has-3-columns .column:nth-of-type(3n) { - grid-column-start: 3; -} - -.about__section.has-4-columns { - grid-template-columns: repeat(4, 1fr); -} - -.about__section.has-4-columns .is-section-header { - grid-column-start: 1; - -ms-grid-column-span: 4; - grid-column-end: span 4; -} - -.about__section.has-4-columns .column:nth-of-type(4n+1) { - grid-column-start: 1; -} - -.about__section.has-4-columns .column:nth-of-type(4n+2) { - grid-column-start: 2; -} - -.about__section.has-4-columns .column:nth-of-type(4n+3) { - grid-column-start: 3; -} - -.about__section.has-4-columns .column:nth-of-type(4n) { - grid-column-start: 4; -} - -/* Any columns following a section header need to be expicitly put into the second row, for IE support. */ -.about__section.has-2-columns .is-section-header ~ .column, -.about__section.has-3-columns .is-section-header ~ .column, -.about__section.has-4-columns .is-section-header ~ .column, -.about__section.has-overlap-style .is-section-header ~ .column { - grid-row-start: 2; -} - -.about__section.has-overlap-style { - grid-template-columns: repeat(7, 1fr); -} - -.about__section.has-overlap-style .column { - grid-row-start: 1; -} - -.about__section.has-overlap-style .column:nth-of-type(2n+1) { - grid-column-start: 2; - -ms-grid-column-span: 3; - grid-column-end: span 3; -} - -.about__section.has-overlap-style .column:nth-of-type(2n) { - grid-column-start: 4; - -ms-grid-column-span: 3; - grid-column-end: span 3; -} - -.about__section.has-overlap-style .column.is-top-layer { - z-index: 1; -} - -@media screen and (max-width: 782px) { - .about__section.has-2-columns.is-wider-right, - .about__section.has-2-columns.is-wider-left, - .about__section.has-3-columns { - display: block; - margin-bottom: calc(var(--gap) / 2); - } - - .about__section .column:not(.is-edge-to-edge) { - padding-top: var(--gap); - padding-bottom: var(--gap); - } - - .about__section.has-2-columns.has-gutters.is-wider-right, - .about__section.has-2-columns.has-gutters.is-wider-left, - .about__section.has-3-columns.has-gutters { - margin-bottom: calc(var(--gap) * 2); - } - - .about__section.has-2-columns.has-gutters .column, - .about__section.has-2-columns.has-gutters .column, - .about__section.has-3-columns.has-gutters .column { - margin-bottom: var(--gap); - } - - .about__section.has-2-columns.has-gutters .column:last-child, - .about__section.has-2-columns.has-gutters .column:last-child, - .about__section.has-3-columns.has-gutters .column:last-child { - margin-bottom: 0; - } - - .about__section.has-3-columns .column:nth-of-type(n) { - padding-top: calc(var(--gap) / 2); - padding-bottom: calc(var(--gap) / 2); - } - - .about__section.has-4-columns { - grid-template-columns: repeat(2, 1fr); - } - - .about__section.has-4-columns .column:nth-of-type(2n+1) { - grid-column-start: 1; - } - - .about__section.has-4-columns .column:nth-of-type(2n) { - grid-column-start: 2; - } - - .about__section.has-4-columns .column:nth-of-type(4n+3), - .about__section.has-4-columns .column:nth-of-type(4n) { - grid-row-start: 2; - } - - .about__section.has-4-columns .is-section-header { - -ms-grid-column-span: 2; - grid-column-end: span 2; - } - - .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n+3), - .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n) { - grid-row-start: 3; - } - - .about__section.has-overlap-style { - grid-template-columns: 1fr; - } - - /* At this size, the two columns fully overlap */ - .about__section.has-overlap-style .column.column { - grid-column-start: 1; - -ms-grid-column-span: 1; - grid-column-end: 2; - grid-row-start: 1; - -ms-grid-row-span: 1; - grid-row-end: 2; - } -} - -@media screen and (max-width: 600px) { - .about__section.has-2-columns { - display: block; - margin-bottom: var(--gap); - } - - .about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n) { - padding-top: calc(var(--gap) / 2); - padding-bottom: calc(var(--gap) / 2); - } - - .about__section.has-2-columns.has-gutters { - margin-bottom: calc(var(--gap) * 2); - } - - .about__section.has-2-columns.has-gutters .column { - margin-bottom: var(--gap); - } - - .about__section.has-2-columns.has-gutters .column:last-child { - margin-bottom: 0; - } -} - -@media screen and (max-width: 480px) { - .about__section.is-feature .column { - padding: 0; - } - - .about__section.has-4-columns { - display: block; - padding-bottom: calc(var(--gap) / 2); - } - - .about__section.has-4-columns.has-gutters .column { - margin-bottom: calc(var(--gap) / 2); - } - - .about__section.has-4-columns.has-gutters .column:last-child { - margin-bottom: 0; - } - - .about__section.has-4-columns .column:nth-of-type(n) { - padding-top: calc(var(--gap) / 2); - padding-bottom: calc(var(--gap) / 2); - } -} - -/* 1.2 - Typography & Elements */ - -.about__container { - line-height: 1.4; - color: var(--text); -} - -.about__container h1 { - padding: 0; - color: inherit; -} - -.about__container h1, -.about__container h2, -.about__container h3.is-larger-heading { - margin-top: 0; - margin-bottom: 0.5em; - font-size: 2rem; - font-weight: 700; - line-height: 1.16; -} - -.about__container h3, -.about__container h1.is-smaller-heading, -.about__container h2.is-smaller-heading { - margin-top: 0; - font-size: 1.625rem; - font-weight: 700; - line-height: 1.4; -} - -.about__container h4, -.about__container h3.is-smaller-heading { - margin-top: 0; - font-size: 1.125rem; - font-weight: 700; - line-height: 1.6; -} - -.about__container p { - font-size: inherit; - line-height: inherit; -} - -.about__container p.is-subheading { - margin-top: 0; - font-size: 1.5rem; - font-weight: 300; - line-height: 160%; -} - -.about__section a { - color: var(--accent-1); - text-decoration: underline; -} - -.about__section a:hover, -.about__section a:active, -.about__section a:focus { - color: var(--accent-1); - text-decoration: none; -} - -.wp-credits-list a { - text-decoration: none; -} - -.wp-credits-list a:hover, -.wp-credits-list a:active, -.wp-credits-list a:focus { - text-decoration: underline; -} - -.about__container ul { - list-style: disc; - margin-right: calc(var(--gap) / 2); -} - -.about__container li { - margin-bottom: 0.5rem; -} - -.about__container img { - margin: 0; - max-width: 100%; - vertical-align: middle; -} - -.about__container .about__image { - margin: 0; -} - -.about__container .about__image img { - max-width: 100%; - width: 100%; - height: auto; -} - -.about__container .about__image figcaption { - margin-top: 0.5em; - text-align: center; -} - -.about__container .about__image .wp-video { - margin-right: auto; - margin-left: auto; -} - -.about__container .about__image + h3 { - margin-top: 1.5em; -} - -.about__container .column .about__image { - margin-bottom: calc(var(--gap) / 2); -} - -.about__container hr { - margin: 0; - height: var(--gap); - border: none; - border-top: 4px solid #d9d9d9; -} - -.about__container hr.is-small { - height: calc(var(--gap) / 4); -} - -.about__container hr.is-large { - height: calc(var(--gap) * 2); - margin: calc(var(--gap) / 2) auto; -} - -.about__container div.updated, -.about__container div.error, -.about__container .notice { - display: none !important; -} - -.about__section { - font-size: 1.125rem; - line-height: 1.55; -} - -.about__section.is-feature { - font-size: 1.6em; -} - -@media screen and (max-width: 480px) { - .about__section.is-feature { - font-size: 1.4em; - } - - .about__container h1, - .about__container h2, - .about__container h3.is-larger-heading { - font-size: 2em; - } -} - -/* 1.3 - Header */ - -.about__header { - --about-header-image-width: 780px; - --about-header-image-height: 550px; - --about-header-bg-width: var(--about-header-image-width); - --about-header-bg-height: var(--about-header-image-height); - --about-header-bg-offset-block: 0; - - position: relative; - margin-bottom: var(--gap); - padding-top: 0; - color: var(--text-light); - background: var(--background) url('../images/about-header-about.svg?ver=6.1') no-repeat; - background-size: var(--about-header-bg-width) var(--about-header-bg-height); - background-position: center top var(--about-header-bg-offset-block); -} - -.credits-php .about__header { - --about-header-image-width: 863px; - --about-header-image-height: 550px; - - background-image: url('../images/about-header-credits.svg?ver=6.1'); -} - -.freedoms-php .about__header { - --about-header-image-width: 782px; - --about-header-image-height: 510px; - - background-image: url('../images/about-header-freedoms.svg?ver=6.1'); -} - -.privacy-php .about__header { - --about-header-image-width: 1005px; - --about-header-image-height: 500px; - --about-header-bg-offset-block: calc(var(--gap) * -2); - - background-image: url('../images/about-header-privacy.svg?ver=6.1'); -} - -.about__header-image { - margin: 0 var(--gap) 3em; -} - -.about__header-title { - box-sizing: border-box; - margin: 0 var(--gap); - padding: 9rem 0 0; - text-align: center; -} - -.about__header-title h1 { - margin: 0 0 1rem; - padding: 0; - /* Fluid font size scales on browser size 960px - 1200px. */ - font-size: clamp(3rem, 20vw - 9rem, 6rem); - line-height: 1; - font-weight: 400; -} - -.credits-php .about__header-title h1, -.privacy-php .about__header-title h1, -.freedoms-php .about__header-title h1 { - /* Fluid font size scales on browser size 960px - 1200px. */ - font-size: clamp(3rem, 10vw - 3rem, 4.5rem); -} - -.about__header-text { - box-sizing: border-box; - max-width: 22em; - margin: 0 auto 10rem; - padding: 0; - font-size: 1.6rem; - line-height: 1.15; - text-align: center; -} - -.credits-php .about__header-text { - margin-bottom: 9rem; -} - -.about__header-navigation { - position: relative; - z-index: 1; - display: flex; - justify-content: center; - padding-top: 0; - background: var(--nav-background); - color: var(--nav-color); - border-bottom: 3px solid var(--nav-border); -} - -.about__header-navigation .nav-tab { - margin-right: 0; - padding: calc(var(--gap) * 0.75) var(--gap); - float: none; - font-size: 1.4em; - line-height: 1; - border-width: 0 0 3px; - border-style: solid; - border-color: transparent; - background: transparent; - color: inherit; -} - -.about__header-navigation .nav-tab:hover, -.about__header-navigation .nav-tab:active { - background-color: var(--nav-current); - color: var(--text-light); -} - -.about__header-navigation .nav-tab-active { - margin-bottom: -3px; - color: var(--nav-current); - border-width: 0 0 6px; - border-color: var(--nav-current); -} - -.about__header-navigation .nav-tab-active:hover, -.about__header-navigation .nav-tab-active:active { - background-color: var(--nav-current); - color: var(--text-light); - border-color: var(--nav-current); -} - -@media screen and (max-width: 960px) { - .about__header { - --about-header-bg-width: calc(var(--about-header-image-width) * 0.85); - --about-header-bg-height: calc(var(--about-header-image-height) * 0.85); - } - - .privacy-php .about__header { - --about-header-bg-offset-block: 0; - } - - .about__header-title h1 { - /* Fluid font size scales on browser size 600px - 960px. */ - font-size: clamp(3rem, 13.33vw - 2rem, 6rem); - } - - .credits-php .about__header-title h1, - .privacy-php .about__header-title h1, - .freedoms-php .about__header-title h1 { - /* Fluid font size scales on browser size 600px - 960px. */ - font-size: clamp(3rem, 6.67vw - 0.5rem, 4.5rem); - } -} - -@media screen and (max-width: 782px) { - .about__container .about__header-text { - font-size: 1.4em; - } - - .about__header-container { - display: block; - } - - .about__header-title, - .about__header-image { - margin-right: calc(var(--gap) / 2); - margin-left: calc(var(--gap) / 2); - } - - .about__header-text { - margin-top: 0; - } - - .about__header-navigation .nav-tab { - margin-top: 0; - margin-left: 0; - padding-right: calc(var(--gap) / 2); - padding-left: calc(var(--gap) / 2); - } -} - -@media screen and (max-width: 600px) { - .about__header { - --about-header-bg-width: calc(var(--about-header-image-width) * 0.75); - --about-header-bg-height: calc(var(--about-header-image-height) * 0.75); - } -} - -@media screen and (max-width: 480px) { - .about__header, - .credits-php .about__header, - .privacy-php .about__header, - .freedoms-php .about__header { - background-image: none; - } - - .about__header-title p { - font-size: 2.4em; - } - - .about__header-title { - padding-top: 2rem; - } - - .about__header-text, - .credits-php .about__header-text { - margin-right: calc(var(--gap) / 2); - margin-left: calc(var(--gap) / 2); - margin-bottom: 2rem; - } - - .about__header-navigation { - display: block; - } - - .about__header-navigation .nav-tab { - display: block; - margin-bottom: 0; - padding: calc(var(--gap) / 2); - border-right-width: 6px; - border-bottom: none; - } - - .about__header-navigation .nav-tab-active { - border-bottom: none; - border-right-width: 6px; - } -} - - -/*------------------------------------------------------------------------------ - 2.0 - Credits Page -------------------------------------------------------------------------------*/ - -.about__section .wp-people-group-title { - margin-bottom: calc(var(--gap) * 2); - text-align: center; - -} - -.about__section .wp-people-group { - margin: 0; - display: flex; - flex-wrap: wrap; -} - -.about__section .wp-person { - display: inline-block; - vertical-align: top; - box-sizing: border-box; - margin-bottom: var(--gap); - width: 25%; - text-align: center; -} - -.about__section .compact .wp-person { - height: auto; - width: 20%; -} - -.about__section .wp-person-avatar { - display: block; - margin: 0 auto calc(var(--gap) / 2); - width: 140px; - height: 140px; - border-radius: 100%; - overflow: hidden; - background: var(--accent-1); -} - -.about__section .wp-person .gravatar { - width: 140px; - height: 140px; - filter: grayscale(100%); - mix-blend-mode: screen; -} - -.about__section .compact .wp-person-avatar, -.about__section .compact .wp-person .gravatar { - width: 80px; - height: 80px; -} - -.about__section .wp-person .web { - font-size: 1.4em; - font-weight: 600; - text-decoration: none; -} - -.about__section .wp-person .web:hover { - text-decoration: underline; -} - -.about__section .compact .wp-person .web { - font-size: 1.2em; -} - -.about__section .wp-person .title { - display: block; - margin-top: 0.5em; -} - -@media screen and (max-width: 782px) { - .about__section .wp-person { - width: 33%; - } - - .about__section .compact .wp-person { - width: 25%; - } - - .about__section .wp-person-avatar, - .about__section .wp-person .gravatar { - width: 120px; - height: 120px; - } -} - -@media screen and (max-width: 600px) { - .about__section .wp-person { - width: 50%; - } - - .about__section .compact .wp-person { - width: 33%; - } - - .about__section .wp-person .web { - font-size: 1.2em; - } -} - -@media screen and (max-width: 480px) { - .about__section .wp-person { - min-width: 100%; - } - - .about__section .wp-person .web { - font-size: 1em; - } - - .about__section .compact .wp-person .web { - font-size: 1em; - } -} - - -/*------------------------------------------------------------------------------ - 3.0 - Freedoms Page -------------------------------------------------------------------------------*/ - -.about__section .column .freedom-image { - margin-bottom: var(--gap); - max-height: 180px; -} - - /*------------------------------------------------------------------------------ - 4.0 - Privacy Page -------------------------------------------------------------------------------*/ - -.about__section .column .privacy-image { - display: block; - margin-right: auto; - margin-left: auto; - max-width: 25rem; -} - - -/*------------------------------------------------------------------------------ - x.2.0 - Legacy About Styles: Global + 1.0 - Global: About, Credits, Freedoms ------------------------------------------------------------------------------*/ .about-wrap { @@ -979,6 +28,7 @@ .about-wrap-content { max-width: 1050px; + padding-top: 2rem; } .about-wrap div.updated, @@ -987,51 +37,51 @@ display: none !important; } +.about-wrap .about-inline-notice { + margin: -12px 0 12px 0; + padding: 6px 8px; +} + .about-wrap hr { border: 0; height: 0; - margin: 3em 0 0; + margin: 0; border-top: 1px solid rgba(0, 0, 0, 0.1); } .about-wrap img { margin: 0; - width: 100%; - height: auto; - vertical-align: middle; -} - -.about-wrap .inline-svg img { max-width: 100%; - width: auto; height: auto; + vertical-align: middle; } -.about-wrap video { - margin: 1.5em auto; -} - -/* WordPress Version Badge */ +/* ClassicPress Version Badge */ .wp-badge { - background: #0073aa url(../images/cp-logo-white.png?ver=202303) no-repeat; - background-position: center; + /* Background: Really old browsers */ + background: #057f99; + /* Background: Old browsers */ + background-image: url(../images/w-logo-white.png?ver=20190218); background-size: 80px 80px; + /* Background: Modern browsers */ + background-image: + url(../images/wordpress-logo-white.svg?ver=20190218), + linear-gradient(135deg, #3ebca6 0%, #057f99 50%, #006b81 100%); + background-size: 80px 80px, cover; + /* Other rules */ + background-repeat: no-repeat; + background-position: center; color: #fff; font-size: 14px; text-align: center; font-weight: 600; margin: 5px 0 0; - padding-top: 120px; - height: 40px; + width: 130px; + height: 130px; display: inline-block; - width: 140px; text-rendering: optimizeLegibility; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -} - -.svg .wp-badge { - background-image: url(../images/classicpress-logo-white.svg?ver=202303); + box-shadow: 0 1px 3px rgba(0,0,0,0.2); } .about-wrap .wp-badge { @@ -1046,22 +96,26 @@ padding-left: 15px; padding-right: 15px; font-size: 18px; - line-height: 1.33333333; } -/* x.2.1 - Typography */ +/* 1.1 - Typography */ + +.about-wrap p { + line-height: 1.5; + font-size: 14px; +} .about-wrap h1 { margin: 0.2em 0 0 200px; padding: 0; color: #32373c; - line-height: 1.2; + line-height: 1.2em; font-size: 2.8em; font-weight: 400; } .about-wrap h2 { - margin: 40px 0 0.6em; + margin: 40px 0 .6em; font-size: 2.7em; line-height: 1.3; font-weight: 300; @@ -1069,19 +123,19 @@ } .about-wrap h3 { - margin: 1.25em 0 0.6em; + margin: 1.25em 0 .6em; font-size: 1.4em; line-height: 1.5; } .about-wrap h4 { - font-size: 16px; color: #23282d; } -.about-wrap p { - line-height: 1.5; - font-size: 16px; +.about-wrap .changelog h2 { + font-size: 1.4em; + font-weight: 600; + text-align: right; } .about-wrap code, @@ -1090,197 +144,48 @@ font-weight: 400; } -.about-wrap figcaption { - font-size: 13px; - text-align: center; - color: white; - text-overflow: ellipsis; -} - -.about-wrap .about-description, .about-wrap .about-text { margin-top: 1.4em; font-weight: 400; - line-height: 1.6; - font-size: 19px; -} - -.about-wrap .about-text { - margin: 1em 0 1em 200px; + line-height: 1.6em; + font-size: 16px; color: #555d66; } -/* x.2.2 - Structure */ - -.about-wrap .has-1-columns, -.about-wrap .has-2-columns, -.about-wrap .has-3-columns, -.about-wrap .has-4-columns { - display: grid; - max-width: 800px; - margin-top: 40px; - margin-right: auto; - margin-left: auto; -} - -.about-wrap .column { - margin-left: 20px; - margin-right: 20px; -} - -.about-wrap .is-wide { - max-width: 760px; -} - -.about-wrap .is-fullwidth { - max-width: 100%; -} - -.about-wrap .has-1-columns { - display: block; - max-width: 680px; - margin: 0 auto 40px; -} - -.about-wrap .has-2-columns { - grid-template-columns: 1fr 1fr; -} - -.about-wrap .has-2-columns .column:nth-of-type(2n+1) { - grid-column-start: 1; -} - -.about-wrap .has-2-columns .column:nth-of-type(2n) { - grid-column-start: 2; -} - -.about-wrap .has-2-columns.is-wider-right { - grid-template-columns: 1fr 2fr; -} - -.about-wrap .has-2-columns.is-wider-left { - grid-template-columns: 2fr 1fr; -} - -.about-wrap .has-3-columns { - grid-template-columns: repeat(3, 1fr); -} - -.about-wrap .has-3-columns .column:nth-of-type(3n+1) { - grid-column-start: 1; -} - -.about-wrap .has-3-columns .column:nth-of-type(3n+2) { - grid-column-start: 2; -} - -.about-wrap .has-3-columns .column:nth-of-type(3n) { - grid-column-start: 3; -} - -.about-wrap .has-4-columns { - grid-template-columns: repeat(4, 1fr); -} - -.about-wrap .has-4-columns .column:nth-of-type(4n+1) { - grid-column-start: 1; -} - -.about-wrap .has-4-columns .column:nth-of-type(4n+2) { - grid-column-start: 2; -} - -.about-wrap .has-4-columns .column:nth-of-type(4n+3) { - grid-column-start: 3; -} - -.about-wrap .has-4-columns .column:nth-of-type(4n) { - grid-column-start: 4; -} - -.about-wrap .column :first-child { - margin-top: 0; -} - -.about-wrap .aligncenter { - text-align: center; -} - -.about-wrap .alignleft { - float: right; - margin-left: 40px; -} - -.about-wrap .alignright { - float: left; - margin-right: 40px; -} - -.about-wrap .is-vertically-aligned-top { - align-self: start; +.about-wrap .about-description { + line-height: 1.5; + font-size: 14px; } -.about-wrap .is-vertically-aligned-center { - align-self: center; +.about-wrap .dev-version-info { + font-size: 14px; + font-weight: 400; + margin-right: 0.5em; } -.about-wrap .is-vertically-aligned-bottom { - align-self: end; +@media screen and (max-width: 640px) { + .about-wrap .dev-version-info { + display: block; + margin-right: 0; + } } -/* x.2.3 - Point Releases */ - -.about-wrap .point-releases { - margin-top: 5px; - border-bottom: 1px solid #ddd; -} +/* 1.2 - Structure */ -.about-wrap .changelog { - margin-bottom: 40px; -} +/* 1.3 - Point Releases */ .about-wrap .changelog.point-releases h3 { - padding-top: 35px; -} - -.about-wrap .changelog.point-releases h3:first-child { padding-top: 7px; -} - -.about-wrap .changelog.feature-section .col { - margin-top: 40px; + margin-top: 0; } /*------------------------------------------------------------------------------ - x.3.0 - Legacy About Styles: About Page + 2.0 - About Page ------------------------------------------------------------------------------*/ -/* x.3.1 - Typography */ - -.about-wrap .lead-description { - font-size: 1.5em; - text-align: center; -} - -.about-wrap .feature-section p { - margin-top: 0.6em; -} - -/* x.3.2 - Structure */ - -.about-wrap .headline-feature { - margin: 0 auto 40px; - max-width: 680px; -} - -.about-wrap .headline-feature h2 { - margin: 50px 0 0; -} +/* 2.1 - Typography */ -.about-wrap .headline-feature img { - max-width: 600px; - width: 100%; -} +/* 2.2 - Structure */ /* Go to Dashboard Home link */ @@ -1296,164 +201,25 @@ } /*------------------------------------------------------------------------------ - x.4.0 - Legacy About Styles: Credits & Freedoms Pages + 3.0 - Credits & Freedoms Pages ------------------------------------------------------------------------------*/ /* Credits */ -.about-wrap h2.wp-people-group { - margin: 2.6em 0 1.33em; - padding: 0; - font-size: 16px; - line-height: inherit; - font-weight: 600; - text-align: right; -} - -.about-wrap .wp-people-group { - padding: 0 5px; - margin: 0 -5px 0 -15px; -} - -.about-wrap .compact { - margin-bottom: 0; -} - -.about-wrap .wp-person { - display: inline-block; - vertical-align: top; - margin-left: 10px; - padding-bottom: 15px; - height: 70px; - width: 280px; -} - -.about-wrap .compact .wp-person { - height: auto; - width: 180px; - padding-bottom: 0; - margin-bottom: 0; -} - -.about-wrap .wp-person .gravatar { - float: right; - margin: 0 0 10px 10px; - padding: 1px; - width: 60px; - height: 60px; -} - -.about-wrap .compact .wp-person .gravatar { - width: 30px; - height: 30px; -} - -.about-wrap .wp-person .web { - margin: 6px 0 2px; - font-size: 16px; - font-weight: 400; - line-height: 2; - text-decoration: none; -} - -.about-wrap .wp-person .title { - display: block; -} - -.about-wrap #wp-people-group-validators + p.wp-credits-list { - margin-top: 0; -} - -.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: 600; -} - -.freedoms-php .about-wrap ol p { - font-weight: 400; - margin: 0.6em 0; -} - -.freedoms-php .column .freedoms-image { - background-image: url('../images/freedoms.png'); - background-size: 100%; - padding-top: 100%; -} - -.freedoms-php .column:nth-of-type(2) .freedoms-image { - background-position: 100% 34%; -} - -.freedoms-php .column:nth-of-type(3) .freedoms-image { - background-position: 100% 66%; -} - -.freedoms-php .column:nth-of-type(4) .freedoms-image { - background-position: 100% 100%; +.about-wrap .about-freedoms { + list-style-type: disc; + list-style-position: outside; + margin: 1em; + padding-right: 1em; + font-size: 14px; } /*------------------------------------------------------------------------------ - x.5.0 - Legacy About Styles: Media Queries + 4.0 - Media Queries ------------------------------------------------------------------------------*/ -@media screen and (max-width: 782px) { - .about-wrap .has-3-columns, - .about-wrap .has-4-columns { - grid-template-columns: 1fr 1fr; - } - - .about-wrap .has-3-columns .column:nth-of-type(3n+1), - .about-wrap .has-4-columns .column:nth-of-type(4n+1) { - grid-column-start: 1; - grid-row-start: 1; - } - - .about-wrap .has-3-columns .column:nth-of-type(3n+2), - .about-wrap .has-4-columns .column:nth-of-type(4n+2) { - grid-column-start: 2; - grid-row-start: 1; - } - - .about-wrap .has-3-columns .column:nth-of-type(3n), - .about-wrap .has-4-columns .column:nth-of-type(4n+3) { - grid-column-start: 1; - grid-row-start: 2; - } - - .about-wrap .has-4-columns .column:nth-of-type(4n) { - grid-column-start: 2; - grid-row-start: 2; - } -} - -@media screen and (max-width: 600px) { - .about-wrap .has-2-columns, - .about-wrap .has-3-columns, - .about-wrap .has-4-columns { - display: block; - } - - .about-wrap :not(.is-wider-right):not(.is-wider-left) .column { - margin-left: 0; - margin-right: 0; - } - - .about-wrap .has-2-columns.is-wider-right, - .about-wrap .has-2-columns.is-wider-left { - display: grid; - } -} - @media only screen and (max-width: 500px) { .about-wrap { margin-left: 20px; @@ -1474,21 +240,10 @@ margin-bottom: 1.5em; width: 100%; } -} - -@media only screen and (max-width: 480px) { - .about-wrap .has-2-columns.is-wider-right, - .about-wrap .has-2-columns.is-wider-left { - display: block; - } - .about-wrap .column { - margin-left: 0; - margin-right: 0; + .about-wrap .floating-header-section { + margin-bottom: 60px; + grid-gap: 30px 0; } - .about-wrap .has-2-columns.is-wider-right img, - .about-wrap .has-2-columns.is-wider-left img { - max-width: 160px; - } } diff --git a/wp-admin/css/about-rtl.min.css b/wp-admin/css/about-rtl.min.css index 128bb4b..35fdd68 100644 --- a/wp-admin/css/about-rtl.min.css +++ b/wp-admin/css/about-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.about__container{--background:#274acd;--subtle-background:#eff2ff;--text:#000;--text-light:#fff;--accent-1:#3858e9;--accent-2:#fffcb5;--nav-background:#fff;--nav-border:transparent;--nav-color:var(--text);--nav-current:var(--accent-1);--gap:2rem}.about-php,.credits-php,.freedoms-php,.privacy-php{background:#fff}.about-php #wpcontent,.credits-php #wpcontent,.freedoms-php #wpcontent,.privacy-php #wpcontent{background:#fff;padding:0 24px}@media screen and (max-width:782px){.about-php.auto-fold #wpcontent,.credits-php.auto-fold #wpcontent,.freedoms-php.auto-fold #wpcontent,.privacy-php.auto-fold #wpcontent{padding-right:24px}}.about__container{max-width:1000px;margin:24px auto;clear:both}.about__container .alignleft{float:right}.about__container .alignright{float:left}.about__container .aligncenter{text-align:center}.about__container .is-vertically-aligned-top{align-self:start}.about__container .is-vertically-aligned-center{align-self:center}.about__container .is-vertically-aligned-bottom{align-self:end}.about__section{background:0 0;clear:both}.about__container .has-accent-background-color{background-color:var(--accent-2)}.about__container .has-transparent-background-color{background-color:transparent}.about__container .has-accent-color{color:var(--accent-2)}.about__container .has-border{border:3px solid currentColor}.about__container .has-subtle-background-color{background-color:var(--subtle-background)}.about__container .has-background-image{background-size:contain;background-repeat:no-repeat;background-position:center}.about__section{margin:0}.about__section .column:not(.is-edge-to-edge){padding:var(--gap)}.about__section+.about__section .is-section-header{padding-bottom:var(--gap)}.about__section .column.has-border:not(.is-edge-to-edge),.about__section .column[class*=background-color]:not(.is-edge-to-edge),.about__section:where([class*=background-color]) .column:not(.is-edge-to-edge){padding-top:var(--gap);padding-bottom:var(--gap)}.about__section .column p:first-of-type{margin-top:0}.about__section .column p:last-of-type{margin-bottom:0}.about__section .has-text-columns{columns:2;column-gap:calc(var(--gap) * 2)}.about__section .is-section-header{margin-bottom:0;padding:var(--gap) var(--gap) 0}.about__section .is-section-header p:last-child{margin-bottom:0}.about__section .is-section-header:first-child:last-child{padding:0}.about__section.is-feature{padding:var(--gap)}.about__section.is-feature p{margin:0}.about__section.is-feature p+p{margin-top:calc(var(--gap)/ 2)}.about__section.has-1-column{margin-right:auto;margin-left:auto;max-width:36em}.about__section.has-2-columns,.about__section.has-3-columns,.about__section.has-4-columns,.about__section.has-overlap-style{display:grid}.about__section.has-gutters{gap:var(--gap);margin-bottom:var(--gap)}.about__section.has-2-columns{grid-template-columns:1fr 1fr}.about__section.has-2-columns.is-wider-right{grid-template-columns:2fr 3fr}.about__section.has-2-columns.is-wider-left{grid-template-columns:3fr 2fr}.about__section.has-2-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-2-columns .column:nth-of-type(odd){grid-column-start:1}.about__section.has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-3-columns{grid-template-columns:repeat(3,1fr)}.about__section.has-3-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about__section.has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about__section.has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about__section.has-4-columns{grid-template-columns:repeat(4,1fr)}.about__section.has-4-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:4;grid-column-end:span 4}.about__section.has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about__section.has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about__section.has-2-columns .is-section-header~.column,.about__section.has-3-columns .is-section-header~.column,.about__section.has-4-columns .is-section-header~.column,.about__section.has-overlap-style .is-section-header~.column{grid-row-start:2}.about__section.has-overlap-style{grid-template-columns:repeat(7,1fr)}.about__section.has-overlap-style .column{grid-row-start:1}.about__section.has-overlap-style .column:nth-of-type(odd){grid-column-start:2;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column:nth-of-type(2n){grid-column-start:4;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column.is-top-layer{z-index:1}@media screen and (max-width:782px){.about__section.has-2-columns.is-wider-left,.about__section.has-2-columns.is-wider-right,.about__section.has-3-columns{display:block;margin-bottom:calc(var(--gap)/ 2)}.about__section .column:not(.is-edge-to-edge){padding-top:var(--gap);padding-bottom:var(--gap)}.about__section.has-2-columns.has-gutters.is-wider-left,.about__section.has-2-columns.has-gutters.is-wider-right,.about__section.has-3-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column,.about__section.has-3-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child,.about__section.has-3-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-3-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns{grid-template-columns:repeat(2,1fr)}.about__section.has-4-columns .column:nth-of-type(odd){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n),.about__section.has-4-columns .column:nth-of-type(4n+3){grid-row-start:2}.about__section.has-4-columns .is-section-header{-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n),.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n+3){grid-row-start:3}.about__section.has-overlap-style{grid-template-columns:1fr}.about__section.has-overlap-style .column.column{grid-column-start:1;-ms-grid-column-span:1;grid-column-end:2;grid-row-start:1;-ms-grid-row-span:1;grid-row-end:2}}@media screen and (max-width:600px){.about__section.has-2-columns{display:block;margin-bottom:var(--gap)}.about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-2-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child{margin-bottom:0}}@media screen and (max-width:480px){.about__section.is-feature .column{padding:0}.about__section.has-4-columns{display:block;padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column{margin-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-4-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}}.about__container{line-height:1.4;color:var(--text)}.about__container h1{padding:0;color:inherit}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{margin-top:0;margin-bottom:.5em;font-size:2rem;font-weight:700;line-height:1.16}.about__container h1.is-smaller-heading,.about__container h2.is-smaller-heading,.about__container h3{margin-top:0;font-size:1.625rem;font-weight:700;line-height:1.4}.about__container h3.is-smaller-heading,.about__container h4{margin-top:0;font-size:1.125rem;font-weight:700;line-height:1.6}.about__container p{font-size:inherit;line-height:inherit}.about__container p.is-subheading{margin-top:0;font-size:1.5rem;font-weight:300;line-height:160%}.about__section a{color:var(--accent-1);text-decoration:underline}.about__section a:active,.about__section a:focus,.about__section a:hover{color:var(--accent-1);text-decoration:none}.wp-credits-list a{text-decoration:none}.wp-credits-list a:active,.wp-credits-list a:focus,.wp-credits-list a:hover{text-decoration:underline}.about__container ul{list-style:disc;margin-right:calc(var(--gap)/ 2)}.about__container li{margin-bottom:.5rem}.about__container img{margin:0;max-width:100%;vertical-align:middle}.about__container .about__image{margin:0}.about__container .about__image img{max-width:100%;width:100%;height:auto}.about__container .about__image figcaption{margin-top:.5em;text-align:center}.about__container .about__image .wp-video{margin-right:auto;margin-left:auto}.about__container .about__image+h3{margin-top:1.5em}.about__container .column .about__image{margin-bottom:calc(var(--gap)/ 2)}.about__container hr{margin:0;height:var(--gap);border:none;border-top:4px solid #d9d9d9}.about__container hr.is-small{height:calc(var(--gap)/ 4)}.about__container hr.is-large{height:calc(var(--gap) * 2);margin:calc(var(--gap)/ 2) auto}.about__container .notice,.about__container div.error,.about__container div.updated{display:none!important}.about__section{font-size:1.125rem;line-height:1.55}.about__section.is-feature{font-size:1.6em}@media screen and (max-width:480px){.about__section.is-feature{font-size:1.4em}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{font-size:2em}}.about__header{--about-header-image-width:780px;--about-header-image-height:550px;--about-header-bg-width:var(--about-header-image-width);--about-header-bg-height:var(--about-header-image-height);--about-header-bg-offset-block:0;position:relative;margin-bottom:var(--gap);padding-top:0;color:var(--text-light);background:var(--background) url('../images/about-header-about.svg?ver=6.1') no-repeat;background-size:var(--about-header-bg-width) var(--about-header-bg-height);background-position:center top var(--about-header-bg-offset-block)}.credits-php .about__header{--about-header-image-width:863px;--about-header-image-height:550px;background-image:url('../images/about-header-credits.svg?ver=6.1')}.freedoms-php .about__header{--about-header-image-width:782px;--about-header-image-height:510px;background-image:url('../images/about-header-freedoms.svg?ver=6.1')}.privacy-php .about__header{--about-header-image-width:1005px;--about-header-image-height:500px;--about-header-bg-offset-block:calc(var(--gap) * -2);background-image:url('../images/about-header-privacy.svg?ver=6.1')}.about__header-image{margin:0 var(--gap) 3em}.about__header-title{box-sizing:border-box;margin:0 var(--gap);padding:9rem 0 0;text-align:center}.about__header-title h1{margin:0 0 1rem;padding:0;font-size:clamp(3rem, 20vw - 9rem, 6rem);line-height:1;font-weight:400}.credits-php .about__header-title h1,.freedoms-php .about__header-title h1,.privacy-php .about__header-title h1{font-size:clamp(3rem, 10vw - 3rem, 4.5rem)}.about__header-text{box-sizing:border-box;max-width:22em;margin:0 auto 10rem;padding:0;font-size:1.6rem;line-height:1.15;text-align:center}.credits-php .about__header-text{margin-bottom:9rem}.about__header-navigation{position:relative;z-index:1;display:flex;justify-content:center;padding-top:0;background:var(--nav-background);color:var(--nav-color);border-bottom:3px solid var(--nav-border)}.about__header-navigation .nav-tab{margin-right:0;padding:calc(var(--gap) * .75) var(--gap);float:none;font-size:1.4em;line-height:1;border-width:0 0 3px;border-style:solid;border-color:transparent;background:0 0;color:inherit}.about__header-navigation .nav-tab:active,.about__header-navigation .nav-tab:hover{background-color:var(--nav-current);color:var(--text-light)}.about__header-navigation .nav-tab-active{margin-bottom:-3px;color:var(--nav-current);border-width:0 0 6px;border-color:var(--nav-current)}.about__header-navigation .nav-tab-active:active,.about__header-navigation .nav-tab-active:hover{background-color:var(--nav-current);color:var(--text-light);border-color:var(--nav-current)}@media screen and (max-width:960px){.about__header{--about-header-bg-width:calc(var(--about-header-image-width) * 0.85);--about-header-bg-height:calc(var(--about-header-image-height) * 0.85)}.privacy-php .about__header{--about-header-bg-offset-block:0}.about__header-title h1{font-size:clamp(3rem, 13.33vw - 2rem, 6rem)}.credits-php .about__header-title h1,.freedoms-php .about__header-title h1,.privacy-php .about__header-title h1{font-size:clamp(3rem, 6.67vw - .5rem, 4.5rem)}}@media screen and (max-width:782px){.about__container .about__header-text{font-size:1.4em}.about__header-container{display:block}.about__header-image,.about__header-title{margin-right:calc(var(--gap)/ 2);margin-left:calc(var(--gap)/ 2)}.about__header-text{margin-top:0}.about__header-navigation .nav-tab{margin-top:0;margin-left:0;padding-right:calc(var(--gap)/ 2);padding-left:calc(var(--gap)/ 2)}}@media screen and (max-width:600px){.about__header{--about-header-bg-width:calc(var(--about-header-image-width) * 0.75);--about-header-bg-height:calc(var(--about-header-image-height) * 0.75)}}@media screen and (max-width:480px){.about__header,.credits-php .about__header,.freedoms-php .about__header,.privacy-php .about__header{background-image:none}.about__header-title p{font-size:2.4em}.about__header-title{padding-top:2rem}.about__header-text,.credits-php .about__header-text{margin-right:calc(var(--gap)/ 2);margin-left:calc(var(--gap)/ 2);margin-bottom:2rem}.about__header-navigation{display:block}.about__header-navigation .nav-tab{display:block;margin-bottom:0;padding:calc(var(--gap)/ 2);border-right-width:6px;border-bottom:none}.about__header-navigation .nav-tab-active{border-bottom:none;border-right-width:6px}}.about__section .wp-people-group-title{margin-bottom:calc(var(--gap) * 2);text-align:center}.about__section .wp-people-group{margin:0;display:flex;flex-wrap:wrap}.about__section .wp-person{display:inline-block;vertical-align:top;box-sizing:border-box;margin-bottom:var(--gap);width:25%;text-align:center}.about__section .compact .wp-person{height:auto;width:20%}.about__section .wp-person-avatar{display:block;margin:0 auto calc(var(--gap)/ 2);width:140px;height:140px;border-radius:100%;overflow:hidden;background:var(--accent-1)}.about__section .wp-person .gravatar{width:140px;height:140px;filter:grayscale(100%);mix-blend-mode:screen}.about__section .compact .wp-person .gravatar,.about__section .compact .wp-person-avatar{width:80px;height:80px}.about__section .wp-person .web{font-size:1.4em;font-weight:600;text-decoration:none}.about__section .wp-person .web:hover{text-decoration:underline}.about__section .compact .wp-person .web{font-size:1.2em}.about__section .wp-person .title{display:block;margin-top:.5em}@media screen and (max-width:782px){.about__section .wp-person{width:33%}.about__section .compact .wp-person{width:25%}.about__section .wp-person .gravatar,.about__section .wp-person-avatar{width:120px;height:120px}}@media screen and (max-width:600px){.about__section .wp-person{width:50%}.about__section .compact .wp-person{width:33%}.about__section .wp-person .web{font-size:1.2em}}@media screen and (max-width:480px){.about__section .wp-person{min-width:100%}.about__section .wp-person .web{font-size:1em}.about__section .compact .wp-person .web{font-size:1em}}.about__section .column .freedom-image{margin-bottom:var(--gap);max-height:180px}.about__section .column .privacy-image{display:block;margin-right:auto;margin-left:auto;max-width:25rem}.about-wrap{position:relative;margin:25px 20px 0 40px;max-width:1050px;font-size:15px}.about-wrap.full-width-layout{max-width:1200px}.about-wrap-content{max-width:1050px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:3em 0 0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;width:100%;height:auto;vertical-align:middle}.about-wrap .inline-svg img{max-width:100%;width:auto;height:auto}.about-wrap video{margin:1.5em auto}.wp-badge{background:#0073aa url(../images/cp-logo-white.png?ver=202303) no-repeat;background-position:center;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/classicpress-logo-white.svg?ver=202303)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap .nav-tab{padding-left:15px;padding-right:15px;font-size:18px;line-height:1.33333333}.about-wrap h1{margin:.2em 0 0 200px;padding:0;color:#32373c;line-height:1.2;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{font-size:16px;color:#23282d}.about-wrap p{line-height:1.5;font-size:16px}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap figcaption{font-size:13px;text-align:center;color:#fff;text-overflow:ellipsis}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.about-wrap .about-text{margin:1em 0 1em 200px;color:#555d66}.about-wrap .has-1-columns,.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:grid;max-width:800px;margin-top:40px;margin-right:auto;margin-left:auto}.about-wrap .column{margin-left:20px;margin-right:20px}.about-wrap .is-wide{max-width:760px}.about-wrap .is-fullwidth{max-width:100%}.about-wrap .has-1-columns{display:block;max-width:680px;margin:0 auto 40px}.about-wrap .has-2-columns{grid-template-columns:1fr 1fr}.about-wrap .has-2-columns .column:nth-of-type(odd){grid-column-start:1}.about-wrap .has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about-wrap .has-2-columns.is-wider-right{grid-template-columns:1fr 2fr}.about-wrap .has-2-columns.is-wider-left{grid-template-columns:2fr 1fr}.about-wrap .has-3-columns{grid-template-columns:repeat(3,1fr)}.about-wrap .has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about-wrap .has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about-wrap .has-4-columns{grid-template-columns:repeat(4,1fr)}.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about-wrap .column :first-child{margin-top:0}.about-wrap .aligncenter{text-align:center}.about-wrap .alignleft{float:right;margin-left:40px}.about-wrap .alignright{float:left;margin-right:40px}.about-wrap .is-vertically-aligned-top{align-self:start}.about-wrap .is-vertically-aligned-center{align-self:center}.about-wrap .is-vertically-aligned-bottom{align-self:end}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.about-wrap .changelog{margin-bottom:40px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .changelog.feature-section .col{margin-top:40px}.about-wrap .lead-description{font-size:1.5em;text-align:center}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .headline-feature{margin:0 auto 40px;max-width:680px}.about-wrap .headline-feature h2{margin:50px 0 0}.about-wrap .headline-feature img{max-width:600px;width:100%}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h2.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit;font-weight:600;text-align:right}.about-wrap .wp-people-group{padding:0 5px;margin:0 -5px 0 -15px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:right;margin:0 0 10px 10px;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.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:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}.freedoms-php .column .freedoms-image{background-image:url('../images/freedoms.png');background-size:100%;padding-top:100%}.freedoms-php .column:nth-of-type(2) .freedoms-image{background-position:100% 34%}.freedoms-php .column:nth-of-type(3) .freedoms-image{background-position:100% 66%}.freedoms-php .column:nth-of-type(4) .freedoms-image{background-position:100% 100%}@media screen and (max-width:782px){.about-wrap .has-3-columns,.about-wrap .has-4-columns{grid-template-columns:1fr 1fr}.about-wrap .has-3-columns .column:nth-of-type(3n+1),.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2),.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n),.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:1;grid-row-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:2;grid-row-start:2}}@media screen and (max-width:600px){.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:block}.about-wrap :not(.is-wider-right):not(.is-wider-left) .column{margin-left:0;margin-right:0}.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:grid}}@media only screen and (max-width:500px){.about-wrap{margin-left:20px;margin-right:10px}.about-wrap .about-text,.about-wrap h1{margin-left:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}}@media only screen and (max-width:480px){.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:block}.about-wrap .column{margin-left:0;margin-right:0}.about-wrap .has-2-columns.is-wider-left img,.about-wrap .has-2-columns.is-wider-right img{max-width:160px}} \ No newline at end of file +.about-wrap{position:relative;margin:25px 20px 0 40px;max-width:1050px;font-size:15px}.about-wrap.full-width-layout{max-width:1200px}.about-wrap-content{max-width:1050px;padding-top:2rem}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap .about-inline-notice{margin:-12px 0 12px 0;padding:6px 8px}.about-wrap hr{border:0;height:0;margin:0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.wp-badge{background:#057f99;background-image:url(../images/w-logo-white.png?ver=20190218);background-size:80px 80px;background-image:url(../images/wordpress-logo-white.svg?ver=20190218),linear-gradient(135deg,#3ebca6 0,#057f99 50%,#006b81 100%);background-size:80px 80px,cover;background-repeat:no-repeat;background-position:center;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;width:130px;height:130px;display:inline-block;text-rendering:optimizeLegibility;box-shadow:0 1px 3px rgba(0,0,0,.2)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap .nav-tab{padding-left:15px;padding-right:15px;font-size:18px}.about-wrap p{line-height:1.5;font-size:14px}.about-wrap h1{margin:.2em 0 0 200px;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{color:#23282d}.about-wrap .changelog h2{font-size:1.4em;font-weight:600;text-align:right}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:16px;color:#555d66}.about-wrap .about-description{line-height:1.5;font-size:14px}.about-wrap .dev-version-info{font-size:14px;font-weight:400;margin-right:.5em}@media screen and (max-width:640px){.about-wrap .dev-version-info{display:block;margin-right:0}}.about-wrap .changelog.point-releases h3{padding-top:7px;margin-top:0}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .about-freedoms{list-style-type:disc;list-style-position:outside;margin:1em;padding-right:1em;font-size:14px}@media only screen and (max-width:500px){.about-wrap{margin-left:20px;margin-right:10px}.about-wrap .about-text,.about-wrap h1{margin-left:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}.about-wrap .floating-header-section{margin-bottom:60px;grid-gap:30px 0}} \ No newline at end of file diff --git a/wp-admin/css/about.css b/wp-admin/css/about.css index d270a13..c26239b 100644 --- a/wp-admin/css/about.css +++ b/wp-admin/css/about.css @@ -1,969 +1,18 @@ /*------------------------------------------------------------------------------ 22.0 - About Pages - 1.0 Global: About, Credits, Freedoms, Privacy - 1.1 Layout - 1.2 Typography & Elements - 1.3 Header - 2.0 Credits Page - 3.0 Freedoms Page - 4.0 Privacy Page - x.2.0 Legacy About Styles: Global - x.2.1 Typography - x.2.2 Structure - x.2.3 Point Releases - x.3.0 Legacy About Styles: About Page - x.3.1 Typography - x.3.2 Structure - x.4.0 Legacy About Styles: Credits & Freedoms Pages - x.5.0 Legacy About Styles: Media Queries + 1.0 Global: About, Credits, Freedoms + 1.1 Typography + 1.2 Structure + 1.3 Point Releases + 2.0 About Page + 2.1 Typography + 2.2 Structure + 3.0 Credits & Freedoms Pages ------------------------------------------------------------------------------*/ -.about__container { - /* Section backgrounds */ - --background: #274acd; - --subtle-background: #eff2ff; - - /* Main text color */ - --text: #000; - --text-light: #fff; - - /* Accent colors: used in header, on special classes. */ - --accent-1: #3858e9; /* Link color, credit image overlay */ - --accent-2: #fffcb5; /* Accent background */ - - /* Navigation colors. */ - --nav-background: #fff; - --nav-border: transparent; - --nav-color: var(--text); - --nav-current: var(--accent-1); - - --gap: 2rem; -} - -/*------------------------------------------------------------------------------ - 1.0 - Global: About, Credits, Freedoms, Privacy -------------------------------------------------------------------------------*/ - -.about-php, -.credits-php, -.freedoms-php, -.privacy-php { - background: #fff; -} - -.about-php #wpcontent, -.credits-php #wpcontent, -.freedoms-php #wpcontent, -.privacy-php #wpcontent { - background: #fff; - padding: 0 24px; -} - -@media screen and (max-width: 782px) { - .about-php.auto-fold #wpcontent, - .credits-php.auto-fold #wpcontent, - .freedoms-php.auto-fold #wpcontent, - .privacy-php.auto-fold #wpcontent { - padding-left: 24px; - } -} - -.about__container { - max-width: 1000px; - margin: 24px auto; - clear: both; -} - -.about__container .alignleft { - float: left; -} - -.about__container .alignright { - float: right; -} - -.about__container .aligncenter { - text-align: center; -} - -.about__container .is-vertically-aligned-top { - align-self: start; -} - -.about__container .is-vertically-aligned-center { - align-self: center; -} - -.about__container .is-vertically-aligned-bottom { - align-self: end; -} - -.about__section { - background: transparent; - clear: both; -} - -.about__container .has-accent-background-color { - background-color: var(--accent-2); -} - -.about__container .has-transparent-background-color { - background-color: transparent; -} - -.about__container .has-accent-color { - color: var(--accent-2); -} - -.about__container .has-border { - border: 3px solid currentColor; -} - -.about__container .has-subtle-background-color { - background-color: var(--subtle-background); -} - -.about__container .has-background-image { - background-size: contain; - background-repeat: no-repeat; - background-position: center; -} - -/* 1.1 - Layout */ - -.about__section { - margin: 0; -} - -.about__section .column:not(.is-edge-to-edge) { - padding: var(--gap); -} - -.about__section + .about__section .is-section-header { - padding-bottom: var(--gap); -} - -.about__section .column[class*="background-color"]:not(.is-edge-to-edge), -.about__section:where([class*="background-color"]) .column:not(.is-edge-to-edge), -.about__section .column.has-border:not(.is-edge-to-edge) { - padding-top: var(--gap); - padding-bottom: var(--gap); -} - -.about__section .column p:first-of-type { - margin-top: 0; -} - -.about__section .column p:last-of-type { - margin-bottom: 0; -} - -.about__section .has-text-columns { - columns: 2; - column-gap: calc(var(--gap) * 2); -} - -.about__section .is-section-header { - margin-bottom: 0; - padding: var(--gap) var(--gap) 0; -} - -.about__section .is-section-header p:last-child { - margin-bottom: 0; -} - -/* Section header is alone in a container. */ -.about__section .is-section-header:first-child:last-child { - padding: 0; -} - -.about__section.is-feature { - padding: var(--gap); -} - -.about__section.is-feature p { - margin: 0; -} - -.about__section.is-feature p + p { - margin-top: calc(var(--gap) / 2); -} - -.about__section.has-1-column { - margin-left: auto; - margin-right: auto; - max-width: 36em; -} - -.about__section.has-2-columns, -.about__section.has-3-columns, -.about__section.has-4-columns, -.about__section.has-overlap-style { - display: grid; -} - -.about__section.has-gutters { - gap: var(--gap); - margin-bottom: var(--gap); -} - -.about__section.has-2-columns { - grid-template-columns: 1fr 1fr; -} - -.about__section.has-2-columns.is-wider-right { - grid-template-columns: 2fr 3fr; -} - -.about__section.has-2-columns.is-wider-left { - grid-template-columns: 3fr 2fr; -} - -.about__section.has-2-columns .is-section-header { - grid-column-start: 1; - -ms-grid-column-span: 2; - grid-column-end: span 2; -} - -.about__section.has-2-columns .column:nth-of-type(2n+1) { - grid-column-start: 1; -} - -.about__section.has-2-columns .column:nth-of-type(2n) { - grid-column-start: 2; -} - -.about__section.has-3-columns { - grid-template-columns: repeat(3, 1fr); -} - -.about__section.has-3-columns .is-section-header { - grid-column-start: 1; - -ms-grid-column-span: 3; - grid-column-end: span 3; -} - -.about__section.has-3-columns .column:nth-of-type(3n+1) { - grid-column-start: 1; -} - -.about__section.has-3-columns .column:nth-of-type(3n+2) { - grid-column-start: 2; -} - -.about__section.has-3-columns .column:nth-of-type(3n) { - grid-column-start: 3; -} - -.about__section.has-4-columns { - grid-template-columns: repeat(4, 1fr); -} - -.about__section.has-4-columns .is-section-header { - grid-column-start: 1; - -ms-grid-column-span: 4; - grid-column-end: span 4; -} - -.about__section.has-4-columns .column:nth-of-type(4n+1) { - grid-column-start: 1; -} - -.about__section.has-4-columns .column:nth-of-type(4n+2) { - grid-column-start: 2; -} - -.about__section.has-4-columns .column:nth-of-type(4n+3) { - grid-column-start: 3; -} - -.about__section.has-4-columns .column:nth-of-type(4n) { - grid-column-start: 4; -} - -/* Any columns following a section header need to be expicitly put into the second row, for IE support. */ -.about__section.has-2-columns .is-section-header ~ .column, -.about__section.has-3-columns .is-section-header ~ .column, -.about__section.has-4-columns .is-section-header ~ .column, -.about__section.has-overlap-style .is-section-header ~ .column { - grid-row-start: 2; -} - -.about__section.has-overlap-style { - grid-template-columns: repeat(7, 1fr); -} - -.about__section.has-overlap-style .column { - grid-row-start: 1; -} - -.about__section.has-overlap-style .column:nth-of-type(2n+1) { - grid-column-start: 2; - -ms-grid-column-span: 3; - grid-column-end: span 3; -} - -.about__section.has-overlap-style .column:nth-of-type(2n) { - grid-column-start: 4; - -ms-grid-column-span: 3; - grid-column-end: span 3; -} - -.about__section.has-overlap-style .column.is-top-layer { - z-index: 1; -} - -@media screen and (max-width: 782px) { - .about__section.has-2-columns.is-wider-right, - .about__section.has-2-columns.is-wider-left, - .about__section.has-3-columns { - display: block; - margin-bottom: calc(var(--gap) / 2); - } - - .about__section .column:not(.is-edge-to-edge) { - padding-top: var(--gap); - padding-bottom: var(--gap); - } - - .about__section.has-2-columns.has-gutters.is-wider-right, - .about__section.has-2-columns.has-gutters.is-wider-left, - .about__section.has-3-columns.has-gutters { - margin-bottom: calc(var(--gap) * 2); - } - - .about__section.has-2-columns.has-gutters .column, - .about__section.has-2-columns.has-gutters .column, - .about__section.has-3-columns.has-gutters .column { - margin-bottom: var(--gap); - } - - .about__section.has-2-columns.has-gutters .column:last-child, - .about__section.has-2-columns.has-gutters .column:last-child, - .about__section.has-3-columns.has-gutters .column:last-child { - margin-bottom: 0; - } - - .about__section.has-3-columns .column:nth-of-type(n) { - padding-top: calc(var(--gap) / 2); - padding-bottom: calc(var(--gap) / 2); - } - - .about__section.has-4-columns { - grid-template-columns: repeat(2, 1fr); - } - - .about__section.has-4-columns .column:nth-of-type(2n+1) { - grid-column-start: 1; - } - - .about__section.has-4-columns .column:nth-of-type(2n) { - grid-column-start: 2; - } - - .about__section.has-4-columns .column:nth-of-type(4n+3), - .about__section.has-4-columns .column:nth-of-type(4n) { - grid-row-start: 2; - } - - .about__section.has-4-columns .is-section-header { - -ms-grid-column-span: 2; - grid-column-end: span 2; - } - - .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n+3), - .about__section.has-4-columns .is-section-header ~ .column:nth-of-type(4n) { - grid-row-start: 3; - } - - .about__section.has-overlap-style { - grid-template-columns: 1fr; - } - - /* At this size, the two columns fully overlap */ - .about__section.has-overlap-style .column.column { - grid-column-start: 1; - -ms-grid-column-span: 1; - grid-column-end: 2; - grid-row-start: 1; - -ms-grid-row-span: 1; - grid-row-end: 2; - } -} - -@media screen and (max-width: 600px) { - .about__section.has-2-columns { - display: block; - margin-bottom: var(--gap); - } - - .about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n) { - padding-top: calc(var(--gap) / 2); - padding-bottom: calc(var(--gap) / 2); - } - - .about__section.has-2-columns.has-gutters { - margin-bottom: calc(var(--gap) * 2); - } - - .about__section.has-2-columns.has-gutters .column { - margin-bottom: var(--gap); - } - - .about__section.has-2-columns.has-gutters .column:last-child { - margin-bottom: 0; - } -} - -@media screen and (max-width: 480px) { - .about__section.is-feature .column { - padding: 0; - } - - .about__section.has-4-columns { - display: block; - padding-bottom: calc(var(--gap) / 2); - } - - .about__section.has-4-columns.has-gutters .column { - margin-bottom: calc(var(--gap) / 2); - } - - .about__section.has-4-columns.has-gutters .column:last-child { - margin-bottom: 0; - } - - .about__section.has-4-columns .column:nth-of-type(n) { - padding-top: calc(var(--gap) / 2); - padding-bottom: calc(var(--gap) / 2); - } -} - -/* 1.2 - Typography & Elements */ - -.about__container { - line-height: 1.4; - color: var(--text); -} - -.about__container h1 { - padding: 0; - color: inherit; -} - -.about__container h1, -.about__container h2, -.about__container h3.is-larger-heading { - margin-top: 0; - margin-bottom: 0.5em; - font-size: 2rem; - font-weight: 700; - line-height: 1.16; -} - -.about__container h3, -.about__container h1.is-smaller-heading, -.about__container h2.is-smaller-heading { - margin-top: 0; - font-size: 1.625rem; - font-weight: 700; - line-height: 1.4; -} - -.about__container h4, -.about__container h3.is-smaller-heading { - margin-top: 0; - font-size: 1.125rem; - font-weight: 700; - line-height: 1.6; -} - -.about__container p { - font-size: inherit; - line-height: inherit; -} - -.about__container p.is-subheading { - margin-top: 0; - font-size: 1.5rem; - font-weight: 300; - line-height: 160%; -} - -.about__section a { - color: var(--accent-1); - text-decoration: underline; -} - -.about__section a:hover, -.about__section a:active, -.about__section a:focus { - color: var(--accent-1); - text-decoration: none; -} - -.wp-credits-list a { - text-decoration: none; -} - -.wp-credits-list a:hover, -.wp-credits-list a:active, -.wp-credits-list a:focus { - text-decoration: underline; -} - -.about__container ul { - list-style: disc; - margin-left: calc(var(--gap) / 2); -} - -.about__container li { - margin-bottom: 0.5rem; -} - -.about__container img { - margin: 0; - max-width: 100%; - vertical-align: middle; -} - -.about__container .about__image { - margin: 0; -} - -.about__container .about__image img { - max-width: 100%; - width: 100%; - height: auto; -} - -.about__container .about__image figcaption { - margin-top: 0.5em; - text-align: center; -} - -.about__container .about__image .wp-video { - margin-left: auto; - margin-right: auto; -} - -.about__container .about__image + h3 { - margin-top: 1.5em; -} - -.about__container .column .about__image { - margin-bottom: calc(var(--gap) / 2); -} - -.about__container hr { - margin: 0; - height: var(--gap); - border: none; - border-top: 4px solid #d9d9d9; -} - -.about__container hr.is-small { - height: calc(var(--gap) / 4); -} - -.about__container hr.is-large { - height: calc(var(--gap) * 2); - margin: calc(var(--gap) / 2) auto; -} - -.about__container div.updated, -.about__container div.error, -.about__container .notice { - display: none !important; -} - -.about__section { - font-size: 1.125rem; - line-height: 1.55; -} - -.about__section.is-feature { - font-size: 1.6em; -} - -@media screen and (max-width: 480px) { - .about__section.is-feature { - font-size: 1.4em; - } - - .about__container h1, - .about__container h2, - .about__container h3.is-larger-heading { - font-size: 2em; - } -} - -/* 1.3 - Header */ - -.about__header { - --about-header-image-width: 780px; - --about-header-image-height: 550px; - --about-header-bg-width: var(--about-header-image-width); - --about-header-bg-height: var(--about-header-image-height); - --about-header-bg-offset-block: 0; - - position: relative; - margin-bottom: var(--gap); - padding-top: 0; - color: var(--text-light); - background: var(--background) url('../images/about-header-about.svg?ver=6.1') no-repeat; - background-size: var(--about-header-bg-width) var(--about-header-bg-height); - background-position: center top var(--about-header-bg-offset-block); -} - -.credits-php .about__header { - --about-header-image-width: 863px; - --about-header-image-height: 550px; - - background-image: url('../images/about-header-credits.svg?ver=6.1'); -} - -.freedoms-php .about__header { - --about-header-image-width: 782px; - --about-header-image-height: 510px; - - background-image: url('../images/about-header-freedoms.svg?ver=6.1'); -} - -.privacy-php .about__header { - --about-header-image-width: 1005px; - --about-header-image-height: 500px; - --about-header-bg-offset-block: calc(var(--gap) * -2); - - background-image: url('../images/about-header-privacy.svg?ver=6.1'); -} - -.about__header-image { - margin: 0 var(--gap) 3em; -} - -.about__header-title { - box-sizing: border-box; - margin: 0 var(--gap); - padding: 9rem 0 0; - text-align: center; -} - -.about__header-title h1 { - margin: 0 0 1rem; - padding: 0; - /* Fluid font size scales on browser size 960px - 1200px. */ - font-size: clamp(3rem, 20vw - 9rem, 6rem); - line-height: 1; - font-weight: 400; -} - -.credits-php .about__header-title h1, -.privacy-php .about__header-title h1, -.freedoms-php .about__header-title h1 { - /* Fluid font size scales on browser size 960px - 1200px. */ - font-size: clamp(3rem, 10vw - 3rem, 4.5rem); -} - -.about__header-text { - box-sizing: border-box; - max-width: 22em; - margin: 0 auto 10rem; - padding: 0; - font-size: 1.6rem; - line-height: 1.15; - text-align: center; -} - -.credits-php .about__header-text { - margin-bottom: 9rem; -} - -.about__header-navigation { - position: relative; - z-index: 1; - display: flex; - justify-content: center; - padding-top: 0; - background: var(--nav-background); - color: var(--nav-color); - border-bottom: 3px solid var(--nav-border); -} - -.about__header-navigation .nav-tab { - margin-left: 0; - padding: calc(var(--gap) * 0.75) var(--gap); - float: none; - font-size: 1.4em; - line-height: 1; - border-width: 0 0 3px; - border-style: solid; - border-color: transparent; - background: transparent; - color: inherit; -} - -.about__header-navigation .nav-tab:hover, -.about__header-navigation .nav-tab:active { - background-color: var(--nav-current); - color: var(--text-light); -} - -.about__header-navigation .nav-tab-active { - margin-bottom: -3px; - color: var(--nav-current); - border-width: 0 0 6px; - border-color: var(--nav-current); -} - -.about__header-navigation .nav-tab-active:hover, -.about__header-navigation .nav-tab-active:active { - background-color: var(--nav-current); - color: var(--text-light); - border-color: var(--nav-current); -} - -@media screen and (max-width: 960px) { - .about__header { - --about-header-bg-width: calc(var(--about-header-image-width) * 0.85); - --about-header-bg-height: calc(var(--about-header-image-height) * 0.85); - } - - .privacy-php .about__header { - --about-header-bg-offset-block: 0; - } - - .about__header-title h1 { - /* Fluid font size scales on browser size 600px - 960px. */ - font-size: clamp(3rem, 13.33vw - 2rem, 6rem); - } - - .credits-php .about__header-title h1, - .privacy-php .about__header-title h1, - .freedoms-php .about__header-title h1 { - /* Fluid font size scales on browser size 600px - 960px. */ - font-size: clamp(3rem, 6.67vw - 0.5rem, 4.5rem); - } -} - -@media screen and (max-width: 782px) { - .about__container .about__header-text { - font-size: 1.4em; - } - - .about__header-container { - display: block; - } - - .about__header-title, - .about__header-image { - margin-left: calc(var(--gap) / 2); - margin-right: calc(var(--gap) / 2); - } - - .about__header-text { - margin-top: 0; - } - - .about__header-navigation .nav-tab { - margin-top: 0; - margin-right: 0; - padding-left: calc(var(--gap) / 2); - padding-right: calc(var(--gap) / 2); - } -} - -@media screen and (max-width: 600px) { - .about__header { - --about-header-bg-width: calc(var(--about-header-image-width) * 0.75); - --about-header-bg-height: calc(var(--about-header-image-height) * 0.75); - } -} - -@media screen and (max-width: 480px) { - .about__header, - .credits-php .about__header, - .privacy-php .about__header, - .freedoms-php .about__header { - background-image: none; - } - - .about__header-title p { - font-size: 2.4em; - } - - .about__header-title { - padding-top: 2rem; - } - - .about__header-text, - .credits-php .about__header-text { - margin-left: calc(var(--gap) / 2); - margin-right: calc(var(--gap) / 2); - margin-bottom: 2rem; - } - - .about__header-navigation { - display: block; - } - - .about__header-navigation .nav-tab { - display: block; - margin-bottom: 0; - padding: calc(var(--gap) / 2); - border-left-width: 6px; - border-bottom: none; - } - - .about__header-navigation .nav-tab-active { - border-bottom: none; - border-left-width: 6px; - } -} - - -/*------------------------------------------------------------------------------ - 2.0 - Credits Page -------------------------------------------------------------------------------*/ - -.about__section .wp-people-group-title { - margin-bottom: calc(var(--gap) * 2); - text-align: center; - -} - -.about__section .wp-people-group { - margin: 0; - display: flex; - flex-wrap: wrap; -} - -.about__section .wp-person { - display: inline-block; - vertical-align: top; - box-sizing: border-box; - margin-bottom: var(--gap); - width: 25%; - text-align: center; -} - -.about__section .compact .wp-person { - height: auto; - width: 20%; -} - -.about__section .wp-person-avatar { - display: block; - margin: 0 auto calc(var(--gap) / 2); - width: 140px; - height: 140px; - border-radius: 100%; - overflow: hidden; - background: var(--accent-1); -} - -.about__section .wp-person .gravatar { - width: 140px; - height: 140px; - filter: grayscale(100%); - mix-blend-mode: screen; -} - -.about__section .compact .wp-person-avatar, -.about__section .compact .wp-person .gravatar { - width: 80px; - height: 80px; -} - -.about__section .wp-person .web { - font-size: 1.4em; - font-weight: 600; - text-decoration: none; -} - -.about__section .wp-person .web:hover { - text-decoration: underline; -} - -.about__section .compact .wp-person .web { - font-size: 1.2em; -} - -.about__section .wp-person .title { - display: block; - margin-top: 0.5em; -} - -@media screen and (max-width: 782px) { - .about__section .wp-person { - width: 33%; - } - - .about__section .compact .wp-person { - width: 25%; - } - - .about__section .wp-person-avatar, - .about__section .wp-person .gravatar { - width: 120px; - height: 120px; - } -} - -@media screen and (max-width: 600px) { - .about__section .wp-person { - width: 50%; - } - - .about__section .compact .wp-person { - width: 33%; - } - - .about__section .wp-person .web { - font-size: 1.2em; - } -} - -@media screen and (max-width: 480px) { - .about__section .wp-person { - min-width: 100%; - } - - .about__section .wp-person .web { - font-size: 1em; - } - - .about__section .compact .wp-person .web { - font-size: 1em; - } -} - - -/*------------------------------------------------------------------------------ - 3.0 - Freedoms Page -------------------------------------------------------------------------------*/ - -.about__section .column .freedom-image { - margin-bottom: var(--gap); - max-height: 180px; -} - - /*------------------------------------------------------------------------------ - 4.0 - Privacy Page -------------------------------------------------------------------------------*/ - -.about__section .column .privacy-image { - display: block; - margin-left: auto; - margin-right: auto; - max-width: 25rem; -} - - -/*------------------------------------------------------------------------------ - x.2.0 - Legacy About Styles: Global + 1.0 - Global: About, Credits, Freedoms ------------------------------------------------------------------------------*/ .about-wrap { @@ -979,6 +28,7 @@ .about-wrap-content { max-width: 1050px; + padding-top: 2rem; } .about-wrap div.updated, @@ -987,51 +37,51 @@ display: none !important; } +.about-wrap .about-inline-notice { + margin: -12px 0 12px 0; + padding: 6px 8px; +} + .about-wrap hr { border: 0; height: 0; - margin: 3em 0 0; + margin: 0; border-top: 1px solid rgba(0, 0, 0, 0.1); } .about-wrap img { margin: 0; - width: 100%; - height: auto; - vertical-align: middle; -} - -.about-wrap .inline-svg img { max-width: 100%; - width: auto; height: auto; + vertical-align: middle; } -.about-wrap video { - margin: 1.5em auto; -} - -/* WordPress Version Badge */ +/* ClassicPress Version Badge */ .wp-badge { - background: #0073aa url(../images/cp-logo-white.png?ver=202303) no-repeat; - background-position: center; + /* Background: Really old browsers */ + background: #057f99; + /* Background: Old browsers */ + background-image: url(../images/w-logo-white.png?ver=20190218); background-size: 80px 80px; + /* Background: Modern browsers */ + background-image: + url(../images/wordpress-logo-white.svg?ver=20190218), + linear-gradient(-135deg, #3ebca6 0%, #057f99 50%, #006b81 100%); + background-size: 80px 80px, cover; + /* Other rules */ + background-repeat: no-repeat; + background-position: center; color: #fff; font-size: 14px; text-align: center; font-weight: 600; margin: 5px 0 0; - padding-top: 120px; - height: 40px; + width: 130px; + height: 130px; display: inline-block; - width: 140px; text-rendering: optimizeLegibility; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); -} - -.svg .wp-badge { - background-image: url(../images/classicpress-logo-white.svg?ver=202303); + box-shadow: 0 1px 3px rgba(0,0,0,0.2); } .about-wrap .wp-badge { @@ -1046,22 +96,26 @@ padding-right: 15px; padding-left: 15px; font-size: 18px; - line-height: 1.33333333; } -/* x.2.1 - Typography */ +/* 1.1 - Typography */ + +.about-wrap p { + line-height: 1.5; + font-size: 14px; +} .about-wrap h1 { margin: 0.2em 200px 0 0; padding: 0; color: #32373c; - line-height: 1.2; + line-height: 1.2em; font-size: 2.8em; font-weight: 400; } .about-wrap h2 { - margin: 40px 0 0.6em; + margin: 40px 0 .6em; font-size: 2.7em; line-height: 1.3; font-weight: 300; @@ -1069,19 +123,19 @@ } .about-wrap h3 { - margin: 1.25em 0 0.6em; + margin: 1.25em 0 .6em; font-size: 1.4em; line-height: 1.5; } .about-wrap h4 { - font-size: 16px; color: #23282d; } -.about-wrap p { - line-height: 1.5; - font-size: 16px; +.about-wrap .changelog h2 { + font-size: 1.4em; + font-weight: 600; + text-align: left; } .about-wrap code, @@ -1090,197 +144,48 @@ font-weight: 400; } -.about-wrap figcaption { - font-size: 13px; - text-align: center; - color: white; - text-overflow: ellipsis; -} - -.about-wrap .about-description, .about-wrap .about-text { margin-top: 1.4em; font-weight: 400; - line-height: 1.6; - font-size: 19px; -} - -.about-wrap .about-text { - margin: 1em 200px 1em 0; + line-height: 1.6em; + font-size: 16px; color: #555d66; } -/* x.2.2 - Structure */ - -.about-wrap .has-1-columns, -.about-wrap .has-2-columns, -.about-wrap .has-3-columns, -.about-wrap .has-4-columns { - display: grid; - max-width: 800px; - margin-top: 40px; - margin-left: auto; - margin-right: auto; -} - -.about-wrap .column { - margin-right: 20px; - margin-left: 20px; -} - -.about-wrap .is-wide { - max-width: 760px; -} - -.about-wrap .is-fullwidth { - max-width: 100%; -} - -.about-wrap .has-1-columns { - display: block; - max-width: 680px; - margin: 0 auto 40px; -} - -.about-wrap .has-2-columns { - grid-template-columns: 1fr 1fr; -} - -.about-wrap .has-2-columns .column:nth-of-type(2n+1) { - grid-column-start: 1; -} - -.about-wrap .has-2-columns .column:nth-of-type(2n) { - grid-column-start: 2; -} - -.about-wrap .has-2-columns.is-wider-right { - grid-template-columns: 1fr 2fr; -} - -.about-wrap .has-2-columns.is-wider-left { - grid-template-columns: 2fr 1fr; -} - -.about-wrap .has-3-columns { - grid-template-columns: repeat(3, 1fr); -} - -.about-wrap .has-3-columns .column:nth-of-type(3n+1) { - grid-column-start: 1; -} - -.about-wrap .has-3-columns .column:nth-of-type(3n+2) { - grid-column-start: 2; -} - -.about-wrap .has-3-columns .column:nth-of-type(3n) { - grid-column-start: 3; -} - -.about-wrap .has-4-columns { - grid-template-columns: repeat(4, 1fr); -} - -.about-wrap .has-4-columns .column:nth-of-type(4n+1) { - grid-column-start: 1; -} - -.about-wrap .has-4-columns .column:nth-of-type(4n+2) { - grid-column-start: 2; -} - -.about-wrap .has-4-columns .column:nth-of-type(4n+3) { - grid-column-start: 3; -} - -.about-wrap .has-4-columns .column:nth-of-type(4n) { - grid-column-start: 4; -} - -.about-wrap .column :first-child { - margin-top: 0; -} - -.about-wrap .aligncenter { - text-align: center; -} - -.about-wrap .alignleft { - float: left; - margin-right: 40px; -} - -.about-wrap .alignright { - float: right; - margin-left: 40px; -} - -.about-wrap .is-vertically-aligned-top { - align-self: start; +.about-wrap .about-description { + line-height: 1.5; + font-size: 14px; } -.about-wrap .is-vertically-aligned-center { - align-self: center; +.about-wrap .dev-version-info { + font-size: 14px; + font-weight: 400; + margin-left: 0.5em; } -.about-wrap .is-vertically-aligned-bottom { - align-self: end; +@media screen and (max-width: 640px) { + .about-wrap .dev-version-info { + display: block; + margin-left: 0; + } } -/* x.2.3 - Point Releases */ - -.about-wrap .point-releases { - margin-top: 5px; - border-bottom: 1px solid #ddd; -} +/* 1.2 - Structure */ -.about-wrap .changelog { - margin-bottom: 40px; -} +/* 1.3 - Point Releases */ .about-wrap .changelog.point-releases h3 { - padding-top: 35px; -} - -.about-wrap .changelog.point-releases h3:first-child { padding-top: 7px; -} - -.about-wrap .changelog.feature-section .col { - margin-top: 40px; + margin-top: 0; } /*------------------------------------------------------------------------------ - x.3.0 - Legacy About Styles: About Page + 2.0 - About Page ------------------------------------------------------------------------------*/ -/* x.3.1 - Typography */ - -.about-wrap .lead-description { - font-size: 1.5em; - text-align: center; -} - -.about-wrap .feature-section p { - margin-top: 0.6em; -} - -/* x.3.2 - Structure */ - -.about-wrap .headline-feature { - margin: 0 auto 40px; - max-width: 680px; -} - -.about-wrap .headline-feature h2 { - margin: 50px 0 0; -} +/* 2.1 - Typography */ -.about-wrap .headline-feature img { - max-width: 600px; - width: 100%; -} +/* 2.2 - Structure */ /* Go to Dashboard Home link */ @@ -1296,164 +201,25 @@ } /*------------------------------------------------------------------------------ - x.4.0 - Legacy About Styles: Credits & Freedoms Pages + 3.0 - Credits & Freedoms Pages ------------------------------------------------------------------------------*/ /* Credits */ -.about-wrap h2.wp-people-group { - margin: 2.6em 0 1.33em; - padding: 0; - font-size: 16px; - line-height: inherit; - font-weight: 600; - text-align: left; -} - -.about-wrap .wp-people-group { - padding: 0 5px; - margin: 0 -15px 0 -5px; -} - -.about-wrap .compact { - margin-bottom: 0; -} - -.about-wrap .wp-person { - display: inline-block; - vertical-align: top; - margin-right: 10px; - padding-bottom: 15px; - height: 70px; - width: 280px; -} - -.about-wrap .compact .wp-person { - height: auto; - width: 180px; - padding-bottom: 0; - margin-bottom: 0; -} - -.about-wrap .wp-person .gravatar { - float: left; - margin: 0 10px 10px 0; - padding: 1px; - width: 60px; - height: 60px; -} - -.about-wrap .compact .wp-person .gravatar { - width: 30px; - height: 30px; -} - -.about-wrap .wp-person .web { - margin: 6px 0 2px; - font-size: 16px; - font-weight: 400; - line-height: 2; - text-decoration: none; -} - -.about-wrap .wp-person .title { - display: block; -} - -.about-wrap #wp-people-group-validators + p.wp-credits-list { - margin-top: 0; -} - -.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: 600; -} - -.freedoms-php .about-wrap ol p { - font-weight: 400; - margin: 0.6em 0; -} - -.freedoms-php .column .freedoms-image { - background-image: url('../images/freedoms.png'); - background-size: 100%; - padding-top: 100%; -} - -.freedoms-php .column:nth-of-type(2) .freedoms-image { - background-position: 0 34%; -} - -.freedoms-php .column:nth-of-type(3) .freedoms-image { - background-position: 0 66%; -} - -.freedoms-php .column:nth-of-type(4) .freedoms-image { - background-position: 0 100%; +.about-wrap .about-freedoms { + list-style-type: disc; + list-style-position: outside; + margin: 1em; + padding-left: 1em; + font-size: 14px; } /*------------------------------------------------------------------------------ - x.5.0 - Legacy About Styles: Media Queries + 4.0 - Media Queries ------------------------------------------------------------------------------*/ -@media screen and (max-width: 782px) { - .about-wrap .has-3-columns, - .about-wrap .has-4-columns { - grid-template-columns: 1fr 1fr; - } - - .about-wrap .has-3-columns .column:nth-of-type(3n+1), - .about-wrap .has-4-columns .column:nth-of-type(4n+1) { - grid-column-start: 1; - grid-row-start: 1; - } - - .about-wrap .has-3-columns .column:nth-of-type(3n+2), - .about-wrap .has-4-columns .column:nth-of-type(4n+2) { - grid-column-start: 2; - grid-row-start: 1; - } - - .about-wrap .has-3-columns .column:nth-of-type(3n), - .about-wrap .has-4-columns .column:nth-of-type(4n+3) { - grid-column-start: 1; - grid-row-start: 2; - } - - .about-wrap .has-4-columns .column:nth-of-type(4n) { - grid-column-start: 2; - grid-row-start: 2; - } -} - -@media screen and (max-width: 600px) { - .about-wrap .has-2-columns, - .about-wrap .has-3-columns, - .about-wrap .has-4-columns { - display: block; - } - - .about-wrap :not(.is-wider-right):not(.is-wider-left) .column { - margin-right: 0; - margin-left: 0; - } - - .about-wrap .has-2-columns.is-wider-right, - .about-wrap .has-2-columns.is-wider-left { - display: grid; - } -} - @media only screen and (max-width: 500px) { .about-wrap { margin-right: 20px; @@ -1474,21 +240,10 @@ margin-bottom: 1.5em; width: 100%; } -} - -@media only screen and (max-width: 480px) { - .about-wrap .has-2-columns.is-wider-right, - .about-wrap .has-2-columns.is-wider-left { - display: block; - } - .about-wrap .column { - margin-right: 0; - margin-left: 0; + .about-wrap .floating-header-section { + margin-bottom: 60px; + grid-gap: 30px 0; } - .about-wrap .has-2-columns.is-wider-right img, - .about-wrap .has-2-columns.is-wider-left img { - max-width: 160px; - } } diff --git a/wp-admin/css/about.min.css b/wp-admin/css/about.min.css index 0320d10..d22a042 100644 --- a/wp-admin/css/about.min.css +++ b/wp-admin/css/about.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.about__container{--background:#274acd;--subtle-background:#eff2ff;--text:#000;--text-light:#fff;--accent-1:#3858e9;--accent-2:#fffcb5;--nav-background:#fff;--nav-border:transparent;--nav-color:var(--text);--nav-current:var(--accent-1);--gap:2rem}.about-php,.credits-php,.freedoms-php,.privacy-php{background:#fff}.about-php #wpcontent,.credits-php #wpcontent,.freedoms-php #wpcontent,.privacy-php #wpcontent{background:#fff;padding:0 24px}@media screen and (max-width:782px){.about-php.auto-fold #wpcontent,.credits-php.auto-fold #wpcontent,.freedoms-php.auto-fold #wpcontent,.privacy-php.auto-fold #wpcontent{padding-left:24px}}.about__container{max-width:1000px;margin:24px auto;clear:both}.about__container .alignleft{float:left}.about__container .alignright{float:right}.about__container .aligncenter{text-align:center}.about__container .is-vertically-aligned-top{align-self:start}.about__container .is-vertically-aligned-center{align-self:center}.about__container .is-vertically-aligned-bottom{align-self:end}.about__section{background:0 0;clear:both}.about__container .has-accent-background-color{background-color:var(--accent-2)}.about__container .has-transparent-background-color{background-color:transparent}.about__container .has-accent-color{color:var(--accent-2)}.about__container .has-border{border:3px solid currentColor}.about__container .has-subtle-background-color{background-color:var(--subtle-background)}.about__container .has-background-image{background-size:contain;background-repeat:no-repeat;background-position:center}.about__section{margin:0}.about__section .column:not(.is-edge-to-edge){padding:var(--gap)}.about__section+.about__section .is-section-header{padding-bottom:var(--gap)}.about__section .column.has-border:not(.is-edge-to-edge),.about__section .column[class*=background-color]:not(.is-edge-to-edge),.about__section:where([class*=background-color]) .column:not(.is-edge-to-edge){padding-top:var(--gap);padding-bottom:var(--gap)}.about__section .column p:first-of-type{margin-top:0}.about__section .column p:last-of-type{margin-bottom:0}.about__section .has-text-columns{columns:2;column-gap:calc(var(--gap) * 2)}.about__section .is-section-header{margin-bottom:0;padding:var(--gap) var(--gap) 0}.about__section .is-section-header p:last-child{margin-bottom:0}.about__section .is-section-header:first-child:last-child{padding:0}.about__section.is-feature{padding:var(--gap)}.about__section.is-feature p{margin:0}.about__section.is-feature p+p{margin-top:calc(var(--gap)/ 2)}.about__section.has-1-column{margin-left:auto;margin-right:auto;max-width:36em}.about__section.has-2-columns,.about__section.has-3-columns,.about__section.has-4-columns,.about__section.has-overlap-style{display:grid}.about__section.has-gutters{gap:var(--gap);margin-bottom:var(--gap)}.about__section.has-2-columns{grid-template-columns:1fr 1fr}.about__section.has-2-columns.is-wider-right{grid-template-columns:2fr 3fr}.about__section.has-2-columns.is-wider-left{grid-template-columns:3fr 2fr}.about__section.has-2-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-2-columns .column:nth-of-type(odd){grid-column-start:1}.about__section.has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-3-columns{grid-template-columns:repeat(3,1fr)}.about__section.has-3-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about__section.has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about__section.has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about__section.has-4-columns{grid-template-columns:repeat(4,1fr)}.about__section.has-4-columns .is-section-header{grid-column-start:1;-ms-grid-column-span:4;grid-column-end:span 4}.about__section.has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about__section.has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about__section.has-2-columns .is-section-header~.column,.about__section.has-3-columns .is-section-header~.column,.about__section.has-4-columns .is-section-header~.column,.about__section.has-overlap-style .is-section-header~.column{grid-row-start:2}.about__section.has-overlap-style{grid-template-columns:repeat(7,1fr)}.about__section.has-overlap-style .column{grid-row-start:1}.about__section.has-overlap-style .column:nth-of-type(odd){grid-column-start:2;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column:nth-of-type(2n){grid-column-start:4;-ms-grid-column-span:3;grid-column-end:span 3}.about__section.has-overlap-style .column.is-top-layer{z-index:1}@media screen and (max-width:782px){.about__section.has-2-columns.is-wider-left,.about__section.has-2-columns.is-wider-right,.about__section.has-3-columns{display:block;margin-bottom:calc(var(--gap)/ 2)}.about__section .column:not(.is-edge-to-edge){padding-top:var(--gap);padding-bottom:var(--gap)}.about__section.has-2-columns.has-gutters.is-wider-left,.about__section.has-2-columns.has-gutters.is-wider-right,.about__section.has-3-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column,.about__section.has-3-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child,.about__section.has-3-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-3-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns{grid-template-columns:repeat(2,1fr)}.about__section.has-4-columns .column:nth-of-type(odd){grid-column-start:1}.about__section.has-4-columns .column:nth-of-type(2n){grid-column-start:2}.about__section.has-4-columns .column:nth-of-type(4n),.about__section.has-4-columns .column:nth-of-type(4n+3){grid-row-start:2}.about__section.has-4-columns .is-section-header{-ms-grid-column-span:2;grid-column-end:span 2}.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n),.about__section.has-4-columns .is-section-header~.column:nth-of-type(4n+3){grid-row-start:3}.about__section.has-overlap-style{grid-template-columns:1fr}.about__section.has-overlap-style .column.column{grid-column-start:1;-ms-grid-column-span:1;grid-column-end:2;grid-row-start:1;-ms-grid-row-span:1;grid-row-end:2}}@media screen and (max-width:600px){.about__section.has-2-columns{display:block;margin-bottom:var(--gap)}.about__section.has-2-columns:not(.has-gutters) .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}.about__section.has-2-columns.has-gutters{margin-bottom:calc(var(--gap) * 2)}.about__section.has-2-columns.has-gutters .column{margin-bottom:var(--gap)}.about__section.has-2-columns.has-gutters .column:last-child{margin-bottom:0}}@media screen and (max-width:480px){.about__section.is-feature .column{padding:0}.about__section.has-4-columns{display:block;padding-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column{margin-bottom:calc(var(--gap)/ 2)}.about__section.has-4-columns.has-gutters .column:last-child{margin-bottom:0}.about__section.has-4-columns .column:nth-of-type(n){padding-top:calc(var(--gap)/ 2);padding-bottom:calc(var(--gap)/ 2)}}.about__container{line-height:1.4;color:var(--text)}.about__container h1{padding:0;color:inherit}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{margin-top:0;margin-bottom:.5em;font-size:2rem;font-weight:700;line-height:1.16}.about__container h1.is-smaller-heading,.about__container h2.is-smaller-heading,.about__container h3{margin-top:0;font-size:1.625rem;font-weight:700;line-height:1.4}.about__container h3.is-smaller-heading,.about__container h4{margin-top:0;font-size:1.125rem;font-weight:700;line-height:1.6}.about__container p{font-size:inherit;line-height:inherit}.about__container p.is-subheading{margin-top:0;font-size:1.5rem;font-weight:300;line-height:160%}.about__section a{color:var(--accent-1);text-decoration:underline}.about__section a:active,.about__section a:focus,.about__section a:hover{color:var(--accent-1);text-decoration:none}.wp-credits-list a{text-decoration:none}.wp-credits-list a:active,.wp-credits-list a:focus,.wp-credits-list a:hover{text-decoration:underline}.about__container ul{list-style:disc;margin-left:calc(var(--gap)/ 2)}.about__container li{margin-bottom:.5rem}.about__container img{margin:0;max-width:100%;vertical-align:middle}.about__container .about__image{margin:0}.about__container .about__image img{max-width:100%;width:100%;height:auto}.about__container .about__image figcaption{margin-top:.5em;text-align:center}.about__container .about__image .wp-video{margin-left:auto;margin-right:auto}.about__container .about__image+h3{margin-top:1.5em}.about__container .column .about__image{margin-bottom:calc(var(--gap)/ 2)}.about__container hr{margin:0;height:var(--gap);border:none;border-top:4px solid #d9d9d9}.about__container hr.is-small{height:calc(var(--gap)/ 4)}.about__container hr.is-large{height:calc(var(--gap) * 2);margin:calc(var(--gap)/ 2) auto}.about__container .notice,.about__container div.error,.about__container div.updated{display:none!important}.about__section{font-size:1.125rem;line-height:1.55}.about__section.is-feature{font-size:1.6em}@media screen and (max-width:480px){.about__section.is-feature{font-size:1.4em}.about__container h1,.about__container h2,.about__container h3.is-larger-heading{font-size:2em}}.about__header{--about-header-image-width:780px;--about-header-image-height:550px;--about-header-bg-width:var(--about-header-image-width);--about-header-bg-height:var(--about-header-image-height);--about-header-bg-offset-block:0;position:relative;margin-bottom:var(--gap);padding-top:0;color:var(--text-light);background:var(--background) url('../images/about-header-about.svg?ver=6.1') no-repeat;background-size:var(--about-header-bg-width) var(--about-header-bg-height);background-position:center top var(--about-header-bg-offset-block)}.credits-php .about__header{--about-header-image-width:863px;--about-header-image-height:550px;background-image:url('../images/about-header-credits.svg?ver=6.1')}.freedoms-php .about__header{--about-header-image-width:782px;--about-header-image-height:510px;background-image:url('../images/about-header-freedoms.svg?ver=6.1')}.privacy-php .about__header{--about-header-image-width:1005px;--about-header-image-height:500px;--about-header-bg-offset-block:calc(var(--gap) * -2);background-image:url('../images/about-header-privacy.svg?ver=6.1')}.about__header-image{margin:0 var(--gap) 3em}.about__header-title{box-sizing:border-box;margin:0 var(--gap);padding:9rem 0 0;text-align:center}.about__header-title h1{margin:0 0 1rem;padding:0;font-size:clamp(3rem, 20vw - 9rem, 6rem);line-height:1;font-weight:400}.credits-php .about__header-title h1,.freedoms-php .about__header-title h1,.privacy-php .about__header-title h1{font-size:clamp(3rem, 10vw - 3rem, 4.5rem)}.about__header-text{box-sizing:border-box;max-width:22em;margin:0 auto 10rem;padding:0;font-size:1.6rem;line-height:1.15;text-align:center}.credits-php .about__header-text{margin-bottom:9rem}.about__header-navigation{position:relative;z-index:1;display:flex;justify-content:center;padding-top:0;background:var(--nav-background);color:var(--nav-color);border-bottom:3px solid var(--nav-border)}.about__header-navigation .nav-tab{margin-left:0;padding:calc(var(--gap) * .75) var(--gap);float:none;font-size:1.4em;line-height:1;border-width:0 0 3px;border-style:solid;border-color:transparent;background:0 0;color:inherit}.about__header-navigation .nav-tab:active,.about__header-navigation .nav-tab:hover{background-color:var(--nav-current);color:var(--text-light)}.about__header-navigation .nav-tab-active{margin-bottom:-3px;color:var(--nav-current);border-width:0 0 6px;border-color:var(--nav-current)}.about__header-navigation .nav-tab-active:active,.about__header-navigation .nav-tab-active:hover{background-color:var(--nav-current);color:var(--text-light);border-color:var(--nav-current)}@media screen and (max-width:960px){.about__header{--about-header-bg-width:calc(var(--about-header-image-width) * 0.85);--about-header-bg-height:calc(var(--about-header-image-height) * 0.85)}.privacy-php .about__header{--about-header-bg-offset-block:0}.about__header-title h1{font-size:clamp(3rem, 13.33vw - 2rem, 6rem)}.credits-php .about__header-title h1,.freedoms-php .about__header-title h1,.privacy-php .about__header-title h1{font-size:clamp(3rem, 6.67vw - .5rem, 4.5rem)}}@media screen and (max-width:782px){.about__container .about__header-text{font-size:1.4em}.about__header-container{display:block}.about__header-image,.about__header-title{margin-left:calc(var(--gap)/ 2);margin-right:calc(var(--gap)/ 2)}.about__header-text{margin-top:0}.about__header-navigation .nav-tab{margin-top:0;margin-right:0;padding-left:calc(var(--gap)/ 2);padding-right:calc(var(--gap)/ 2)}}@media screen and (max-width:600px){.about__header{--about-header-bg-width:calc(var(--about-header-image-width) * 0.75);--about-header-bg-height:calc(var(--about-header-image-height) * 0.75)}}@media screen and (max-width:480px){.about__header,.credits-php .about__header,.freedoms-php .about__header,.privacy-php .about__header{background-image:none}.about__header-title p{font-size:2.4em}.about__header-title{padding-top:2rem}.about__header-text,.credits-php .about__header-text{margin-left:calc(var(--gap)/ 2);margin-right:calc(var(--gap)/ 2);margin-bottom:2rem}.about__header-navigation{display:block}.about__header-navigation .nav-tab{display:block;margin-bottom:0;padding:calc(var(--gap)/ 2);border-left-width:6px;border-bottom:none}.about__header-navigation .nav-tab-active{border-bottom:none;border-left-width:6px}}.about__section .wp-people-group-title{margin-bottom:calc(var(--gap) * 2);text-align:center}.about__section .wp-people-group{margin:0;display:flex;flex-wrap:wrap}.about__section .wp-person{display:inline-block;vertical-align:top;box-sizing:border-box;margin-bottom:var(--gap);width:25%;text-align:center}.about__section .compact .wp-person{height:auto;width:20%}.about__section .wp-person-avatar{display:block;margin:0 auto calc(var(--gap)/ 2);width:140px;height:140px;border-radius:100%;overflow:hidden;background:var(--accent-1)}.about__section .wp-person .gravatar{width:140px;height:140px;filter:grayscale(100%);mix-blend-mode:screen}.about__section .compact .wp-person .gravatar,.about__section .compact .wp-person-avatar{width:80px;height:80px}.about__section .wp-person .web{font-size:1.4em;font-weight:600;text-decoration:none}.about__section .wp-person .web:hover{text-decoration:underline}.about__section .compact .wp-person .web{font-size:1.2em}.about__section .wp-person .title{display:block;margin-top:.5em}@media screen and (max-width:782px){.about__section .wp-person{width:33%}.about__section .compact .wp-person{width:25%}.about__section .wp-person .gravatar,.about__section .wp-person-avatar{width:120px;height:120px}}@media screen and (max-width:600px){.about__section .wp-person{width:50%}.about__section .compact .wp-person{width:33%}.about__section .wp-person .web{font-size:1.2em}}@media screen and (max-width:480px){.about__section .wp-person{min-width:100%}.about__section .wp-person .web{font-size:1em}.about__section .compact .wp-person .web{font-size:1em}}.about__section .column .freedom-image{margin-bottom:var(--gap);max-height:180px}.about__section .column .privacy-image{display:block;margin-left:auto;margin-right:auto;max-width:25rem}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap.full-width-layout{max-width:1200px}.about-wrap-content{max-width:1050px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:3em 0 0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;width:100%;height:auto;vertical-align:middle}.about-wrap .inline-svg img{max-width:100%;width:auto;height:auto}.about-wrap video{margin:1.5em auto}.wp-badge{background:#0073aa url(../images/cp-logo-white.png?ver=202303) no-repeat;background-position:center;background-size:80px 80px;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:140px;text-rendering:optimizeLegibility;box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/classicpress-logo-white.svg?ver=202303)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap .nav-tab{padding-right:15px;padding-left:15px;font-size:18px;line-height:1.33333333}.about-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{font-size:16px;color:#23282d}.about-wrap p{line-height:1.5;font-size:16px}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap figcaption{font-size:13px;text-align:center;color:#fff;text-overflow:ellipsis}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6;font-size:19px}.about-wrap .about-text{margin:1em 200px 1em 0;color:#555d66}.about-wrap .has-1-columns,.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:grid;max-width:800px;margin-top:40px;margin-left:auto;margin-right:auto}.about-wrap .column{margin-right:20px;margin-left:20px}.about-wrap .is-wide{max-width:760px}.about-wrap .is-fullwidth{max-width:100%}.about-wrap .has-1-columns{display:block;max-width:680px;margin:0 auto 40px}.about-wrap .has-2-columns{grid-template-columns:1fr 1fr}.about-wrap .has-2-columns .column:nth-of-type(odd){grid-column-start:1}.about-wrap .has-2-columns .column:nth-of-type(2n){grid-column-start:2}.about-wrap .has-2-columns.is-wider-right{grid-template-columns:1fr 2fr}.about-wrap .has-2-columns.is-wider-left{grid-template-columns:2fr 1fr}.about-wrap .has-3-columns{grid-template-columns:repeat(3,1fr)}.about-wrap .has-3-columns .column:nth-of-type(3n+1){grid-column-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2){grid-column-start:2}.about-wrap .has-3-columns .column:nth-of-type(3n){grid-column-start:3}.about-wrap .has-4-columns{grid-template-columns:repeat(4,1fr)}.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1}.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:3}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:4}.about-wrap .column :first-child{margin-top:0}.about-wrap .aligncenter{text-align:center}.about-wrap .alignleft{float:left;margin-right:40px}.about-wrap .alignright{float:right;margin-left:40px}.about-wrap .is-vertically-aligned-top{align-self:start}.about-wrap .is-vertically-aligned-center{align-self:center}.about-wrap .is-vertically-aligned-bottom{align-self:end}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #ddd}.about-wrap .changelog{margin-bottom:40px}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .changelog.feature-section .col{margin-top:40px}.about-wrap .lead-description{font-size:1.5em;text-align:center}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .headline-feature{margin:0 auto 40px;max-width:680px}.about-wrap .headline-feature h2{margin:50px 0 0}.about-wrap .headline-feature img{max-width:600px;width:100%}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap h2.wp-people-group{margin:2.6em 0 1.33em;padding:0;font-size:16px;line-height:inherit;font-weight:600;text-align:left}.about-wrap .wp-people-group{padding:0 5px;margin:0 -15px 0 -5px}.about-wrap .compact{margin-bottom:0}.about-wrap .wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap .compact .wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap .wp-person .gravatar{float:left;margin:0 10px 10px 0;padding:1px;width:60px;height:60px}.about-wrap .compact .wp-person .gravatar{width:30px;height:30px}.about-wrap .wp-person .web{margin:6px 0 2px;font-size:16px;font-weight:400;line-height:2;text-decoration:none}.about-wrap .wp-person .title{display:block}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.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:600}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}.freedoms-php .column .freedoms-image{background-image:url('../images/freedoms.png');background-size:100%;padding-top:100%}.freedoms-php .column:nth-of-type(2) .freedoms-image{background-position:0 34%}.freedoms-php .column:nth-of-type(3) .freedoms-image{background-position:0 66%}.freedoms-php .column:nth-of-type(4) .freedoms-image{background-position:0 100%}@media screen and (max-width:782px){.about-wrap .has-3-columns,.about-wrap .has-4-columns{grid-template-columns:1fr 1fr}.about-wrap .has-3-columns .column:nth-of-type(3n+1),.about-wrap .has-4-columns .column:nth-of-type(4n+1){grid-column-start:1;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n+2),.about-wrap .has-4-columns .column:nth-of-type(4n+2){grid-column-start:2;grid-row-start:1}.about-wrap .has-3-columns .column:nth-of-type(3n),.about-wrap .has-4-columns .column:nth-of-type(4n+3){grid-column-start:1;grid-row-start:2}.about-wrap .has-4-columns .column:nth-of-type(4n){grid-column-start:2;grid-row-start:2}}@media screen and (max-width:600px){.about-wrap .has-2-columns,.about-wrap .has-3-columns,.about-wrap .has-4-columns{display:block}.about-wrap :not(.is-wider-right):not(.is-wider-left) .column{margin-right:0;margin-left:0}.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:grid}}@media only screen and (max-width:500px){.about-wrap{margin-right:20px;margin-left:10px}.about-wrap .about-text,.about-wrap h1{margin-right:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}}@media only screen and (max-width:480px){.about-wrap .has-2-columns.is-wider-left,.about-wrap .has-2-columns.is-wider-right{display:block}.about-wrap .column{margin-right:0;margin-left:0}.about-wrap .has-2-columns.is-wider-left img,.about-wrap .has-2-columns.is-wider-right img{max-width:160px}} \ No newline at end of file +.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap.full-width-layout{max-width:1200px}.about-wrap-content{max-width:1050px;padding-top:2rem}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap .about-inline-notice{margin:-12px 0 12px 0;padding:6px 8px}.about-wrap hr{border:0;height:0;margin:0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.wp-badge{background:#057f99;background-image:url(../images/w-logo-white.png?ver=20190218);background-size:80px 80px;background-image:url(../images/wordpress-logo-white.svg?ver=20190218),linear-gradient(-135deg,#3ebca6 0,#057f99 50%,#006b81 100%);background-size:80px 80px,cover;background-repeat:no-repeat;background-position:center;color:#fff;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;width:130px;height:130px;display:inline-block;text-rendering:optimizeLegibility;box-shadow:0 1px 3px rgba(0,0,0,.2)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap .nav-tab{padding-right:15px;padding-left:15px;font-size:18px}.about-wrap p{line-height:1.5;font-size:14px}.about-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h2{margin:40px 0 .6em;font-size:2.7em;line-height:1.3;font-weight:300;text-align:center}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.4em;line-height:1.5}.about-wrap h4{color:#23282d}.about-wrap .changelog h2{font-size:1.4em;font-weight:600;text-align:left}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:16px;color:#555d66}.about-wrap .about-description{line-height:1.5;font-size:14px}.about-wrap .dev-version-info{font-size:14px;font-weight:400;margin-left:.5em}@media screen and (max-width:640px){.about-wrap .dev-version-info{display:block;margin-left:0}}.about-wrap .changelog.point-releases h3{padding-top:7px;margin-top:0}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:600}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .about-freedoms{list-style-type:disc;list-style-position:outside;margin:1em;padding-left:1em;font-size:14px}@media only screen and (max-width:500px){.about-wrap{margin-right:20px;margin-left:10px}.about-wrap .about-text,.about-wrap h1{margin-right:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}.about-wrap .floating-header-section{margin-bottom:60px;grid-gap:30px 0}} \ No newline at end of file diff --git a/wp-admin/css/admin-menu-rtl.css b/wp-admin/css/admin-menu-rtl.css index e50a1e6..731fbd9 100644 --- a/wp-admin/css/admin-menu-rtl.css +++ b/wp-admin/css/admin-menu-rtl.css @@ -3,7 +3,7 @@ #adminmenu, #adminmenu .wp-submenu { width: 160px; - background-color: #1d2327; + background-color: #23282d; } #adminmenuback { @@ -13,15 +13,6 @@ z-index: 1; /* positive z-index to avoid elastic scrolling woes in Safari */ } -.php-error #adminmenuback { - position: absolute; -} - -.php-error #adminmenuback, -.php-error #adminmenuwrap { - margin-top: 2em; -} - #adminmenu { clear: right; margin: 12px 0; @@ -36,21 +27,108 @@ width: 36px; } +.icon16 { + height: 18px; + width: 18px; + padding: 6px 6px; + margin: -6px -8px 0 0; + float: right; +} + /* New Menu icons */ +.icon16:before { + color: #82878c; /* same as new icons */ + font: normal 20px/1 dashicons; + speak: none; + padding: 6px 0; + height: 34px; + width: 20px; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: all .1s ease-in-out; +} + +.icon16.icon-dashboard:before { + content: "\f226"; +} + +.icon16.icon-post:before { + content: "\f109"; +} + +.icon16.icon-media:before { + content: "\f104"; +} + +.icon16.icon-links:before { + content: "\f103"; +} + +.icon16.icon-page:before { + content: "\f105"; +} + +.icon16.icon-comments:before { + content: "\f101"; + margin-top: 1px; +} + +.icon16.icon-appearance:before { + content: "\f100"; +} + +.icon16.icon-plugins:before { + content: "\f106"; +} + +.icon16.icon-users:before { + content: "\f110"; +} + +.icon16.icon-tools:before { + content: "\f107"; +} + +.icon16.icon-settings:before { + content: "\f108"; +} + +.icon16.icon-site:before { + content: "\f541"; +} + +.icon16.icon-generic:before { + content: "\f111"; +} + /* hide background-image for icons above */ +.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, +.icon16.icon-generic, .menu-icon-generic div.wp-menu-image { background-image: none !important; } @@ -75,22 +153,19 @@ #adminmenu li { margin: 0; padding: 0; + cursor: pointer; } #adminmenu a { display: block; - line-height: 1.3; + line-height: 18px; padding: 2px 5px; - color: #f0f0f1; + color: #eee; } #adminmenu .wp-submenu a { - color: #c3c4c7; - color: rgba(240, 246, 252, 0.7); - font-size: 13px; - line-height: 1.4; - margin: 0; - padding: 5px 0; + color: #b4b9be; + color: rgba(240,245,250,0.7); } #adminmenu .wp-submenu a:hover, @@ -102,14 +177,7 @@ #adminmenu li.menu-top > a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-submenu a:focus { - color: #72aee6; -} - -#adminmenu a:hover, -#adminmenu a:focus, -.folded #adminmenu .wp-submenu-head:hover { - box-shadow: inset -4px 0 0 0 currentColor; - transition: box-shadow .1s linear; + color: #00b9eb; } #adminmenu li.menu-top { @@ -125,10 +193,15 @@ right: 160px; overflow: visible; word-wrap: break-word; +} + +#adminmenu .wp-submenu, +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { padding: 7px 0 8px; z-index: 9999; - background-color: #2c3338; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + background-color: #32373c; + box-shadow: 0 3px 5px rgba(0,0,0,0.2); } .js #adminmenu .sub-open, @@ -138,12 +211,9 @@ top: -1px; } -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { - top: 0; -} - #adminmenu .wp-has-current-submenu .wp-submenu, .no-js li.wp-has-current-submenu:hover .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, #adminmenu .wp-has-current-submenu.opensub .wp-submenu { position: relative; @@ -155,10 +225,7 @@ border: 0 none; margin-top: 0; box-shadow: none; -} - -.folded #adminmenu .wp-has-current-submenu .wp-submenu { - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + background-color: #32373c; } /* ensure that wp-submenu's box shadow doesn't appear on top of the focused menu item's background. */ @@ -166,8 +233,8 @@ #adminmenu li.opensub > a.menu-top, #adminmenu li > a.menu-top:focus { position: relative; - background-color: #1d2327; - color: #72aee6; + background-color: #191e23; + color: #00b9eb; } .folded #adminmenu li.menu-top:hover, @@ -178,10 +245,12 @@ #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, #adminmenu .wp-menu-arrow div { - background: #2271b1; + background: #0073aa; color: #fff; } @@ -206,7 +275,13 @@ .folded #adminmenu .wp-has-current-submenu .wp-submenu { min-width: 160px; width: auto; - border-right: 5px solid transparent; +} + +#adminmenu .wp-submenu a { + font-size: 13px; + line-height: 18px; + margin: 0; + padding: 5px 0; } #adminmenu .wp-submenu li.current, @@ -222,8 +297,7 @@ .folded #adminmenu .wp-has-current-submenu li > a { padding-left: 16px; padding-right: 14px; - /* Exclude from the transition the outline for Windows High Contrast mode */ - transition: all .1s ease-in-out, outline 0s; + transition: all .1s ease-in-out; } #adminmenu .wp-has-current-submenu ul > li > a, @@ -235,7 +309,7 @@ #adminmenu .wp-submenu-head { font-size: 14px; font-weight: 400; - line-height: 1.3; + line-height: 18px; padding: 0; } @@ -255,22 +329,17 @@ #adminmenu .wp-submenu li { padding: 0; margin: 0; + overflow: hidden; } #adminmenu .wp-menu-image img { - padding: 9px 0 0; + padding: 9px 0 0 0; opacity: 0.6; filter: alpha(opacity=60); } #adminmenu div.wp-menu-name { - padding: 8px 36px 8px 8px; - overflow-wrap: break-word; - word-wrap: break-word; - -ms-word-break: break-all; - word-break: break-word; - -webkit-hyphens: auto; - hyphens: auto; + padding: 8px 0; } #adminmenu div.wp-menu-image { @@ -288,15 +357,15 @@ } div.wp-menu-image:before { - color: #a7aaad; - color: rgba(240, 246, 252, 0.6); + color: #a0a5aa; + color: rgba(240,245,250,0.6); padding: 7px 0; transition: all .1s ease-in-out; } #adminmenu div.wp-menu-image:before { - color: #a7aaad; - color: rgba(240, 246, 252, 0.6); + color: #a0a5aa; + color: rgba(240,245,250,0.6); } #adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before, @@ -312,7 +381,12 @@ div.wp-menu-image:before { #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, #adminmenu li.opensub div.wp-menu-image:before { - color: #72aee6; + color: #00b9eb; +} + +/* IE8 doesn't redraw the pseudo elements unless you make a change to the content, this restore the initial color after hover */ +.ie8 #adminmenu li.opensub div.wp-menu-image:before { + color: #a0a5aa; } .folded #adminmenu div.wp-menu-image { @@ -326,6 +400,20 @@ div.wp-menu-image:before { height: 34px; } +/* No @font-face support */ +.no-font-face #adminmenu .wp-menu-image { + display: none; +} + +.no-font-face #adminmenu div.wp-menu-name { + padding: 8px 12px; +} + +.no-font-face.auto-fold #adminmenu .wp-menu-name { + margin-right: 0; +} +/* End no @font-face support */ + /* Sticky admin menu */ .sticky-menu #adminmenuwrap { position: fixed; @@ -350,13 +438,12 @@ ul#adminmenu > li.current > a.current:after { width: 0; position: absolute; pointer-events: none; - border-left-color: #f0f0f1; + border-left-color: #f1f1f1; top: 50%; margin-top: -8px; } -.folded ul#adminmenu li:hover a.wp-has-current-submenu:after, -.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after { +.folded ul#adminmenu li:hover a.wp-has-current-submenu:after { display: none; } @@ -367,29 +454,27 @@ ul#adminmenu > li.current > a.current:after { } /* flyout menu arrow */ -#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { left: 0; - border: 8px solid transparent; + border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; + border-width: 8px; top: 10px; z-index: 10000; } -.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, -.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { border-width: 4px; margin-top: -4px; top: 18px; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { - border-left-color: #2c3338; +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { + border-left-color: #32373c; } #adminmenu li.menu-top:hover .wp-menu-image img, @@ -401,7 +486,7 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-menu-separator { height: 5px; padding: 0; - margin: 0 0 6px; + margin: 0 0 6px 0; cursor: inherit; } @@ -415,11 +500,8 @@ ul#adminmenu > li.current > a.current:after { color: #fff; font-weight: 400; font-size: 14px; - padding: 5px 11px 5px 4px; - margin: -7px -5px 4px 0; - border-width: 3px 5px 3px 0; - border-style: solid; - border-color: transparent; + padding: 8px 11px 8px 4px; + margin: -7px 0px 4px; } #adminmenu li.current, @@ -428,28 +510,26 @@ ul#adminmenu > li.current > a.current:after { } /* @todo: consider to use a single rule for these counters and the list table comments counters. */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { display: inline-block; vertical-align: top; - box-sizing: border-box; - margin: 1px 2px -1px 0; + margin: 1px 2px 0 0; padding: 0 5px; - min-width: 18px; - height: 18px; - border-radius: 9px; - background-color: #d63638; + min-width: 7px; + height: 17px; + border-radius: 11px; + background-color: #ca4a1f; color: #fff; - font-size: 11px; - line-height: 1.6; + font-size: 9px; + line-height: 17px; text-align: center; z-index: 26; } #adminmenu li.current a .awaiting-mod, #adminmenu li a.wp-has-current-submenu .update-plugins { - background-color: #d63638; + background-color: #00b9eb; color: #fff; } @@ -466,20 +546,16 @@ ul#adminmenu > li.current > a.current:after { padding: 0; position: relative; overflow: visible; + line-height: 34px; background: none; - color: #a7aaad; + color: #aaa; cursor: pointer; + outline: 0; } -#collapse-button:hover { - color: #72aee6; -} - +#collapse-button:hover, #collapse-button:focus { - color: #72aee6; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; - outline-offset: -1px; + color: #00b9eb; } #collapse-button .collapse-button-icon, @@ -489,10 +565,7 @@ ul#adminmenu > li.current > a.current:after { position: absolute; top: 0; right: 0; -} - -#collapse-button .collapse-button-label { - top: 8px; + line-height: 34px; } #collapse-button .collapse-button-icon { @@ -515,7 +588,7 @@ ul#adminmenu > li.current > a.current:after { top: 7px; text-align: center; font: normal 20px/1 dashicons !important; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -568,7 +641,7 @@ li#wp-admin-bar-menu-toggle { .auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu, .auto-fold #adminmenu a.menu-top:focus + .wp-submenu, .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { - top: 0; + top: 0px; right: 36px; } @@ -613,7 +686,7 @@ li#wp-admin-bar-menu-toggle { } .auto-fold #adminmenu a.menu-top { - min-height: 34px; + height: 34px; } .auto-fold #adminmenu li.wp-menu-open { @@ -624,13 +697,11 @@ li#wp-admin-bar-menu-toggle { margin-bottom: 0; } - .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, - .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after { display: none; } - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { border-width: 4px; margin-top: -4px; top: 16px; @@ -663,7 +734,7 @@ li#wp-admin-bar-menu-toggle { } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .auto-fold #wpcontent { position: relative; margin-right: 0; @@ -685,10 +756,6 @@ li#wp-admin-bar-menu-toggle { z-index: 100; } - .auto-fold #adminmenuback { - position: fixed; - } - .auto-fold #adminmenuback, .auto-fold #adminmenuwrap { display: none; @@ -716,6 +783,7 @@ li#wp-admin-bar-menu-toggle { /* Restore the menu names */ .auto-fold #adminmenu .wp-menu-name { position: static; + margin-right: 35px; } /* Switch the arrow side */ @@ -725,8 +793,7 @@ li#wp-admin-bar-menu-toggle { margin-top: -8px; } - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { display: none; } @@ -758,8 +825,7 @@ li#wp-admin-bar-menu-toggle { display: block; } - .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, - .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after { display: block; } @@ -771,11 +837,6 @@ li#wp-admin-bar-menu-toggle { top: 0; } - #adminmenu .wp-not-current-submenu .wp-submenu, - .folded #adminmenu .wp-has-current-submenu .wp-submenu { - border-right: none; - } - /* Remove submenu headers and adjust sub meu*/ #adminmenu .wp-submenu .wp-submenu-head { display: none; @@ -805,7 +866,7 @@ li#wp-admin-bar-menu-toggle { } .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { - background: #2c3338; + background: #32373c; } li#wp-admin-bar-menu-toggle { @@ -836,7 +897,7 @@ li#wp-admin-bar-menu-toggle { } .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { - color: #72aee6; + color: #00b9eb; } } diff --git a/wp-admin/css/admin-menu-rtl.min.css b/wp-admin/css/admin-menu-rtl.min.css index 294824d..2bf69ea 100644 --- a/wp-admin/css/admin-menu-rtl.min.css +++ b/wp-admin/css/admin-menu-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#1d2327}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}.php-error #adminmenuback{position:absolute}.php-error #adminmenuback,.php-error #adminmenuwrap{margin-top:2em}#adminmenu{clear:right;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:right;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0}#adminmenu a{display:block;line-height:1.3;padding:2px 5px;color:#f0f0f1}#adminmenu .wp-submenu a{color:#c3c4c7;color:rgba(240,246,252,.7);font-size:13px;line-height:1.4;margin:0;padding:5px 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#72aee6}#adminmenu a:focus,#adminmenu a:hover,.folded #adminmenu .wp-submenu-head:hover{box-shadow:inset -4px 0 0 0 currentColor;transition:box-shadow .1s linear}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;right:160px;overflow:visible;word-wrap:break-word;padding:7px 0 8px;z-index:9999;background-color:#2c3338;box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:0}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;right:auto;left:auto;bottom:auto;border:0 none;margin-top:0;box-shadow:none}.folded #adminmenu .wp-has-current-submenu .wp-submenu{box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#1d2327;color:#72aee6}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu{background:#2271b1;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;right:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto;border-right:5px solid transparent}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px;transition:all .1s ease-in-out,outline 0s}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:5px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:1.3;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;right:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 36px 8px 8px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#adminmenu div.wp-menu-image{float:right;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;background-size:20px auto}div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6);padding:7px 0;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#72aee6}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{left:0;border:solid 8px transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-left-color:#f0f0f1;top:50%;margin-top:-8px}.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after,.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{left:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#2c3338}#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:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:5px 11px 5px 4px;margin:-7px -5px 4px 0;border-width:3px 5px 3px 0;border-style:solid;border-color:transparent}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{display:inline-block;vertical-align:top;box-sizing:border-box;margin:1px 2px -1px 0;padding:0 5px;min-width:18px;height:18px;border-radius:9px;background-color:#d63638;color:#fff;font-size:11px;line-height:1.6;text-align:center;z-index:26}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#d63638;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;background:0 0;color:#a7aaad;cursor:pointer}#collapse-button:hover{color:#72aee6}#collapse-button:focus{color:#72aee6;outline:1px solid transparent;outline-offset:-1px}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;right:0}#collapse-button .collapse-button-label{top:8px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 36px 0 0}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:normal 20px/1 dashicons!important;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{transition:all .1s ease-in-out}li#wp-admin-bar-menu-toggle{display:none}.customize-support #menu-appearance a[href="themes.php?page=custom-background"],.customize-support #menu-appearance a[href="themes.php?page=custom-header"]{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-right:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;right:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-left:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-right:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;right:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{min-height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon:after{transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-right:0;padding-right:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback{position:fixed}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 20px 10px 10px}.auto-fold #adminmenu .wp-menu-name{position:static}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;right:-1px;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;right:-1px;left:0;top:0}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{border-right:none}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;right:4px;padding-left:10px;z-index:99999;border:none;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-right:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#2c3338}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:right;font:normal 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#72aee6}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}} \ No newline at end of file +#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:right;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px -8px 0 0;float:right}.icon16:before{color:#82878c;font:normal 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:"\f226"}.icon16.icon-post:before{content:"\f109"}.icon16.icon-media:before{content:"\f104"}.icon16.icon-links:before{content:"\f103"}.icon16.icon-page:before{content:"\f105"}.icon16.icon-comments:before{content:"\f101";margin-top:1px}.icon16.icon-appearance:before{content:"\f100"}.icon16.icon-plugins:before{content:"\f106"}.icon16.icon-users:before{content:"\f110"}.icon16.icon-tools:before{content:"\f107"}.icon16.icon-settings:before{content:"\f108"}.icon16.icon-site:before{content:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:right;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px;color:#eee}#adminmenu .wp-submenu a{color:#b4b9be;color:rgba(240,245,250,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;right:160px;overflow:visible;word-wrap:break-word}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;right:auto;left:auto;bottom:auto;border:0 none;margin-top:0;box-shadow:none;background-color:#32373c}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#191e23;color:#00b9eb}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,.folded #adminmenu li.wp-has-current-submenu{background:#0073aa;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;right:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto}#adminmenu .wp-submenu a{font-size:13px;line-height:18px;margin:0;padding:5px 0}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:5px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:18px;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;right:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu .wp-menu-image img{padding:9px 0 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 0}#adminmenu div.wp-menu-image{float:right;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#00b9eb}.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#a0a5aa}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.no-font-face #adminmenu .wp-menu-image{display:none}.no-font-face #adminmenu div.wp-menu-name{padding:8px 12px}.no-font-face.auto-fold #adminmenu .wp-menu-name{margin-right:0}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{left:0;border:solid 8px transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-left-color:#f1f1f1;top:50%;margin-top:-8px}.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{left:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-width:8px;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#32373c}#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:5px;padding:0;margin:0 0 6px 0;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:8px 11px 8px 4px;margin:-7px 0 4px}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;vertical-align:top;margin:1px 2px 0 0;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center;z-index:26}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;line-height:34px;background:0 0;color:#aaa;cursor:pointer;outline:0}#collapse-button:focus,#collapse-button:hover{color:#00b9eb}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;right:0;line-height:34px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 36px 0 0}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:normal 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{transition:all .1s ease-in-out}li#wp-admin-bar-menu-toggle{display:none}.customize-support #menu-appearance a[href="themes.php?page=custom-background"],.customize-support #menu-appearance a[href="themes.php?page=custom-header"]{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-right:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;right:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-left:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-right:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;right:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon:after{transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-right:0;padding-right:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 20px 10px 10px}.auto-fold #adminmenu .wp-menu-name{position:static;margin-right:35px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;right:-1px;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;right:-1px;left:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;right:4px;padding-left:10px;z-index:99999;border:none;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-right:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#32373c}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:right;font:normal 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#00b9eb}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}} \ No newline at end of file diff --git a/wp-admin/css/admin-menu.css b/wp-admin/css/admin-menu.css index f8d02fc..f7621b9 100644 --- a/wp-admin/css/admin-menu.css +++ b/wp-admin/css/admin-menu.css @@ -3,7 +3,7 @@ #adminmenu, #adminmenu .wp-submenu { width: 160px; - background-color: #1d2327; + background-color: #23282d; } #adminmenuback { @@ -13,15 +13,6 @@ z-index: 1; /* positive z-index to avoid elastic scrolling woes in Safari */ } -.php-error #adminmenuback { - position: absolute; -} - -.php-error #adminmenuback, -.php-error #adminmenuwrap { - margin-top: 2em; -} - #adminmenu { clear: left; margin: 12px 0; @@ -36,21 +27,108 @@ width: 36px; } +.icon16 { + height: 18px; + width: 18px; + padding: 6px 6px; + margin: -6px 0 0 -8px; + float: left; +} + /* New Menu icons */ +.icon16:before { + color: #82878c; /* same as new icons */ + font: normal 20px/1 dashicons; + speak: none; + padding: 6px 0; + height: 34px; + width: 20px; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: all .1s ease-in-out; +} + +.icon16.icon-dashboard:before { + content: "\f226"; +} + +.icon16.icon-post:before { + content: "\f109"; +} + +.icon16.icon-media:before { + content: "\f104"; +} + +.icon16.icon-links:before { + content: "\f103"; +} + +.icon16.icon-page:before { + content: "\f105"; +} + +.icon16.icon-comments:before { + content: "\f101"; + margin-top: 1px; +} + +.icon16.icon-appearance:before { + content: "\f100"; +} + +.icon16.icon-plugins:before { + content: "\f106"; +} + +.icon16.icon-users:before { + content: "\f110"; +} + +.icon16.icon-tools:before { + content: "\f107"; +} + +.icon16.icon-settings:before { + content: "\f108"; +} + +.icon16.icon-site:before { + content: "\f541"; +} + +.icon16.icon-generic:before { + content: "\f111"; +} + /* hide background-image for icons above */ +.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, +.icon16.icon-generic, .menu-icon-generic div.wp-menu-image { background-image: none !important; } @@ -75,22 +153,19 @@ #adminmenu li { margin: 0; padding: 0; + cursor: pointer; } #adminmenu a { display: block; - line-height: 1.3; + line-height: 18px; padding: 2px 5px; - color: #f0f0f1; + color: #eee; } #adminmenu .wp-submenu a { - color: #c3c4c7; - color: rgba(240, 246, 252, 0.7); - font-size: 13px; - line-height: 1.4; - margin: 0; - padding: 5px 0; + color: #b4b9be; + color: rgba(240,245,250,0.7); } #adminmenu .wp-submenu a:hover, @@ -102,14 +177,7 @@ #adminmenu li.menu-top > a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-submenu a:focus { - color: #72aee6; -} - -#adminmenu a:hover, -#adminmenu a:focus, -.folded #adminmenu .wp-submenu-head:hover { - box-shadow: inset 4px 0 0 0 currentColor; - transition: box-shadow .1s linear; + color: #00b9eb; } #adminmenu li.menu-top { @@ -125,10 +193,15 @@ left: 160px; overflow: visible; word-wrap: break-word; +} + +#adminmenu .wp-submenu, +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { padding: 7px 0 8px; z-index: 9999; - background-color: #2c3338; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + background-color: #32373c; + box-shadow: 0 3px 5px rgba(0,0,0,0.2); } .js #adminmenu .sub-open, @@ -138,12 +211,9 @@ top: -1px; } -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { - top: 0; -} - #adminmenu .wp-has-current-submenu .wp-submenu, .no-js li.wp-has-current-submenu:hover .wp-submenu, +#adminmenu a.wp-has-current-submenu:focus + .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu.sub-open, #adminmenu .wp-has-current-submenu.opensub .wp-submenu { position: relative; @@ -155,10 +225,7 @@ border: 0 none; margin-top: 0; box-shadow: none; -} - -.folded #adminmenu .wp-has-current-submenu .wp-submenu { - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + background-color: #32373c; } /* ensure that wp-submenu's box shadow doesn't appear on top of the focused menu item's background. */ @@ -166,8 +233,8 @@ #adminmenu li.opensub > a.menu-top, #adminmenu li > a.menu-top:focus { position: relative; - background-color: #1d2327; - color: #72aee6; + background-color: #191e23; + color: #00b9eb; } .folded #adminmenu li.menu-top:hover, @@ -178,10 +245,12 @@ #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, #adminmenu .wp-menu-arrow div { - background: #2271b1; + background: #0073aa; color: #fff; } @@ -206,7 +275,13 @@ .folded #adminmenu .wp-has-current-submenu .wp-submenu { min-width: 160px; width: auto; - border-left: 5px solid transparent; +} + +#adminmenu .wp-submenu a { + font-size: 13px; + line-height: 18px; + margin: 0; + padding: 5px 0; } #adminmenu .wp-submenu li.current, @@ -222,8 +297,7 @@ .folded #adminmenu .wp-has-current-submenu li > a { padding-right: 16px; padding-left: 14px; - /* Exclude from the transition the outline for Windows High Contrast mode */ - transition: all .1s ease-in-out, outline 0s; + transition: all .1s ease-in-out; } #adminmenu .wp-has-current-submenu ul > li > a, @@ -235,7 +309,7 @@ #adminmenu .wp-submenu-head { font-size: 14px; font-weight: 400; - line-height: 1.3; + line-height: 18px; padding: 0; } @@ -255,22 +329,17 @@ #adminmenu .wp-submenu li { padding: 0; margin: 0; + overflow: hidden; } #adminmenu .wp-menu-image img { - padding: 9px 0 0; + padding: 9px 0 0 0; opacity: 0.6; filter: alpha(opacity=60); } #adminmenu div.wp-menu-name { - padding: 8px 8px 8px 36px; - overflow-wrap: break-word; - word-wrap: break-word; - -ms-word-break: break-all; - word-break: break-word; - -webkit-hyphens: auto; - hyphens: auto; + padding: 8px 0; } #adminmenu div.wp-menu-image { @@ -288,15 +357,15 @@ } div.wp-menu-image:before { - color: #a7aaad; - color: rgba(240, 246, 252, 0.6); + color: #a0a5aa; + color: rgba(240,245,250,0.6); padding: 7px 0; transition: all .1s ease-in-out; } #adminmenu div.wp-menu-image:before { - color: #a7aaad; - color: rgba(240, 246, 252, 0.6); + color: #a0a5aa; + color: rgba(240,245,250,0.6); } #adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before, @@ -312,7 +381,12 @@ div.wp-menu-image:before { #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, #adminmenu li.opensub div.wp-menu-image:before { - color: #72aee6; + color: #00b9eb; +} + +/* IE8 doesn't redraw the pseudo elements unless you make a change to the content, this restore the initial color after hover */ +.ie8 #adminmenu li.opensub div.wp-menu-image:before { + color: #a0a5aa; } .folded #adminmenu div.wp-menu-image { @@ -326,6 +400,20 @@ div.wp-menu-image:before { height: 34px; } +/* No @font-face support */ +.no-font-face #adminmenu .wp-menu-image { + display: none; +} + +.no-font-face #adminmenu div.wp-menu-name { + padding: 8px 12px; +} + +.no-font-face.auto-fold #adminmenu .wp-menu-name { + margin-left: 0; +} +/* End no @font-face support */ + /* Sticky admin menu */ .sticky-menu #adminmenuwrap { position: fixed; @@ -350,13 +438,12 @@ ul#adminmenu > li.current > a.current:after { width: 0; position: absolute; pointer-events: none; - border-right-color: #f0f0f1; + border-right-color: #f1f1f1; top: 50%; margin-top: -8px; } -.folded ul#adminmenu li:hover a.wp-has-current-submenu:after, -.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after { +.folded ul#adminmenu li:hover a.wp-has-current-submenu:after { display: none; } @@ -367,29 +454,27 @@ ul#adminmenu > li.current > a.current:after { } /* flyout menu arrow */ -#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { right: 0; - border: 8px solid transparent; + border: solid transparent; content: " "; height: 0; width: 0; position: absolute; pointer-events: none; + border-width: 8px; top: 10px; z-index: 10000; } -.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, -.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { border-width: 4px; margin-top: -4px; top: 18px; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { - border-right-color: #2c3338; +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { + border-right-color: #32373c; } #adminmenu li.menu-top:hover .wp-menu-image img, @@ -401,7 +486,7 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-menu-separator { height: 5px; padding: 0; - margin: 0 0 6px; + margin: 0 0 6px 0; cursor: inherit; } @@ -415,11 +500,8 @@ ul#adminmenu > li.current > a.current:after { color: #fff; font-weight: 400; font-size: 14px; - padding: 5px 4px 5px 11px; - margin: -7px 0 4px -5px; - border-width: 3px 0 3px 5px; - border-style: solid; - border-color: transparent; + padding: 8px 4px 8px 11px; + margin: -7px 0px 4px; } #adminmenu li.current, @@ -428,28 +510,26 @@ ul#adminmenu > li.current > a.current:after { } /* @todo: consider to use a single rule for these counters and the list table comments counters. */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { display: inline-block; vertical-align: top; - box-sizing: border-box; - margin: 1px 0 -1px 2px; + margin: 1px 0 0 2px; padding: 0 5px; - min-width: 18px; - height: 18px; - border-radius: 9px; - background-color: #d63638; + min-width: 7px; + height: 17px; + border-radius: 11px; + background-color: #ca4a1f; color: #fff; - font-size: 11px; - line-height: 1.6; + font-size: 9px; + line-height: 17px; text-align: center; z-index: 26; } #adminmenu li.current a .awaiting-mod, #adminmenu li a.wp-has-current-submenu .update-plugins { - background-color: #d63638; + background-color: #00b9eb; color: #fff; } @@ -466,20 +546,16 @@ ul#adminmenu > li.current > a.current:after { padding: 0; position: relative; overflow: visible; + line-height: 34px; background: none; - color: #a7aaad; + color: #aaa; cursor: pointer; + outline: 0; } -#collapse-button:hover { - color: #72aee6; -} - +#collapse-button:hover, #collapse-button:focus { - color: #72aee6; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; - outline-offset: -1px; + color: #00b9eb; } #collapse-button .collapse-button-icon, @@ -489,10 +565,7 @@ ul#adminmenu > li.current > a.current:after { position: absolute; top: 0; left: 0; -} - -#collapse-button .collapse-button-label { - top: 8px; + line-height: 34px; } #collapse-button .collapse-button-icon { @@ -515,7 +588,7 @@ ul#adminmenu > li.current > a.current:after { top: 7px; text-align: center; font: normal 20px/1 dashicons !important; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -568,7 +641,7 @@ li#wp-admin-bar-menu-toggle { .auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu, .auto-fold #adminmenu a.menu-top:focus + .wp-submenu, .auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus + .wp-submenu { - top: 0; + top: 0px; left: 36px; } @@ -613,7 +686,7 @@ li#wp-admin-bar-menu-toggle { } .auto-fold #adminmenu a.menu-top { - min-height: 34px; + height: 34px; } .auto-fold #adminmenu li.wp-menu-open { @@ -624,13 +697,11 @@ li#wp-admin-bar-menu-toggle { margin-bottom: 0; } - .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, - .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after { display: none; } - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { border-width: 4px; margin-top: -4px; top: 16px; @@ -663,7 +734,7 @@ li#wp-admin-bar-menu-toggle { } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .auto-fold #wpcontent { position: relative; margin-left: 0; @@ -685,10 +756,6 @@ li#wp-admin-bar-menu-toggle { z-index: 100; } - .auto-fold #adminmenuback { - position: fixed; - } - .auto-fold #adminmenuback, .auto-fold #adminmenuwrap { display: none; @@ -716,6 +783,7 @@ li#wp-admin-bar-menu-toggle { /* Restore the menu names */ .auto-fold #adminmenu .wp-menu-name { position: static; + margin-left: 35px; } /* Switch the arrow side */ @@ -725,8 +793,7 @@ li#wp-admin-bar-menu-toggle { margin-top: -8px; } - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after, - .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { + .auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after { display: none; } @@ -758,8 +825,7 @@ li#wp-admin-bar-menu-toggle { display: block; } - .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after, - .auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after { + .auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after { display: block; } @@ -771,11 +837,6 @@ li#wp-admin-bar-menu-toggle { top: 0; } - #adminmenu .wp-not-current-submenu .wp-submenu, - .folded #adminmenu .wp-has-current-submenu .wp-submenu { - border-left: none; - } - /* Remove submenu headers and adjust sub meu*/ #adminmenu .wp-submenu .wp-submenu-head { display: none; @@ -805,7 +866,7 @@ li#wp-admin-bar-menu-toggle { } .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { - background: #2c3338; + background: #32373c; } li#wp-admin-bar-menu-toggle { @@ -836,7 +897,7 @@ li#wp-admin-bar-menu-toggle { } .wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { - color: #72aee6; + color: #00b9eb; } } diff --git a/wp-admin/css/admin-menu.min.css b/wp-admin/css/admin-menu.min.css index 3c71994..9243f03 100644 --- a/wp-admin/css/admin-menu.min.css +++ b/wp-admin/css/admin-menu.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#1d2327}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}.php-error #adminmenuback{position:absolute}.php-error #adminmenuback,.php-error #adminmenuwrap{margin-top:2em}#adminmenu{clear:left;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:left;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0}#adminmenu a{display:block;line-height:1.3;padding:2px 5px;color:#f0f0f1}#adminmenu .wp-submenu a{color:#c3c4c7;color:rgba(240,246,252,.7);font-size:13px;line-height:1.4;margin:0;padding:5px 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#72aee6}#adminmenu a:focus,#adminmenu a:hover,.folded #adminmenu .wp-submenu-head:hover{box-shadow:inset 4px 0 0 0 currentColor;transition:box-shadow .1s linear}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;left:160px;overflow:visible;word-wrap:break-word;padding:7px 0 8px;z-index:9999;background-color:#2c3338;box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:0}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;left:auto;right:auto;bottom:auto;border:0 none;margin-top:0;box-shadow:none}.folded #adminmenu .wp-has-current-submenu .wp-submenu{box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#1d2327;color:#72aee6}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu{background:#2271b1;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;left:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto;border-left:5px solid transparent}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px;transition:all .1s ease-in-out,outline 0s}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:5px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:1.3;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;left:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 8px 8px 36px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#adminmenu div.wp-menu-image{float:left;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;background-size:20px auto}div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6);padding:7px 0;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a7aaad;color:rgba(240,246,252,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#72aee6}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{right:0;border:solid 8px transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#f0f0f1;top:50%;margin-top:-8px}.folded ul#adminmenu li.wp-has-current-submenu:focus-within a.wp-has-current-submenu:after,.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#2c3338}#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:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:5px 4px 5px 11px;margin:-7px 0 4px -5px;border-width:3px 0 3px 5px;border-style:solid;border-color:transparent}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{display:inline-block;vertical-align:top;box-sizing:border-box;margin:1px 0 -1px 2px;padding:0 5px;min-width:18px;height:18px;border-radius:9px;background-color:#d63638;color:#fff;font-size:11px;line-height:1.6;text-align:center;z-index:26}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#d63638;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;background:0 0;color:#a7aaad;cursor:pointer}#collapse-button:hover{color:#72aee6}#collapse-button:focus{color:#72aee6;outline:1px solid transparent;outline-offset:-1px}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;left:0}#collapse-button .collapse-button-label{top:8px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 0 0 36px}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:normal 20px/1 dashicons!important;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{transition:all .1s ease-in-out}li#wp-admin-bar-menu-toggle{display:none}.customize-support #menu-appearance a[href="themes.php?page=custom-background"],.customize-support #menu-appearance a[href="themes.php?page=custom-header"]{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;left:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-right:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;left:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{min-height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon:after{transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-left:0;padding-left:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback{position:fixed}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 10px 10px 20px}.auto-fold #adminmenu .wp-menu-name{position:static}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after,.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;left:-1px;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:focus-within a.wp-has-current-submenu:after,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;left:-1px;right:0;top:0}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{border-left:none}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;left:4px;padding-right:10px;z-index:99999;border:none;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-left:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#2c3338}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:left;font:normal 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#72aee6}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}} \ No newline at end of file +#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:left;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px 6px;margin:-6px 0 0 -8px;float:left}.icon16:before{color:#82878c;font:normal 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:"\f226"}.icon16.icon-post:before{content:"\f109"}.icon16.icon-media:before{content:"\f104"}.icon16.icon-links:before{content:"\f103"}.icon16.icon-page:before{content:"\f105"}.icon16.icon-comments:before{content:"\f101";margin-top:1px}.icon16.icon-appearance:before{content:"\f100"}.icon16.icon-plugins:before{content:"\f106"}.icon16.icon-users:before{content:"\f110"}.icon16.icon-tools:before{content:"\f107"}.icon16.icon-settings:before{content:"\f108"}.icon16.icon-site:before{content:"\f541"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:left;z-index:9990}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px;color:#eee}#adminmenu .wp-submenu a{color:#b4b9be;color:rgba(240,245,250,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;left:160px;overflow:visible;word-wrap:break-word}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;left:auto;right:auto;bottom:auto;border:0 none;margin-top:0;box-shadow:none;background-color:#32373c}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#191e23;color:#00b9eb}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,.folded #adminmenu li.wp-has-current-submenu{background:#0073aa;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;left:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto}#adminmenu .wp-submenu a{font-size:13px;line-height:18px;margin:0;padding:5px 0}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:5px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:18px;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;left:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu .wp-menu-image img{padding:9px 0 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 0}#adminmenu div.wp-menu-image{float:left;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#00b9eb}.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#a0a5aa}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.no-font-face #adminmenu .wp-menu-image{display:none}.no-font-face #adminmenu div.wp-menu-name{padding:8px 12px}.no-font-face.auto-fold #adminmenu .wp-menu-name{margin-left:0}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{right:0;border:solid 8px transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#f1f1f1;top:50%;margin-top:-8px}.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-width:8px;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#32373c}#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:5px;padding:0;margin:0 0 6px 0;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:8px 4px 8px 11px;margin:-7px 0 4px}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0 none}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;vertical-align:top;margin:1px 0 0 2px;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center;z-index:26}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#adminmenu li span.count-0{display:none}#collapse-button{display:block;width:100%;height:34px;margin:0;border:none;padding:0;position:relative;overflow:visible;line-height:34px;background:0 0;color:#aaa;cursor:pointer;outline:0}#collapse-button:focus,#collapse-button:hover{color:#00b9eb}#collapse-button .collapse-button-icon,#collapse-button .collapse-button-label{display:block;position:absolute;top:0;left:0;line-height:34px}#collapse-button .collapse-button-icon{width:36px;height:34px}#collapse-button .collapse-button-label{padding:0 0 0 36px}.folded #collapse-button .collapse-button-label{display:none}#collapse-button .collapse-button-icon:after{content:"\f148";display:block;position:relative;top:7px;text-align:center;font:normal 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button .collapse-button-icon:after,.rtl #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.folded #collapse-button .collapse-button-icon:after{transform:none}#collapse-button .collapse-button-icon:after,#collapse-button .collapse-button-label{transition:all .1s ease-in-out}li#wp-admin-bar-menu-toggle{display:none}.customize-support #menu-appearance a[href="themes.php?page=custom-background"],.customize-support #menu-appearance a[href="themes.php?page=custom-header"]{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;left:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-right:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;left:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0 none}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu .collapse-button-label{display:none}.auto-fold #collapse-button .collapse-button-icon:after{transform:rotate(180deg)}.rtl.auto-fold #collapse-button .collapse-button-icon:after{transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-left:0;padding-left:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 10px 10px 20px}.auto-fold #adminmenu .wp-menu-name{position:static;margin-left:35px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;left:-1px;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;left:-1px;right:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;left:4px;padding-right:10px;z-index:99999;border:none;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-left:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#32373c}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:left;font:normal 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#00b9eb}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}} \ No newline at end of file diff --git a/wp-admin/css/code-editor-rtl.css b/wp-admin/css/code-editor-rtl.css index 8a26156..f3bbd36 100644 --- a/wp-admin/css/code-editor-rtl.css +++ b/wp-admin/css/code-editor-rtl.css @@ -28,31 +28,31 @@ .wp-core-ui .CodeMirror-lint-message-error, .wp-core-ui .CodeMirror-lint-message-warning { - box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); margin: 5px 0 2px; padding: 3px 28px 3px 12px; } .wp-core-ui .CodeMirror-lint-message-warning { - background-color: #fcf9e8; - border-right: 4px solid #dba617; + background-color: #fff8e5; + border-right: 4px solid #ffb900; } .wrap .CodeMirror-lint-marker-warning:before, .wp-core-ui .CodeMirror-lint-message-warning:before { content: "\f534"; - color: #dba617; + color: #f6a306; } .wp-core-ui .CodeMirror-lint-message-error { - background-color: #fcf0f1; - border-right: 4px solid #d63638; + background-color: #fbeaea; + border-right: 4px solid #dc3232; } .wrap .CodeMirror-lint-marker-error:before, .wp-core-ui .CodeMirror-lint-message-error:before { content: "\f153"; - color: #d63638; + color: #dc3232; } .wp-core-ui .CodeMirror-lint-tooltip { @@ -63,7 +63,7 @@ } .wrap .CodeMirror .CodeMirror-matchingbracket { - background: rgba(219, 166, 23, 0.3); + background: rgba(255, 150, 0, .3); color: inherit; } @@ -71,6 +71,6 @@ text-align: right; } -.wrap .CodeMirror .CodeMirror-linenumber { - color: #646970; +.wrap .CodeMirror .CodeMirror-linenumber { + color: #666; } diff --git a/wp-admin/css/code-editor-rtl.min.css b/wp-admin/css/code-editor-rtl.min.css index d746eb2..b3cb2d9 100644 --- a/wp-admin/css/code-editor-rtl.min.css +++ b/wp-admin/css/code-editor-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;right:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 28px 3px 12px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fcf9e8;border-right:4px solid #dba617}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#dba617}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fcf0f1;border-right:4px solid #d63638}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#d63638}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:rtl}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(219,166,23,.3);color:inherit}.CodeMirror{text-align:right}.wrap .CodeMirror .CodeMirror-linenumber{color:#646970} \ No newline at end of file +.wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;right:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 28px 3px 12px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fff8e5;border-right:4px solid #ffb900}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#f6a306}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fbeaea;border-right:4px solid #dc3232}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#dc3232}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:rtl}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(255,150,0,.3);color:inherit}.CodeMirror{text-align:right}.wrap .CodeMirror .CodeMirror-linenumber{color:#666} \ No newline at end of file diff --git a/wp-admin/css/code-editor.css b/wp-admin/css/code-editor.css index 92c3940..c177a8b 100644 --- a/wp-admin/css/code-editor.css +++ b/wp-admin/css/code-editor.css @@ -28,31 +28,31 @@ .wp-core-ui .CodeMirror-lint-message-error, .wp-core-ui .CodeMirror-lint-message-warning { - box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); margin: 5px 0 2px; padding: 3px 12px 3px 28px; } .wp-core-ui .CodeMirror-lint-message-warning { - background-color: #fcf9e8; - border-left: 4px solid #dba617; + background-color: #fff8e5; + border-left: 4px solid #ffb900; } .wrap .CodeMirror-lint-marker-warning:before, .wp-core-ui .CodeMirror-lint-message-warning:before { content: "\f534"; - color: #dba617; + color: #f6a306; } .wp-core-ui .CodeMirror-lint-message-error { - background-color: #fcf0f1; - border-left: 4px solid #d63638; + background-color: #fbeaea; + border-left: 4px solid #dc3232; } .wrap .CodeMirror-lint-marker-error:before, .wp-core-ui .CodeMirror-lint-message-error:before { content: "\f153"; - color: #d63638; + color: #dc3232; } .wp-core-ui .CodeMirror-lint-tooltip { @@ -63,7 +63,7 @@ } .wrap .CodeMirror .CodeMirror-matchingbracket { - background: rgba(219, 166, 23, 0.3); + background: rgba(255, 150, 0, .3); color: inherit; } @@ -71,6 +71,6 @@ text-align: left; } -.wrap .CodeMirror .CodeMirror-linenumber { - color: #646970; +.wrap .CodeMirror .CodeMirror-linenumber { + color: #666; } diff --git a/wp-admin/css/code-editor.min.css b/wp-admin/css/code-editor.min.css index fc08821..1032975 100644 --- a/wp-admin/css/code-editor.min.css +++ b/wp-admin/css/code-editor.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;left:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 12px 3px 28px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fcf9e8;border-left:4px solid #dba617}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#dba617}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fcf0f1;border-left:4px solid #d63638}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#d63638}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:ltr}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(219,166,23,.3);color:inherit}.CodeMirror{text-align:left}.wrap .CodeMirror .CodeMirror-linenumber{color:#646970} \ No newline at end of file +.wp-core-ui [class*=CodeMirror-lint-message],.wrap .CodeMirror-lint-marker-multiple,.wrap [class*=CodeMirror-lint-marker]{background-image:none}.wp-core-ui .CodeMirror-lint-marker-error,.wp-core-ui .CodeMirror-lint-marker-warning{cursor:help}.wrap .CodeMirror-lint-marker-multiple{position:absolute;top:0}.wrap [class*=CodeMirror-lint-marker]:before{font:normal 18px/1 dashicons;position:relative;top:-2px}.wp-core-ui [class*=CodeMirror-lint-message]:before{font:normal 16px/1 dashicons;left:16px;position:absolute}.wp-core-ui .CodeMirror-lint-message-error,.wp-core-ui .CodeMirror-lint-message-warning{box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 2px;padding:3px 12px 3px 28px}.wp-core-ui .CodeMirror-lint-message-warning{background-color:#fff8e5;border-left:4px solid #ffb900}.wp-core-ui .CodeMirror-lint-message-warning:before,.wrap .CodeMirror-lint-marker-warning:before{content:"\f534";color:#f6a306}.wp-core-ui .CodeMirror-lint-message-error{background-color:#fbeaea;border-left:4px solid #dc3232}.wp-core-ui .CodeMirror-lint-message-error:before,.wrap .CodeMirror-lint-marker-error:before{content:"\f153";color:#dc3232}.wp-core-ui .CodeMirror-lint-tooltip{background:0 0;border:none;border-radius:0;direction:ltr}.wrap .CodeMirror .CodeMirror-matchingbracket{background:rgba(255,150,0,.3);color:inherit}.CodeMirror{text-align:left}.wrap .CodeMirror .CodeMirror-linenumber{color:#666} \ No newline at end of file diff --git a/wp-admin/css/color-picker-rtl.css b/wp-admin/css/color-picker-rtl.css index d490355..830f6d2 100644 --- a/wp-admin/css/color-picker-rtl.css +++ b/wp-admin/css/color-picker-rtl.css @@ -1,7 +1,5 @@ -/* rtl:ignore */ .wp-color-picker { width: 80px; - direction: ltr; } .wp-picker-container .hidden { @@ -10,48 +8,48 @@ /* Needs higher specificiity. */ .wp-picker-container .wp-color-result.button { - min-height: 30px; - margin: 0 0 6px 6px; + height: 24px; + margin: 0 0px 6px 6px; padding: 0 30px 0 0; font-size: 11px; } .wp-color-result-text { - background: #f6f7f7; + background: #f7f7f7; border-radius: 2px 0 0 2px; - border-right: 1px solid #c3c4c7; - color: #50575e; + border-right: 1px solid #ccc; + color: #555; display: block; - line-height: 2.54545455; /* 28px */ + line-height: 22px; padding: 0 6px; text-align: center; } .wp-color-result:hover, .wp-color-result:focus { - background: #f6f7f7; - border-color: #8c8f94; - color: #1d2327; + background: #fafafa; + border-color: #999; + color: #23282d; } .wp-color-result:hover:after, .wp-color-result:focus:after { - color: #1d2327; - border-color: #a7aaad; - border-right: 1px solid #8c8f94; + color: #23282d; + border-color: #a0a5aa; + border-right: 1px solid #999; } -.wp-picker-container { +.wp-picker-containers { display: inline-block; } .wp-color-result:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .wp-color-result:active { - /* See Trac ticket #39662 */ + /* See https://core.trac.wordpress.org/ticket/39662 */ transform: none !important; } @@ -70,104 +68,85 @@ margin: 0 !important; } -.wp-picker-input-wrap .button.wp-picker-default, -.wp-picker-input-wrap .button.wp-picker-clear, -.wp-customizer .wp-picker-input-wrap .button.wp-picker-default, -.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { - margin-right: 6px; - padding: 0 8px; - line-height: 2.54545455; /* 28px */ - min-height: 30px; +.wp-picker-input-wrap .button, +.wp-customizer .wp-picker-input-wrap .button { + margin-right: 6px; } .wp-picker-container .iris-square-slider .ui-slider-handle:focus { - background-color: #50575e + background-color: #555 } .wp-picker-container .iris-picker { border-radius: 0; - border-color: #dcdcde; + border-color: #ddd; margin-top: 6px; } .wp-picker-container input[type="text"].wp-color-picker { - width: 4rem; + width: 65px; font-size: 12px; font-family: monospace; - line-height: 2.33333333; /* 28px */ + line-height: 16px; margin: 0; - padding: 0 5px; vertical-align: top; - min-height: 30px; } .wp-color-picker::-webkit-input-placeholder { - color: #646970; + color: #72777c; } .wp-color-picker::-moz-placeholder { - color: #646970; + color: #72777c; opacity: 1; } .wp-color-picker:-ms-input-placeholder { - color: #646970; + color: #72777c; } .wp-picker-container input[type="text"].iris-error { - background-color: #fcf0f1; - border-color: #d63638; + background-color: #ffebe8; + border-color: #c00; color: #000; } .iris-picker .ui-square-handle:focus, .iris-picker .iris-strip .ui-slider-handle:focus { - border-color: #3582c4; - border-style: solid; - box-shadow: 0 0 0 1px #3582c4; - outline: 2px solid transparent; + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .iris-picker .iris-palette:focus { - box-shadow: 0 0 0 2px #3582c4; + box-shadow: + inset 0 0 5px rgba(0,0,0,.4), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-picker-container input[type="text"].wp-color-picker { - width: 5rem; + width: 80px; + padding: 6px 5px 5px; font-size: 16px; - line-height: 1.875; /* 30px */ - min-height: 32px; + line-height: 18px; } .wp-customizer .wp-picker-container input[type="text"].wp-color-picker { - padding: 0 5px; - } - - .wp-picker-input-wrap .button.wp-picker-default, - .wp-picker-input-wrap .button.wp-picker-clear { - padding: 0 8px; - line-height: 2.14285714; /* 30px */ - min-height: 32px; - } - - .wp-customizer .wp-picker-input-wrap .button.wp-picker-default, - .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { - padding: 0 8px; - font-size: 14px; - line-height: 2.14285714; /* 30px */ - min-height: 32px; + padding: 5px 5px 4px; } .wp-picker-container .wp-color-result.button { + height: auto; padding: 0 40px 0 0; font-size: 14px; - line-height: 2.14285714; /* 30px */ + line-height: 29px; } .wp-customizer .wp-picker-container .wp-color-result.button { - font-size: 14px; - line-height: 2.14285714; /* 30px */ + font-size: 13px; + line-height: 26px; } .wp-picker-container .wp-color-result-text { @@ -180,3 +159,14 @@ padding: 0 10px; } } + +@media screen and ( max-width: 640px ) { + .wp-customizer .wp-picker-container .wp-color-result.button { + font-size: 14px; + line-height: 29px; + } + + .wp-customizer .wp-picker-container input[type="text"].wp-color-picker { + padding: 6px 5px; + } +} diff --git a/wp-admin/css/color-picker-rtl.min.css b/wp-admin/css/color-picker-rtl.min.css index 63f4ff7..f9479d7 100644 --- a/wp-admin/css/color-picker-rtl.min.css +++ b/wp-admin/css/color-picker-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-color-picker{width:80px;direction:ltr}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{min-height:30px;margin:0 0 6px 6px;padding:0 30px 0 0;font-size:11px}.wp-color-result-text{background:#f6f7f7;border-radius:2px 0 0 2px;border-right:1px solid #c3c4c7;color:#50575e;display:block;line-height:2.54545455;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#1d2327;border-color:#a7aaad;border-right:1px solid #8c8f94}.wp-picker-container{display:inline-block}.wp-color-result:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default,.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{margin-right:6px;padding:0 8px;line-height:2.54545455;min-height:30px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#50575e}.wp-picker-container .iris-picker{border-radius:0;border-color:#dcdcde;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:4rem;font-size:12px;font-family:monospace;line-height:2.33333333;margin:0;padding:0 5px;vertical-align:top;min-height:30px}.wp-color-picker::-webkit-input-placeholder{color:#646970}.wp-color-picker::-moz-placeholder{color:#646970;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#646970}.wp-picker-container input[type=text].iris-error{background-color:#fcf0f1;border-color:#d63638;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.iris-picker .iris-palette:focus{box-shadow:0 0 0 2px #3582c4}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:5rem;font-size:16px;line-height:1.875;min-height:32px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:0 5px}.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;line-height:2.14285714;min-height:32px}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;font-size:14px;line-height:2.14285714;min-height:32px}.wp-picker-container .wp-color-result.button{padding:0 40px 0 0;font-size:14px;line-height:2.14285714}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:2.14285714}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}} \ No newline at end of file +.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{height:24px;margin:0 0 6px 6px;padding:0 30px 0 0;font-size:11px}.wp-color-result-text{background:#f7f7f7;border-radius:2px 0 0 2px;border-right:1px solid #ccc;color:#555;display:block;line-height:22px;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#23282d;border-color:#a0a5aa;border-right:1px solid #999}.wp-picker-containers{display:inline-block}.wp-color-result:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button,.wp-picker-input-wrap .button{margin-right:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{border-radius:0;border-color:#ddd;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;line-height:16px;margin:0;vertical-align:top}.wp-color-picker::-webkit-input-placeholder{color:#72777c}.wp-color-picker::-moz-placeholder{color:#72777c;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#72777c}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.iris-picker .iris-palette:focus{box-shadow:inset 0 0 5px rgba(0,0,0,.4),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:80px;padding:6px 5px 5px;font-size:16px;line-height:18px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:5px 5px 4px}.wp-picker-container .wp-color-result.button{height:auto;padding:0 40px 0 0;font-size:14px;line-height:29px}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:13px;line-height:26px}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}}@media screen and (max-width:640px){.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:29px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:6px 5px}} \ No newline at end of file diff --git a/wp-admin/css/color-picker.css b/wp-admin/css/color-picker.css index 8951394..d9ad7c4 100644 --- a/wp-admin/css/color-picker.css +++ b/wp-admin/css/color-picker.css @@ -1,7 +1,5 @@ -/* rtl:ignore */ .wp-color-picker { width: 80px; - direction: ltr; } .wp-picker-container .hidden { @@ -10,48 +8,48 @@ /* Needs higher specificiity. */ .wp-picker-container .wp-color-result.button { - min-height: 30px; - margin: 0 6px 6px 0; + height: 24px; + margin: 0 6px 6px 0px; padding: 0 0 0 30px; font-size: 11px; } .wp-color-result-text { - background: #f6f7f7; + background: #f7f7f7; border-radius: 0 2px 2px 0; - border-left: 1px solid #c3c4c7; - color: #50575e; + border-left: 1px solid #ccc; + color: #555; display: block; - line-height: 2.54545455; /* 28px */ + line-height: 22px; padding: 0 6px; text-align: center; } .wp-color-result:hover, .wp-color-result:focus { - background: #f6f7f7; - border-color: #8c8f94; - color: #1d2327; + background: #fafafa; + border-color: #999; + color: #23282d; } .wp-color-result:hover:after, .wp-color-result:focus:after { - color: #1d2327; - border-color: #a7aaad; - border-left: 1px solid #8c8f94; + color: #23282d; + border-color: #a0a5aa; + border-left: 1px solid #999; } -.wp-picker-container { +.wp-picker-containers { display: inline-block; } .wp-color-result:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .wp-color-result:active { - /* See Trac ticket #39662 */ + /* See https://core.trac.wordpress.org/ticket/39662 */ transform: none !important; } @@ -70,104 +68,85 @@ margin: 0 !important; } -.wp-picker-input-wrap .button.wp-picker-default, -.wp-picker-input-wrap .button.wp-picker-clear, -.wp-customizer .wp-picker-input-wrap .button.wp-picker-default, -.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { - margin-left: 6px; - padding: 0 8px; - line-height: 2.54545455; /* 28px */ - min-height: 30px; +.wp-picker-input-wrap .button, +.wp-customizer .wp-picker-input-wrap .button { + margin-left: 6px; } .wp-picker-container .iris-square-slider .ui-slider-handle:focus { - background-color: #50575e + background-color: #555 } .wp-picker-container .iris-picker { border-radius: 0; - border-color: #dcdcde; + border-color: #ddd; margin-top: 6px; } .wp-picker-container input[type="text"].wp-color-picker { - width: 4rem; + width: 65px; font-size: 12px; font-family: monospace; - line-height: 2.33333333; /* 28px */ + line-height: 16px; margin: 0; - padding: 0 5px; vertical-align: top; - min-height: 30px; } .wp-color-picker::-webkit-input-placeholder { - color: #646970; + color: #72777c; } .wp-color-picker::-moz-placeholder { - color: #646970; + color: #72777c; opacity: 1; } .wp-color-picker:-ms-input-placeholder { - color: #646970; + color: #72777c; } .wp-picker-container input[type="text"].iris-error { - background-color: #fcf0f1; - border-color: #d63638; + background-color: #ffebe8; + border-color: #c00; color: #000; } .iris-picker .ui-square-handle:focus, .iris-picker .iris-strip .ui-slider-handle:focus { - border-color: #3582c4; - border-style: solid; - box-shadow: 0 0 0 1px #3582c4; - outline: 2px solid transparent; + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .iris-picker .iris-palette:focus { - box-shadow: 0 0 0 2px #3582c4; + box-shadow: + inset 0 0 5px rgba(0,0,0,.4), + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-picker-container input[type="text"].wp-color-picker { - width: 5rem; + width: 80px; + padding: 6px 5px 5px; font-size: 16px; - line-height: 1.875; /* 30px */ - min-height: 32px; + line-height: 18px; } .wp-customizer .wp-picker-container input[type="text"].wp-color-picker { - padding: 0 5px; - } - - .wp-picker-input-wrap .button.wp-picker-default, - .wp-picker-input-wrap .button.wp-picker-clear { - padding: 0 8px; - line-height: 2.14285714; /* 30px */ - min-height: 32px; - } - - .wp-customizer .wp-picker-input-wrap .button.wp-picker-default, - .wp-customizer .wp-picker-input-wrap .button.wp-picker-clear { - padding: 0 8px; - font-size: 14px; - line-height: 2.14285714; /* 30px */ - min-height: 32px; + padding: 5px 5px 4px; } .wp-picker-container .wp-color-result.button { + height: auto; padding: 0 0 0 40px; font-size: 14px; - line-height: 2.14285714; /* 30px */ + line-height: 29px; } .wp-customizer .wp-picker-container .wp-color-result.button { - font-size: 14px; - line-height: 2.14285714; /* 30px */ + font-size: 13px; + line-height: 26px; } .wp-picker-container .wp-color-result-text { @@ -180,3 +159,14 @@ padding: 0 10px; } } + +@media screen and ( max-width: 640px ) { + .wp-customizer .wp-picker-container .wp-color-result.button { + font-size: 14px; + line-height: 29px; + } + + .wp-customizer .wp-picker-container input[type="text"].wp-color-picker { + padding: 6px 5px; + } +} diff --git a/wp-admin/css/color-picker.min.css b/wp-admin/css/color-picker.min.css index a0c8148..e9600f6 100644 --- a/wp-admin/css/color-picker.min.css +++ b/wp-admin/css/color-picker.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-color-picker{width:80px;direction:ltr}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{min-height:30px;margin:0 6px 6px 0;padding:0 0 0 30px;font-size:11px}.wp-color-result-text{background:#f6f7f7;border-radius:0 2px 2px 0;border-left:1px solid #c3c4c7;color:#50575e;display:block;line-height:2.54545455;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#1d2327;border-color:#a7aaad;border-left:1px solid #8c8f94}.wp-picker-container{display:inline-block}.wp-color-result:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default,.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{margin-left:6px;padding:0 8px;line-height:2.54545455;min-height:30px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#50575e}.wp-picker-container .iris-picker{border-radius:0;border-color:#dcdcde;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:4rem;font-size:12px;font-family:monospace;line-height:2.33333333;margin:0;padding:0 5px;vertical-align:top;min-height:30px}.wp-color-picker::-webkit-input-placeholder{color:#646970}.wp-color-picker::-moz-placeholder{color:#646970;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#646970}.wp-picker-container input[type=text].iris-error{background-color:#fcf0f1;border-color:#d63638;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.iris-picker .iris-palette:focus{box-shadow:0 0 0 2px #3582c4}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:5rem;font-size:16px;line-height:1.875;min-height:32px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:0 5px}.wp-picker-input-wrap .button.wp-picker-clear,.wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;line-height:2.14285714;min-height:32px}.wp-customizer .wp-picker-input-wrap .button.wp-picker-clear,.wp-customizer .wp-picker-input-wrap .button.wp-picker-default{padding:0 8px;font-size:14px;line-height:2.14285714;min-height:32px}.wp-picker-container .wp-color-result.button{padding:0 0 0 40px;font-size:14px;line-height:2.14285714}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:2.14285714}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}} \ No newline at end of file +.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-picker-container .wp-color-result.button{height:24px;margin:0 6px 6px 0;padding:0 0 0 30px;font-size:11px}.wp-color-result-text{background:#f7f7f7;border-radius:0 2px 2px 0;border-left:1px solid #ccc;color:#555;display:block;line-height:22px;padding:0 6px;text-align:center}.wp-color-result:focus,.wp-color-result:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#23282d;border-color:#a0a5aa;border-left:1px solid #999}.wp-picker-containers{display:inline-block}.wp-color-result:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-color-result:active{transform:none!important}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-input-wrap label{display:inline-block;vertical-align:top}.form-table .wp-picker-input-wrap label{margin:0!important}.wp-customizer .wp-picker-input-wrap .button,.wp-picker-input-wrap .button{margin-left:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{border-radius:0;border-color:#ddd;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;line-height:16px;margin:0;vertical-align:top}.wp-color-picker::-webkit-input-placeholder{color:#72777c}.wp-color-picker::-moz-placeholder{color:#72777c;opacity:1}.wp-color-picker:-ms-input-placeholder{color:#72777c}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}.iris-picker .iris-strip .ui-slider-handle:focus,.iris-picker .ui-square-handle:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.iris-picker .iris-palette:focus{box-shadow:inset 0 0 5px rgba(0,0,0,.4),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}@media screen and (max-width:782px){.wp-picker-container input[type=text].wp-color-picker{width:80px;padding:6px 5px 5px;font-size:16px;line-height:18px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:5px 5px 4px}.wp-picker-container .wp-color-result.button{height:auto;padding:0 0 0 40px;font-size:14px;line-height:29px}.wp-customizer .wp-picker-container .wp-color-result.button{font-size:13px;line-height:26px}.wp-picker-container .wp-color-result-text{padding:0 14px;font-size:inherit;line-height:inherit}.wp-customizer .wp-picker-container .wp-color-result-text{padding:0 10px}}@media screen and (max-width:640px){.wp-customizer .wp-picker-container .wp-color-result.button{font-size:14px;line-height:29px}.wp-customizer .wp-picker-container input[type=text].wp-color-picker{padding:6px 5px}} \ No newline at end of file diff --git a/wp-admin/css/colors/_admin.scss b/wp-admin/css/colors/_admin.scss index 1d06aa9..928670d 100644 --- a/wp-admin/css/colors/_admin.scss +++ b/wp-admin/css/colors/_admin.scss @@ -2,13 +2,6 @@ @import 'variables'; @import 'mixins'; -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ -@function url-friendly-colour( $color ) { - @return '%23' + str-slice( '#{ $color }', 2, -1 ); -} body { background: $body-background; @@ -27,49 +20,21 @@ a { } } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: $link; - - &:hover, - &:active, - &:focus { - color: $link-focus; - } -} - -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { + color: $link-focus; } -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27#{url-friendly-colour($form-checked)}%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: $form-checked; } -input[type=radio]:checked::before { +input[type=radio]:checked:before { background: $form-checked; } @@ -78,109 +43,14 @@ input[type=radio]:checked::before { color: $link-focus; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: $highlight-color; - box-shadow: 0 0 0 1px $highlight-color; -} - /* Core UI */ .wp-core-ui { - - .button { - border-color: #7e8993; - color: #32373c; - } - - .button.hover, - .button:hover, - .button.focus, - .button:focus { - border-color: darken( #7e8993, 5% ); - color: darken( #32373c, 5% ); - } - - .button.focus, - .button:focus { - border-color: #7e8993; - color: darken( #32373c, 5% ); - box-shadow: 0 0 0 1px #32373c; - } - - .button:active { - border-color: #7e8993; - color: darken( #32373c, 5% ); - box-shadow: none; - } - - .button.active, - .button.active:focus, - .button.active:hover { - border-color: $button-color; - color: darken( #32373c, 5% ); - box-shadow: inset 0 2px 5px -3px $button-color; - } - - .button.active:focus { - box-shadow: 0 0 0 1px #32373c; - } - - @if ( $low-contrast-theme != "true" ) { - .button, - .button-secondary { - color: $highlight-color; - border-color: $highlight-color; - } - - .button.hover, - .button:hover, - .button-secondary:hover{ - border-color: darken($highlight-color, 10); - color: darken($highlight-color, 10); - } - - .button.focus, - .button:focus, - .button-secondary:focus { - border-color: lighten($highlight-color, 10); - color: darken($highlight-color, 20);; - box-shadow: 0 0 0 1px lighten($highlight-color, 10); - } - - .button-primary { - &:hover { - color: #fff; - } - } - } - .button-primary { @include button( $button-color ); } - .button-group > .button.active { - border-color: $button-color; - } - .wp-ui-primary { color: $text-color; background-color: $base-color; @@ -212,28 +82,13 @@ textarea:focus { /* List tables */ -@if $low-contrast-theme == "true" { - .wrap .page-title-action:hover { - color: $menu-text; - background-color: $menu-background; - } -} @else { - .wrap .page-title-action, - .wrap .page-title-action:active { - border: 1px solid $highlight-color; - color: $highlight-color; - } - - .wrap .page-title-action:hover { - color: darken($highlight-color, 10); - border-color: darken($highlight-color, 10); - } - .wrap .page-title-action:focus { - border-color: lighten($highlight-color, 10); - color: darken($highlight-color, 20);; - box-shadow: 0 0 0 1px lighten($highlight-color, 10); - } +.wrap .add-new-h2:hover, /* deprecated */ +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: $menu-text; + background-color: $menu-background; } .view-switch a.current:before { @@ -277,7 +132,7 @@ textarea:focus { /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: $body-background; @@ -290,12 +145,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: $menu-submenu-background; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: $menu-submenu-background; } @@ -305,6 +160,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: $menu-submenu-text; @@ -342,19 +198,18 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: $menu-current-icon; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: $menu-bubble-text; @@ -421,7 +276,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: $menu-submenu-focus-text; + color: $menu-highlight-icon; } @@ -495,26 +350,6 @@ ul#adminmenu > li.current > a.current:after { background: $adminbar-input-background; } -/* Admin Bar: recovery mode */ - -#wpadminbar #wp-admin-bar-recovery-mode { - color: $adminbar-recovery-exit-text; - background-color: $adminbar-recovery-exit-background; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: $adminbar-recovery-exit-text; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover >.ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: $adminbar-recovery-exit-text; - background-color: $adminbar-recovery-exit-background-alt; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { @@ -627,16 +462,6 @@ body.more-filters-opened .more-filters:focus:before { color: $menu-highlight-text; } - -/* Nav Menus */ - -.nav-menus-php .item-edit:focus:before { - box-shadow: - 0 0 0 1px lighten($button-color, 10), - 0 0 2px 1px $button-color; -} - - /* Responsive Component */ div#wp-responsive-toggle a:before { @@ -666,137 +491,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: $highlight-color; } - -/* Customizer */ -.wp-core-ui { - #customize-controls .control-section:hover > .accordion-section-title, - #customize-controls .control-section .accordion-section-title:hover, - #customize-controls .control-section.open .accordion-section-title, - #customize-controls .control-section .accordion-section-title:focus { - color: $link; - border-left-color: $button-color; - } - - .customize-controls-close:focus, - .customize-controls-close:hover, - .customize-controls-preview-toggle:focus, - .customize-controls-preview-toggle:hover { - color: $link; - border-top-color: $button-color; - } - - .customize-panel-back:hover, - .customize-panel-back:focus, - .customize-section-back:hover, - .customize-section-back:focus { - color: $link; - border-left-color: $button-color; - } - - .customize-screen-options-toggle:hover, - .customize-screen-options-toggle:active, - .customize-screen-options-toggle:focus, - .active-menu-screen-options .customize-screen-options-toggle, - #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, - #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, - #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: $link; - } - - .customize-screen-options-toggle:focus:before, - #customize-controls .customize-info .customize-help-toggle:focus:before, - &.wp-customizer button:focus .toggle-indicator:before, - .menu-item-bar .item-delete:focus:before, - #available-menu-items .item-add:focus:before, - #customize-save-button-wrapper .save:focus, - #publish-settings:focus { - box-shadow: - 0 0 0 1px lighten($button-color, 10), - 0 0 2px 1px $button-color; - } - - #customize-controls .customize-info.open .customize-help-toggle, - #customize-controls .customize-info .customize-help-toggle:focus, - #customize-controls .customize-info .customize-help-toggle:hover { - color: $link; - } - - .control-panel-themes .customize-themes-section-title:focus, - .control-panel-themes .customize-themes-section-title:hover { - border-left-color: $button-color; - color: $link; - } - - .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: $button-color; - } - - .control-panel-themes .customize-themes-section-title.selected { - color: $link; - } - - #customize-theme-controls .control-section:hover > .accordion-section-title:after, - #customize-theme-controls .control-section .accordion-section-title:hover:after, - #customize-theme-controls .control-section.open .accordion-section-title:after, - #customize-theme-controls .control-section .accordion-section-title:focus:after, - #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, - #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, - #customize-outer-theme-controls .control-section.open .accordion-section-title:after, - #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: $link; - } - - .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: $button-color; - border-style: solid; - box-shadow: 0 0 0 1px $button-color; - outline: 2px solid transparent; - } - - .wp-full-overlay-footer .devices button:focus, - .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: $button-color; - } - - .wp-full-overlay-footer .devices button:hover:before, - .wp-full-overlay-footer .devices button:focus:before { - color: $button-color; - } - - .wp-full-overlay .collapse-sidebar:hover, - .wp-full-overlay .collapse-sidebar:focus { - color: $button-color; - } - - .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, - .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: - 0 0 0 1px lighten($button-color, 10), - 0 0 2px 1px $button-color; - } - - &.wp-customizer .theme-overlay .theme-header .close:focus, - &.wp-customizer .theme-overlay .theme-header .close:hover, - &.wp-customizer .theme-overlay .theme-header .right:focus, - &.wp-customizer .theme-overlay .theme-header .right:hover, - &.wp-customizer .theme-overlay .theme-header .left:focus, - &.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: $button-color; - color: $link; - } -} - -/* Welcome Panel */ -.welcome-panel { - background-color: $dashboard-accent-1; -} - -.welcome-panel-header-image circle { - stroke: $dashboard-accent-2; - fill: $dashboard-accent-1; -} - -[class*="welcome-panel-icon"] { - background-color: $dashboard-icon-background; -} diff --git a/wp-admin/css/colors/_mixins.scss b/wp-admin/css/colors/_mixins.scss index 9744a20..7a764ab 100644 --- a/wp-admin/css/colors/_mixins.scss +++ b/wp-admin/css/colors/_mixins.scss @@ -1,37 +1,54 @@ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -@mixin button( $button-color, $button-text-color: #fff ) { +@mixin button( $button-color, $text-color: #fff ) { background: $button-color; - border-color: $button-color; - color: $button-text-color; + border-color: darken( $button-color, 10% ) darken( $button-color, 15% ) darken( $button-color, 15% ); + color: $text-color; + box-shadow: 0 1px 0 darken( $button-color, 15% ); + text-shadow: 0 -1px 1px darken( $button-color, 15% ), + 1px 0 1px darken( $button-color, 15% ), + 0 1px 1px darken( $button-color, 15% ), + -1px 0 1px darken( $button-color, 15% ); &:hover, &:focus { background: lighten( $button-color, 3% ); - border-color: darken( $button-color, 3% ); - color: $button-text-color; + border-color: darken( $button-color, 15% ); + color: $text-color; + box-shadow: 0 1px 0 darken( $button-color, 15% ); } &:focus { - box-shadow: - 0 0 0 1px #fff, - 0 0 0 3px $button-color; - } - - &:active { - background: darken( $button-color, 5% ); - border-color: darken( $button-color, 5% ); - color: $button-text-color; + box-shadow: inset 0 1px 0 darken( $button-color, 10% ), + 0 0 2px 1px #33b3db; } + &:active, &.active, &.active:focus, &.active:hover { - background: $button-color; - color: $button-text-color; + background: darken( $button-color, 10% ); border-color: darken( $button-color, 15% ); - box-shadow: inset 0 2px 5px -3px darken( $button-color, 50% ); + box-shadow: inset 0 2px 0 darken( $button-color, 15% ); + } + + &[disabled], + &:disabled, + &.button-primary-disabled, + &.disabled { + color: hsl( hue( $button-color ), 10%, 80% ) !important; + background: darken( $button-color, 8% ) !important; + border-color: darken( $button-color, 15% ) !important; + text-shadow: none !important; + } + + &.button-hero { + box-shadow: 0 2px 0 darken( $button-color, 15% ) !important; + &:active { + box-shadow: inset 0 3px 0 darken( $button-color, 15% ) !important; + } } + } diff --git a/wp-admin/css/colors/_variables.scss b/wp-admin/css/colors/_variables.scss index 03a32ea..c203f1b 100644 --- a/wp-admin/css/colors/_variables.scss +++ b/wp-admin/css/colors/_variables.scss @@ -1,6 +1,5 @@ // assign default value to all undefined variables -$scheme-name: "default" !default; // core variables @@ -19,9 +18,8 @@ $link: #0073aa !default; $link-focus: lighten( $link, 10% ) !default; $button-color: $highlight-color !default; -$button-text-color: $text-color !default; +$form-checked: $highlight-color !default; -$form-checked: #7e8993 !default; // admin menu & admin-bar @@ -57,16 +55,4 @@ $menu-collapse-focus-icon: $menu-highlight-icon !default; $adminbar-avatar-frame: lighten( $menu-background, 7% ) !default; $adminbar-input-background: lighten( $menu-background, 7% ) !default; -$adminbar-recovery-exit-text: $menu-bubble-text !default; -$adminbar-recovery-exit-background: $menu-bubble-background !default; -$adminbar-recovery-exit-background-alt: mix(black, $adminbar-recovery-exit-background, 10%) !default; - $menu-customizer-text: mix( $base-color, $text-color, 40% ) !default; - -// Dashboard Colors - -$dashboard-accent-1: $highlight-color !default; -$dashboard-accent-2: rgba(255, 255, 255, 0.5) !default; -$dashboard-icon-background: $dashboard-accent-2 !default; - -$low-contrast-theme: "false" !default; diff --git a/wp-admin/css/colors/blue/colors-rtl.css b/wp-admin/css/colors/blue/colors-rtl.css index 4c1ed81..b5d44c5 100644 --- a/wp-admin/css/colors/blue/colors-rtl.css +++ b/wp-admin/css/colors/blue/colors-rtl.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #096484; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #096484; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #096484; - box-shadow: 0 0 0 1px #096484; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #e1a948; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #e1a948; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #096484; - border-color: #096484; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #064054; - color: #064054; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #0c88b4; - color: #021c25; - box-shadow: 0 0 0 1px #0c88b4; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #e1a948; - border-color: #e1a948; + border-color: #d39323 #bd831f #bd831f; color: #fff; + box-shadow: 0 1px 0 #bd831f; + text-shadow: 0 -1px 1px #bd831f, -1px 0 1px #bd831f, 0 1px 1px #bd831f, 1px 0 1px #bd831f; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e3af55; - border-color: #dfa33b; + border-color: #bd831f; color: #fff; + box-shadow: 0 1px 0 #bd831f; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e1a948; + box-shadow: inset 0 1px 0 #d39323, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #dd9f32; - border-color: #dd9f32; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #d39323; + border-color: #bd831f; + box-shadow: inset 0 2px 0 #bd831f; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #e1a948; - color: #fff; - border-color: #bd831f; - box-shadow: inset 0 2px 5px -3px #241906; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1cdc7 !important; + background: #db9925 !important; + border-color: #bd831f !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #bd831f !important; } -.wp-core-ui .button-group > .button.active { - border-color: #e1a948; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #bd831f !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #096484; - color: #096484; -} - -.wrap .page-title-action:hover { - color: #064054; - border-color: #064054; -} - -.wrap .page-title-action:focus { - border-color: #0c88b4; - color: #021c25; - box-shadow: 0 0 0 1px #0c88b4; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #52accc; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #4796b3; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-left-color: #4796b3; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #e2ecf1; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #6eb9d4; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #e1a948; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #cb9841; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #6eb9d4; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #e5f8ff; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #096484; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-right-color: #e1a948; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #e1a948; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-right-color: #e1a948; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #e1a948; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #e1a948; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #e1a948; - border-style: solid; - box-shadow: 0 0 0 1px #e1a948; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #e1a948; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #e1a948; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #e1a948; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #e1a948; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #096484; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #096484; -} - -[class*="welcome-panel-icon"] { - background-color: #096484; -} diff --git a/wp-admin/css/colors/blue/colors-rtl.min.css b/wp-admin/css/colors/blue/colors-rtl.min.css index d4d1e05..d4aa657 100644 --- a/wp-admin/css/colors/blue/colors-rtl.min.css +++ b/wp-admin/css/colors/blue/colors-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#096484;box-shadow:0 0 0 1px #096484}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e1a948;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e1a948}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#096484;border-color:#096484}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#064054;color:#064054}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e1a948;border-color:#e1a948;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#dfa33b;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e1a948}.wp-core-ui .button-primary:active{background:#dd9f32;border-color:#dd9f32;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e1a948;color:#fff;border-color:#bd831f;box-shadow:inset 0 2px 5px -3px #241906}.wp-core-ui .button-group>.button.active{border-color:#e1a948}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #096484;color:#096484}.wrap .page-title-action:hover{color:#064054;border-color:#064054}.wrap .page-title-action:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#e1a948}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#cb9841}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#e1a948}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e1a948}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#e1a948}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#e1a948;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e1a948}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e1a948;border-style:solid;box-shadow:0 0 0 1px #e1a948;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e1a948}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e1a948;color:#0073aa}.welcome-panel{background-color:#096484}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#096484}[class*=welcome-panel-icon]{background-color:#096484} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,-1px 0 1px #bd831f,0 1px 1px #bd831f,1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484} \ No newline at end of file diff --git a/wp-admin/css/colors/blue/colors.css b/wp-admin/css/colors/blue/colors.css index 7bd8cb5..06955e3 100644 --- a/wp-admin/css/colors/blue/colors.css +++ b/wp-admin/css/colors/blue/colors.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #096484; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #096484; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #096484; - box-shadow: 0 0 0 1px #096484; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #e1a948; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #e1a948; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #096484; - border-color: #096484; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #064054; - color: #064054; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #0c88b4; - color: #021c25; - box-shadow: 0 0 0 1px #0c88b4; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #e1a948; - border-color: #e1a948; + border-color: #d39323 #bd831f #bd831f; color: #fff; + box-shadow: 0 1px 0 #bd831f; + text-shadow: 0 -1px 1px #bd831f, 1px 0 1px #bd831f, 0 1px 1px #bd831f, -1px 0 1px #bd831f; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e3af55; - border-color: #dfa33b; + border-color: #bd831f; color: #fff; + box-shadow: 0 1px 0 #bd831f; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e1a948; + box-shadow: inset 0 1px 0 #d39323, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #dd9f32; - border-color: #dd9f32; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #d39323; + border-color: #bd831f; + box-shadow: inset 0 2px 0 #bd831f; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #e1a948; - color: #fff; - border-color: #bd831f; - box-shadow: inset 0 2px 5px -3px #241906; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1cdc7 !important; + background: #db9925 !important; + border-color: #bd831f !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #bd831f !important; } -.wp-core-ui .button-group > .button.active { - border-color: #e1a948; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #bd831f !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #096484; - color: #096484; -} - -.wrap .page-title-action:hover { - color: #064054; - border-color: #064054; -} - -.wrap .page-title-action:focus { - border-color: #0c88b4; - color: #021c25; - box-shadow: 0 0 0 1px #0c88b4; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #52accc; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #4796b3; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: #4796b3; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #e2ecf1; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #6eb9d4; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #e1a948; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #cb9841; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #6eb9d4; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #e5f8ff; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #096484; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-left-color: #e1a948; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #e1a948; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-left-color: #e1a948; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #e1a948; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #e1a948; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #e1a948; - border-style: solid; - box-shadow: 0 0 0 1px #e1a948; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #e1a948; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #e1a948; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #e1a948; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #e8be74, 0 0 2px 1px #e1a948; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #e1a948; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #096484; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #096484; -} - -[class*="welcome-panel-icon"] { - background-color: #096484; -} diff --git a/wp-admin/css/colors/blue/colors.min.css b/wp-admin/css/colors/blue/colors.min.css index b63e571..1ee3a15 100644 --- a/wp-admin/css/colors/blue/colors.min.css +++ b/wp-admin/css/colors/blue/colors.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#096484;box-shadow:0 0 0 1px #096484}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e1a948;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e1a948}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#096484;border-color:#096484}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#064054;color:#064054}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e1a948;border-color:#e1a948;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#dfa33b;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e1a948}.wp-core-ui .button-primary:active{background:#dd9f32;border-color:#dd9f32;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e1a948;color:#fff;border-color:#bd831f;box-shadow:inset 0 2px 5px -3px #241906}.wp-core-ui .button-group>.button.active{border-color:#e1a948}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #096484;color:#096484}.wrap .page-title-action:hover{color:#064054;border-color:#064054}.wrap .page-title-action:focus{border-color:#0c88b4;color:#021c25;box-shadow:0 0 0 1px #0c88b4}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#e1a948}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#cb9841}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#e1a948}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e1a948}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#e1a948}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#e1a948;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e1a948}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e1a948;border-style:solid;box-shadow:0 0 0 1px #e1a948;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e1a948}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e1a948}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8be74,0 0 2px 1px #e1a948}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e1a948;color:#0073aa}.welcome-panel{background-color:#096484}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#096484}[class*=welcome-panel-icon]{background-color:#096484} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,1px 0 1px #bd831f,0 1px 1px #bd831f,-1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button{color:#e5f8ff}#collapse-button:focus,#collapse-button:hover{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484} \ No newline at end of file diff --git a/wp-admin/css/colors/blue/colors.scss b/wp-admin/css/colors/blue/colors.scss index ab12d2f..b254d73 100644 --- a/wp-admin/css/colors/blue/colors.scss +++ b/wp-admin/css/colors/blue/colors.scss @@ -1,4 +1,3 @@ -$scheme-name: "blue"; $base-color: #52accc; $icon-color: #e5f8ff; $highlight-color: #096484; @@ -9,6 +8,4 @@ $menu-submenu-text: #e2ecf1; $menu-submenu-focus-text: #fff; $menu-submenu-background: #4796b3; -$dashboard-icon-background: $highlight-color; - @import "../_admin.scss"; diff --git a/wp-admin/css/colors/coffee/colors-rtl.css b/wp-admin/css/colors/coffee/colors-rtl.css index cf111ac..f393a49 100644 --- a/wp-admin/css/colors/coffee/colors-rtl.css +++ b/wp-admin/css/colors/coffee/colors-rtl.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,46 +16,19 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #59524c; } -input[type=radio]:checked::before { +input[type=radio]:checked:before { background: #59524c; } @@ -68,99 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #c7a589; - box-shadow: 0 0 0 1px #c7a589; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #c7a589; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #c7a589; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - .wp-core-ui .button-primary { background: #c7a589; - border-color: #c7a589; + border-color: #b78b66 #ae7d55 #ae7d55; color: #fff; + box-shadow: 0 1px 0 #ae7d55; + text-shadow: 0 -1px 1px #ae7d55, -1px 0 1px #ae7d55, 0 1px 1px #ae7d55, 1px 0 1px #ae7d55; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #ccad93; - border-color: #c29d7f; + border-color: #ae7d55; color: #fff; + box-shadow: 0 1px 0 #ae7d55; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #c7a589; + box-shadow: inset 0 1px 0 #b78b66, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #bf9878; - border-color: #bf9878; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #b78b66; + border-color: #ae7d55; + box-shadow: inset 0 2px 0 #ae7d55; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #c7a589; - color: #fff; - border-color: #ae7d55; - box-shadow: inset 0 2px 5px -3px #37271a; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1ccc7 !important; + background: #ba906d !important; + border-color: #ae7d55 !important; + text-shadow: none !important; } -.wp-core-ui .button-group > .button.active { - border-color: #c7a589; +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #ae7d55 !important; +} + +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #ae7d55 !important; } .wp-core-ui .wp-ui-primary { @@ -195,7 +110,10 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action:hover { +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { color: #fff; background-color: #59524c; } @@ -237,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -248,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #46403c; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-left-color: #46403c; } @@ -263,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #cdcbc9; @@ -271,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -308,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -382,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #c7a589; + color: #fff; } /* Admin Bar: submenu */ @@ -452,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #6c645c; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #9ea476; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #8e946a; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #6c645c; @@ -573,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f2f1; @@ -604,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #c7a589; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-right-color: #c7a589; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #c7a589; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-right-color: #c7a589; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #c7a589; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #c7a589; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #c7a589; - border-style: solid; - box-shadow: 0 0 0 1px #c7a589; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #c7a589; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #c7a589; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #c7a589; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #c7a589; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #c7a589; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #c7a589; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/coffee/colors-rtl.min.css b/wp-admin/css/colors/coffee/colors-rtl.min.css index c6be926..ab7b492 100644 --- a/wp-admin/css/colors/coffee/colors-rtl.min.css +++ b/wp-admin/css/colors/coffee/colors-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#c7a589;box-shadow:0 0 0 1px #c7a589}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#c7a589;color:#262a2e;box-shadow:inset 0 2px 5px -3px #c7a589}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#c7a589;border-color:#c7a589;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#c29d7f;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.wp-core-ui .button-primary:active{background:#bf9878;border-color:#bf9878;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#c7a589;color:#fff;border-color:#ae7d55;box-shadow:inset 0 2px 5px -3px #37271a}.wp-core-ui .button-group>.button.active{border-color:#c7a589}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:#f3f2f1}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#c7a589}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#9ea476}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#8e946a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#c7a589}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#c7a589}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#c7a589}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#c7a589;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#c7a589}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#c7a589;border-style:solid;box-shadow:0 0 0 1px #c7a589;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#c7a589}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#c7a589;color:#0073aa}.welcome-panel{background-color:#c7a589}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#c7a589}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,-1px 0 1px #ae7d55,0 1px 1px #ae7d55,1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:#f3f2f1}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589} \ No newline at end of file diff --git a/wp-admin/css/colors/coffee/colors.css b/wp-admin/css/colors/coffee/colors.css index cac7815..2fb55a2 100644 --- a/wp-admin/css/colors/coffee/colors.css +++ b/wp-admin/css/colors/coffee/colors.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,46 +16,19 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #59524c; } -input[type=radio]:checked::before { +input[type=radio]:checked:before { background: #59524c; } @@ -68,99 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #c7a589; - box-shadow: 0 0 0 1px #c7a589; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #c7a589; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #c7a589; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - .wp-core-ui .button-primary { background: #c7a589; - border-color: #c7a589; + border-color: #b78b66 #ae7d55 #ae7d55; color: #fff; + box-shadow: 0 1px 0 #ae7d55; + text-shadow: 0 -1px 1px #ae7d55, 1px 0 1px #ae7d55, 0 1px 1px #ae7d55, -1px 0 1px #ae7d55; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #ccad93; - border-color: #c29d7f; + border-color: #ae7d55; color: #fff; + box-shadow: 0 1px 0 #ae7d55; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #c7a589; + box-shadow: inset 0 1px 0 #b78b66, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #bf9878; - border-color: #bf9878; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #b78b66; + border-color: #ae7d55; + box-shadow: inset 0 2px 0 #ae7d55; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #c7a589; - color: #fff; - border-color: #ae7d55; - box-shadow: inset 0 2px 5px -3px #37271a; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1ccc7 !important; + background: #ba906d !important; + border-color: #ae7d55 !important; + text-shadow: none !important; } -.wp-core-ui .button-group > .button.active { - border-color: #c7a589; +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #ae7d55 !important; +} + +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #ae7d55 !important; } .wp-core-ui .wp-ui-primary { @@ -195,7 +110,10 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action:hover { +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { color: #fff; background-color: #59524c; } @@ -237,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -248,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #46403c; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: #46403c; } @@ -263,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #cdcbc9; @@ -271,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -308,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -382,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #c7a589; + color: #fff; } /* Admin Bar: submenu */ @@ -452,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #6c645c; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #9ea476; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #8e946a; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #6c645c; @@ -573,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f2f1; @@ -604,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #c7a589; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-left-color: #c7a589; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #c7a589; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-left-color: #c7a589; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #c7a589; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #c7a589; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #c7a589; - border-style: solid; - box-shadow: 0 0 0 1px #c7a589; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #c7a589; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #c7a589; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #c7a589; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #d7bfac, 0 0 2px 1px #c7a589; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #c7a589; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #c7a589; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #c7a589; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/coffee/colors.min.css b/wp-admin/css/colors/coffee/colors.min.css index 5fbd433..8de31ca 100644 --- a/wp-admin/css/colors/coffee/colors.min.css +++ b/wp-admin/css/colors/coffee/colors.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%2359524c%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#c7a589;box-shadow:0 0 0 1px #c7a589}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#c7a589;color:#262a2e;box-shadow:inset 0 2px 5px -3px #c7a589}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#c7a589;border-color:#c7a589;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#c29d7f;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.wp-core-ui .button-primary:active{background:#bf9878;border-color:#bf9878;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#c7a589;color:#fff;border-color:#ae7d55;box-shadow:inset 0 2px 5px -3px #37271a}.wp-core-ui .button-group>.button.active{border-color:#c7a589}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:#f3f2f1}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#c7a589}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#9ea476}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#8e946a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#c7a589}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#c7a589}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#c7a589}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#c7a589;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#c7a589}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#c7a589;border-style:solid;box-shadow:0 0 0 1px #c7a589;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#c7a589}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#c7a589}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #d7bfac,0 0 2px 1px #c7a589}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#c7a589;color:#0073aa}.welcome-panel{background-color:#c7a589}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#c7a589}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,1px 0 1px #ae7d55,0 1px 1px #ae7d55,-1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button{color:#f3f2f1}#collapse-button:focus,#collapse-button:hover{color:#c7a589}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589} \ No newline at end of file diff --git a/wp-admin/css/colors/coffee/colors.scss b/wp-admin/css/colors/coffee/colors.scss index a52491d..49bee9b 100644 --- a/wp-admin/css/colors/coffee/colors.scss +++ b/wp-admin/css/colors/coffee/colors.scss @@ -1,8 +1,6 @@ -$scheme-name: "coffee"; $base-color: #59524c; $highlight-color: #c7a589; $notification-color: #9ea476; -$low-contrast-theme: "true"; $form-checked: $base-color; diff --git a/wp-admin/css/colors/ectoplasm/colors-rtl.css b/wp-admin/css/colors/ectoplasm/colors-rtl.css index 3cac1ca..0f8fdd3 100644 --- a/wp-admin/css/colors/ectoplasm/colors-rtl.css +++ b/wp-admin/css/colors/ectoplasm/colors-rtl.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,46 +16,19 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #523f6d; } -input[type=radio]:checked::before { +input[type=radio]:checked:before { background: #523f6d; } @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #a3b745; - box-shadow: 0 0 0 1px #a3b745; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #a3b745; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #a3b745; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #a3b745; - border-color: #a3b745; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #829237; - color: #829237; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #b6c669; - color: #616d29; - box-shadow: 0 0 0 1px #b6c669; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #a3b745; - border-color: #a3b745; + border-color: #829237 #727f30 #727f30; color: #fff; + box-shadow: 0 1px 0 #727f30; + text-shadow: 0 -1px 1px #727f30, -1px 0 1px #727f30, 0 1px 1px #727f30, 1px 0 1px #727f30; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a9bd4f; - border-color: #99ac41; + border-color: #727f30; color: #fff; + box-shadow: 0 1px 0 #727f30; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #a3b745; + box-shadow: inset 0 1px 0 #829237, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #93a43e; - border-color: #93a43e; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #829237; + border-color: #727f30; + box-shadow: inset 0 2px 0 #727f30; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #a3b745; - color: #fff; - border-color: #727f30; - box-shadow: inset 0 2px 5px -3px black; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #cfd1c7 !important; + background: #89993a !important; + border-color: #727f30 !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #727f30 !important; } -.wp-core-ui .button-group > .button.active { - border-color: #a3b745; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #727f30 !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #a3b745; - color: #a3b745; -} - -.wrap .page-title-action:hover { - color: #829237; - border-color: #829237; -} - -.wrap .page-title-action:focus { - border-color: #b6c669; - color: #616d29; - box-shadow: 0 0 0 1px #b6c669; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #523f6d; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #413256; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-left-color: #413256; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #cbc5d3; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #a3b745; + color: #fff; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #634c84; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #d46f15; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #bf6413; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #634c84; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #ece6f6; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #a3b745; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-right-color: #a3b745; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #a3b745; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-right-color: #a3b745; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #a3b745; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #a3b745; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #a3b745; - border-style: solid; - box-shadow: 0 0 0 1px #a3b745; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #a3b745; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #a3b745; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #a3b745; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #a3b745; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #523f6d; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #523f6d; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/ectoplasm/colors-rtl.min.css b/wp-admin/css/colors/ectoplasm/colors-rtl.min.css index 0318f05..e57241f 100644 --- a/wp-admin/css/colors/ectoplasm/colors-rtl.min.css +++ b/wp-admin/css/colors/ectoplasm/colors-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#a3b745;box-shadow:0 0 0 1px #a3b745}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#a3b745;color:#262a2e;box-shadow:inset 0 2px 5px -3px #a3b745}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#a3b745;border-color:#a3b745}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#829237;color:#829237}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#a3b745;border-color:#a3b745;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#99ac41;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.wp-core-ui .button-primary:active{background:#93a43e;border-color:#93a43e;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#a3b745;color:#fff;border-color:#727f30;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#a3b745}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #a3b745;color:#a3b745}.wrap .page-title-action:hover{color:#829237;border-color:#829237}.wrap .page-title-action:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#a3b745}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d46f15}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#bf6413}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#a3b745}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#a3b745}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#a3b745}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#a3b745;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#a3b745}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#a3b745;border-style:solid;box-shadow:0 0 0 1px #a3b745;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#a3b745}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#a3b745;color:#0073aa}.welcome-panel{background-color:#523f6d}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#523f6d}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,-1px 0 1px #727f30,0 1px 1px #727f30,1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745} \ No newline at end of file diff --git a/wp-admin/css/colors/ectoplasm/colors.css b/wp-admin/css/colors/ectoplasm/colors.css index 38886bf..d2e8f40 100644 --- a/wp-admin/css/colors/ectoplasm/colors.css +++ b/wp-admin/css/colors/ectoplasm/colors.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,46 +16,19 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #523f6d; } -input[type=radio]:checked::before { +input[type=radio]:checked:before { background: #523f6d; } @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #a3b745; - box-shadow: 0 0 0 1px #a3b745; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #a3b745; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #a3b745; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #a3b745; - border-color: #a3b745; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #829237; - color: #829237; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #b6c669; - color: #616d29; - box-shadow: 0 0 0 1px #b6c669; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #a3b745; - border-color: #a3b745; + border-color: #829237 #727f30 #727f30; color: #fff; + box-shadow: 0 1px 0 #727f30; + text-shadow: 0 -1px 1px #727f30, 1px 0 1px #727f30, 0 1px 1px #727f30, -1px 0 1px #727f30; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a9bd4f; - border-color: #99ac41; + border-color: #727f30; color: #fff; + box-shadow: 0 1px 0 #727f30; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #a3b745; + box-shadow: inset 0 1px 0 #829237, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #93a43e; - border-color: #93a43e; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #829237; + border-color: #727f30; + box-shadow: inset 0 2px 0 #727f30; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #a3b745; - color: #fff; - border-color: #727f30; - box-shadow: inset 0 2px 5px -3px black; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #cfd1c7 !important; + background: #89993a !important; + border-color: #727f30 !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #727f30 !important; } -.wp-core-ui .button-group > .button.active { - border-color: #a3b745; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #727f30 !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #a3b745; - color: #a3b745; -} - -.wrap .page-title-action:hover { - color: #829237; - border-color: #829237; -} - -.wrap .page-title-action:focus { - border-color: #b6c669; - color: #616d29; - box-shadow: 0 0 0 1px #b6c669; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #523f6d; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #413256; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: #413256; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #cbc5d3; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #a3b745; + color: #fff; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #634c84; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #d46f15; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #bf6413; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #634c84; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #ece6f6; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #a3b745; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-left-color: #a3b745; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #a3b745; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-left-color: #a3b745; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #a3b745; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #a3b745; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #a3b745; - border-style: solid; - box-shadow: 0 0 0 1px #a3b745; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #a3b745; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #a3b745; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #a3b745; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #b6c669, 0 0 2px 1px #a3b745; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #a3b745; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #523f6d; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #523f6d; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/ectoplasm/colors.min.css b/wp-admin/css/colors/ectoplasm/colors.min.css index 6cf4326..389e097 100644 --- a/wp-admin/css/colors/ectoplasm/colors.min.css +++ b/wp-admin/css/colors/ectoplasm/colors.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23523f6d%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#a3b745;box-shadow:0 0 0 1px #a3b745}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#a3b745;color:#262a2e;box-shadow:inset 0 2px 5px -3px #a3b745}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#a3b745;border-color:#a3b745}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#829237;color:#829237}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#a3b745;border-color:#a3b745;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#99ac41;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.wp-core-ui .button-primary:active{background:#93a43e;border-color:#93a43e;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#a3b745;color:#fff;border-color:#727f30;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#a3b745}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #a3b745;color:#a3b745}.wrap .page-title-action:hover{color:#829237;border-color:#829237}.wrap .page-title-action:focus{border-color:#b6c669;color:#616d29;box-shadow:0 0 0 1px #b6c669}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#a3b745}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d46f15}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#bf6413}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#a3b745}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#a3b745}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#a3b745}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#a3b745;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#a3b745}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#a3b745;border-style:solid;box-shadow:0 0 0 1px #a3b745;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#a3b745}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#a3b745}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #b6c669,0 0 2px 1px #a3b745}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#a3b745;color:#0073aa}.welcome-panel{background-color:#523f6d}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#523f6d}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,1px 0 1px #727f30,0 1px 1px #727f30,-1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button{color:#ece6f6}#collapse-button:focus,#collapse-button:hover{color:#a3b745}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745} \ No newline at end of file diff --git a/wp-admin/css/colors/ectoplasm/colors.scss b/wp-admin/css/colors/ectoplasm/colors.scss index e32fee3..8d14570 100644 --- a/wp-admin/css/colors/ectoplasm/colors.scss +++ b/wp-admin/css/colors/ectoplasm/colors.scss @@ -1,4 +1,3 @@ -$scheme-name: "ectoplasm"; $base-color: #523f6d; $icon-color: #ece6f6; $highlight-color: #a3b745; @@ -6,6 +5,4 @@ $notification-color: #d46f15; $form-checked: $base-color; -$dashboard-accent-1: $base-color; - @import "../_admin.scss"; diff --git a/wp-admin/css/colors/light/colors-rtl.css b/wp-admin/css/colors/light/colors-rtl.css index 1f434f7..e474d49 100644 --- a/wp-admin/css/colors/light/colors-rtl.css +++ b/wp-admin/css/colors/light/colors-rtl.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f5f5f5; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #04a4cc; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #04a4cc; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #04a4cc; - box-shadow: 0 0 0 1px #04a4cc; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #04a4cc; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #04a4cc; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #04a4cc; - border-color: #04a4cc; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #037c9a; - color: #037c9a; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #09cafa; - color: #025468; - box-shadow: 0 0 0 1px #09cafa; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #04a4cc; - border-color: #04a4cc; + border-color: #037c9a #036881 #036881; color: #fff; + box-shadow: 0 1px 0 #036881; + text-shadow: 0 -1px 1px #036881, -1px 0 1px #036881, 0 1px 1px #036881, 1px 0 1px #036881; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #04b0db; - border-color: #0498bd; + border-color: #036881; color: #fff; + box-shadow: 0 1px 0 #036881; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #04a4cc; + box-shadow: inset 0 1px 0 #037c9a, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #0490b3; - border-color: #0490b3; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #037c9a; + border-color: #036881; + box-shadow: inset 0 2px 0 #036881; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #04a4cc; - color: #fff; - border-color: #036881; - box-shadow: inset 0 2px 5px -3px black; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #c7cfd1 !important; + background: #0384a4 !important; + border-color: #036881 !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #036881 !important; } -.wp-core-ui .button-group > .button.active { - border-color: #04a4cc; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #036881 !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #04a4cc; - color: #04a4cc; -} - -.wrap .page-title-action:hover { - color: #037c9a; - border-color: #037c9a; -} - -.wrap .page-title-action:focus { - border-color: #09cafa; - color: #025468; - box-shadow: 0 0 0 1px #09cafa; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #333; + background-color: #e5e5e5; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f5f5f5; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #fff; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-left-color: #fff; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #686868; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #ccc; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #04a4cc; + color: #ccc; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #f7f7f7; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #d64e07; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #c14606; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #f7f7f7; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #999; @@ -642,132 +501,16 @@ div#wp-responsive-toggle a:before { background: #04a4cc; } -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-right-color: #04a4cc; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #04a4cc; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-right-color: #04a4cc; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #04a4cc; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #04a4cc; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #04a4cc; - border-style: solid; - box-shadow: 0 0 0 1px #04a4cc; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #04a4cc; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #04a4cc; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #04a4cc; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #04a4cc; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #04a4cc; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #04a4cc; -} - -[class*="welcome-panel-icon"] { - background-color: #333; +/* temporary fix for admin-bar hover color */ +#wpadminbar .ab-top-menu > li:hover > .ab-item, +#wpadminbar .ab-top-menu > li.hover > .ab-item, +#wpadminbar > #wp-toolbar > #wp-admin-bar-root-default li:hover span.ab-label, +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary li.hover span.ab-label, +#wpadminbar .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #333; } /* Override the theme filter highlight color for this scheme */ diff --git a/wp-admin/css/colors/light/colors-rtl.min.css b/wp-admin/css/colors/light/colors-rtl.min.css index 958af75..1fd7959 100644 --- a/wp-admin/css/colors/light/colors-rtl.min.css +++ b/wp-admin/css/colors/light/colors-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#04a4cc;box-shadow:0 0 0 1px #04a4cc}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#04a4cc;color:#262a2e;box-shadow:inset 0 2px 5px -3px #04a4cc}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#04a4cc;border-color:#04a4cc}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#037c9a;color:#037c9a}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#04a4cc;border-color:#04a4cc;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#0498bd;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.wp-core-ui .button-primary:active{background:#0490b3;border-color:#0490b3;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#04a4cc;color:#fff;border-color:#036881;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#04a4cc}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #04a4cc;color:#04a4cc}.wrap .page-title-action:hover{color:#037c9a;border-color:#037c9a}.wrap .page-title-action:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#04a4cc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d64e07}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#c14606}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}.theme-filter.current,.theme-section.current{border-bottom-color:#e5e5e5}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#04a4cc}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#04a4cc}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#04a4cc}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#04a4cc;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#04a4cc}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#04a4cc;border-style:solid;box-shadow:0 0 0 1px #04a4cc;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#04a4cc}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#04a4cc;color:#0073aa}.welcome-panel{background-color:#04a4cc}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#04a4cc}[class*=welcome-panel-icon]{background-color:#333}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file +body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,-1px 0 1px #036881,0 1px 1px #036881,1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}.theme-filter.current,.theme-section.current{border-bottom-color:#e5e5e5}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.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,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file diff --git a/wp-admin/css/colors/light/colors.css b/wp-admin/css/colors/light/colors.css index 1f4c1c0..92d974f 100644 --- a/wp-admin/css/colors/light/colors.css +++ b/wp-admin/css/colors/light/colors.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f5f5f5; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #04a4cc; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #04a4cc; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #04a4cc; - box-shadow: 0 0 0 1px #04a4cc; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #04a4cc; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #04a4cc; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #04a4cc; - border-color: #04a4cc; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #037c9a; - color: #037c9a; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #09cafa; - color: #025468; - box-shadow: 0 0 0 1px #09cafa; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #04a4cc; - border-color: #04a4cc; + border-color: #037c9a #036881 #036881; color: #fff; + box-shadow: 0 1px 0 #036881; + text-shadow: 0 -1px 1px #036881, 1px 0 1px #036881, 0 1px 1px #036881, -1px 0 1px #036881; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #04b0db; - border-color: #0498bd; + border-color: #036881; color: #fff; + box-shadow: 0 1px 0 #036881; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #04a4cc; + box-shadow: inset 0 1px 0 #037c9a, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #0490b3; - border-color: #0490b3; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #037c9a; + border-color: #036881; + box-shadow: inset 0 2px 0 #036881; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #04a4cc; - color: #fff; - border-color: #036881; - box-shadow: inset 0 2px 5px -3px black; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #c7cfd1 !important; + background: #0384a4 !important; + border-color: #036881 !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #036881 !important; } -.wp-core-ui .button-group > .button.active { - border-color: #04a4cc; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #036881 !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #04a4cc; - color: #04a4cc; -} - -.wrap .page-title-action:hover { - color: #037c9a; - border-color: #037c9a; -} - -.wrap .page-title-action:focus { - border-color: #09cafa; - color: #025468; - box-shadow: 0 0 0 1px #09cafa; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #333; + background-color: #e5e5e5; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f5f5f5; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #fff; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: #fff; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #686868; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #ccc; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #04a4cc; + color: #ccc; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #f7f7f7; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #d64e07; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #c14606; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #f7f7f7; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #999; @@ -642,132 +501,16 @@ div#wp-responsive-toggle a:before { background: #04a4cc; } -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-left-color: #04a4cc; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #04a4cc; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-left-color: #04a4cc; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #04a4cc; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #04a4cc; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #04a4cc; - border-style: solid; - box-shadow: 0 0 0 1px #04a4cc; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #04a4cc; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #04a4cc; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #04a4cc; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #09cafa, 0 0 2px 1px #04a4cc; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #04a4cc; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #04a4cc; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #04a4cc; -} - -[class*="welcome-panel-icon"] { - background-color: #333; +/* temporary fix for admin-bar hover color */ +#wpadminbar .ab-top-menu > li:hover > .ab-item, +#wpadminbar .ab-top-menu > li.hover > .ab-item, +#wpadminbar > #wp-toolbar > #wp-admin-bar-root-default li:hover span.ab-label, +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary li.hover span.ab-label, +#wpadminbar .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: #333; } /* Override the theme filter highlight color for this scheme */ diff --git a/wp-admin/css/colors/light/colors.min.css b/wp-admin/css/colors/light/colors.min.css index c87e01f..96cb2a1 100644 --- a/wp-admin/css/colors/light/colors.min.css +++ b/wp-admin/css/colors/light/colors.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#04a4cc;box-shadow:0 0 0 1px #04a4cc}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#04a4cc;color:#262a2e;box-shadow:inset 0 2px 5px -3px #04a4cc}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#04a4cc;border-color:#04a4cc}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#037c9a;color:#037c9a}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#04a4cc;border-color:#04a4cc;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#0498bd;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.wp-core-ui .button-primary:active{background:#0490b3;border-color:#0490b3;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#04a4cc;color:#fff;border-color:#036881;box-shadow:inset 0 2px 5px -3px #000}.wp-core-ui .button-group>.button.active{border-color:#04a4cc}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #04a4cc;color:#04a4cc}.wrap .page-title-action:hover{color:#037c9a;border-color:#037c9a}.wrap .page-title-action:focus{border-color:#09cafa;color:#025468;box-shadow:0 0 0 1px #09cafa}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#04a4cc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d64e07}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#c14606}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}.theme-filter.current,.theme-section.current{border-bottom-color:#e5e5e5}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#04a4cc}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#04a4cc}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#04a4cc}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#04a4cc;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#04a4cc}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#04a4cc;border-style:solid;box-shadow:0 0 0 1px #04a4cc;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#04a4cc}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#04a4cc}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #09cafa,0 0 2px 1px #04a4cc}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#04a4cc;color:#0073aa}.welcome-panel{background-color:#04a4cc}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#04a4cc}[class*=welcome-panel-icon]{background-color:#333}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file +body{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,1px 0 1px #036881,0 1px 1px #036881,-1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-button{color:#777}#collapse-button:focus,#collapse-button:hover{color:#04a4cc}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}.theme-filter.current,.theme-section.current{border-bottom-color:#e5e5e5}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.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,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}.theme-filter.current,.theme-section.current{border-bottom-color:#04a4cc} \ No newline at end of file diff --git a/wp-admin/css/colors/light/colors.scss b/wp-admin/css/colors/light/colors.scss index ac1515c..ab4230b 100644 --- a/wp-admin/css/colors/light/colors.scss +++ b/wp-admin/css/colors/light/colors.scss @@ -1,4 +1,3 @@ -$scheme-name: "light"; $base-color: #e5e5e5; $icon-color: #999; $text-color: #333; @@ -18,10 +17,20 @@ $menu-submenu-background: #fff; $menu-collapse-text: #777; $menu-collapse-focus-icon: #555; -$dashboard-icon-background: $text-color; - @import "../_admin.scss"; +/* temporary fix for admin-bar hover color */ +#wpadminbar .ab-top-menu > li:hover > .ab-item, +#wpadminbar .ab-top-menu > li.hover > .ab-item, +#wpadminbar > #wp-toolbar > #wp-admin-bar-root-default li:hover span.ab-label, +#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary li.hover span.ab-label, +#wpadminbar .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, +#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, +#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { + color: $text-color; +} + /* Override the theme filter highlight color for this scheme */ .theme-section.current, .theme-filter.current { diff --git a/wp-admin/css/colors/midnight/colors-rtl.css b/wp-admin/css/colors/midnight/colors-rtl.css index ba5d2f0..933e5d5 100644 --- a/wp-admin/css/colors/midnight/colors-rtl.css +++ b/wp-admin/css/colors/midnight/colors-rtl.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #e14d43; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #e14d43; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #e14d43; - box-shadow: 0 0 0 1px #e14d43; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #e14d43; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #e14d43; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #e14d43; - border-color: #e14d43; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #d02c21; - color: #d02c21; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #e8776f; - color: #a4231a; - box-shadow: 0 0 0 1px #e8776f; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #e14d43; - border-color: #e14d43; + border-color: #d02c21 #ba281e #ba281e; color: #fff; + box-shadow: 0 1px 0 #ba281e; + text-shadow: 0 -1px 1px #ba281e, -1px 0 1px #ba281e, 0 1px 1px #ba281e, 1px 0 1px #ba281e; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e35950; - border-color: #df4136; + border-color: #ba281e; color: #fff; + box-shadow: 0 1px 0 #ba281e; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e14d43; + box-shadow: inset 0 1px 0 #d02c21, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #dd382d; - border-color: #dd382d; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #d02c21; + border-color: #ba281e; + box-shadow: inset 0 2px 0 #ba281e; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #e14d43; - color: #fff; - border-color: #ba281e; - box-shadow: inset 0 2px 5px -3px #200705; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1c8c7 !important; + background: #d92e23 !important; + border-color: #ba281e !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #ba281e !important; } -.wp-core-ui .button-group > .button.active { - border-color: #e14d43; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #ba281e !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #e14d43; - color: #e14d43; -} - -.wrap .page-title-action:hover { - color: #d02c21; - border-color: #d02c21; -} - -.wrap .page-title-action:focus { - border-color: #e8776f; - color: #a4231a; - box-shadow: 0 0 0 1px #e8776f; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #363b3f; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #26292c; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-left-color: #26292c; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #c3c4c5; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #e14d43; + color: #fff; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #464d52; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #69a8bb; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #5f97a8; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #464d52; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f1f2f3; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #e14d43; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-right-color: #e14d43; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #e14d43; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-right-color: #e14d43; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #e14d43; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #e14d43; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #e14d43; - border-style: solid; - box-shadow: 0 0 0 1px #e14d43; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #e14d43; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #e14d43; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #e14d43; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #e14d43; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #69a8bb; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #69a8bb; -} - -[class*="welcome-panel-icon"] { - background-color: #e14d43; -} diff --git a/wp-admin/css/colors/midnight/colors-rtl.min.css b/wp-admin/css/colors/midnight/colors-rtl.min.css index 5a6c4ec..cb3046a 100644 --- a/wp-admin/css/colors/midnight/colors-rtl.min.css +++ b/wp-admin/css/colors/midnight/colors-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#e14d43;box-shadow:0 0 0 1px #e14d43}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e14d43;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e14d43}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#e14d43;border-color:#e14d43}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#d02c21;color:#d02c21}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e14d43;border-color:#e14d43;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#df4136;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.wp-core-ui .button-primary:active{background:#dd382d;border-color:#dd382d;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e14d43;color:#fff;border-color:#ba281e;box-shadow:inset 0 2px 5px -3px #200705}.wp-core-ui .button-group>.button.active{border-color:#e14d43}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #e14d43;color:#e14d43}.wrap .page-title-action:hover{color:#d02c21;border-color:#d02c21}.wrap .page-title-action:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:#f1f2f3}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#e14d43}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#69a8bb}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#5f97a8}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#e14d43}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e14d43}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#e14d43}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#e14d43;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e14d43}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e14d43;border-style:solid;box-shadow:0 0 0 1px #e14d43;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e14d43}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e14d43;color:#0073aa}.welcome-panel{background-color:#69a8bb}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#69a8bb}[class*=welcome-panel-icon]{background-color:#e14d43} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,-1px 0 1px #ba281e,0 1px 1px #ba281e,1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:#f1f2f3}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43} \ No newline at end of file diff --git a/wp-admin/css/colors/midnight/colors.css b/wp-admin/css/colors/midnight/colors.css index c37856a..9aa3c57 100644 --- a/wp-admin/css/colors/midnight/colors.css +++ b/wp-admin/css/colors/midnight/colors.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #e14d43; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #e14d43; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #e14d43; - box-shadow: 0 0 0 1px #e14d43; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #e14d43; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #e14d43; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #e14d43; - border-color: #e14d43; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #d02c21; - color: #d02c21; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #e8776f; - color: #a4231a; - box-shadow: 0 0 0 1px #e8776f; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #e14d43; - border-color: #e14d43; + border-color: #d02c21 #ba281e #ba281e; color: #fff; + box-shadow: 0 1px 0 #ba281e; + text-shadow: 0 -1px 1px #ba281e, 1px 0 1px #ba281e, 0 1px 1px #ba281e, -1px 0 1px #ba281e; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #e35950; - border-color: #df4136; + border-color: #ba281e; color: #fff; + box-shadow: 0 1px 0 #ba281e; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #e14d43; + box-shadow: inset 0 1px 0 #d02c21, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #dd382d; - border-color: #dd382d; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #d02c21; + border-color: #ba281e; + box-shadow: inset 0 2px 0 #ba281e; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #e14d43; - color: #fff; - border-color: #ba281e; - box-shadow: inset 0 2px 5px -3px #200705; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1c8c7 !important; + background: #d92e23 !important; + border-color: #ba281e !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #ba281e !important; } -.wp-core-ui .button-group > .button.active { - border-color: #e14d43; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #ba281e !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #e14d43; - color: #e14d43; -} - -.wrap .page-title-action:hover { - color: #d02c21; - border-color: #d02c21; -} - -.wrap .page-title-action:focus { - border-color: #e8776f; - color: #a4231a; - box-shadow: 0 0 0 1px #e8776f; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #363b3f; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #26292c; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: #26292c; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #c3c4c5; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #e14d43; + color: #fff; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #464d52; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #69a8bb; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #5f97a8; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #464d52; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f1f2f3; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #e14d43; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-left-color: #e14d43; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #e14d43; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-left-color: #e14d43; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #e14d43; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #e14d43; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #e14d43; - border-style: solid; - box-shadow: 0 0 0 1px #e14d43; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #e14d43; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #e14d43; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #e14d43; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #e8776f, 0 0 2px 1px #e14d43; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #e14d43; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #69a8bb; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #69a8bb; -} - -[class*="welcome-panel-icon"] { - background-color: #e14d43; -} diff --git a/wp-admin/css/colors/midnight/colors.min.css b/wp-admin/css/colors/midnight/colors.min.css index 9d49441..2393a56 100644 --- a/wp-admin/css/colors/midnight/colors.min.css +++ b/wp-admin/css/colors/midnight/colors.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#e14d43;box-shadow:0 0 0 1px #e14d43}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#e14d43;color:#262a2e;box-shadow:inset 0 2px 5px -3px #e14d43}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#e14d43;border-color:#e14d43}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#d02c21;color:#d02c21}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#e14d43;border-color:#e14d43;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#df4136;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.wp-core-ui .button-primary:active{background:#dd382d;border-color:#dd382d;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#e14d43;color:#fff;border-color:#ba281e;box-shadow:inset 0 2px 5px -3px #200705}.wp-core-ui .button-group>.button.active{border-color:#e14d43}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #e14d43;color:#e14d43}.wrap .page-title-action:hover{color:#d02c21;border-color:#d02c21}.wrap .page-title-action:focus{border-color:#e8776f;color:#a4231a;box-shadow:0 0 0 1px #e8776f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:#f1f2f3}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#e14d43}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#69a8bb}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#5f97a8}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#e14d43}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#e14d43}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#e14d43}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#e14d43;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#e14d43}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#e14d43;border-style:solid;box-shadow:0 0 0 1px #e14d43;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#e14d43}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#e14d43}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e8776f,0 0 2px 1px #e14d43}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#e14d43;color:#0073aa}.welcome-panel{background-color:#69a8bb}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#69a8bb}[class*=welcome-panel-icon]{background-color:#e14d43} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,1px 0 1px #ba281e,0 1px 1px #ba281e,-1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button{color:#f1f2f3}#collapse-button:focus,#collapse-button:hover{color:#e14d43}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43} \ No newline at end of file diff --git a/wp-admin/css/colors/midnight/colors.scss b/wp-admin/css/colors/midnight/colors.scss index acb2cc2..591232b 100644 --- a/wp-admin/css/colors/midnight/colors.scss +++ b/wp-admin/css/colors/midnight/colors.scss @@ -1,9 +1,5 @@ -$scheme-name: "midnight"; $base-color: #363b3f; $highlight-color: #e14d43; $notification-color: #69a8bb; -$dashboard-accent-1: $notification-color; -$dashboard-icon-background: $highlight-color; - @import "../_admin.scss"; diff --git a/wp-admin/css/colors/modern/colors-rtl.css b/wp-admin/css/colors/modern/colors-rtl.css deleted file mode 100644 index 713d550..0000000 --- a/wp-admin/css/colors/modern/colors-rtl.css +++ /dev/null @@ -1,771 +0,0 @@ -/*! This file is auto-generated */ -/* - * Button mixin- creates a button effect with correct - * highlights/shadows, based on a base color. - */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ -body { - background: #f1f1f1; -} - -/* Links */ -a { - color: #3858e9; -} - -a:hover, a:active, a:focus { - color: #183ad6; -} - -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #3858e9; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { - color: #183ad6; -} - -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - -/* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); -} - -input[type=radio]:checked::before { - background: #7e8993; -} - -.wp-core-ui input[type="reset"]:hover, -.wp-core-ui input[type="reset"]:active { - color: #183ad6; -} - -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #3858e9; - box-shadow: 0 0 0 1px #3858e9; -} - -/* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #3858e9; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #3858e9; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #3858e9; - border-color: #3858e9; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #183ad6; - color: #183ad6; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #667fee; - color: #132ea8; - box-shadow: 0 0 0 1px #667fee; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - -.wp-core-ui .button-primary { - background: #3858e9; - border-color: #3858e9; - color: #fff; -} - -.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { - background: #4664eb; - border-color: #2a4ce7; - color: #fff; -} - -.wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; -} - -.wp-core-ui .button-primary:active { - background: #2145e6; - border-color: #2145e6; - color: #fff; -} - -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #3858e9; - color: #fff; - border-color: #1534bf; - box-shadow: inset 0 2px 5px -3px #03081f; -} - -.wp-core-ui .button-group > .button.active { - border-color: #3858e9; -} - -.wp-core-ui .wp-ui-primary { - color: #fff; - background-color: #1e1e1e; -} - -.wp-core-ui .wp-ui-text-primary { - color: #1e1e1e; -} - -.wp-core-ui .wp-ui-highlight { - color: #fff; - background-color: #3858e9; -} - -.wp-core-ui .wp-ui-text-highlight { - color: #3858e9; -} - -.wp-core-ui .wp-ui-notification { - color: #fff; - background-color: #3858e9; -} - -.wp-core-ui .wp-ui-text-notification { - color: #3858e9; -} - -.wp-core-ui .wp-ui-text-icon { - color: #f3f1f1; -} - -/* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #3858e9; - color: #3858e9; -} - -.wrap .page-title-action:hover { - color: #183ad6; - border-color: #183ad6; -} - -.wrap .page-title-action:focus { - border-color: #667fee; - color: #132ea8; - box-shadow: 0 0 0 1px #667fee; -} - -.view-switch a.current:before { - color: #1e1e1e; -} - -.view-switch a:hover:before { - color: #3858e9; -} - -/* Admin Menu */ -#adminmenuback, -#adminmenuwrap, -#adminmenu { - background: #1e1e1e; -} - -#adminmenu a { - color: #fff; -} - -#adminmenu div.wp-menu-image:before { - color: #f3f1f1; -} - -#adminmenu a:hover, -#adminmenu li.menu-top:hover, -#adminmenu li.opensub > a.menu-top, -#adminmenu li > a.menu-top:focus { - color: #fff; - background-color: #3858e9; -} - -#adminmenu li.menu-top:hover div.wp-menu-image:before, -#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { - color: #fff; -} - -/* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, -.nav-tab-active, -.nav-tab-active:hover { - background-color: #f1f1f1; - border-bottom-color: #f1f1f1; -} - -/* Admin Menu: submenu */ -#adminmenu .wp-submenu, -#adminmenu .wp-has-current-submenu .wp-submenu, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { - background: #0c0c0c; -} - -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { - border-left-color: #0c0c0c; -} - -#adminmenu .wp-submenu .wp-submenu-head { - color: #bcbcbc; -} - -#adminmenu .wp-submenu a, -#adminmenu .wp-has-current-submenu .wp-submenu a, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { - color: #bcbcbc; -} - -#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, -#adminmenu .wp-has-current-submenu .wp-submenu a:focus, -#adminmenu .wp-has-current-submenu .wp-submenu a:hover, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { - color: #33f078; -} - -/* Admin Menu: current */ -#adminmenu .wp-submenu li.current a, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { - color: #fff; -} - -#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { - color: #33f078; -} - -ul#adminmenu a.wp-has-current-submenu:after, -ul#adminmenu > li.current > a.current:after { - border-left-color: #f1f1f1; -} - -#adminmenu li.current a.menu-top, -#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, -#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, -.folded #adminmenu li.current.menu-top { - color: #fff; - background: #3858e9; -} - -#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, -#adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, -#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, -#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, -#adminmenu li:hover div.wp-menu-image:before, -#adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { - color: #fff; -} - -/* Admin Menu: bubble */ -#adminmenu .menu-counter, -#adminmenu .awaiting-mod, -#adminmenu .update-plugins { - color: #fff; - background: #3858e9; -} - -#adminmenu li.current a .awaiting-mod, -#adminmenu li a.wp-has-current-submenu .update-plugins, -#adminmenu li:hover a .awaiting-mod, -#adminmenu li.menu-top:hover > a .update-plugins { - color: #fff; - background: #0c0c0c; -} - -/* Admin Menu: collapse button */ -#collapse-button { - color: #f3f1f1; -} - -#collapse-button:hover, -#collapse-button:focus { - color: #33f078; -} - -/* Admin Bar */ -#wpadminbar { - color: #fff; - background: #1e1e1e; -} - -#wpadminbar .ab-item, -#wpadminbar a.ab-item, -#wpadminbar > #wp-toolbar span.ab-label, -#wpadminbar > #wp-toolbar span.noticon { - color: #fff; -} - -#wpadminbar .ab-icon, -#wpadminbar .ab-icon:before, -#wpadminbar .ab-item:before, -#wpadminbar .ab-item:after { - color: #f3f1f1; -} - -#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, -#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, -#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, -#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { - color: #33f078; - background: #0c0c0c; -} - -#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, -#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, -#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { - color: #33f078; -} - -#wpadminbar:not(.mobile) li:hover .ab-icon:before, -#wpadminbar:not(.mobile) li:hover .ab-item:before, -#wpadminbar:not(.mobile) li:hover .ab-item:after, -#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #33f078; -} - -/* Admin Bar: submenu */ -#wpadminbar .menupop .ab-sub-wrapper { - background: #0c0c0c; -} - -#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, -#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { - background: #303030; -} - -#wpadminbar .ab-submenu .ab-item, -#wpadminbar .quicklinks .menupop ul li a, -#wpadminbar .quicklinks .menupop.hover ul li a, -#wpadminbar.nojs .quicklinks .menupop:hover ul li a { - color: #bcbcbc; -} - -#wpadminbar .quicklinks li .blavatar, -#wpadminbar .menupop .menupop > .ab-item:before { - color: #f3f1f1; -} - -#wpadminbar .quicklinks .menupop ul li a:hover, -#wpadminbar .quicklinks .menupop ul li a:focus, -#wpadminbar .quicklinks .menupop ul li a:hover strong, -#wpadminbar .quicklinks .menupop ul li a:focus strong, -#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, -#wpadminbar .quicklinks .menupop.hover ul li a:hover, -#wpadminbar .quicklinks .menupop.hover ul li a:focus, -#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, -#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, -#wpadminbar li:hover .ab-icon:before, -#wpadminbar li:hover .ab-item:before, -#wpadminbar li a:focus .ab-icon:before, -#wpadminbar li .ab-item:focus:before, -#wpadminbar li .ab-item:focus .ab-icon:before, -#wpadminbar li.hover .ab-icon:before, -#wpadminbar li.hover .ab-item:before, -#wpadminbar li:hover #adminbarsearch:before, -#wpadminbar li #adminbarsearch.adminbar-focused:before { - color: #33f078; -} - -#wpadminbar .quicklinks li a:hover .blavatar, -#wpadminbar .quicklinks li a:focus .blavatar, -#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, -#wpadminbar .menupop .menupop > .ab-item:hover:before, -#wpadminbar.mobile .quicklinks .ab-icon:before, -#wpadminbar.mobile .quicklinks .ab-item:before { - color: #33f078; -} - -#wpadminbar.mobile .quicklinks .hover .ab-icon:before, -#wpadminbar.mobile .quicklinks .hover .ab-item:before { - color: #f3f1f1; -} - -/* Admin Bar: search */ -#wpadminbar #adminbarsearch:before { - color: #f3f1f1; -} - -#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { - color: #fff; - background: #303030; -} - -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #3858e9; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #324fd2; -} - -/* Admin Bar: my account */ -#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { - border-color: #303030; - background-color: #303030; -} - -#wpadminbar #wp-admin-bar-user-info .display-name { - color: #fff; -} - -#wpadminbar #wp-admin-bar-user-info a:hover .display-name { - color: #33f078; -} - -#wpadminbar #wp-admin-bar-user-info .username { - color: #bcbcbc; -} - -/* Pointers */ -.wp-pointer .wp-pointer-content h3 { - background-color: #3858e9; - border-color: #2145e6; -} - -.wp-pointer .wp-pointer-content h3:before { - color: #3858e9; -} - -.wp-pointer.wp-pointer-top .wp-pointer-arrow, -.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, -.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, -.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { - border-bottom-color: #3858e9; -} - -/* Media */ -.media-item .bar, -.media-progress-bar div { - background-color: #3858e9; -} - -.details.attachment { - box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #3858e9; -} - -.attachment.details .check { - background-color: #3858e9; - box-shadow: 0 0 0 1px #fff, 0 0 0 2px #3858e9; -} - -.media-selection .attachment.selection.details .thumbnail { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; -} - -/* Themes */ -.theme-browser .theme.active .theme-name, -.theme-browser .theme.add-new-theme a:hover:after, -.theme-browser .theme.add-new-theme a:focus:after { - background: #3858e9; -} - -.theme-browser .theme.add-new-theme a:hover span:after, -.theme-browser .theme.add-new-theme a:focus span:after { - color: #3858e9; -} - -.theme-section.current, -.theme-filter.current { - border-bottom-color: #1e1e1e; -} - -body.more-filters-opened .more-filters { - color: #fff; - background-color: #1e1e1e; -} - -body.more-filters-opened .more-filters:before { - color: #fff; -} - -body.more-filters-opened .more-filters:hover, -body.more-filters-opened .more-filters:focus { - background-color: #3858e9; - color: #fff; -} - -body.more-filters-opened .more-filters:hover:before, -body.more-filters-opened .more-filters:focus:before { - color: #fff; -} - -/* Widgets */ -.widgets-chooser li.widgets-chooser-selected { - background-color: #3858e9; - color: #fff; -} - -.widgets-chooser li.widgets-chooser-selected:before, -.widgets-chooser li.widgets-chooser-selected:focus:before { - color: #fff; -} - -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; -} - -/* Responsive Component */ -div#wp-responsive-toggle a:before { - color: #f3f1f1; -} - -.wp-responsive-open div#wp-responsive-toggle a { - border-color: transparent; - background: #3858e9; -} - -.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { - background: #0c0c0c; -} - -.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { - color: #f3f1f1; -} - -/* TinyMCE */ -.mce-container.mce-menu .mce-menu-item:hover, -.mce-container.mce-menu .mce-menu-item.mce-selected, -.mce-container.mce-menu .mce-menu-item:focus, -.mce-container.mce-menu .mce-menu-item-normal.mce-active, -.mce-container.mce-menu .mce-menu-item-preview.mce-active { - background: #3858e9; -} - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #3858e9; - border-right-color: #3858e9; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #3858e9; - border-top-color: #3858e9; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #3858e9; - border-right-color: #3858e9; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #3858e9; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #3858e9; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #3858e9; - color: #3858e9; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #3858e9; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #3858e9; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #3858e9; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #3858e9; - border-style: solid; - box-shadow: 0 0 0 1px #3858e9; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #3858e9; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #3858e9; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #3858e9; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #3858e9; - color: #3858e9; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #273fcc; -} - -.welcome-panel-header-image circle { - stroke: #627eff; - fill: #273fcc; -} - -[class*="welcome-panel-icon"] { - background-color: #1d2327; -} diff --git a/wp-admin/css/colors/modern/colors-rtl.min.css b/wp-admin/css/colors/modern/colors-rtl.min.css deleted file mode 100644 index 1aaa6a6..0000000 --- a/wp-admin/css/colors/modern/colors-rtl.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#3858e9}a:active,a:focus,a:hover{color:#183ad6}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#3858e9}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#183ad6}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#183ad6}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#3858e9;box-shadow:0 0 0 1px #3858e9}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#3858e9;color:#262a2e;box-shadow:inset 0 2px 5px -3px #3858e9}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#3858e9;border-color:#3858e9}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#183ad6;color:#183ad6}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#3858e9;border-color:#3858e9;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#4664eb;border-color:#2a4ce7;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.wp-core-ui .button-primary:active{background:#2145e6;border-color:#2145e6;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#3858e9;color:#fff;border-color:#1534bf;box-shadow:inset 0 2px 5px -3px #03081f}.wp-core-ui .button-group>.button.active{border-color:#3858e9}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#1e1e1e}.wp-core-ui .wp-ui-text-primary{color:#1e1e1e}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-highlight{color:#3858e9}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-notification{color:#3858e9}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #3858e9;color:#3858e9}.wrap .page-title-action:hover{color:#183ad6;border-color:#183ad6}.wrap .page-title-action:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.view-switch a.current:before{color:#1e1e1e}.view-switch a:hover:before{color:#3858e9}#adminmenu,#adminmenuback,#adminmenuwrap{background:#1e1e1e}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#3858e9}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#0c0c0c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#0c0c0c}#adminmenu .wp-submenu .wp-submenu-head{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#33f078}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#33f078}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#3858e9}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#3858e9}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#0c0c0c}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#33f078}#wpadminbar{color:#fff;background:#1e1e1e}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#33f078;background:#0c0c0c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#33f078}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#33f078}#wpadminbar .menupop .ab-sub-wrapper{background:#0c0c0c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#303030}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#bcbcbc}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#33f078}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#33f078}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#303030}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#3858e9}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#324fd2}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#303030;background-color:#303030}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#33f078}#wpadminbar #wp-admin-bar-user-info .username{color:#bcbcbc}.wp-pointer .wp-pointer-content h3{background-color:#3858e9;border-color:#2145e6}.wp-pointer .wp-pointer-content h3:before{color:#3858e9}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#3858e9}.media-item .bar,.media-progress-bar div{background-color:#3858e9}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #3858e9}.attachment.details .check{background-color:#3858e9;box-shadow:0 0 0 1px #fff,0 0 0 2px #3858e9}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#3858e9}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#3858e9}.theme-filter.current,.theme-section.current{border-bottom-color:#1e1e1e}body.more-filters-opened .more-filters{color:#fff;background-color:#1e1e1e}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#3858e9;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#3858e9;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#3858e9}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#0c0c0c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#3858e9}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#3858e9;border-right-color:#3858e9}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#3858e9;border-top-color:#3858e9}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#3858e9;border-right-color:#3858e9}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#3858e9}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#3858e9;color:#3858e9}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#3858e9}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#3858e9}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#3858e9;border-style:solid;box-shadow:0 0 0 1px #3858e9;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#3858e9}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#3858e9;color:#3858e9}.welcome-panel{background-color:#273fcc}.welcome-panel-header-image circle{stroke:#627eff;fill:#273fcc}[class*=welcome-panel-icon]{background-color:#1d2327} \ No newline at end of file diff --git a/wp-admin/css/colors/modern/colors.css b/wp-admin/css/colors/modern/colors.css deleted file mode 100644 index 6121efd..0000000 --- a/wp-admin/css/colors/modern/colors.css +++ /dev/null @@ -1,771 +0,0 @@ -/*! This file is auto-generated */ -/* - * Button mixin- creates a button effect with correct - * highlights/shadows, based on a base color. - */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ -body { - background: #f1f1f1; -} - -/* Links */ -a { - color: #3858e9; -} - -a:hover, a:active, a:focus { - color: #183ad6; -} - -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #3858e9; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { - color: #183ad6; -} - -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - -/* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); -} - -input[type=radio]:checked::before { - background: #7e8993; -} - -.wp-core-ui input[type="reset"]:hover, -.wp-core-ui input[type="reset"]:active { - color: #183ad6; -} - -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #3858e9; - box-shadow: 0 0 0 1px #3858e9; -} - -/* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #3858e9; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #3858e9; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #3858e9; - border-color: #3858e9; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #183ad6; - color: #183ad6; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #667fee; - color: #132ea8; - box-shadow: 0 0 0 1px #667fee; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - -.wp-core-ui .button-primary { - background: #3858e9; - border-color: #3858e9; - color: #fff; -} - -.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { - background: #4664eb; - border-color: #2a4ce7; - color: #fff; -} - -.wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; -} - -.wp-core-ui .button-primary:active { - background: #2145e6; - border-color: #2145e6; - color: #fff; -} - -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #3858e9; - color: #fff; - border-color: #1534bf; - box-shadow: inset 0 2px 5px -3px #03081f; -} - -.wp-core-ui .button-group > .button.active { - border-color: #3858e9; -} - -.wp-core-ui .wp-ui-primary { - color: #fff; - background-color: #1e1e1e; -} - -.wp-core-ui .wp-ui-text-primary { - color: #1e1e1e; -} - -.wp-core-ui .wp-ui-highlight { - color: #fff; - background-color: #3858e9; -} - -.wp-core-ui .wp-ui-text-highlight { - color: #3858e9; -} - -.wp-core-ui .wp-ui-notification { - color: #fff; - background-color: #3858e9; -} - -.wp-core-ui .wp-ui-text-notification { - color: #3858e9; -} - -.wp-core-ui .wp-ui-text-icon { - color: #f3f1f1; -} - -/* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #3858e9; - color: #3858e9; -} - -.wrap .page-title-action:hover { - color: #183ad6; - border-color: #183ad6; -} - -.wrap .page-title-action:focus { - border-color: #667fee; - color: #132ea8; - box-shadow: 0 0 0 1px #667fee; -} - -.view-switch a.current:before { - color: #1e1e1e; -} - -.view-switch a:hover:before { - color: #3858e9; -} - -/* Admin Menu */ -#adminmenuback, -#adminmenuwrap, -#adminmenu { - background: #1e1e1e; -} - -#adminmenu a { - color: #fff; -} - -#adminmenu div.wp-menu-image:before { - color: #f3f1f1; -} - -#adminmenu a:hover, -#adminmenu li.menu-top:hover, -#adminmenu li.opensub > a.menu-top, -#adminmenu li > a.menu-top:focus { - color: #fff; - background-color: #3858e9; -} - -#adminmenu li.menu-top:hover div.wp-menu-image:before, -#adminmenu li.opensub > a.menu-top div.wp-menu-image:before { - color: #fff; -} - -/* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, -.nav-tab-active, -.nav-tab-active:hover { - background-color: #f1f1f1; - border-bottom-color: #f1f1f1; -} - -/* Admin Menu: submenu */ -#adminmenu .wp-submenu, -#adminmenu .wp-has-current-submenu .wp-submenu, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu { - background: #0c0c0c; -} - -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { - border-right-color: #0c0c0c; -} - -#adminmenu .wp-submenu .wp-submenu-head { - color: #bcbcbc; -} - -#adminmenu .wp-submenu a, -#adminmenu .wp-has-current-submenu .wp-submenu a, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu a { - color: #bcbcbc; -} - -#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, -#adminmenu .wp-has-current-submenu .wp-submenu a:focus, -#adminmenu .wp-has-current-submenu .wp-submenu a:hover, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover { - color: #33f078; -} - -/* Admin Menu: current */ -#adminmenu .wp-submenu li.current a, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a { - color: #fff; -} - -#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover, -#adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, -#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus { - color: #33f078; -} - -ul#adminmenu a.wp-has-current-submenu:after, -ul#adminmenu > li.current > a.current:after { - border-right-color: #f1f1f1; -} - -#adminmenu li.current a.menu-top, -#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, -#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head, -.folded #adminmenu li.current.menu-top { - color: #fff; - background: #3858e9; -} - -#adminmenu li.wp-has-current-submenu div.wp-menu-image:before, -#adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, -#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, -#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, -#adminmenu li:hover div.wp-menu-image:before, -#adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { - color: #fff; -} - -/* Admin Menu: bubble */ -#adminmenu .menu-counter, -#adminmenu .awaiting-mod, -#adminmenu .update-plugins { - color: #fff; - background: #3858e9; -} - -#adminmenu li.current a .awaiting-mod, -#adminmenu li a.wp-has-current-submenu .update-plugins, -#adminmenu li:hover a .awaiting-mod, -#adminmenu li.menu-top:hover > a .update-plugins { - color: #fff; - background: #0c0c0c; -} - -/* Admin Menu: collapse button */ -#collapse-button { - color: #f3f1f1; -} - -#collapse-button:hover, -#collapse-button:focus { - color: #33f078; -} - -/* Admin Bar */ -#wpadminbar { - color: #fff; - background: #1e1e1e; -} - -#wpadminbar .ab-item, -#wpadminbar a.ab-item, -#wpadminbar > #wp-toolbar span.ab-label, -#wpadminbar > #wp-toolbar span.noticon { - color: #fff; -} - -#wpadminbar .ab-icon, -#wpadminbar .ab-icon:before, -#wpadminbar .ab-item:before, -#wpadminbar .ab-item:after { - color: #f3f1f1; -} - -#wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > li > .ab-item:focus, -#wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, -#wpadminbar.nojs .ab-top-menu > li.menupop:hover > .ab-item, -#wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { - color: #33f078; - background: #0c0c0c; -} - -#wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, -#wpadminbar:not(.mobile) > #wp-toolbar li.hover span.ab-label, -#wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { - color: #33f078; -} - -#wpadminbar:not(.mobile) li:hover .ab-icon:before, -#wpadminbar:not(.mobile) li:hover .ab-item:before, -#wpadminbar:not(.mobile) li:hover .ab-item:after, -#wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #33f078; -} - -/* Admin Bar: submenu */ -#wpadminbar .menupop .ab-sub-wrapper { - background: #0c0c0c; -} - -#wpadminbar .quicklinks .menupop ul.ab-sub-secondary, -#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { - background: #303030; -} - -#wpadminbar .ab-submenu .ab-item, -#wpadminbar .quicklinks .menupop ul li a, -#wpadminbar .quicklinks .menupop.hover ul li a, -#wpadminbar.nojs .quicklinks .menupop:hover ul li a { - color: #bcbcbc; -} - -#wpadminbar .quicklinks li .blavatar, -#wpadminbar .menupop .menupop > .ab-item:before { - color: #f3f1f1; -} - -#wpadminbar .quicklinks .menupop ul li a:hover, -#wpadminbar .quicklinks .menupop ul li a:focus, -#wpadminbar .quicklinks .menupop ul li a:hover strong, -#wpadminbar .quicklinks .menupop ul li a:focus strong, -#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a, -#wpadminbar .quicklinks .menupop.hover ul li a:hover, -#wpadminbar .quicklinks .menupop.hover ul li a:focus, -#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover, -#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus, -#wpadminbar li:hover .ab-icon:before, -#wpadminbar li:hover .ab-item:before, -#wpadminbar li a:focus .ab-icon:before, -#wpadminbar li .ab-item:focus:before, -#wpadminbar li .ab-item:focus .ab-icon:before, -#wpadminbar li.hover .ab-icon:before, -#wpadminbar li.hover .ab-item:before, -#wpadminbar li:hover #adminbarsearch:before, -#wpadminbar li #adminbarsearch.adminbar-focused:before { - color: #33f078; -} - -#wpadminbar .quicklinks li a:hover .blavatar, -#wpadminbar .quicklinks li a:focus .blavatar, -#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar, -#wpadminbar .menupop .menupop > .ab-item:hover:before, -#wpadminbar.mobile .quicklinks .ab-icon:before, -#wpadminbar.mobile .quicklinks .ab-item:before { - color: #33f078; -} - -#wpadminbar.mobile .quicklinks .hover .ab-icon:before, -#wpadminbar.mobile .quicklinks .hover .ab-item:before { - color: #f3f1f1; -} - -/* Admin Bar: search */ -#wpadminbar #adminbarsearch:before { - color: #f3f1f1; -} - -#wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { - color: #fff; - background: #303030; -} - -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #3858e9; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #324fd2; -} - -/* Admin Bar: my account */ -#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { - border-color: #303030; - background-color: #303030; -} - -#wpadminbar #wp-admin-bar-user-info .display-name { - color: #fff; -} - -#wpadminbar #wp-admin-bar-user-info a:hover .display-name { - color: #33f078; -} - -#wpadminbar #wp-admin-bar-user-info .username { - color: #bcbcbc; -} - -/* Pointers */ -.wp-pointer .wp-pointer-content h3 { - background-color: #3858e9; - border-color: #2145e6; -} - -.wp-pointer .wp-pointer-content h3:before { - color: #3858e9; -} - -.wp-pointer.wp-pointer-top .wp-pointer-arrow, -.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner, -.wp-pointer.wp-pointer-undefined .wp-pointer-arrow, -.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner { - border-bottom-color: #3858e9; -} - -/* Media */ -.media-item .bar, -.media-progress-bar div { - background-color: #3858e9; -} - -.details.attachment { - box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 7px #3858e9; -} - -.attachment.details .check { - background-color: #3858e9; - box-shadow: 0 0 0 1px #fff, 0 0 0 2px #3858e9; -} - -.media-selection .attachment.selection.details .thumbnail { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #3858e9; -} - -/* Themes */ -.theme-browser .theme.active .theme-name, -.theme-browser .theme.add-new-theme a:hover:after, -.theme-browser .theme.add-new-theme a:focus:after { - background: #3858e9; -} - -.theme-browser .theme.add-new-theme a:hover span:after, -.theme-browser .theme.add-new-theme a:focus span:after { - color: #3858e9; -} - -.theme-section.current, -.theme-filter.current { - border-bottom-color: #1e1e1e; -} - -body.more-filters-opened .more-filters { - color: #fff; - background-color: #1e1e1e; -} - -body.more-filters-opened .more-filters:before { - color: #fff; -} - -body.more-filters-opened .more-filters:hover, -body.more-filters-opened .more-filters:focus { - background-color: #3858e9; - color: #fff; -} - -body.more-filters-opened .more-filters:hover:before, -body.more-filters-opened .more-filters:focus:before { - color: #fff; -} - -/* Widgets */ -.widgets-chooser li.widgets-chooser-selected { - background-color: #3858e9; - color: #fff; -} - -.widgets-chooser li.widgets-chooser-selected:before, -.widgets-chooser li.widgets-chooser-selected:focus:before { - color: #fff; -} - -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; -} - -/* Responsive Component */ -div#wp-responsive-toggle a:before { - color: #f3f1f1; -} - -.wp-responsive-open div#wp-responsive-toggle a { - border-color: transparent; - background: #3858e9; -} - -.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a { - background: #0c0c0c; -} - -.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before { - color: #f3f1f1; -} - -/* TinyMCE */ -.mce-container.mce-menu .mce-menu-item:hover, -.mce-container.mce-menu .mce-menu-item.mce-selected, -.mce-container.mce-menu .mce-menu-item:focus, -.mce-container.mce-menu .mce-menu-item-normal.mce-active, -.mce-container.mce-menu .mce-menu-item-preview.mce-active { - background: #3858e9; -} - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #3858e9; - border-left-color: #3858e9; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #3858e9; - border-top-color: #3858e9; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #3858e9; - border-left-color: #3858e9; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #3858e9; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #3858e9; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #3858e9; - color: #3858e9; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #3858e9; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #3858e9; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #3858e9; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #3858e9; - border-style: solid; - box-shadow: 0 0 0 1px #3858e9; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #3858e9; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #3858e9; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #3858e9; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #667fee, 0 0 2px 1px #3858e9; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #3858e9; - color: #3858e9; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #273fcc; -} - -.welcome-panel-header-image circle { - stroke: #627eff; - fill: #273fcc; -} - -[class*="welcome-panel-icon"] { - background-color: #1d2327; -} diff --git a/wp-admin/css/colors/modern/colors.min.css b/wp-admin/css/colors/modern/colors.min.css deleted file mode 100644 index 959111b..0000000 --- a/wp-admin/css/colors/modern/colors.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#3858e9}a:active,a:focus,a:hover{color:#183ad6}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#3858e9}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#183ad6}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#183ad6}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#3858e9;box-shadow:0 0 0 1px #3858e9}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#3858e9;color:#262a2e;box-shadow:inset 0 2px 5px -3px #3858e9}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#3858e9;border-color:#3858e9}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#183ad6;color:#183ad6}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#3858e9;border-color:#3858e9;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#4664eb;border-color:#2a4ce7;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.wp-core-ui .button-primary:active{background:#2145e6;border-color:#2145e6;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#3858e9;color:#fff;border-color:#1534bf;box-shadow:inset 0 2px 5px -3px #03081f}.wp-core-ui .button-group>.button.active{border-color:#3858e9}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#1e1e1e}.wp-core-ui .wp-ui-text-primary{color:#1e1e1e}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-highlight{color:#3858e9}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#3858e9}.wp-core-ui .wp-ui-text-notification{color:#3858e9}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #3858e9;color:#3858e9}.wrap .page-title-action:hover{color:#183ad6;border-color:#183ad6}.wrap .page-title-action:focus{border-color:#667fee;color:#132ea8;box-shadow:0 0 0 1px #667fee}.view-switch a.current:before{color:#1e1e1e}.view-switch a:hover:before{color:#3858e9}#adminmenu,#adminmenuback,#adminmenuwrap{background:#1e1e1e}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#3858e9}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#0c0c0c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#0c0c0c}#adminmenu .wp-submenu .wp-submenu-head{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#bcbcbc}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#33f078}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#33f078}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#3858e9}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#3858e9}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#0c0c0c}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#33f078}#wpadminbar{color:#fff;background:#1e1e1e}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#33f078;background:#0c0c0c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#33f078}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#33f078}#wpadminbar .menupop .ab-sub-wrapper{background:#0c0c0c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#303030}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#bcbcbc}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#33f078}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#33f078}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#303030}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#3858e9}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#324fd2}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#303030;background-color:#303030}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#33f078}#wpadminbar #wp-admin-bar-user-info .username{color:#bcbcbc}.wp-pointer .wp-pointer-content h3{background-color:#3858e9;border-color:#2145e6}.wp-pointer .wp-pointer-content h3:before{color:#3858e9}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#3858e9}.media-item .bar,.media-progress-bar div{background-color:#3858e9}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #3858e9}.attachment.details .check{background-color:#3858e9;box-shadow:0 0 0 1px #fff,0 0 0 2px #3858e9}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #3858e9}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#3858e9}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#3858e9}.theme-filter.current,.theme-section.current{border-bottom-color:#1e1e1e}body.more-filters-opened .more-filters{color:#fff;background-color:#1e1e1e}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#3858e9;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#3858e9;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#3858e9}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#0c0c0c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#3858e9}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#3858e9;border-left-color:#3858e9}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#3858e9;border-top-color:#3858e9}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#3858e9;border-left-color:#3858e9}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#3858e9}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#3858e9;color:#3858e9}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#3858e9}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#3858e9}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#3858e9}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#3858e9;border-style:solid;box-shadow:0 0 0 1px #3858e9;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#3858e9}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#3858e9}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #667fee,0 0 2px 1px #3858e9}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#3858e9;color:#3858e9}.welcome-panel{background-color:#273fcc}.welcome-panel-header-image circle{stroke:#627eff;fill:#273fcc}[class*=welcome-panel-icon]{background-color:#1d2327} \ No newline at end of file diff --git a/wp-admin/css/colors/modern/colors.scss b/wp-admin/css/colors/modern/colors.scss deleted file mode 100644 index 35589df..0000000 --- a/wp-admin/css/colors/modern/colors.scss +++ /dev/null @@ -1,14 +0,0 @@ -$scheme-name: "modern"; -$base-color: #1e1e1e; -$highlight-color: #3858e9; -$menu-submenu-focus-text: #33f078; -$notification-color: $highlight-color; - -$link: $highlight-color; -$link-focus: darken($highlight-color, 10%); - -$dashboard-accent-1: #273fcc; -$dashboard-accent-2: #627eff; -$dashboard-icon-background: #1d2327; - -@import "../_admin.scss"; diff --git a/wp-admin/css/colors/ocean/colors-rtl.css b/wp-admin/css/colors/ocean/colors-rtl.css index f240e45..8ca2884 100644 --- a/wp-admin/css/colors/ocean/colors-rtl.css +++ b/wp-admin/css/colors/ocean/colors-rtl.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,46 +16,19 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #738e96; } -input[type=radio]:checked::before { +input[type=radio]:checked:before { background: #738e96; } @@ -68,99 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #9ebaa0; - box-shadow: 0 0 0 1px #9ebaa0; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #9ebaa0; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #9ebaa0; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - .wp-core-ui .button-primary { background: #9ebaa0; - border-color: #9ebaa0; + border-color: #80a583 #719a74 #719a74; color: #fff; + box-shadow: 0 1px 0 #719a74; + text-shadow: 0 -1px 1px #719a74, -1px 0 1px #719a74, 0 1px 1px #719a74, 1px 0 1px #719a74; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a7c0a9; - border-color: #95b497; + border-color: #719a74; color: #fff; + box-shadow: 0 1px 0 #719a74; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #9ebaa0; + box-shadow: inset 0 1px 0 #80a583, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #8faf91; - border-color: #8faf91; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #80a583; + border-color: #719a74; + box-shadow: inset 0 2px 0 #719a74; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #9ebaa0; - color: #fff; - border-color: #719a74; - box-shadow: inset 0 2px 5px -3px #253426; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #c7d1c8 !important; + background: #86a989 !important; + border-color: #719a74 !important; + text-shadow: none !important; } -.wp-core-ui .button-group > .button.active { - border-color: #9ebaa0; +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #719a74 !important; +} + +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #719a74 !important; } .wp-core-ui .wp-ui-primary { @@ -195,7 +110,10 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action:hover { +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { color: #fff; background-color: #738e96; } @@ -237,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -248,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #627c83; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-left-color: #627c83; } @@ -263,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #d5dde0; @@ -271,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -308,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -382,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #9ebaa0; + color: #fff; } /* Admin Bar: submenu */ @@ -452,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #879ea5; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #aa9d88; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #998d7a; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #879ea5; @@ -573,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f2fcff; @@ -604,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #9ebaa0; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-right-color: #9ebaa0; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #9ebaa0; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-right-color: #9ebaa0; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #9ebaa0; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #9ebaa0; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #9ebaa0; - border-style: solid; - box-shadow: 0 0 0 1px #9ebaa0; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #9ebaa0; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #9ebaa0; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #9ebaa0; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #9ebaa0; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #9ebaa0; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #9ebaa0; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/ocean/colors-rtl.min.css b/wp-admin/css/colors/ocean/colors-rtl.min.css index 05edd9c..71871d3 100644 --- a/wp-admin/css/colors/ocean/colors-rtl.min.css +++ b/wp-admin/css/colors/ocean/colors-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#9ebaa0;box-shadow:0 0 0 1px #9ebaa0}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#9ebaa0;color:#262a2e;box-shadow:inset 0 2px 5px -3px #9ebaa0}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#9ebaa0;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#95b497;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.wp-core-ui .button-primary:active{background:#8faf91;border-color:#8faf91;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#9ebaa0;color:#fff;border-color:#719a74;box-shadow:inset 0 2px 5px -3px #253426}.wp-core-ui .button-group>.button.active{border-color:#9ebaa0}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#9ebaa0}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#aa9d88}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#998d7a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#9ebaa0}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#9ebaa0}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#9ebaa0}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#9ebaa0;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#9ebaa0}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#9ebaa0;border-style:solid;box-shadow:0 0 0 1px #9ebaa0;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#9ebaa0}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#9ebaa0;color:#0073aa}.welcome-panel{background-color:#9ebaa0}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#9ebaa0}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,-1px 0 1px #719a74,0 1px 1px #719a74,1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0} \ No newline at end of file diff --git a/wp-admin/css/colors/ocean/colors.css b/wp-admin/css/colors/ocean/colors.css index 4b660fa..2046a95 100644 --- a/wp-admin/css/colors/ocean/colors.css +++ b/wp-admin/css/colors/ocean/colors.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,46 +16,19 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #738e96; } -input[type=radio]:checked::before { +input[type=radio]:checked:before { background: #738e96; } @@ -68,99 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #9ebaa0; - box-shadow: 0 0 0 1px #9ebaa0; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #9ebaa0; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #9ebaa0; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - .wp-core-ui .button-primary { background: #9ebaa0; - border-color: #9ebaa0; + border-color: #80a583 #719a74 #719a74; color: #fff; + box-shadow: 0 1px 0 #719a74; + text-shadow: 0 -1px 1px #719a74, 1px 0 1px #719a74, 0 1px 1px #719a74, -1px 0 1px #719a74; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #a7c0a9; - border-color: #95b497; + border-color: #719a74; color: #fff; + box-shadow: 0 1px 0 #719a74; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #9ebaa0; + box-shadow: inset 0 1px 0 #80a583, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #8faf91; - border-color: #8faf91; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #80a583; + border-color: #719a74; + box-shadow: inset 0 2px 0 #719a74; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #9ebaa0; - color: #fff; - border-color: #719a74; - box-shadow: inset 0 2px 5px -3px #253426; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #c7d1c8 !important; + background: #86a989 !important; + border-color: #719a74 !important; + text-shadow: none !important; } -.wp-core-ui .button-group > .button.active { - border-color: #9ebaa0; +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #719a74 !important; +} + +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #719a74 !important; } .wp-core-ui .wp-ui-primary { @@ -195,7 +110,10 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action:hover { +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { color: #fff; background-color: #738e96; } @@ -237,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -248,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #627c83; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: #627c83; } @@ -263,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #d5dde0; @@ -271,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -308,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -382,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #9ebaa0; + color: #fff; } /* Admin Bar: submenu */ @@ -452,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #879ea5; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #aa9d88; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #998d7a; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #879ea5; @@ -573,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f2fcff; @@ -604,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #9ebaa0; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-left-color: #9ebaa0; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #9ebaa0; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-left-color: #9ebaa0; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #9ebaa0; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #9ebaa0; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #9ebaa0; - border-style: solid; - box-shadow: 0 0 0 1px #9ebaa0; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #9ebaa0; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #9ebaa0; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #9ebaa0; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #bccfbd, 0 0 2px 1px #9ebaa0; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #9ebaa0; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #9ebaa0; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #9ebaa0; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/ocean/colors.min.css b/wp-admin/css/colors/ocean/colors.min.css index ef504e6..a381100 100644 --- a/wp-admin/css/colors/ocean/colors.min.css +++ b/wp-admin/css/colors/ocean/colors.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%23738e96%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#9ebaa0;box-shadow:0 0 0 1px #9ebaa0}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#9ebaa0;color:#262a2e;box-shadow:inset 0 2px 5px -3px #9ebaa0}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#9ebaa0;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#95b497;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.wp-core-ui .button-primary:active{background:#8faf91;border-color:#8faf91;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#9ebaa0;color:#fff;border-color:#719a74;box-shadow:inset 0 2px 5px -3px #253426}.wp-core-ui .button-group>.button.active{border-color:#9ebaa0}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#9ebaa0}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#aa9d88}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#998d7a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#9ebaa0}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#9ebaa0}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#9ebaa0}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#9ebaa0;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#9ebaa0}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#9ebaa0;border-style:solid;box-shadow:0 0 0 1px #9ebaa0;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#9ebaa0}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#9ebaa0}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #bccfbd,0 0 2px 1px #9ebaa0}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#9ebaa0;color:#0073aa}.welcome-panel{background-color:#9ebaa0}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#9ebaa0}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,1px 0 1px #719a74,0 1px 1px #719a74,-1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button{color:#f2fcff}#collapse-button:focus,#collapse-button:hover{color:#9ebaa0}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0} \ No newline at end of file diff --git a/wp-admin/css/colors/ocean/colors.scss b/wp-admin/css/colors/ocean/colors.scss index 027c27d..d52339c 100644 --- a/wp-admin/css/colors/ocean/colors.scss +++ b/wp-admin/css/colors/ocean/colors.scss @@ -1,9 +1,7 @@ -$scheme-name: "ocean"; $base-color: #738e96; $icon-color: #f2fcff; $highlight-color: #9ebaa0; $notification-color: #aa9d88; -$low-contrast-theme: "true"; $form-checked: $base-color; diff --git a/wp-admin/css/colors/sunrise/colors-rtl.css b/wp-admin/css/colors/sunrise/colors-rtl.css index d832e29..7e227e0 100644 --- a/wp-admin/css/colors/sunrise/colors-rtl.css +++ b/wp-admin/css/colors/sunrise/colors-rtl.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #dd823b; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #dd823b; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #dd823b; - box-shadow: 0 0 0 1px #dd823b; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #dd823b; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #dd823b; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #dd823b; - border-color: #dd823b; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #c36922; - color: #c36922; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #e59e66; - color: #98511a; - box-shadow: 0 0 0 1px #e59e66; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #dd823b; - border-color: #dd823b; + border-color: #c36922 #ad5d1e #ad5d1e; color: #fff; + box-shadow: 0 1px 0 #ad5d1e; + text-shadow: 0 -1px 1px #ad5d1e, -1px 0 1px #ad5d1e, 0 1px 1px #ad5d1e, 1px 0 1px #ad5d1e; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #df8a48; - border-color: #db7a2e; + border-color: #ad5d1e; color: #fff; + box-shadow: 0 1px 0 #ad5d1e; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #dd823b; + box-shadow: inset 0 1px 0 #c36922, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #d97426; - border-color: #d97426; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #c36922; + border-color: #ad5d1e; + box-shadow: inset 0 2px 0 #ad5d1e; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #dd823b; - color: #fff; - border-color: #ad5d1e; - box-shadow: inset 0 2px 5px -3px #150b04; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1cbc7 !important; + background: #cc6d23 !important; + border-color: #ad5d1e !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #ad5d1e !important; } -.wp-core-ui .button-group > .button.active { - border-color: #dd823b; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #ad5d1e !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #dd823b; - color: #dd823b; -} - -.wrap .page-title-action:hover { - color: #c36922; - border-color: #c36922; -} - -.wrap .page-title-action:focus { - border-color: #e59e66; - color: #98511a; - box-shadow: 0 0 0 1px #e59e66; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #cf4944; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #be3631; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-left-color: #be3631; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #f1c8c7; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #f7e3d3; + color: #fff; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #d66560; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #ccaf0b; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #b89e0a; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #d66560; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f1f1; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #dd823b; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-right-color: #dd823b; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #dd823b; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-right-color: #dd823b; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #dd823b; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #dd823b; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #dd823b; - border-style: solid; - box-shadow: 0 0 0 1px #dd823b; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #dd823b; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #dd823b; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #dd823b; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #dd823b; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #dd823b; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #dd823b; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/sunrise/colors-rtl.min.css b/wp-admin/css/colors/sunrise/colors-rtl.min.css index 59643a8..2c28b2a 100644 --- a/wp-admin/css/colors/sunrise/colors-rtl.min.css +++ b/wp-admin/css/colors/sunrise/colors-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#dd823b;box-shadow:0 0 0 1px #dd823b}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#dd823b;color:#262a2e;box-shadow:inset 0 2px 5px -3px #dd823b}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#dd823b;border-color:#dd823b}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#c36922;color:#c36922}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#dd823b;border-color:#dd823b;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#db7a2e;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.wp-core-ui .button-primary:active{background:#d97426;border-color:#d97426;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#dd823b;color:#fff;border-color:#ad5d1e;box-shadow:inset 0 2px 5px -3px #150b04}.wp-core-ui .button-group>.button.active{border-color:#dd823b}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #dd823b;color:#dd823b}.wrap .page-title-action:hover{color:#c36922;border-color:#c36922}.wrap .page-title-action:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-left-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#f7e3d3}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#ccaf0b}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#b89e0a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-right-color:#dd823b}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#dd823b}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-right-color:#dd823b}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-right-color:#dd823b;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#dd823b}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#dd823b;border-style:solid;box-shadow:0 0 0 1px #dd823b;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#dd823b}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#dd823b;color:#0073aa}.welcome-panel{background-color:#dd823b}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#dd823b}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,-1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b} \ No newline at end of file diff --git a/wp-admin/css/colors/sunrise/colors.css b/wp-admin/css/colors/sunrise/colors.css index 4c56365..a0d483b 100644 --- a/wp-admin/css/colors/sunrise/colors.css +++ b/wp-admin/css/colors/sunrise/colors.css @@ -1,12 +1,8 @@ /*! This file is auto-generated */ /* - * Button mixin- creates a button effect with correct + * Button mixin- creates 3d-ish button effect with correct * highlights/shadows, based on a base color. */ -/** - * This function name uses British English to maintain backward compatibility, as developers - * may use the function in their own admin CSS files. See #56811. - */ body { background: #f1f1f1; } @@ -20,47 +16,20 @@ a:hover, a:active, a:focus { color: #0096dd; } -#post-body .misc-pub-post-status:before, -#post-body #visibility:before, -.curtime #timestamp:before, -#post-body .misc-pub-revisions:before, -span.wp-media-buttons-icon:before { - color: currentColor; -} - -.wp-core-ui .button-link { - color: #0073aa; -} - -.wp-core-ui .button-link:hover, .wp-core-ui .button-link:active, .wp-core-ui .button-link:focus { +#media-upload a.del-link:hover, +div.dashboard-widget-submit input:hover, +.subsubsub a:hover, +.subsubsub a.current:hover { color: #0096dd; } -.media-modal .delete-attachment, -.media-modal .trash-attachment, -.media-modal .untrash-attachment, -.wp-core-ui .button-link-delete { - color: #a00; -} - -.media-modal .delete-attachment:hover, -.media-modal .trash-attachment:hover, -.media-modal .untrash-attachment:hover, -.media-modal .delete-attachment:focus, -.media-modal .trash-attachment:focus, -.media-modal .untrash-attachment:focus, -.wp-core-ui .button-link-delete:hover, -.wp-core-ui .button-link-delete:focus { - color: #dc3232; -} - /* Forms */ -input[type=checkbox]:checked::before { - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E"); +input[type=checkbox]:checked:before { + color: #dd823b; } -input[type=radio]:checked::before { - background: #7e8993; +input[type=radio]:checked:before { + background: #dd823b; } .wp-core-ui input[type="reset"]:hover, @@ -68,124 +37,45 @@ input[type=radio]:checked::before { color: #0096dd; } -input[type="text"]:focus, -input[type="password"]:focus, -input[type="color"]:focus, -input[type="date"]:focus, -input[type="datetime"]:focus, -input[type="datetime-local"]:focus, -input[type="email"]:focus, -input[type="month"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="tel"]:focus, -input[type="text"]:focus, -input[type="time"]:focus, -input[type="url"]:focus, -input[type="week"]:focus, -input[type="checkbox"]:focus, -input[type="radio"]:focus, -select:focus, -textarea:focus { - border-color: #dd823b; - box-shadow: 0 0 0 1px #dd823b; -} - /* Core UI */ -.wp-core-ui .button { - border-color: #7e8993; - color: #32373c; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #717c87; - color: #262a2e; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus { - border-color: #7e8993; - color: #262a2e; - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button:active { - border-color: #7e8993; - color: #262a2e; - box-shadow: none; -} - -.wp-core-ui .button.active, -.wp-core-ui .button.active:focus, -.wp-core-ui .button.active:hover { - border-color: #dd823b; - color: #262a2e; - box-shadow: inset 0 2px 5px -3px #dd823b; -} - -.wp-core-ui .button.active:focus { - box-shadow: 0 0 0 1px #32373c; -} - -.wp-core-ui .button, -.wp-core-ui .button-secondary { - color: #dd823b; - border-color: #dd823b; -} - -.wp-core-ui .button.hover, -.wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover { - border-color: #c36922; - color: #c36922; -} - -.wp-core-ui .button.focus, -.wp-core-ui .button:focus, -.wp-core-ui .button-secondary:focus { - border-color: #e59e66; - color: #98511a; - box-shadow: 0 0 0 1px #e59e66; -} - -.wp-core-ui .button-primary:hover { - color: #fff; -} - .wp-core-ui .button-primary { background: #dd823b; - border-color: #dd823b; + border-color: #c36922 #ad5d1e #ad5d1e; color: #fff; + box-shadow: 0 1px 0 #ad5d1e; + text-shadow: 0 -1px 1px #ad5d1e, 1px 0 1px #ad5d1e, 0 1px 1px #ad5d1e, -1px 0 1px #ad5d1e; } .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus { background: #df8a48; - border-color: #db7a2e; + border-color: #ad5d1e; color: #fff; + box-shadow: 0 1px 0 #ad5d1e; } .wp-core-ui .button-primary:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #dd823b; + box-shadow: inset 0 1px 0 #c36922, 0 0 2px 1px #33b3db; } -.wp-core-ui .button-primary:active { - background: #d97426; - border-color: #d97426; - color: #fff; +.wp-core-ui .button-primary:active, .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { + background: #c36922; + border-color: #ad5d1e; + box-shadow: inset 0 2px 0 #ad5d1e; } -.wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary.active:hover { - background: #dd823b; - color: #fff; - border-color: #ad5d1e; - box-shadow: inset 0 2px 5px -3px #150b04; +.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled { + color: #d1cbc7 !important; + background: #cc6d23 !important; + border-color: #ad5d1e !important; + text-shadow: none !important; +} + +.wp-core-ui .button-primary.button-hero { + box-shadow: 0 2px 0 #ad5d1e !important; } -.wp-core-ui .button-group > .button.active { - border-color: #dd823b; +.wp-core-ui .button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #ad5d1e !important; } .wp-core-ui .wp-ui-primary { @@ -220,21 +110,12 @@ textarea:focus { } /* List tables */ -.wrap .page-title-action, -.wrap .page-title-action:active { - border: 1px solid #dd823b; - color: #dd823b; -} - -.wrap .page-title-action:hover { - color: #c36922; - border-color: #c36922; -} - -.wrap .page-title-action:focus { - border-color: #e59e66; - color: #98511a; - box-shadow: 0 0 0 1px #e59e66; +.wrap .add-new-h2:hover, +.wrap .page-title-action:hover, +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + color: #fff; + background-color: #cf4944; } .view-switch a.current:before { @@ -274,7 +155,7 @@ textarea:focus { } /* Active tabs use a bottom border color that matches the page background color. */ -.about-wrap .nav-tab-active, +.about-wrap h2 .nav-tab-active, .nav-tab-active, .nav-tab-active:hover { background-color: #f1f1f1; @@ -285,12 +166,12 @@ textarea:focus { #adminmenu .wp-submenu, #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu .wp-has-current-submenu.opensub .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu { background: #be3631; } -#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after, -#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after { +#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after { border-right-color: #be3631; } @@ -300,6 +181,7 @@ textarea:focus { #adminmenu .wp-submenu a, #adminmenu .wp-has-current-submenu .wp-submenu a, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a { color: #f1c8c7; @@ -308,6 +190,8 @@ textarea:focus { #adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover, #adminmenu .wp-has-current-submenu .wp-submenu a:focus, #adminmenu .wp-has-current-submenu .wp-submenu a:hover, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus, +.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus, #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, @@ -345,17 +229,16 @@ ul#adminmenu > li.current > a.current:after { #adminmenu li.wp-has-current-submenu div.wp-menu-image:before, #adminmenu a.current:hover div.wp-menu-image:before, -#adminmenu li.current div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before, #adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before, #adminmenu li:hover div.wp-menu-image:before, #adminmenu li a:focus div.wp-menu-image:before, -#adminmenu li.opensub div.wp-menu-image:before { +#adminmenu li.opensub div.wp-menu-image:before, +.ie8 #adminmenu li.opensub div.wp-menu-image:before { color: #fff; } /* Admin Menu: bubble */ -#adminmenu .menu-counter, #adminmenu .awaiting-mod, #adminmenu .update-plugins { color: #fff; @@ -419,7 +302,7 @@ ul#adminmenu > li.current > a.current:after { #wpadminbar:not(.mobile) li:hover .ab-item:before, #wpadminbar:not(.mobile) li:hover .ab-item:after, #wpadminbar:not(.mobile) li:hover #adminbarsearch:before { - color: #f7e3d3; + color: #fff; } /* Admin Bar: submenu */ @@ -489,25 +372,6 @@ ul#adminmenu > li.current > a.current:after { background: #d66560; } -/* Admin Bar: recovery mode */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #ccaf0b; -} - -#wpadminbar #wp-admin-bar-recovery-mode .ab-item, -#wpadminbar #wp-admin-bar-recovery-mode a.ab-item { - color: #fff; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover > .ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #b89e0a; -} - /* Admin Bar: my account */ #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #d66560; @@ -610,11 +474,6 @@ body.more-filters-opened .more-filters:focus:before { color: #fff; } -/* Nav Menus */ -.nav-menus-php .item-edit:focus:before { - box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; -} - /* Responsive Component */ div#wp-responsive-toggle a:before { color: #f3f1f1; @@ -641,131 +500,3 @@ div#wp-responsive-toggle a:before { .mce-container.mce-menu .mce-menu-item-preview.mce-active { background: #dd823b; } - -/* Customizer */ -.wp-core-ui #customize-controls .control-section:hover > .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:hover, -.wp-core-ui #customize-controls .control-section.open .accordion-section-title, -.wp-core-ui #customize-controls .control-section .accordion-section-title:focus { - color: #0073aa; - border-left-color: #dd823b; -} - -.wp-core-ui .customize-controls-close:focus, -.wp-core-ui .customize-controls-close:hover, -.wp-core-ui .customize-controls-preview-toggle:focus, -.wp-core-ui .customize-controls-preview-toggle:hover { - color: #0073aa; - border-top-color: #dd823b; -} - -.wp-core-ui .customize-panel-back:hover, -.wp-core-ui .customize-panel-back:focus, -.wp-core-ui .customize-section-back:hover, -.wp-core-ui .customize-section-back:focus { - color: #0073aa; - border-left-color: #dd823b; -} - -.wp-core-ui .customize-screen-options-toggle:hover, -.wp-core-ui .customize-screen-options-toggle:active, -.wp-core-ui .customize-screen-options-toggle:focus, -.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, -.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #0073aa; -} - -.wp-core-ui .customize-screen-options-toggle:focus:before, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before, -.wp-core-ui.wp-customizer button:focus .toggle-indicator:before, -.wp-core-ui .menu-item-bar .item-delete:focus:before, -.wp-core-ui #available-menu-items .item-add:focus:before, -.wp-core-ui #customize-save-button-wrapper .save:focus, -.wp-core-ui #publish-settings:focus { - box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; -} - -.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus, -.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover { - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title:focus, -.wp-core-ui .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #dd823b; - color: #0073aa; -} - -.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after { - background: #dd823b; -} - -.wp-core-ui .control-panel-themes .customize-themes-section-title.selected { - color: #0073aa; -} - -.wp-core-ui #customize-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after, -.wp-core-ui #customize-outer-theme-controls .control-section:hover > .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, -.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after, -.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #0073aa; -} - -.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus { - background-color: #fbfbfc; - border-color: #dd823b; - border-style: solid; - box-shadow: 0 0 0 1px #dd823b; - outline: 2px solid transparent; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:focus, -.wp-core-ui .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #dd823b; -} - -.wp-core-ui .wp-full-overlay-footer .devices button:hover:before, -.wp-core-ui .wp-full-overlay-footer .devices button:focus:before { - color: #dd823b; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #dd823b; -} - -.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, -.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: 0 0 0 1px #e59e66, 0 0 2px 1px #dd823b; -} - -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus, -.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover { - border-bottom-color: #dd823b; - color: #0073aa; -} - -/* Welcome Panel */ -.welcome-panel { - background-color: #dd823b; -} - -.welcome-panel-header-image circle { - stroke: rgba(255, 255, 255, 0.5); - fill: #dd823b; -} - -[class*="welcome-panel-icon"] { - background-color: rgba(255, 255, 255, 0.5); -} diff --git a/wp-admin/css/colors/sunrise/colors.min.css b/wp-admin/css/colors/sunrise/colors.min.css index 2a56a21..c5d093f 100644 --- a/wp-admin/css/colors/sunrise/colors.min.css +++ b/wp-admin/css/colors/sunrise/colors.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:currentColor}.wp-core-ui .button-link{color:#0073aa}.wp-core-ui .button-link:active,.wp-core-ui .button-link:focus,.wp-core-ui .button-link:hover{color:#0096dd}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment,.wp-core-ui .button-link-delete{color:#a00}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover,.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%237e8993%27%2F%3E%3C%2Fsvg%3E")}input[type=radio]:checked::before{background:#7e8993}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#dd823b;box-shadow:0 0 0 1px #dd823b}.wp-core-ui .button{border-color:#7e8993;color:#32373c}.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{border-color:#717c87;color:#262a2e}.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#7e8993;color:#262a2e;box-shadow:0 0 0 1px #32373c}.wp-core-ui .button:active{border-color:#7e8993;color:#262a2e;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:focus,.wp-core-ui .button.active:hover{border-color:#dd823b;color:#262a2e;box-shadow:inset 0 2px 5px -3px #dd823b}.wp-core-ui .button.active:focus{box-shadow:0 0 0 1px #32373c}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#dd823b;border-color:#dd823b}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{border-color:#c36922;color:#c36922}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.wp-core-ui .button-primary:hover{color:#fff}.wp-core-ui .button-primary{background:#dd823b;border-color:#dd823b;color:#fff}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#db7a2e;color:#fff}.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.wp-core-ui .button-primary:active{background:#d97426;border-color:#d97426;color:#fff}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover{background:#dd823b;color:#fff;border-color:#ad5d1e;box-shadow:inset 0 2px 5px -3px #150b04}.wp-core-ui .button-group>.button.active{border-color:#dd823b}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.wrap .page-title-action,.wrap .page-title-action:active{border:1px solid #dd823b;color:#dd823b}.wrap .page-title-action:hover{color:#c36922;border-color:#c36922}.wrap .page-title-action:focus{border-color:#e59e66;color:#98511a;box-shadow:0 0 0 1px #e59e66}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after,#adminmenu li.wp-has-submenu.wp-not-current-submenu:focus-within:after{border-right-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.current div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .menu-counter,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#f7e3d3}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#ccaf0b}#wpadminbar #wp-admin-bar-recovery-mode .ab-item,#wpadminbar #wp-admin-bar-recovery-mode a.ab-item{color:#fff}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#b89e0a}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}.wp-core-ui #customize-controls .control-section .accordion-section-title:focus,.wp-core-ui #customize-controls .control-section .accordion-section-title:hover,.wp-core-ui #customize-controls .control-section.open .accordion-section-title,.wp-core-ui #customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;border-left-color:#dd823b}.wp-core-ui .customize-controls-close:focus,.wp-core-ui .customize-controls-close:hover,.wp-core-ui .customize-controls-preview-toggle:focus,.wp-core-ui .customize-controls-preview-toggle:hover{color:#0073aa;border-top-color:#dd823b}.wp-core-ui .customize-panel-back:focus,.wp-core-ui .customize-panel-back:hover,.wp-core-ui .customize-section-back:focus,.wp-core-ui .customize-section-back:hover{color:#0073aa;border-left-color:#dd823b}.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.wp-core-ui .active-menu-screen-options .customize-screen-options-toggle,.wp-core-ui .customize-screen-options-toggle:active,.wp-core-ui .customize-screen-options-toggle:focus,.wp-core-ui .customize-screen-options-toggle:hover{color:#0073aa}.wp-core-ui #available-menu-items .item-add:focus:before,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus:before,.wp-core-ui #customize-save-button-wrapper .save:focus,.wp-core-ui #publish-settings:focus,.wp-core-ui .customize-screen-options-toggle:focus:before,.wp-core-ui .menu-item-bar .item-delete:focus:before,.wp-core-ui.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui #customize-controls .customize-info .customize-help-toggle:focus,.wp-core-ui #customize-controls .customize-info .customize-help-toggle:hover,.wp-core-ui #customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}.wp-core-ui .control-panel-themes .customize-themes-section-title:focus,.wp-core-ui .control-panel-themes .customize-themes-section-title:hover{border-left-color:#dd823b;color:#0073aa}.wp-core-ui .control-panel-themes .theme-section .customize-themes-section-title.selected:after{background:#dd823b}.wp-core-ui .control-panel-themes .customize-themes-section-title.selected{color:#0073aa}.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-outer-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-outer-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:focus:after,.wp-core-ui #customize-theme-controls .control-section .accordion-section-title:hover:after,.wp-core-ui #customize-theme-controls .control-section.open .accordion-section-title:after,.wp-core-ui #customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}.wp-core-ui .customize-control .attachment-media-view .button-add-media:focus{background-color:#fbfbfc;border-color:#dd823b;border-style:solid;box-shadow:0 0 0 1px #dd823b;outline:2px solid transparent}.wp-core-ui .wp-full-overlay-footer .devices button.active:hover,.wp-core-ui .wp-full-overlay-footer .devices button:focus{border-bottom-color:#dd823b}.wp-core-ui .wp-full-overlay-footer .devices button:focus:before,.wp-core-ui .wp-full-overlay-footer .devices button:hover:before{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#dd823b}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #e59e66,0 0 2px 1px #dd823b}.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .close:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .left:hover,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:focus,.wp-core-ui.wp-customizer .theme-overlay .theme-header .right:hover{border-bottom-color:#dd823b;color:#0073aa}.welcome-panel{background-color:#dd823b}.welcome-panel-header-image circle{stroke:rgba(255,255,255,0.5);fill:#dd823b}[class*=welcome-panel-icon]{background-color:rgba(255,255,255,.5)} \ No newline at end of file +body{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,-1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button{color:#f3f1f1}#collapse-button:focus,#collapse-button:hover{color:#f7e3d3}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b} \ No newline at end of file diff --git a/wp-admin/css/colors/sunrise/colors.scss b/wp-admin/css/colors/sunrise/colors.scss index 75d74d8..5dd8d82 100644 --- a/wp-admin/css/colors/sunrise/colors.scss +++ b/wp-admin/css/colors/sunrise/colors.scss @@ -1,4 +1,3 @@ -$scheme-name: "sunrise"; $base-color: #cf4944; $highlight-color: #dd823b; $notification-color: #ccaf0b; diff --git a/wp-admin/css/common-rtl.css b/wp-admin/css/common-rtl.css index bb61781..524d480 100644 --- a/wp-admin/css/common-rtl.css +++ b/wp-admin/css/common-rtl.css @@ -26,7 +26,7 @@ padding-bottom: 65px; float: right; width: 100%; - overflow: visible; + overflow: visible !important; } /* inner 2 column liquid layout */ @@ -123,6 +123,7 @@ .ui-helper-hidden-accessible { border: 0; clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; @@ -133,36 +134,27 @@ word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ } -.button .screen-reader-text { - height: auto; /* Fixes a Safari+VoiceOver bug, see ticket #42006 */ -} - .screen-reader-shortcut { position: absolute; top: -1000em; +} + +.screen-reader-shortcut:focus { right: 6px; + top: -25px; height: auto; width: auto; display: block; font-size: 14px; font-weight: 600; padding: 15px 23px 14px; - /* Background and color set to prevent false positives in automated accessibility tests. */ - background: #f0f0f1; - color: #2271b1; + background: #f1f1f1; + color: #0073aa; z-index: 100000; line-height: normal; -} - -.screen-reader-shortcut:focus { - top: -25px; - /* Overrides a:focus in the admin. See ticket #56789. */ - color: #2271b1; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); text-decoration: none; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; + outline: none; } .hidden, @@ -192,8 +184,8 @@ p.popular-tags, .feature-filter, .imgedit-group, .comment-ays { - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); } table.widefat, @@ -217,8 +209,8 @@ body { } body { - background: #f0f0f1; - color: #3c434a; + background: #f1f1f1; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 13px; line-height: 1.4em; @@ -254,7 +246,7 @@ td { /* Any change to the default link style must be applied to button-link too. */ a { - color: #2271b1; + color: #0073aa; transition-property: border, background, color; transition-duration: .05s; transition-timing-function: ease-in-out; @@ -267,28 +259,23 @@ div { a:hover, a:active { - color: #135e96; + color: #00a0d2; } a:focus, a:focus .media-icon img, -a:focus .plugin-icon, .wp-person a:focus .gravatar { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } -#adminmenu a:focus { - box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; - outline-offset: -1px; +.ie8 a:focus { + outline: #5b9dd9 solid 1px; } +#adminmenu a:focus, .screen-reader-text:focus { box-shadow: none; outline: none; @@ -307,8 +294,7 @@ q:after { content: none; } -p, -.wp-die-message { +p { font-size: 13px; line-height: 1.5; margin: 1em 0; @@ -334,20 +320,20 @@ h6 { } h1 { - color: #1d2327; + color: #23282d; font-size: 2em; margin: .67em 0; } h2, h3 { - color: #1d2327; + color: #23282d; font-size: 1.3em; margin: 1em 0; } .update-core-php h2 { - margin-top: 4em; + margin-top: 2em; } .update-php h2, @@ -420,10 +406,10 @@ code { kbd, code { - padding: 3px 5px 2px; + padding: 3px 5px 2px 5px; margin: 0 1px; - background: #f0f0f1; - background: rgba(0, 0, 0, 0.07); + background: #eaeaea; + background: rgba(0,0,0,0.07); font-size: 13px; } @@ -433,7 +419,7 @@ code { padding: 0; font-size: 13px; float: right; - color: #646970; + color: #666; } .subsubsub a { @@ -444,7 +430,7 @@ code { .subsubsub a .count, .subsubsub a.current .count { - color: #50575e; /* #f1f1f1 background */ + color: #555d66; /* #f1f1f1 background */ font-weight: 400; } @@ -484,12 +470,12 @@ code { .widefat thead th, .widefat thead td { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #e1e1e1; } .widefat tfoot th, .widefat tfoot td { - border-top: 1px solid #c3c4c7; + border-top: 1px solid #e1e1e1; border-bottom: none; } @@ -574,10 +560,6 @@ code { margin: 10px 2px 0 20px; } -.wrap.block-editor-no-js { - padding-right: 20px; -} - .wrap > h2:first-child, /* Back-compat for pre-4.4 */ .wrap [class$="icon32"] + h2, /* Back-compat for pre-4.4 */ .postbox .inside h2, /* Back-compat for pre-4.4 */ @@ -585,8 +567,8 @@ code { font-size: 23px; font-weight: 400; margin: 0; - padding: 9px 0 4px; - line-height: 1.3; + padding: 9px 0 4px 0; + line-height: 29px; } .wrap h1.wp-heading-inline { @@ -602,16 +584,12 @@ code { .subtitle { margin: 0; padding-right: 25px; - color: #50575e; + color: #555d66; font-size: 14px; font-weight: 400; line-height: 1; } -.subtitle strong { - word-break: break-all; -} - .wrap .add-new-h2, /* deprecated */ .wrap .add-new-h2:active, /* deprecated */ .wrap .page-title-action, @@ -621,15 +599,17 @@ code { position: relative; top: -3px; text-decoration: none; - border: 1px solid #2271b1; + border: none; + border: 1px solid #ccc; border-radius: 2px; + background: #f7f7f7; text-shadow: none; font-weight: 600; font-size: 13px; line-height: normal; /* IE8-IE11 need this for buttons */ - color: #2271b1; /* use the standard color used for buttons */ - background: #f6f7f7; + color: #0073aa; /* some of these controls are button elements and don't inherit from links */ cursor: pointer; + outline: 0; } .wrap .wp-heading-inline + .page-title-action { @@ -638,27 +618,19 @@ code { .wrap .add-new-h2:hover, /* deprecated */ .wrap .page-title-action:hover { - background: #f0f0f1; - border-color: #0a4b78; - color: #0a4b78; + border-color: #008EC2; + background: #00a0d2; + color: #fff; } /* lower specificity: color needs to be overridden by :hover and :active */ .page-title-action:focus { - color: #0a4b78; -} - -/* Dashicon for language options on General Settings and Profile screens */ -.form-table th label[for="locale"] .dashicons, -.form-table th label[for="WPLANG"] .dashicons { - margin-right: 5px; + color: #124964; } .wrap .page-title-action:focus { - border-color: #3582c4; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); } .wrap h1.long-header { @@ -674,12 +646,12 @@ code { #available-widgets .widget-top:hover, div#widgets-right .widget-top:hover, #widgets-left .widget-top:hover { - border-color: #8c8f94; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + border-color: #999; + box-shadow: 0 1px 2px rgba(0,0,0,0.1); } .sorthelper { - background-color: #c5d9ed; + background-color: #ccf3fa; } .ac_match, @@ -690,47 +662,47 @@ div#widgets-right .widget-top:hover, .striped > tbody > :nth-child(odd), ul.striped > :nth-child(odd), .alternate { - background-color: #f6f7f7; + background-color: #f9f9f9; } .bar { - background-color: #f0f0f1; - border-left-color: #4f94d4; + background-color: #e8e8e8; + border-left-color: #99d; } -/* Helper classes for plugins to leverage the active WordPress color scheme */ +/* Helper classes for plugins to leverage the active ClassicPress color scheme */ .highlight { - background-color: #f0f6fc; - color: #3c434a; + background-color: #e4f2fd; + color: #000; } .wp-ui-primary { color: #fff; - background-color: #2c3338; + background-color: #32373c; } .wp-ui-text-primary { - color: #2c3338; + color: #32373c; } .wp-ui-highlight { color: #fff; - background-color: #2271b1; + background-color: #1e8cbe; } .wp-ui-text-highlight { - color: #2271b1; + color: #1e8cbe; } .wp-ui-notification { color: #fff; - background-color: #d63638; + background-color: #d54e21; } .wp-ui-text-notification { - color: #d63638; + color: #d54e21; } .wp-ui-text-icon { - color: #8c8f94; /* same as new icons */ + color: #82878c; /* same as new icons */ } /* For emoji replacement images */ @@ -770,16 +742,18 @@ img.emoji { .widget .widget-top, .menu-item-handle { - background: #f6f7f7; - color: #1d2327; + background: #fafafa; + color: #23282d; } +.postbox .hndle, .stuffbox .hndle { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #eee; } -.quicktags { - background-color: #c3c4c7; +.quicktags, +.search { + background-color: #ccc; color: #000; font-size: 12px; } @@ -791,14 +765,14 @@ img.emoji { /* @todo can we combine these into a class or use an existing dashicon one? */ .welcome-panel .welcome-panel-close:before, .tagchecklist .ntdelbutton .remove-tag-icon:before, -#bulk-titles .ntdelbutton:before, +#bulk-titles div a:before, .notice-dismiss:before { background: none; - color: #787c82; + color: #72777c; content: "\f153"; display: block; font: normal 16px/20px dashicons; - speak: never; + speak: none; height: 20px; text-align: center; width: 20px; @@ -810,10 +784,14 @@ img.emoji { margin: 0; } +#bulk-titles div a:before { + margin: 1px 0; +} + .tagchecklist .ntdelbutton .remove-tag-icon:before { margin-right: 2px; border-radius: 50%; - color: #2271b1; + color: #0073aa; /* vertically center the icon cross browsers */ line-height: 1.28; } @@ -822,17 +800,19 @@ img.emoji { outline: 0; } +.welcome-panel .welcome-panel-close:hover:before, +.welcome-panel .welcome-panel-close:focus:before, .tagchecklist .ntdelbutton:hover .remove-tag-icon:before, .tagchecklist .ntdelbutton:focus .remove-tag-icon:before, -#bulk-titles .ntdelbutton:hover:before, -#bulk-titles .ntdelbutton:focus:before { - color: #d63638; +#bulk-titles div a:hover:before, +#bulk-titles div a:focus:before { + color: #c00; } .tagchecklist .ntdelbutton:focus .remove-tag-icon:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .key-labels label { @@ -850,7 +830,8 @@ strong, b { } .howto { - color: #646970; + color: #666; + font-style: italic; display: block; } @@ -865,8 +846,8 @@ p.install-help { hr { border: 0; - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #f6f7f7; + border-top: 1px solid #ddd; + border-bottom: 1px solid #fafafa; } .row-actions span.delete a, @@ -879,10 +860,8 @@ hr { #media-items a.delete, #media-items a.delete-permanently, #nav-menu-footer .menu-delete, -#delete-link a.delete, -a#remove-post-thumbnail, -.privacy_requests .remove-personal-data .remove-personal-data-handle { - color: #b32d2e; +#delete-link a.delete { + color: #a00; } abbr.required, @@ -898,10 +877,8 @@ span.required, #media-items a.delete:hover, #media-items a.delete-permanently:hover, #nav-menu-footer .menu-delete:hover, -#delete-link a.delete:hover, -a#remove-post-thumbnail:hover, -.privacy_requests .remove-personal-data .remove-personal-data-handle:hover { - color: #b32d2e; +#delete-link a.delete:hover { + color: #dc3232; border: none; } @@ -912,17 +889,17 @@ a#remove-post-thumbnail:hover, #major-publishing-actions { padding: 10px; clear: both; - border-top: 1px solid #dcdcde; - background: #f6f7f7; + border-top: 1px solid #ddd; + background: #f5f5f5; } #delete-action { float: right; - line-height: 2.30769231; /* 30px */ + line-height: 28px; } #delete-link { - line-height: 2.30769231; /* 30px */ + line-height: 28px; vertical-align: middle; text-align: right; margin-right: 8px; @@ -935,12 +912,11 @@ a#remove-post-thumbnail:hover, #publishing-action { text-align: left; float: left; - line-height: 1.9; + line-height: 23px; } #publishing-action .spinner { - float: none; - margin-top: 5px; + float: right; } #misc-publishing-actions { @@ -951,13 +927,12 @@ a#remove-post-thumbnail:hover, padding: 6px 10px 8px; } -.word-wrap-break-word, .misc-pub-filename { word-wrap: break-word; } #minor-publishing-actions { - padding: 10px 10px 0; + padding: 10px 10px 0 10px; text-align: left; } @@ -1002,10 +977,10 @@ th.action-links { margin: 12px 0 25px; padding: 0 10px; width: 100%; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + border: 1px solid #e5e5e5; background: #fff; - color: #50575e; + color: #555; font-size: 13px; } @@ -1026,7 +1001,7 @@ th.action-links { top: -1px; padding: 4px 10px; border-radius: 30px; - background: #646970; + background: #72777c; color: #fff; font-size: 14px; font-weight: 600; @@ -1059,21 +1034,21 @@ th.action-links { margin: 0 10px; padding: 15px 0; border-bottom: 4px solid #fff; - color: #646970; + color: #666; cursor: pointer; } .filter-links .current { box-shadow: none; - border-bottom: 4px solid #646970; - color: #1d2327; + border-bottom: 4px solid #666; + color: #23282d; } .filter-links li > a:hover, .filter-links li > a:focus, .show-filters .filter-links a.current:hover, .show-filters .filter-links a.current:focus { - color: #135e96; + color: #00a0d2; } .wp-filter .search-form { @@ -1082,33 +1057,23 @@ th.action-links { } .wp-filter .search-form input[type="search"] { - margin: 1px 0; + margin: 0; + padding: 3px 5px; width: 280px; max-width: 100%; + font-size: 16px; + font-weight: 300; + line-height: 1.5; } .wp-filter .search-form select { margin: 0; -} - -/* Use flexbox only on the plugins install page. The `filter-links` and search form children will become flex items. */ -.plugin-install-php .wp-filter { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - align-items: center; + height: 32px; + vertical-align: top; } .wp-filter .search-form.search-plugins { - /* This element is a flex item: the inherited float won't have any effect. */ - margin-top: 0; -} - -.wp-filter .search-form.search-plugins select, -.wp-filter .search-form.search-plugins .wp-filter-search { display: inline-block; - margin-top: 10px; - vertical-align: top; } .wp-filter .button.drawer-toggle { @@ -1116,7 +1081,7 @@ th.action-links { padding: 0 6px 0 10px; border-color: transparent; background-color: transparent; - color: #646970; + color: #666; vertical-align: baseline; box-shadow: none; } @@ -1124,7 +1089,7 @@ th.action-links { .wp-filter .drawer-toggle:before { content: "\f111"; margin: 0 0 0 5px; - color: #646970; + color: #72777c; font: normal 16px/1 dashicons; vertical-align: text-bottom; -webkit-font-smoothing: antialiased; @@ -1136,7 +1101,7 @@ th.action-links { .wp-filter .button.drawer-toggle:focus, .wp-filter .drawer-toggle:focus:before { background-color: transparent; - color: #135e96; + color: #00a0d2; } .wp-filter .button.drawer-toggle:hover, @@ -1145,7 +1110,7 @@ th.action-links { } .wp-filter .button.drawer-toggle:focus { - border-color: #4f94d4; + border-color: #5b9dd9; } .wp-filter .button.drawer-toggle:active { @@ -1163,8 +1128,8 @@ th.action-links { display: none; margin: 0 -20px 0 -10px; padding: 20px; - border-top: 1px solid #f0f0f1; - background: #f6f7f7; + border-top: 1px solid #eee; + background: #fafafa; overflow: hidden; } @@ -1179,13 +1144,13 @@ th.action-links { .show-filters .wp-filter .button.drawer-toggle { border-radius: 2px; - background: #646970; + background: #72777c; color: #fff; } .show-filters .wp-filter .drawer-toggle:hover, .show-filters .wp-filter .drawer-toggle:focus { - background: #2271b1; + background: rgb(46, 162, 204); } .show-filters .wp-filter .drawer-toggle:before { @@ -1200,8 +1165,8 @@ th.action-links { padding: 20px 10px 10px; width: 24%; background: #fff; - border: 1px solid #dcdcde; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); } .filter-group legend { @@ -1222,7 +1187,7 @@ th.action-links { .filter-drawer .filter-group-feature input, .filter-drawer .filter-group-feature label { - line-height: 1.4; + line-height: 16px; } .filter-drawer .filter-group-feature input { @@ -1232,7 +1197,7 @@ th.action-links { .filter-group .filter-group-feature label { display: block; - margin: 14px 23px 14px 0; + margin: 14px 23px 14px 0px; } .filter-drawer .buttons { @@ -1259,7 +1224,7 @@ th.action-links { .wp-filter .button-link.edit-filters { padding: 0 5px; - line-height: 2.2; + line-height: 28px; } .filtered-by { @@ -1282,8 +1247,8 @@ th.action-links { .filtered-by .tag { margin: 0 5px; padding: 4px 8px; - border: 1px solid #dcdcde; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); background: #fff; font-size: 11px; } @@ -1291,7 +1256,7 @@ th.action-links { .filters-applied .filter-group, .filters-applied .filter-drawer .buttons, .filters-applied .filter-drawer br { - display: none; + display: none !important; } .filters-applied .filtered-by { @@ -1322,7 +1287,7 @@ th.action-links { @media only screen and (max-width: 1120px) { .filter-drawer { - border-bottom: 1px solid #f0f0f1; + border-bottom: 1px solid #eee; } .filter-group { @@ -1377,19 +1342,17 @@ th.action-links { display: inline-block; } .plugin-categories-filter li { + background-color: #FFF; + border: 1px solid #DDD; float: right; + padding: 20px; width: 21.5%; } +.plugin-categories-filter li { + margin-left: 5px; +} .plugin-categories-filter li a { font-size: 1.5em; - background-color: #FFF; - border: 1px solid #c3c4c7; - padding: 20px; - display: block; - text-decoration: none; -} -.plugin-categories-filter li a:hover, .plugin-categories-filter li a:focus { - background-color: #f6f7f7; } /*------------------------------------------------------------------------------ @@ -1398,11 +1361,11 @@ th.action-links { .notice, div.updated, -div.error { +div.error, +.about-inline-notice { background: #fff; - border: 1px solid #c3c4c7; - border-right-width: 4px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border-right: 4px solid #fff; + box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); margin: 5px 15px 2px; padding: 1px 12px; } @@ -1438,7 +1401,7 @@ div.error p, .notice-title { display: inline-block; - color: #1d2327; + color: #23282d; font-size: 18px; } @@ -1455,55 +1418,57 @@ div.error p, margin: 0; padding: 9px; background: none; - color: #787c82; + color: #72777c; cursor: pointer; } .notice-dismiss:hover:before, .notice-dismiss:active:before, .notice-dismiss:focus:before { - color: #d63638; + color: #c00; } .notice-dismiss:focus { outline: none; - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 .notice-dismiss:focus { + outline: 1px solid #5b9dd9; } .notice-success, div.updated { - border-right-color: #00a32a; + border-right-color: #46b450; } .notice-success.notice-alt { - background-color: #edfaef; + background-color: #ecf7ed; } .notice-warning { - border-right-color: #dba617; + border-right-color: #ffb900; } .notice-warning.notice-alt { - background-color: #fcf9e8; + background-color: #fff8e5; } .notice-error, div.error { - border-right-color: #d63638; + border-right-color: #dc3232; } .notice-error.notice-alt { - background-color: #fcf0f1; + background-color: #fbeaea; } .notice-info { - border-right-color: #72aee6; + border-right-color: #00a0d2; } .notice-info.notice-alt { - background-color: #f0f6fc; + background-color: #e5f5fa; } .update-message p:before, @@ -1551,7 +1516,7 @@ div.error { .import-php .updating-message:before, .button.updating-message:before, .button.installing:before { - color: #d63638; + color: #f56e28; content: "\f463"; } @@ -1559,57 +1524,41 @@ div.error { .updating-message p:before, .import-php .updating-message:before, .button.updating-message:before, -.button.installing:before, -.plugins .column-auto-updates .dashicons-update.spin, -.theme-overlay .theme-autoupdate .dashicons-update.spin { +.button.installing:before { animation: rotation 2s infinite linear; } -@media (prefers-reduced-motion: reduce) { - .updating-message p:before, - .import-php .updating-message:before, - .button.updating-message:before, - .button.installing:before, - .plugins .column-auto-updates .dashicons-update.spin, - .theme-overlay .theme-autoupdate .dashicons-update.spin { - animation: none; - } -} - -.theme-overlay .theme-autoupdate .dashicons-update.spin { - margin-left: 3px; -} - /* Updated icon (check mark). */ .updated-message p:before, .installed p:before, .button.updated-message:before { - color: #68de7c; - content: "\f147"; + color: #79ba49; + content: '\f147'; } /* Error icon. */ .update-message.notice-error p:before { - color: #d63638; - content: "\f534"; + color: #dc3232; + content: "\f534"; } .wrap .notice p:before, .import-php .updating-message:before { margin-left: 6px; -} - -.import-php .updating-message:before { vertical-align: bottom; } #update-nag, .update-nag { display: inline-block; - line-height: 1.4; + line-height: 19px; padding: 11px 15px; font-size: 14px; + text-align: right; margin: 25px 2px 0 20px; + background-color: #fff; + border-right: 4px solid #ffba00; + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); } ul#dismissed-updates { @@ -1632,7 +1581,7 @@ form.upgrade { form.upgrade .hint { font-style: italic; font-size: 85%; - margin: -0.5em 0 2em; + margin: -0.5em 0 2em 0; } .update-php .spinner { @@ -1640,19 +1589,6 @@ form.upgrade .hint { margin: -4px 0; } -h2.wp-current-version { - margin-bottom: .3em; -} - -p.update-last-checked { - margin-top: 0; -} - -p.auto-update-status { - margin-top: 2em; - line-height: 1.8; -} - #ajax-loading, .ajax-loading, .ajax-feedback, @@ -1677,7 +1613,7 @@ p.auto-update-status { } .button-primary.updated-message:before { - color: #9ec2e6; + color: #66c6e4; } .button.updated-message { @@ -1691,7 +1627,7 @@ p.auto-update-status { .button.installing:before, .button.installed:before, .update-message p:before { - speak: never; + speak: none; } } @@ -1719,29 +1655,33 @@ p.auto-update-status { #contextual-help-wrap { overflow: auto; - margin-right: 0; + margin-right: 0 !important; } #screen-meta-links { - float: left; margin: 0 0 0 20px; } /* screen options and help tabs revert */ #screen-meta { display: none; - margin: 0 0 -1px 20px; + margin: 0 0px -1px 20px; position: relative; background-color: #fff; - border: 1px solid #c3c4c7; + border: 1px solid #ddd; border-top: none; - box-shadow: 0 0 0 transparent; + box-shadow: 0 1px 0 rgba(0,0,0,.025); } #screen-options-link-wrap, #contextual-help-link-wrap { - float: right; + float: left; + height: 28px; margin: 0 6px 0 0; + border: 1px solid #ddd; + border-top: none; + background: #fff; + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); } #screen-meta-links .screen-meta-toggle { @@ -1750,31 +1690,22 @@ p.auto-update-status { } #screen-meta-links .show-settings { - border: 1px solid #c3c4c7; - border-top: none; - height: auto; - margin-bottom: 0; - padding: 3px 16px 3px 6px; - background: #fff; - border-radius: 0 0 4px 4px; - color: #646970; + border: 0; + background: none; + border-radius: 0; + color: #72777c; line-height: 1.7; - box-shadow: 0 0 0 transparent; - transition: box-shadow 0.1s linear; + padding: 3px 16px 3px 6px; } #screen-meta-links .show-settings:hover, #screen-meta-links .show-settings:active, #screen-meta-links .show-settings:focus { - color: #2c3338; -} - -#screen-meta-links .show-settings:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + color: #32373c; } #screen-meta-links .show-settings:active { + box-shadow: none; transform: none; } @@ -1782,7 +1713,7 @@ p.auto-update-status { left: 0; content: "\f140"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0 0 0 5px; bottom: 2px; @@ -1790,7 +1721,8 @@ p.auto-update-status { vertical-align: bottom; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none; + text-decoration: none !important; + color: #72777c; } #screen-meta-links .screen-meta-active:after { @@ -1817,14 +1749,18 @@ p.auto-update-status { #contextual-help-wrap h5 { margin: 0; padding: 8px 0; - font-size: 13px; + font-size: 13px; font-weight: 600; } +.ie8 #screen-options-wrap legend { + color: inherit; +} + .metabox-prefs label { display: inline-block; padding-left: 15px; - line-height: 2.35; + line-height: 30px; } #number-of-columns { @@ -1860,11 +1796,10 @@ p.auto-update-status { .metabox-prefs .screen-options .screen-per-page { margin-left: 15px; - padding-left: 0; } .metabox-prefs .screen-options label { - line-height: 2.2; + line-height: 28px; padding-left: 0; } @@ -1895,10 +1830,10 @@ p.auto-update-status { bottom: 0; right: 150px; left: 170px; - border: 1px solid #c3c4c7; + border: 1px solid #e1e1e1; border-top: none; border-bottom: none; - background: #f0f6fc; + background: #f6fbfd; } #contextual-help-wrap.no-sidebar #contextual-help-back { @@ -1928,7 +1863,7 @@ p.auto-update-status { .contextual-help-tabs a { display: block; padding: 5px 12px 5px 5px; - line-height: 1.4; + line-height: 18px; text-decoration: none; border: 1px solid transparent; border-left: none; @@ -1936,20 +1871,20 @@ p.auto-update-status { } .contextual-help-tabs a:hover { - color: #2c3338; + color: #32373c; } .contextual-help-tabs .active { padding: 0; margin: 0 0 0 -1px; - border-right: 2px solid #72aee6; - background: #f0f6fc; - box-shadow: 0 2px 0 rgba(0, 0, 0, 0.02), 0 1px 0 rgba(0, 0, 0, 0.02); + border-right: 2px solid #00a0d2; + background: #f6fbfd; + box-shadow: 0 2px 0 rgba(0,0,0,0.02), 0 1px 0 rgba(0,0,0,0.02); } .contextual-help-tabs .active a { - border-color: #c3c4c7; - color: #2c3338; + border-color: #e1e1e1; + color: #32373c; } .contextual-help-tabs-wrap { @@ -1960,7 +1895,7 @@ p.auto-update-status { .help-tab-content { display: none; margin: 0 0 12px 22px; - line-height: 1.6; + line-height: 1.6em; } .help-tab-content.active { @@ -1986,12 +1921,11 @@ p.auto-update-status { html.wp-toolbar { padding-top: 32px; box-sizing: border-box; - -ms-overflow-style: scrollbar; /* See ticket #48545 */ } .widefat th, .widefat td { - color: #50575e; + color: #555; } .widefat th, @@ -2004,7 +1938,7 @@ html.wp-toolbar { .widefat thead tr td, .widefat tfoot tr th, .widefat tfoot tr td { - color: #2c3338; + color: #32373c; } .widefat td p { @@ -2014,7 +1948,7 @@ html.wp-toolbar { .widefat p, .widefat ol, .widefat ul { - color: #2c3338; + color: #32373c; } .widefat .column-comment p { @@ -2035,47 +1969,39 @@ html.wp-toolbar { box-sizing: border-box; } -.postbox-container summary { - font-size: 14px; - font-weight: 600; - padding: 2px 12px; - margin: 0; - line-height: 1.4; - border-bottom: 1px solid #c3c4c7; -} - -.postbox-container summary > div { - display: inline-flex; -} - -.postbox-container .handle-actions { - left: 12px; - position: absolute; -} - #wpbody-content .metabox-holder { padding-top: 10px; } -.metabox-holder .postbox-container .meta-box-sortables { - /* The jQuery UI Sortables need some initial height to work properly. */ - min-height: 1px; +.metabox-holder .postbox-container .empty-container { + border: 3px dashed #b4b9be; + height: 250px; position: relative; } -/* Enhance default marker in details element */ -details summary > * { - display: inline; -} - -.metabox-holder details > summary::marker, -.metabox-holder details > summary::-webkit-details-marker { - font-size: 1.5em; - cursor: pointer; +.metabox-holder .postbox-container .empty-container:after { + content: attr(data-emptystring); + margin: auto; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + height: 1em; + width: 200px; + text-align: center; + color: #ccc; + font-size:18px; + display: none; } -.metabox-holder details > summary h2 { - padding-right: 5px !important; +.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; } #post-body-content { @@ -2097,7 +2023,7 @@ details summary > * { /* one column on the dash */ @media only screen and (max-width: 799px) { #wpbody-content .metabox-holder .postbox-container .empty-container { - outline: none; + border: 0 none; height: 0; min-height: 0; } @@ -2108,40 +2034,14 @@ details summary > * { cursor: move; } -.js .widget .widget-top.is-non-sortable, -.js .postbox .hndle.is-non-sortable { - cursor: auto; -} - -/* Configurable dashboard widgets "Configure" edit-box link. */ .hndle a { - font-size: 12px; + font-size: 11px; font-weight: 400; } -.postbox-header { - display: flex; - align-items: center; - justify-content: space-between; - border-bottom: 1px solid #c3c4c7; -} - -.postbox-header .hndle { - flex-grow: 1; - /* Handle the alignment for the configurable dashboard widgets "Configure" edit-box link. */ - display: flex; - justify-content: space-between; - align-items: center; -} - -.postbox-header .handle-actions { - flex-shrink: 0; -} - -/* Post box order and toggle buttons. */ -.postbox .handle-order-higher, -.postbox .handle-order-lower, .postbox .handlediv { + display: none; + float: left; width: 36px; height: 36px; margin: 0; @@ -2151,28 +2051,12 @@ details summary > * { cursor: pointer; } -.postbox .handle-order-higher, -.postbox .handle-order-lower { - color: #787c82; - width: 1.62rem; -} - -/* Post box order buttons in the block editor meta boxes area. */ -.edit-post-meta-boxes-area .postbox .handle-order-higher, -.edit-post-meta-boxes-area .postbox .handle-order-lower { - width: 44px; - height: 44px; - color: #1d2327 -} - -.postbox .handle-order-higher[aria-disabled="true"], -.postbox .handle-order-lower[aria-disabled="true"] { - cursor: default; - color: #a7aaad; +.js .postbox .handlediv { + display: block; } .sortable-placeholder { - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; margin-bottom: 20px; } @@ -2183,10 +2067,6 @@ details summary > * { line-height: 1; } -.postbox.closed { - border-bottom: 0; -} - /* user-select is not a part of the CSS standard - may change behavior in the future */ .postbox .hndle, .stuffbox .hndle { @@ -2195,17 +2075,11 @@ details summary > * { user-select: none; } -.postbox .inside { - padding: 0 12px 12px; - line-height: 1.4; - font-size: 13px; -} - +.postbox .inside, .stuffbox .inside { - padding: 0; - line-height: 1.4; + padding: 0 12px 12px; + line-height: 1.4em; font-size: 13px; - margin-top: 0; } .postbox .inside { @@ -2232,7 +2106,7 @@ details summary > * { } .temp-border { - border: 1px dotted #c3c4c7; + border: 1px dotted #ccc; } .columns-prefs label { @@ -2252,8 +2126,7 @@ details summary > * { #pass-strength-result.short, #ed_reply_toolbar #ed_reply_strong, .item-controls .item-order a, -.feature-filter .feature-name, -#comment-status-display { +.feature-filter .feature-name { font-weight: 600; } @@ -2267,13 +2140,13 @@ details summary > * { right: 0; left: 0; padding: 10px 20px; - color: #50575e; + color: #555d66; } #wpfooter p { font-size: 13px; margin: 0; - line-height: 1.55; + line-height: 20px; } #footer-thankyou { @@ -2286,15 +2159,15 @@ details summary > * { .nav-tab { float: right; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; border-bottom: none; margin-right: 0.5em; /* half the font size so set the font size properly */ padding: 5px 10px; font-size: 14px; - line-height: 1.71428571; + line-height: 24px; font-weight: 600; - background: #dcdcde; - color: #50575e; + background: #e5e5e5; + color: #555; text-decoration: none; white-space: nowrap; } @@ -2303,13 +2176,13 @@ h3 .nav-tab, /* Back-compat for pre-4.4 */ .nav-tab-small .nav-tab { padding: 5px 14px; font-size: 12px; - line-height: 1.33; + line-height: 16px; } .nav-tab:hover, .nav-tab:focus { background-color: #fff; - color: #3c434a; + color: #444; } .nav-tab-active, @@ -2319,22 +2192,22 @@ h3 .nav-tab, /* Back-compat for pre-4.4 */ .nav-tab-active { margin-bottom: -1px; - color: #3c434a; + color: #444; } .nav-tab-active, .nav-tab-active:hover, .nav-tab-active:focus, .nav-tab-active:focus:active { - border-bottom: 1px solid #f0f0f1; - background: #f0f0f1; + border-bottom: 1px solid #f1f1f1; + background: #f1f1f1; color: #000; } h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ .wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */ .nav-tab-wrapper { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #ccc; margin: 0; padding-top: 9px; padding-bottom: 0; @@ -2343,9 +2216,16 @@ h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ /* Back-compat for plugins. Deprecated. Use .wp-clearfix instead. */ .nav-tab-wrapper:not(.wp-clearfix):after { - content: ""; - display: table; - clear: both; + content: ""; + display: table; + clear: both; + } + +.ie8 .nav-tab-wrapper { + /* contain floats establishing a new block formatting context */ + display: inline-block; + width: 100%; + vertical-align: top; } /*------------------------------------------------------------------------------ @@ -2396,19 +2276,9 @@ h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ } /* Back-compat for nav-menus screen */ -.nav-menus-php .metabox-holder details > summary { - line-height: 1.4; - padding-top: 6px; - margin-top: -0 !important; -} - -.nav-menus-php .metabox-holder details > summary::before { - margin-left: 0.2em -} - .nav-menus-php .metabox-holder h3 { - font-size: 1.1em; - font-weight: 500; + padding: 10px 14px 11px 10px; + line-height: 21px; } #templateside ul li a { @@ -2428,7 +2298,7 @@ table .column-rating { .attention, .error-message { - color: #d63638; + color: #dc3232; font-weight: 600; } @@ -2454,7 +2324,7 @@ body.iframe { } .media-icon img { - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; border: 1px solid rgba(0, 0, 0, 0.07); } @@ -2471,7 +2341,7 @@ body.iframe { .importers td { padding-left: 14px; - line-height: 1.4; + line-height: 1.5em; } .importers .import-system { @@ -2496,8 +2366,8 @@ body.iframe { } .importer-action { - line-height: 1.55; /* Same as with .updating-message */ - color: #50575e; + line-height: 20px; /* Same as with .updating-message */ + color: #555; margin-bottom: 1em; } @@ -2507,8 +2377,11 @@ body.iframe { } .edit-comment-author { - color: #1d2327; - border-bottom: 1px solid #f0f0f1; + font-size: 14px; + line-height: 1.4; + font-weight: 600; + color: #222; + margin: 2px 9px 0 0; } #namediv h3 label, /* Back-compat for pre-4.4 */ @@ -2526,13 +2399,17 @@ body.iframe { } #namediv input { - width: 100%; + width: 98%; } #namediv p { margin: 10px 0; } +#submitdiv h3 { + margin-bottom: 0 !important; +} + /* - Used - but could/should be deprecated with a CSS reset ------------------------------------------------------------------------------*/ .zerosize { @@ -2547,7 +2424,7 @@ body.iframe { br.clear { height: 2px; - line-height: 0.15; + line-height: 2px; } .checkbox { @@ -2602,9 +2479,9 @@ div.star-holder .star-rating { font-weight: 400; font-style: normal; vertical-align: top; - transition: color .1s ease-in; + transition: color .1s ease-in 0; text-align: center; - color: #dba617; + color: #ffb900; } .star-rating .star-full:before { @@ -2648,10 +2525,10 @@ div.action-links { #plugin-information-title { padding: 0 26px; - background: #f6f7f7; + background: #f5f5f5; font-size: 22px; font-weight: 600; - line-height: 2.4; + line-height: 56px; position: relative; height: 56px; } @@ -2677,15 +2554,15 @@ div.action-links { font-family: "Helvetica Neue", sans-serif; display: inline-block; font-size: 30px; - line-height: 1.68; + line-height: 50px; box-sizing: border-box; max-width: 100%; padding: 0 15px; margin-top: 174px; color: #fff; - background: rgba(29, 35, 39, 0.9); - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); - box-shadow: 0 0 30px rgba(255, 255, 255, 0.1); + background: rgba( 30, 30, 30, 0.9 ); + text-shadow: 0 1px 3px rgba( 0, 0, 0, 0.4 ); + box-shadow: 0 0 30px rgba( 255, 255, 255, 0.1 ); border-radius: 8px; } @@ -2701,7 +2578,7 @@ div.action-links { height: 250px; width: 100%; background: transparent; - box-shadow: inset 0 0 50px 4px rgba(0, 0, 0, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 50px 4px rgba( 0, 0, 0, 0.2 ), inset 0 -1px 0 rgba( 0, 0, 0, 0.1 ); } #plugin-information-tabs { @@ -2712,8 +2589,8 @@ div.action-links { min-height: 36px; font-size: 0; z-index: 1; - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f3f3f3; } #plugin-information-tabs a { @@ -2722,7 +2599,7 @@ div.action-links { padding: 9px 10px; margin: 0; height: 18px; - line-height: 1.3; + line-height: 18px; font-size: 14px; text-decoration: none; transition: none; @@ -2731,10 +2608,10 @@ div.action-links { #plugin-information-tabs a.current { margin: 0 -1px -1px; background: #fff; - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-bottom-color: #fff; padding-top: 8px; - color: #2c3338; + color: #32373c; } #plugin-information-tabs.with-banner a.current { @@ -2770,14 +2647,10 @@ div.action-links { left: 250px; bottom: 0; right: 0; - margin-top: 10px; margin-left: 250px; /* FYI box */ - padding: 10px 26px 99999px; /* equal height column trick */ - margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ -} - -#section-holder .notice { - margin: 5px 0 15px; + padding: 10px 26px; + margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ } #section-holder .updated { @@ -2789,23 +2662,24 @@ div.action-links { position: relative; top: 0; left: 0; - padding: 16px 16px 99999px; /* equal height column trick */ - margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ + padding: 16px; + margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ width: 217px; - border-right: 1px solid #dcdcde; - background: #f6f7f7; - color: #646970; + border-right: 1px solid #ddd; + background: #f3f3f3; + color: #666; } #plugin-information .fyi strong { - color: #3c434a; + color: #444; } #plugin-information .fyi h3 { font-weight: 600; text-transform: uppercase; font-size: 12px; - color: #646970; + color: #666; margin: 24px 0 8px; } @@ -2842,13 +2716,13 @@ div.action-links { #plugin-information .counter-back { height: 17px; width: 92px; - background-color: #dcdcde; + background-color: #e5e5e5; float: right; } #plugin-information .counter-bar { height: 17px; - background-color: #f0c33c; /* slightly lighter than stars due to larger expanse */ + background-color: #ffc733; /* slightly lighter than stars due to larger expanse */ float: right; } @@ -2883,9 +2757,9 @@ div.action-links { left: 0; bottom: 0; right: 0; - height: 40px; /* actual height: 40+13+13+1=67 */ - border-top: 1px solid #dcdcde; - background: #f6f7f7; + height: 33px; /* 33+13+13+1=60 */ + border-top: 1px solid #ddd; + background: #f3f3f3; } /* rtl:ignore */ @@ -2917,7 +2791,7 @@ div.action-links { max-width: 100%; width: auto; height: auto; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.3 ); } /* rtl:ignore */ @@ -2929,12 +2803,12 @@ div.action-links { #plugin-information pre { padding: 7px; overflow: auto; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; } #plugin-information blockquote { - border-right: 2px solid #dcdcde; - color: #646970; + border-right: 2px solid #ddd; + color: #666; font-style: italic; margin: 1em 0; padding: 0 1em 0 0; @@ -2945,7 +2819,7 @@ div.action-links { overflow: hidden; /* clearfix */ width: 100%; margin-bottom: 20px; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #e5e5e5; } #plugin-information .review-title-section { @@ -2992,12 +2866,12 @@ div.action-links { font-size: 13px; } -/* For non-js plugin installation screen ticket #36430. */ +/* For non-js plugin installation screen https://core.trac.wordpress.org/ticket/36430. */ .update-php .button.button-primary { margin-left: 1em; } -@media screen and (max-width: 771px) { +@media screen and ( max-width: 771px ) { #plugin-information-title.with-banner { height: 100px; } @@ -3005,7 +2879,7 @@ div.action-links { #plugin-information-title.with-banner h2 { margin-top: 30px; font-size: 20px; - line-height: 2; + line-height: 40px; max-width: 85%; } @@ -3026,7 +2900,7 @@ div.action-links { #plugin-information .fyi { float: none; - border: 1px solid #dcdcde; + border: 1px solid #ddd; position: static; width: auto; margin: 26px 26px 0; @@ -3052,7 +2926,7 @@ div.action-links { /* Thickbox for the Plugin details modal. */ #TB_window.plugin-details-modal { - background: #fff; + background: #fcfcfc; } #TB_window.plugin-details-modal.thickbox-loading:before { @@ -3065,7 +2939,7 @@ div.action-links { top: 50%; z-index: -1; margin: -10px -10px 0 0; - background: #fff url(../images/spinner.gif) no-repeat center; + background: #fcfcfc url(../images/spinner.gif) no-repeat center; background-size: 20px 20px; transform: translateZ(0); } @@ -3091,22 +2965,16 @@ div.action-links { .plugin-details-modal #TB_closeWindowButton { right: auto; left: -30px; - color: #f0f0f1; + color: #eee; } .plugin-details-modal #TB_closeWindowButton:hover, .plugin-details-modal #TB_closeWindowButton:focus { + color: #00a0d2; outline: none; box-shadow: none; } -.plugin-details-modal #TB_closeWindowButton:hover::after, -.plugin-details-modal #TB_closeWindowButton:focus::after { - outline: 2px solid; - outline-offset: -4px; - border-radius: 4px; -} - .plugin-details-modal .tb-close-icon { display: none; } @@ -3114,13 +2982,13 @@ div.action-links { .plugin-details-modal #TB_closeWindowButton:after { content: "\f335"; font: normal 32px/29px 'dashicons'; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* move plugin install close icon to top on narrow screens */ -@media screen and (max-width: 830px) { +@media screen and ( max-width: 830px ) { .plugin-details-modal #TB_closeWindowButton { left: 0; top: -30px; @@ -3133,83 +3001,52 @@ img { } /* Metabox collapse arrow indicators */ -.sidebar-name .toggle-indicator::before, -.meta-box-sortables .postbox .toggle-indicator::before, -.meta-box-sortables .postbox .order-higher-indicator::before, -.meta-box-sortables .postbox .order-lower-indicator::before, -.bulk-action-notice .toggle-indicator::before, -.privacy-text-box .toggle-indicator::before { +.sidebar-name .toggle-indicator:before, +.js .meta-box-sortables .postbox .toggle-indicator:before, +.bulk-action-notice .toggle-indicator:before, +.privacy-text-box .toggle-indicator:before { content: "\f142"; display: inline-block; font: normal 20px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none; + text-decoration: none !important; } -.js .widgets-holder-wrap.closed .toggle-indicator::before, -.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before, -.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before, -.privacy-text-box.closed .toggle-indicator::before { +.js .widgets-holder-wrap.closed .toggle-indicator:before, +.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before, +.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before, +.privacy-text-box.closed .toggle-indicator:before { content: "\f140"; } -.postbox .handle-order-higher .order-higher-indicator::before { - content: "\f343"; - color: inherit; -} - -.postbox .handle-order-lower .order-lower-indicator::before { - content: "\f347"; - color: inherit; -} - -.postbox .handle-order-higher .order-higher-indicator::before, -.postbox .handle-order-lower .order-lower-indicator::before { - position: relative; - top: 0.11rem; - width: 20px; - height: 20px; -} - -.postbox .handlediv .toggle-indicator::before { +.js .postbox .handlediv .toggle-indicator:before { + margin-top: 4px; width: 20px; border-radius: 50%; + text-indent: -1px; /* account for the dashicon alignment */ } -.postbox .handlediv .toggle-indicator::before { - position: relative; - top: 0.05rem; - text-indent: -1px; /* account for the dashicon glyph uneven horizontal alignment */ -} - -.rtl .postbox .handlediv .toggle-indicator::before { - text-indent: 1px; /* account for the dashicon glyph uneven horizontal alignment */ +.rtl.js .postbox .handlediv .toggle-indicator:before { + text-indent: 1px; /* account for the dashicon alignment */ } -.bulk-action-notice .toggle-indicator::before { +.bulk-action-notice .toggle-indicator:before { line-height: 16px; vertical-align: top; - color: #787c82; + color: #72777c; } -.postbox .handle-order-higher:focus, -.postbox .handle-order-lower:focus, -.postbox .handlediv:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; +.js .postbox .handlediv:focus { + box-shadow: none; + outline: none; } -.postbox .handle-order-higher:focus .order-higher-indicator::before, -.postbox .handle-order-lower:focus .order-lower-indicator::before, -.postbox .handlediv:focus .toggle-indicator::before { - box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; +.js .postbox .handlediv:focus .toggle-indicator:before { + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } /* @todo: appears to be Press This only and overridden */ @@ -3217,7 +3054,7 @@ img { width: 300px; } -/* Theme/Plugin file editor */ +/* Theme/Plugin Editor */ .alignleft h2 { margin: 0; } @@ -3225,7 +3062,7 @@ img { #template textarea { font-family: Consolas, Monaco, monospace; font-size: 13px; - background: #f6f7f7; + background: #f9f9f9; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; @@ -3236,7 +3073,7 @@ img { width: 100%; min-height: 60vh; height: calc( 100vh - 295px ); - border: 1px solid #dcdcde; + border: 1px solid #ddd; box-sizing: border-box; } @@ -3258,8 +3095,8 @@ img { padding: 0; min-height: 60vh; height: calc(100vh - 295px); - background-color: #f6f7f7; - border: 1px solid #dcdcde; + background-color: #f7f7f7; + border: 1px solid #ddd; border-right: none; } #templateside ul ul { @@ -3270,7 +3107,7 @@ img { } /* - * Styles for Theme and Plugin file editors. + * Styles for Theme and Plugin editors. */ /* Hide collapsed items. */ @@ -3303,14 +3140,12 @@ img { outline: 0; } [role="treeitem"] .folder-label.focus { - color: #043959; - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + color: #124964; + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); } [role="treeitem"].hover, [role="treeitem"] .folder-label.hover { - background-color: #f0f0f1; + background-color: #eaeaea; } .tree-folder { @@ -3323,30 +3158,30 @@ img { /* Styles for folder indicators/depth */ .tree-folder .tree-folder::after { - content: ""; + content: ' '; display: block; position: absolute; right: 2px; - border-right: 1px solid #c3c4c7; + border-right: 1px solid #ccc; top: -13px; bottom: 10px; } .tree-folder > li::before { - content: ""; + content: ' '; position: absolute; display: block; - border-right: 1px solid #c3c4c7; + border-right: 1px solid #ccc; right: 2px; top: -5px; height: 18px; width: 7px; - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #ccc; } .tree-folder > li::after { - content: ""; + content: ' '; position: absolute; display: block; - border-right: 1px solid #c3c4c7; + border-right: 1px solid #ccc; right: 2px; bottom: -7px; top: 0; @@ -3359,7 +3194,7 @@ img { .tree-folder > .current-file::before { right: 4px; height: 15px; - width: 0; + width: 0px; border-right: none; top: 3px; } @@ -3376,15 +3211,11 @@ img { display: none; } -#theme-plugin-editor-selector, -#theme-plugin-editor-label, -#documentation label { - font-weight: 600; -} #theme-plugin-editor-label { display: inline-block; margin-bottom: 1em; + font-weight: 600; } /* rtl:ignore */ @@ -3454,7 +3285,7 @@ img { } #templateside li.howto { - padding: 6px 12px 12px; + padding: 6px 12px 12px 12px; } .theme-editor-php .highlight { @@ -3467,7 +3298,7 @@ img { } .nonessential { - color: #646970; + color: #666; font-size: 11px; font-style: italic; padding-right: 12px; @@ -3478,8 +3309,9 @@ img { } #documentation label { - line-height: 1.8; + line-height: 22px; vertical-align: baseline; + font-weight: 600; } .fileedit-sub { @@ -3492,20 +3324,21 @@ img { } /* @todo: can we use a common class for these? */ -/* @since CP 2.0.0 removes .accordion-section-title:after */ .nav-menus-php .item-edit:before, -.widget-top .widget-action .toggle-indicator:before { +.widget-top .widget-action .toggle-indicator:before, +.control-section .accordion-section-title:after, +.accordion-section-title:after { content: "\f140"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: block; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none; + text-decoration: none !important; } .widget-top .widget-action .toggle-indicator:before { - padding: 1px 0 1px 2px; + padding: 1px 0px 1px 2px; border-radius: 50%; } @@ -3514,11 +3347,11 @@ img { .item-edit, .toggle-indicator, .accordion-section-title:after { - color: #787c82; + color: #72777c; } .widget-action { - color: #50575e; /* #fafafa background in the Widgets screen */ + color: #555d66; /* #fafafa background in the Widgets screen */ } .widget-top:hover .widget-action, @@ -3531,22 +3364,26 @@ img { .item-edit:focus, .sidebar-name:hover .toggle-indicator, .accordion-section-title:hover:after { - color: #1d2327; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + color: #23282d; } .widget-top .widget-action:focus .toggle-indicator:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30,140,190,.8); +} + +.control-section .accordion-section-title:after, +.accordion-section-title:after { + float: left; + left: 20px; + top: -2px; } .control-section.open .accordion-section-title:after, #customize-info.open .accordion-section-title:after, .nav-menus-php .menu-item-edit-active .item-edit:before, -.widget.open .widget-top .widget-action .toggle-indicator:before, -.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before { +.widget.open .widget-top .widget-action .toggle-indicator:before { content: "\f142"; } @@ -3565,7 +3402,7 @@ img { /* Accordion */ .accordion-section { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; margin: 0; } @@ -3575,10 +3412,11 @@ img { } .accordion-section.open:hover { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; } .accordion-section-content { + display: none; padding: 10px 20px 15px; overflow: hidden; background: #fff; @@ -3588,8 +3426,8 @@ img { margin: 0; padding: 12px 15px 15px; position: relative; - border-right: 1px solid #dcdcde; - border-left: 1px solid #dcdcde; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; -webkit-user-select: none; -moz-user-select: none; user-select: none; @@ -3607,15 +3445,12 @@ img { } .accordion-section-title:focus { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + outline: none; } .accordion-section-title:hover:after, .accordion-section-title:focus:after { - border-color: #a7aaad transparent; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + border-color: #a0a5aa transparent; } .cannot-expand .accordion-section-title { @@ -3626,41 +3461,31 @@ img { display: none; } -.control-section { - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); -} - -.control-section:focus-within { - outline: 2px solid #3582c4; -} - .control-section .accordion-section-title, .customize-pane-child .accordion-section-title { border-right: none; border-left: none; padding: 10px 14px 11px 10px; - line-height: 1.55; + line-height: 21px; background: #fff; } -.control-section details[open] summary.accordion-section-title { - color: #3c434a; - background-color: #f6f7f7; - border-bottom: 1px solid #dcdcde; +.control-section .accordion-section-title:after, +.customize-pane-child .accordion-section-title:after { + top: calc(50% - 10px); /* Arrow height is 20px, so use half of that to vertically center */ } .js .control-section:hover .accordion-section-title, .js .control-section .accordion-section-title:hover, .js .control-section.open .accordion-section-title, .js .control-section .accordion-section-title:focus { - color: #1d2327; - background: #f6f7f7; + color: #23282d; + background: #f5f5f5; } .control-section.open .accordion-section-title { /* When expanded */ - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } /* Edit Site */ @@ -3700,7 +3525,7 @@ img { position: absolute; top: 0; left: 0; - background: #c3c4c7; + background: #ccc; } } @@ -3720,7 +3545,7 @@ img { } .my-sites li:nth-of-type(4n+1), .my-sites li:nth-of-type(4n+2) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3737,7 +3562,7 @@ img { .my-sites li:nth-of-type(6n+1), .my-sites li:nth-of-type(6n+2), .my-sites li:nth-of-type(6n+3) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3758,7 +3583,7 @@ img { .my-sites li:nth-of-type(8n+2), .my-sites li:nth-of-type(8n+3), .my-sites li:nth-of-type(8n+4) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3780,7 +3605,7 @@ img { .my-sites li:nth-of-type(10n+3), .my-sites li:nth-of-type(10n+4), .my-sites li:nth-of-type(10n+5) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3803,7 +3628,7 @@ img { .my-sites li:nth-of-type(12n+4), .my-sites li:nth-of-type(12n+5), .my-sites li:nth-of-type(12n+6) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3831,17 +3656,26 @@ img { background-image: url(../images/spinner-2x.gif); } + /* @todo: evaluate - most of these were likely replaced by dashicons */ + .curtime #timestamp, + #screen-meta-links a.show-settings, + .widget-top .widget-action, + .widget-top .widget-action:hover, + .sidebar-name .toggle-indicator, + .sidebar-name:hover .toggle-indicator, + .meta-box-sortables .postbox:hover .handlediv, + #bulk-titles div a, + #bulk-titles div a:hover { + background: none !important; + } + } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { html.wp-toolbar { padding-top: 46px; } - .screen-reader-shortcut:focus { - top: -39px; - } - body { min-width: 240px; overflow-x: hidden; @@ -3862,7 +3696,6 @@ img { } .wrap { - clear: both; margin-left: 12px; margin-right: 0; } @@ -3880,6 +3713,8 @@ img { } /* Hidden Elements */ + #screen-meta, + #screen-meta-links, #collapse-menu, .post-format-select { display: none !important; @@ -3903,7 +3738,7 @@ img { .wrap div.updated, .wrap div.error, .media-upload-form div.error { - margin: 20px 0 10px; + margin: 20px 0 10px 0; padding: 5px 10px; font-size: 14px; line-height: 175%; @@ -3927,8 +3762,6 @@ img { code { word-wrap: break-word; - word-wrap: anywhere; /* Firefox. Allow breaking long words anywhere */ - word-break: break-word; /* Webkit: Treated similarly to word-wrap: break-word */ } /* General Metabox */ @@ -3967,7 +3800,7 @@ img { } #templateside > ul { - border-right: 1px solid #dcdcde; + border-right: 1px solid #ddd; } #templateside li { @@ -4013,7 +3846,7 @@ img { right: -8px; } .tree-folder > li::before { - top: 0; + top: 0px; height: 13px; } .tree-folder > .current-file::before { @@ -4048,7 +3881,8 @@ img { } .fileedit-sub input[type="submit"] { - margin-bottom: 0; + margin-bottom: 0px; + padding: 8px 18px; } #documentation label[for="docs-list"] { @@ -4062,6 +3896,7 @@ img { #documentation input[type="button"] { margin-bottom: 0; + padding: 8px 18px; } #wpfooter { @@ -4078,7 +3913,7 @@ img { .filter-drawer .filter-group-feature input, .filter-drawer .filter-group-feature label { - line-height: 2.1; + line-height: 25px; } .filter-drawer .filter-group-feature label { @@ -4087,58 +3922,9 @@ img { .wp-filter .button.drawer-toggle { font-size: 13px; - line-height: 2; + line-height: 26px; height: 28px; } - - /* Fix help tab columns for smaller screens */ - #screen-meta #contextual-help-wrap { - overflow: visible; - } - - #screen-meta #contextual-help-back, - #screen-meta .contextual-help-sidebar { - display: none; - } - - #screen-meta .contextual-help-tabs { - clear: both; - width: 100%; - float: none; - } - - #screen-meta .contextual-help-tabs ul { - margin: 0 0 1em; - padding: 1em 0 0; - } - - #screen-meta .contextual-help-tabs .active { - margin: 0; - } - - #screen-meta .contextual-help-tabs-wrap { - clear: both; - max-width: 100%; - float: none; - } - - #screen-meta, - #screen-meta-links { - margin-left: 10px; - } - - #screen-meta-links { - margin-bottom: 20px; /* Add margins beneath links for better spacing between boxes and elements */ - } - - .wp-filter .search-form input[type="search"] { - font-size: 1rem; - } - - .wp-filter .search-form.search-plugins { - /* This element is a flex item. */ - min-width: 100%; - } } /* Smartphone */ @@ -4153,10 +3939,6 @@ img { padding-top: 0; } - .screen-reader-shortcut:focus { - top: 7px; - } - #wpbody { padding-top: 46px; } @@ -4174,20 +3956,9 @@ img { h1 .nav-tab, h2 .nav-tab, - h3 .nav-tab, - nav .nav-tab { + h3 .nav-tab { margin: 10px 0 0 10px; - border-bottom: 1px solid #c3c4c7; - } - - .nav-tab-active:hover, - .nav-tab-active:focus, - .nav-tab-active:focus:active { - border-bottom: 1px solid #c3c4c7; - } - - .wp-filter .search-form input[type="search"] { - width: 100%; + border-bottom: 1px solid #ccc; } } diff --git a/wp-admin/css/common-rtl.min.css b/wp-admin/css/common-rtl.min.css index 2734e0d..f2c77c1 100644 --- a/wp-admin/css/common-rtl.min.css +++ b/wp-admin/css/common-rtl.min.css @@ -1,9 +1,9 @@ /*! This file is auto-generated */ -#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-right:20px}#wpcontent,#wpfooter{margin-right:160px}.folded #wpcontent,.folded #wpfooter{margin-right:36px}#wpbody-content{padding-bottom:65px;float:right;width:100%;overflow:visible}.inner-sidebar{float:left;clear:left;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-left:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:right;clear:right;width:100%;margin-left:-2000px}.has-right-sidebar #post-body-content{margin-left:300px;float:none;width:auto}#col-left{float:right;width:35%}#col-right{float:left;width:65%}#col-left .col-wrap{padding:0 0 0 6px}#col-right .col-wrap{padding:0 6px 0 0}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.button .screen-reader-text{height:auto}.screen-reader-shortcut{position:absolute;top:-1000em;right:6px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f0f0f1;color:#2271b1;z-index:100000;line-height:normal}.screen-reader-shortcut:focus{top:-25px;color:#2271b1;box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:2px solid transparent;outline-offset:-2px}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#135e96}.wp-person a:focus .gravatar,a:focus,a:focus .media-icon img,a:focus .plugin-icon{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}#adminmenu a:focus{box-shadow:none;outline:1px solid transparent;outline-offset:-1px}.screen-reader-text:focus{box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}.wp-die-message,p{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{color:#1d2327;font-size:2em;margin:.67em 0}h2,h3{color:#1d2327;font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:4em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-right:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#f0f0f1;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;float:right;color:#646970}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#50575e;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a,.widefat button.button-link{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #c3c4c7}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #c3c4c7;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:right;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 8px 0 0;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 3px 0 0}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-right:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 2px 0 20px}.wrap.block-editor-no-js{padding-right:20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px;line-height:1.3}.wrap h1.wp-heading-inline{display:inline-block;margin-left:5px}.wp-header-end{visibility:hidden;margin:-2px 0 0}.subtitle{margin:0;padding-right:25px;color:#50575e;font-size:14px;font-weight:400;line-height:1}.subtitle strong{word-break:break-all}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-right:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:1px solid #2271b1;border-radius:2px;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#2271b1;background:#f6f7f7;cursor:pointer}.wrap .wp-heading-inline+.page-title-action{margin-right:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}.page-title-action:focus{color:#0a4b78}.form-table th label[for=WPLANG] .dashicons,.form-table th label[for=locale] .dashicons{margin-right:5px}.wrap .page-title-action:focus{border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#c5d9ed}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f6f7f7}.bar{background-color:#f0f0f1;border-left-color:#4f94d4}.highlight{background-color:#f0f6fc;color:#3c434a}.wp-ui-primary{color:#fff;background-color:#2c3338}.wp-ui-text-primary{color:#2c3338}.wp-ui-highlight{color:#fff;background-color:#2271b1}.wp-ui-text-highlight{color:#2271b1}.wp-ui-notification{color:#fff;background-color:#d63638}.wp-ui-text-notification{color:#d63638}.wp-ui-text-icon{color:#8c8f94}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#f6f7f7;color:#1d2327}.stuffbox .hndle{border-bottom:1px solid #c3c4c7}.quicktags{background-color:#c3c4c7;color:#000;font-size:12px}.icon32{display:none}#bulk-titles .ntdelbutton:before,.notice-dismiss:before,.tagchecklist .ntdelbutton .remove-tag-icon:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#787c82;content:"\f153";display:block;font:normal 16px/20px dashicons;speak:never;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-right:2px;border-radius:50%;color:#2271b1;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles .ntdelbutton:focus:before,#bulk-titles .ntdelbutton:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before{color:#d63638}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{color:#646970;display:block}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}hr{border:0;border-top:1px solid #dcdcde;border-bottom:1px solid #f6f7f7}#all-plugins-table .plugins a.delete,#delete-link a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.privacy_requests .remove-personal-data .remove-personal-data-handle,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete,a#remove-post-thumbnail{color:#b32d2e}#all-plugins-table .plugins a.delete:hover,#delete-link a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.privacy_requests .remove-personal-data .remove-personal-data-handle:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,a#remove-post-thumbnail:hover,abbr.required,span.required{color:#b32d2e;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #dcdcde;background:#f6f7f7}#delete-action{float:right;line-height:2.30769231}#delete-link{line-height:2.30769231;vertical-align:middle;text-align:right;margin-right:8px}#delete-link a{text-decoration:none}#publishing-action{text-align:left;float:left;line-height:1.9}#publishing-action .spinner{float:none;margin-top:5px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}.misc-pub-filename,.word-wrap-break-word{word-wrap:break-word}#minor-publishing-actions{padding:10px 10px 0;text-align:left}#save-post{float:right}.preview{float:left}#sticky-span{margin-right:18px}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:left}#misc-publishing-actions .notice{margin-right:10px;margin-left:10px}.wp-filter{display:inline-block;position:relative;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;background:#fff;color:#50575e;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;border-radius:30px;background:#646970;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-right:5px;margin-left:20px}.filter-items{float:right}.filter-links{display:inline-block;margin:0}.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#646970;cursor:pointer}.filter-links .current{box-shadow:none;border-bottom:4px solid #646970;color:#1d2327}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#135e96}.wp-filter .search-form{float:left;margin:10px 0}.wp-filter .search-form input[type=search]{margin:1px 0;width:280px;max-width:100%}.wp-filter .search-form select{margin:0}.plugin-install-php .wp-filter{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.wp-filter .search-form.search-plugins{margin-top:0}.wp-filter .search-form.search-plugins .wp-filter-search,.wp-filter .search-form.search-plugins select{display:inline-block;margin-top:10px;vertical-align:top}.wp-filter .button.drawer-toggle{margin:10px 9px 0;padding:0 6px 0 10px;border-color:transparent;background-color:transparent;color:#646970;vertical-align:baseline;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 0 0 5px;color:#646970;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#135e96}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#4f94d4}.wp-filter .button.drawer-toggle:active{background:0 0;box-shadow:none;transform:none}.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer,.wp-filter .favorites-form{display:none;margin:0 -20px 0 -10px;padding:20px;border-top:1px solid #f0f0f1;background:#f6f7f7;overflow:hidden}.show-favorites-form .favorites-form,.show-filters .filter-drawer{display:block}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{border-radius:2px;background:#646970;color:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2271b1}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:right;margin:0 0 0 1%;padding:20px 10px 10px;width:24%;background:#fff;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:1.4}.filter-drawer .filter-group-feature input{position:absolute;margin:0}.filter-group .filter-group-feature label{display:block;margin:14px 23px 14px 0}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-right:10px}.wp-filter .button-link.edit-filters{padding:0 5px;line-height:2.2}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-right:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #f0f0f1}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.plugin-categories-filter{display:inline-block}.plugin-categories-filter li{float:right;width:21.5%}.plugin-categories-filter li a{font-size:1.5em;background-color:#fff;border:1px solid #c3c4c7;padding:20px;display:block;text-decoration:none}.plugin-categories-filter li a:focus,.plugin-categories-filter li a:hover{background-color:#f6f7f7}.notice,div.error,div.updated{background:#fff;border:1px solid #c3c4c7;border-right-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}div[class=update-message]{padding:.5em 0 .5em 12px}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#1d2327;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-left:38px;position:relative}.notice-dismiss{position:absolute;top:0;left:1px;border:none;margin:0;padding:9px;background:0 0;color:#787c82;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#d63638}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.notice-success,div.updated{border-right-color:#00a32a}.notice-success.notice-alt{background-color:#edfaef}.notice-warning{border-right-color:#dba617}.notice-warning.notice-alt{background-color:#fcf9e8}.notice-error,div.error{border-right-color:#d63638}.notice-error.notice-alt{background-color:#fcf0f1}.notice-info{border-right-color:#72aee6}.notice-info.notice-alt{background-color:#f0f6fc}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.wrap #templateside .notice{display:block;margin:0;padding:5px 8px;font-weight:600;text-decoration:none}.wrap #templateside span.notice{margin-right:-12px}#templateside li.notice a{padding:0}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#d63638;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:rotation 2s infinite linear}@media (prefers-reduced-motion:reduce){.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:none}}.theme-overlay .theme-autoupdate .dashicons-update.spin{margin-left:3px}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#68de7c;content:"\f147"}.update-message.notice-error p:before{color:#d63638;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-left:6px}.import-php .updating-message:before{vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;margin:25px 2px 0 20px}ul#dismissed-updates{display:none}#dismissed-updates li>p{margin-top:0}#dismiss,#undismiss{margin-right:.5em}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}h2.wp-current-version{margin-bottom:.3em}p.update-last-checked{margin-top:0}p.auto-update-status{margin-top:2em;line-height:1.8}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-right:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px -2px 0 5px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#9ec2e6}.button.updated-message{transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:never}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-right:0}#screen-meta-links{float:left;margin:0 0 0 20px}#screen-meta{display:none;margin:0 0 -1px 20px;position:relative;background-color:#fff;border:1px solid #c3c4c7;border-top:none;box-shadow:0 0 0 transparent}#contextual-help-link-wrap,#screen-options-link-wrap{float:right;margin:0 6px 0 0}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:1px solid #c3c4c7;border-top:none;height:auto;margin-bottom:0;padding:3px 16px 3px 6px;background:#fff;border-radius:0 0 4px 4px;color:#646970;line-height:1.7;box-shadow:0 0 0 transparent;transition:box-shadow .1s linear}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#2c3338}#screen-meta-links .show-settings:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}#screen-meta-links .show-settings:active{transform:none}#screen-meta-links .show-settings:after{left:0;content:"\f140";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 0 0 5px;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top right;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom right}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:2.35}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-left:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 0 0 5px}.metabox-prefs .columns-prefs label input{margin:-1px 0 0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-left:15px;padding-left:0}.metabox-prefs .screen-options label{line-height:2.2;padding-left:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;right:150px;left:170px;border:1px solid #c3c4c7;border-top:none;border-bottom:none;background:#f0f6fc}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;border-left-width:0;border-bottom-left-radius:2px}.contextual-help-tabs{float:right;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:0 2px 0 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 12px 5px 5px;line-height:1.4;text-decoration:none;border:1px solid transparent;border-left:none;border-right:none}.contextual-help-tabs a:hover{color:#2c3338}.contextual-help-tabs .active{padding:0;margin:0 0 0 -1px;border-right:2px solid #72aee6;background:#f0f6fc;box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#c3c4c7;color:#2c3338}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 0 12px 22px;line-height:1.6}.help-tab-content.active{display:block}.help-tab-content ul li{list-style-type:disc;margin-right:18px}.contextual-help-sidebar{width:150px;float:left;padding:0 12px 0 8px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box;-ms-overflow-style:scrollbar}.widefat td,.widefat th{color:#50575e}.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th{color:#2c3338}.widefat td p{margin:2px 0 .8em}.widefat ol,.widefat p,.widefat ul{color:#2c3338}.widefat .column-comment p{margin:.6em 0}.widefat .column-comment ul{list-style:initial;margin-right:2em}.postbox-container{float:right}.postbox-container .meta-box-sortables{box-sizing:border-box}.postbox-container summary{font-size:14px;font-weight:600;padding:2px 12px;margin:0;line-height:1.4;border-bottom:1px solid #c3c4c7}.postbox-container summary>div{display:inline-flex}.postbox-container .handle-actions{left:12px;position:absolute}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .meta-box-sortables{min-height:1px;position:relative}details summary>*{display:inline}.metabox-holder details>summary::-webkit-details-marker,.metabox-holder details>summary::marker{font-size:1.5em;cursor:pointer}.metabox-holder details>summary h2{padding-right:5px!important}#post-body-content{width:100%;min-width:463px;float:right}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{outline:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .postbox .hndle.is-non-sortable,.js .widget .widget-top.is-non-sortable{cursor:auto}.hndle a{font-size:12px;font-weight:400}.postbox-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #c3c4c7}.postbox-header .hndle{flex-grow:1;display:flex;justify-content:space-between;align-items:center}.postbox-header .handle-actions{flex-shrink:0}.postbox .handle-order-higher,.postbox .handle-order-lower,.postbox .handlediv{width:36px;height:36px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.postbox .handle-order-higher,.postbox .handle-order-lower{color:#787c82;width:1.62rem}.edit-post-meta-boxes-area .postbox .handle-order-higher,.edit-post-meta-boxes-area .postbox .handle-order-lower{width:44px;height:44px;color:#1d2327}.postbox .handle-order-higher[aria-disabled=true],.postbox .handle-order-lower[aria-disabled=true]{cursor:default;color:#a7aaad}.sortable-placeholder{border:1px dashed #c3c4c7;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox.closed{border-bottom:0}.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;user-select:none}.postbox .inside{padding:0 12px 12px;line-height:1.4;font-size:13px}.stuffbox .inside{padding:0;line-height:1.4;font-size:13px;margin-top:0}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{box-shadow:none}.temp-border{border:1px dotted #c3c4c7}.columns-prefs label{padding:0 0 0 10px}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#comment-status-display,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;right:0;left:0;padding:10px 20px;color:#50575e}#wpfooter p{font-size:13px;margin:0;line-height:1.55}#footer-thankyou{font-style:italic}.nav-tab{float:right;border:1px solid #c3c4c7;border-bottom:none;margin-right:.5em;padding:5px 10px;font-size:14px;line-height:1.71428571;font-weight:600;background:#dcdcde;color:#50575e;text-decoration:none;white-space:nowrap}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:1.33}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#3c434a}.nav-tab-active,.nav-tab:focus:active{box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#3c434a}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f0f0f1;background:#f0f0f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #c3c4c7;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;float:left;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template>div{margin-left:16em}#template .notice{margin-top:1em;margin-left:3%}#template .notice p{width:auto}#template .submit .spinner{float:none}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder details>summary{line-height:1.4;padding-top:6px;margin-top:0!important}.nav-menus-php .metabox-holder details>summary::before{margin-left:.2em}.nav-menus-php .metabox-holder h3{font-size:1.1em;font-weight:500}#templateside ul li a{text-decoration:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:right}.attention,.error-message{color:#d63638;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #dcdcde;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.importers{font-size:16px;width:auto}.importers td{padding-left:14px;line-height:1.4}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.importer-action,.importer-desc,.importer-title{display:block}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:1.55;color:#50575e;margin-bottom:1em}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{color:#1d2327;border-bottom:1px solid #f0f0f1}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:100%}#namediv p{margin:10px 0}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:.15}.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}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) repeat-x bottom right}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) repeat-x top right;height:17px;float:right}.star-rating{white-space:nowrap}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;transition:color .1s ease-in;text-align:center;color:#dba617}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{transform:rotateY(-180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 26px;background:#f6f7f7;font-size:22px;font-weight:600;line-height:2.4;position:relative;height:56px}#plugin-information-title.with-banner{margin-left:0;height:250px;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:600;padding:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{position:relative;font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:1.68;box-sizing:border-box;max-width:100%;padding:0 15px;margin-top:174px;color:#fff;background:rgba(29,35,39,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 0 30px rgba(255,255,255,.1);border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{position:absolute;display:block;top:0;right:0;height:250px;width:100%;background:0 0;box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;left:0;right:0;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #dcdcde;background:#f6f7f7}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:1.3;font-size:14px;text-decoration:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #dcdcde;border-bottom-color:#fff;padding-top:8px;color:#2c3338}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;left:0;right:0;min-height:100%;min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;left:250px;bottom:0;right:0;margin-top:10px;margin-left:250px;padding:10px 26px 99999px;margin-bottom:-99932px}#section-holder .notice{margin:5px 0 15px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:left;position:relative;top:0;left:0;padding:16px 16px 99999px;margin-bottom:-99932px;width:217px;border-right:1px solid #dcdcde;background:#f6f7f7;color:#646970}#plugin-information .fyi strong{color:#3c434a}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#646970;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-left:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:right;margin-left:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#dcdcde;float:right}#plugin-information .counter-bar{height:17px;background-color:#f0c33c;float:right}#plugin-information .counter-count{margin-right:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:13px 16px;position:absolute;left:0;bottom:0;right:0;height:40px;border-top:1px solid #dcdcde;background:#f6f7f7}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #c3c4c7}#plugin-information blockquote{border-right:2px solid #dcdcde;color:#646970;font-style:italic;margin:1em 0;padding:0 1em 0 0}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #dcdcde}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-left:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:2;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #dcdcde;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}#TB_window.plugin-details-modal{background:#fff}#TB_window.plugin-details-modal.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;background:#fff url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#TB_window.plugin-details-modal.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}.plugin-details-modal #TB_title{float:right;height:1px}.plugin-details-modal #TB_ajaxWindowTitle{display:none}.plugin-details-modal #TB_closeWindowButton{right:auto;left:-30px;color:#f0f0f1}.plugin-details-modal #TB_closeWindowButton:focus,.plugin-details-modal #TB_closeWindowButton:hover{outline:0;box-shadow:none}.plugin-details-modal #TB_closeWindowButton:focus::after,.plugin-details-modal #TB_closeWindowButton:hover::after{outline:2px solid;outline-offset:-4px;border-radius:4px}.plugin-details-modal .tb-close-icon{display:none}.plugin-details-modal #TB_closeWindowButton:after{content:"\f335";font:normal 32px/29px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){.plugin-details-modal #TB_closeWindowButton{left:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator::before,.meta-box-sortables .postbox .order-higher-indicator::before,.meta-box-sortables .postbox .order-lower-indicator::before,.meta-box-sortables .postbox .toggle-indicator::before,.privacy-text-box .toggle-indicator::before,.sidebar-name .toggle-indicator::before{content:"\f142";display:inline-block;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before,.js .widgets-holder-wrap.closed .toggle-indicator::before,.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before,.privacy-text-box.closed .toggle-indicator::before{content:"\f140"}.postbox .handle-order-higher .order-higher-indicator::before{content:"\f343";color:inherit}.postbox .handle-order-lower .order-lower-indicator::before{content:"\f347";color:inherit}.postbox .handle-order-higher .order-higher-indicator::before,.postbox .handle-order-lower .order-lower-indicator::before{position:relative;top:.11rem;width:20px;height:20px}.postbox .handlediv .toggle-indicator::before{width:20px;border-radius:50%}.postbox .handlediv .toggle-indicator::before{position:relative;top:.05rem;text-indent:-1px}.rtl .postbox .handlediv .toggle-indicator::before{text-indent:1px}.bulk-action-notice .toggle-indicator::before{line-height:16px;vertical-align:top;color:#787c82}.postbox .handle-order-higher:focus,.postbox .handle-order-lower:focus,.postbox .handlediv:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}.postbox .handle-order-higher:focus .order-higher-indicator::before,.postbox .handle-order-lower:focus .order-lower-indicator::before,.postbox .handlediv:focus .toggle-indicator::before{box-shadow:none;outline:1px solid transparent}#photo-add-url-div input[type=text]{width:300px}.alignleft h2{margin:0}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;background:#f6f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4}#template .CodeMirror,#template textarea{width:100%;min-height:60vh;height:calc(100vh - 295px);border:1px solid #dcdcde;box-sizing:border-box}#templateside>h2{padding-top:6px;padding-bottom:7px;margin:0}#templateside ol,#templateside ul{margin:0;padding:0}#templateside>ul{box-sizing:border-box;margin-top:0;overflow:auto;padding:0;min-height:60vh;height:calc(100vh - 295px);background-color:#f6f7f7;border:1px solid #dcdcde;border-right:none}#templateside ul ul{padding-right:12px}#templateside>ul>li>ul[role=group]{padding-right:0}[role=treeitem][aria-expanded=false]>ul{display:none}[role=treeitem] span[aria-hidden]{display:inline;font-family:dashicons;font-size:20px;position:absolute;pointer-events:none}[role=treeitem][aria-expanded=false]>.folder-label .icon:after{content:"\f141"}[role=treeitem][aria-expanded=true]>.folder-label .icon:after{content:"\f140"}[role=treeitem] .folder-label{display:block;padding:3px 12px 3px 3px;cursor:pointer}[role=treeitem]{outline:0}[role=treeitem] .folder-label.focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}[role=treeitem] .folder-label.hover,[role=treeitem].hover{background-color:#f0f0f1}.tree-folder{margin:0;position:relative}[role=treeitem] li{position:relative}.tree-folder .tree-folder::after{content:"";display:block;position:absolute;right:2px;border-right:1px solid #c3c4c7;top:-13px;bottom:10px}.tree-folder>li::before{content:"";position:absolute;display:block;border-right:1px solid #c3c4c7;right:2px;top:-5px;height:18px;width:7px;border-bottom:1px solid #c3c4c7}.tree-folder>li::after{content:"";position:absolute;display:block;border-right:1px solid #c3c4c7;right:2px;bottom:-7px;top:0}#templateside .current-file{margin:-4px 0 -2px}.tree-folder>.current-file::before{right:4px;height:15px;width:0;border-right:none;top:3px}.tree-folder>.current-file::after{bottom:-4px;height:7px;right:2px;top:auto}.tree-folder li:last-child>.tree-folder::after,.tree-folder>li:last-child::after{display:none}#documentation label,#theme-plugin-editor-label,#theme-plugin-editor-selector{font-weight:600}#theme-plugin-editor-label{display:inline-block;margin-bottom:1em}#docs-list,#template textarea{direction:ltr}.fileedit-sub #plugin,.fileedit-sub #theme{max-width:40%}.fileedit-sub .alignright{text-align:left}#template p{width:97%}#file-editor-linting-error{margin-top:1em;margin-bottom:1em}#file-editor-linting-error>.notice{margin:0;display:inline-block}#file-editor-linting-error>.notice>p{width:auto}#template .submit{margin-top:1em;padding:0}#template .submit input[type=submit][disabled]{cursor:not-allowed}#templateside{float:left;width:16em;word-wrap:break-word}#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside li{margin:4px 0}#templateside li:not(.howto) a,.theme-editor-php .highlight{display:block;padding:3px 12px 3px 0;text-decoration:none}#templateside li:not(.howto)>a:first-of-type{padding-top:0}#templateside li.howto{padding:6px 12px 12px}.theme-editor-php .highlight{margin:-3px -12px -3px 3px}#templateside .highlight{border:none;font-weight:600}.nonessential{color:#646970;font-size:11px;font-style:italic;padding-right:12px}#documentation{margin-top:10px}#documentation label{line-height:1.8;vertical-align:baseline}.fileedit-sub{padding:10px 0 8px;line-height:180%}#file-editor-warning .file-editor-warning-content{margin:25px}.nav-menus-php .item-edit:before,.widget-top .widget-action .toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.widget-top .widget-action .toggle-indicator:before{padding:1px 0 1px 2px;border-radius:50%}.accordion-section-title:after,.handlediv,.item-edit,.postbox .handlediv.button-link,.toggle-indicator{color:#787c82}.widget-action{color:#50575e}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.postbox .handlediv.button-link:focus,.postbox .handlediv.button-link:hover,.sidebar-name:hover .toggle-indicator,.widget-action:focus,.widget-top:hover .widget-action{color:#1d2327;outline:1px solid transparent}.widget-top .widget-action:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top .widget-action .toggle-indicator:before,.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before{content:"\f142"}/*! +#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-right:20px}#wpcontent,#wpfooter{margin-right:160px}.folded #wpcontent,.folded #wpfooter{margin-right:36px}#wpbody-content{padding-bottom:65px;float:right;width:100%;overflow:visible!important}.inner-sidebar{float:left;clear:left;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-left:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:right;clear:right;width:100%;margin-left:-2000px}.has-right-sidebar #post-body-content{margin-left:300px;float:none;width:auto}#col-left{float:right;width:35%}#col-right{float:left;width:65%}#col-left .col-wrap{padding:0 0 0 6px}#col-right .col-wrap{padding:0 6px 0 0}.alignleft{float:right}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{right:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}.wp-person a:focus .gravatar,a:focus,a:focus .media-icon img{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}#adminmenu a:focus,.screen-reader-text:focus{box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}p{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{color:#23282d;font-size:2em;margin:.67em 0}h2,h3{color:#23282d;font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:2em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc outside}ul.ul-square{list-style:square outside}ol.ol-decimal{list-style:decimal outside}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-right:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px 5px;margin:0 1px;background:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;float:right;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#555d66;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a,.widefat button.button-link{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:right;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 8px 0 0;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 3px 0 0}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-right:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 2px 0 20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:29px}.wrap h1.wp-heading-inline{display:inline-block;margin-left:5px}.wp-header-end{visibility:hidden;margin:-2px 0 0}.subtitle{margin:0;padding-right:25px;color:#555d66;font-size:14px;font-weight:400;line-height:1}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-right:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;border:1px solid #ccc;border-radius:2px;background:#f7f7f7;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#0073aa;cursor:pointer;outline:0}.wrap .wp-heading-inline+.page-title-action{margin-right:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{border-color:#008ec2;background:#00a0d2;color:#fff}.page-title-action:focus{color:#124964}.wrap .page-title-action:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-left-color:#99d}.highlight{background-color:#e4f2fd;color:#000}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#82878c}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#fafafa;color:#23282d}.postbox .hndle,.stuffbox .hndle{border-bottom:1px solid #eee}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist .ntdelbutton .remove-tag-icon:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#72777c;content:"\f153";display:block;font:normal 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}#bulk-titles div a:before{margin:1px 0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-right:2px;border-radius:50%;color:#0073aa;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles div a:focus:before,#bulk-titles div a:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins a.delete,#delete-link a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete{color:#a00}#all-plugins-table .plugins a.delete:hover,#delete-link a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,abbr.required,span.required{color:#dc3232;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{float:right;line-height:28px}#delete-link{line-height:28px;vertical-align:middle;text-align:right;margin-right:8px}#delete-link a{text-decoration:none}#publishing-action{text-align:left;float:left;line-height:23px}#publishing-action .spinner{float:right}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}.misc-pub-filename{word-wrap:break-word}#minor-publishing-actions{padding:10px 10px 0 10px;text-align:left}#save-post{float:right}.preview{float:left}#sticky-span{margin-right:18px}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:left}#misc-publishing-actions .notice{margin-right:10px;margin-left:10px}.wp-filter{display:inline-block;position:relative;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;border-radius:30px;background:#72777c;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-right:5px;margin-left:20px}.filter-items{float:right}.filter-links{display:inline-block;margin:0}.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#666;cursor:pointer}.filter-links .current{box-shadow:none;border-bottom:4px solid #666;color:#23282d}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#00a0d2}.wp-filter .search-form{float:left;margin:10px 0}.wp-filter .search-form input[type=search]{margin:0;padding:3px 5px;width:280px;max-width:100%;font-size:16px;font-weight:300;line-height:1.5}.wp-filter .search-form select{margin:0;height:32px;vertical-align:top}.wp-filter .search-form.search-plugins{display:inline-block}.wp-filter .button.drawer-toggle{margin:10px 9px 0;padding:0 6px 0 10px;border-color:transparent;background-color:transparent;color:#666;vertical-align:baseline;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 0 0 5px;color:#72777c;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#00a0d2}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#5b9dd9}.wp-filter .button.drawer-toggle:active{background:0 0;box-shadow:none;transform:none}.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer,.wp-filter .favorites-form{display:none;margin:0 -20px 0 -10px;padding:20px;border-top:1px solid #eee;background:#fafafa;overflow:hidden}.show-favorites-form .favorites-form,.show-filters .filter-drawer{display:block}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{border-radius:2px;background:#72777c;color:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:right;margin:0 0 0 1%;padding:20px 10px 10px;width:24%;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:16px}.filter-drawer .filter-group-feature input{position:absolute;margin:0}.filter-group .filter-group-feature label{display:block;margin:14px 23px 14px 0}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-right:10px}.wp-filter .button-link.edit-filters{padding:0 5px;line-height:28px}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-right:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none!important}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.plugin-categories-filter{display:inline-block}.plugin-categories-filter li{background-color:#fff;border:1px solid #ddd;float:right;padding:20px;width:21.5%}.plugin-categories-filter li{margin-left:5px}.plugin-categories-filter li a{font-size:1.5em}.about-inline-notice,.notice,div.error,div.updated{background:#fff;border-right:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}div[class=update-message]{padding:.5em 0 .5em 12px}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-left:38px;position:relative}.notice-dismiss{position:absolute;top:0;left:1px;border:none;margin:0;padding:9px;background:0 0;color:#72777c;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .notice-dismiss:focus{outline:1px solid #5b9dd9}.notice-success,div.updated{border-right-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-right-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-right-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-right-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.wrap #templateside .notice{display:block;margin:0;padding:5px 8px;font-weight:600;text-decoration:none}.wrap #templateside span.notice{margin-right:-12px}#templateside li.notice a{padding:0}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#f56e28;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.updating-message p:before{animation:rotation 2s infinite linear}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#79ba49;content:'\f147'}.update-message.notice-error p:before{color:#dc3232;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-left:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:right;margin:25px 2px 0 20px;background-color:#fff;border-right:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}ul#dismissed-updates{display:none}#dismissed-updates li>p{margin-top:0}#dismiss,#undismiss{margin-right:.5em}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em 0}.update-php .spinner{float:none;margin:-4px 0}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-right:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px -2px 0 5px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#66c6e4}.button.updated-message{transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:none}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-right:0!important}#screen-meta-links{margin:0 0 0 20px}#screen-meta{display:none;margin:0 0 -1px 20px;position:relative;background-color:#fff;border:1px solid #ddd;border-top:none;box-shadow:0 1px 0 rgba(0,0,0,.025)}#contextual-help-link-wrap,#screen-options-link-wrap{float:left;height:28px;margin:0 6px 0 0;border:1px solid #ddd;border-top:none;background:#fff;box-shadow:0 1px 1px -1px rgba(0,0,0,.1)}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:0;background:0 0;border-radius:0;color:#72777c;line-height:1.7;padding:3px 16px 3px 6px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{box-shadow:none;transform:none}#screen-meta-links .show-settings:after{left:0;content:"\f140";font:normal 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 5px;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#72777c}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top right;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom right}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-left:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 0 0 5px}.metabox-prefs .columns-prefs label input{margin:-1px 0 0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-left:15px}.metabox-prefs .screen-options label{line-height:28px;padding-left:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;right:150px;left:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;border-left-width:0;border-bottom-left-radius:2px}.contextual-help-tabs{float:right;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:0 2px 0 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 12px 5px 5px;line-height:18px;text-decoration:none;border:1px solid transparent;border-left:none;border-right:none}.contextual-help-tabs a:hover{color:#32373c}.contextual-help-tabs .active{padding:0;margin:0 0 0 -1px;border-right:2px solid #00a0d2;background:#f6fbfd;box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#e1e1e1;color:#32373c}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 0 12px 22px;line-height:1.6em}.help-tab-content.active{display:block}.help-tab-content ul li{list-style-type:disc;margin-right:18px}.contextual-help-sidebar{width:150px;float:left;padding:0 12px 0 8px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box}.widefat td,.widefat th{color:#555}.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat ol,.widefat p,.widefat ul{color:#32373c}.widefat .column-comment p{margin:.6em 0}.widefat .column-comment ul{list-style:initial;margin-right:2em}.postbox-container{float:right}.postbox-container .meta-box-sortables{box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px;position:relative}.metabox-holder .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:0;right:0;bottom:0;left:0;height:1em;width:200px;text-align:center;color:#ccc;font-size:18px;display:none}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}#post-body-content{width:100%;min-width:463px;float:right}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.hndle a{font-size:11px;font-weight:400}.postbox .handlediv{display:none;float:left;width:36px;height:36px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;user-select:none}.postbox .inside,.stuffbox .inside{padding:0 12px 12px;line-height:1.4em;font-size:13px}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 0 0 10px}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;right:0;left:0;padding:10px 20px;color:#555d66}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}.nav-tab{float:right;border:1px solid #ccc;border-bottom:none;margin-right:.5em;padding:5px 10px;font-size:14px;line-height:24px;font-weight:600;background:#e5e5e5;color:#555;text-decoration:none;white-space:nowrap}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#444}.nav-tab-active,.nav-tab:focus:active{box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#444}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.ie8 .nav-tab-wrapper{display:inline-block;width:100%;vertical-align:top}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;float:left;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template>div{margin-left:16em}#template .notice{margin-top:1em;margin-left:3%}#template .notice p{width:auto}#template .submit .spinner{float:none}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 14px 11px 10px;line-height:21px}#templateside ul li a{text-decoration:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:right}.attention,.error-message{color:#dc3232;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e5e5e5;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.importers{font-size:16px;width:auto}.importers td{padding-left:14px;line-height:1.5em}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.importer-action,.importer-desc,.importer-title{display:block}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:20px;color:#555;margin-bottom:1em}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 9px 0 0}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#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}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) repeat-x bottom right}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) repeat-x top right;height:17px;float:right}.star-rating{white-space:nowrap}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;transition:color .1s ease-in 0;text-align:center;color:#ffb900}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{transform:rotateY(-180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 26px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;height:56px}#plugin-information-title.with-banner{margin-left:0;height:250px;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:600;padding:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{position:relative;font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;box-sizing:border-box;max-width:100%;padding:0 15px;margin-top:174px;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 0 30px rgba(255,255,255,.1);border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{position:absolute;display:block;top:0;right:0;height:250px;width:100%;background:0 0;box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;left:0;right:0;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;left:0;right:0;min-height:100%;min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;left:250px;bottom:0;right:0;margin-left:250px;padding:10px 26px;margin-bottom:-99939px;padding-bottom:99999px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:left;position:relative;top:0;left:0;padding:16px;margin-bottom:-99939px;padding-bottom:99999px;width:217px;border-right:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#444}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-left:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:right;margin-left:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#e5e5e5;float:right}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:right}#plugin-information .counter-count{margin-right:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:13px 16px;position:absolute;left:0;bottom:0;right:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #ccc}#plugin-information blockquote{border-right:2px solid #ddd;color:#666;font-style:italic;margin:1em 0;padding:0 1em 0 0}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e5e5e5}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-left:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:40px;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #ddd;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}#TB_window.plugin-details-modal{background:#fcfcfc}#TB_window.plugin-details-modal.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;background:#fcfcfc url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#TB_window.plugin-details-modal.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}.plugin-details-modal #TB_title{float:right;height:1px}.plugin-details-modal #TB_ajaxWindowTitle{display:none}.plugin-details-modal #TB_closeWindowButton{right:auto;left:-30px;color:#eee}.plugin-details-modal #TB_closeWindowButton:focus,.plugin-details-modal #TB_closeWindowButton:hover{color:#00a0d2;outline:0;box-shadow:none}.plugin-details-modal .tb-close-icon{display:none}.plugin-details-modal #TB_closeWindowButton:after{content:"\f335";font:normal 32px/29px dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){.plugin-details-modal #TB_closeWindowButton{left:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator:before,.js .meta-box-sortables .postbox .toggle-indicator:before,.privacy-text-box .toggle-indicator:before,.sidebar-name .toggle-indicator:before{content:"\f142";display:inline-block;font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before,.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .toggle-indicator:before,.privacy-text-box.closed .toggle-indicator:before{content:"\f140"}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;border-radius:50%;text-indent:-1px}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.bulk-action-notice .toggle-indicator:before{line-height:16px;vertical-align:top;color:#72777c}.js .postbox .handlediv:focus{box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#photo-add-url-div input[type=text]{width:300px}.alignleft h2{margin:0}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;background:#f9f9f9;-moz-tab-size:4;-o-tab-size:4;tab-size:4}#template .CodeMirror,#template textarea{width:100%;min-height:60vh;height:calc(100vh - 295px);border:1px solid #ddd;box-sizing:border-box}#templateside>h2{padding-top:6px;padding-bottom:7px;margin:0}#templateside ol,#templateside ul{margin:0;padding:0}#templateside>ul{box-sizing:border-box;margin-top:0;overflow:auto;padding:0;min-height:60vh;height:calc(100vh - 295px);background-color:#f7f7f7;border:1px solid #ddd;border-right:none}#templateside ul ul{padding-right:12px}#templateside>ul>li>ul[role=group]{padding-right:0}[role=treeitem][aria-expanded=false]>ul{display:none}[role=treeitem] span[aria-hidden]{display:inline;font-family:dashicons;font-size:20px;position:absolute;pointer-events:none}[role=treeitem][aria-expanded=false]>.folder-label .icon:after{content:"\f141"}[role=treeitem][aria-expanded=true]>.folder-label .icon:after{content:"\f140"}[role=treeitem] .folder-label{display:block;padding:3px 12px 3px 3px;cursor:pointer}[role=treeitem]{outline:0}[role=treeitem] .folder-label.focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}[role=treeitem] .folder-label.hover,[role=treeitem].hover{background-color:#eaeaea}.tree-folder{margin:0;position:relative}[role=treeitem] li{position:relative}.tree-folder .tree-folder::after{content:' ';display:block;position:absolute;right:2px;border-right:1px solid #ccc;top:-13px;bottom:10px}.tree-folder>li::before{content:' ';position:absolute;display:block;border-right:1px solid #ccc;right:2px;top:-5px;height:18px;width:7px;border-bottom:1px solid #ccc}.tree-folder>li::after{content:' ';position:absolute;display:block;border-right:1px solid #ccc;right:2px;bottom:-7px;top:0}#templateside .current-file{margin:-4px 0 -2px}.tree-folder>.current-file::before{right:4px;height:15px;width:0;border-right:none;top:3px}.tree-folder>.current-file::after{bottom:-4px;height:7px;right:2px;top:auto}.tree-folder li:last-child>.tree-folder::after,.tree-folder>li:last-child::after{display:none}#theme-plugin-editor-label{display:inline-block;margin-bottom:1em;font-weight:600}#docs-list,#template textarea{direction:ltr}.fileedit-sub #plugin,.fileedit-sub #theme{max-width:40%}.fileedit-sub .alignright{text-align:left}#template p{width:97%}#file-editor-linting-error{margin-top:1em;margin-bottom:1em}#file-editor-linting-error>.notice{margin:0;display:inline-block}#file-editor-linting-error>.notice>p{width:auto}#template .submit{margin-top:1em;padding:0}#template .submit input[type=submit][disabled]{cursor:not-allowed}#templateside{float:left;width:16em;word-wrap:break-word}#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside li{margin:4px 0}#templateside li:not(.howto) a,.theme-editor-php .highlight{display:block;padding:3px 12px 3px 0;text-decoration:none}#templateside li:not(.howto)>a:first-of-type{padding-top:0}#templateside li.howto{padding:6px 12px 12px 12px}.theme-editor-php .highlight{margin:-3px -12px -3px 3px}#templateside .highlight{border:none;font-weight:600}.nonessential{color:#666;font-size:11px;font-style:italic;padding-right:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}#file-editor-warning .file-editor-warning-content{margin:25px}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top .widget-action .toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:none;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.widget-top .widget-action .toggle-indicator:before{padding:1px 0 1px 2px;border-radius:50%}.accordion-section-title:after,.handlediv,.item-edit,.postbox .handlediv.button-link,.toggle-indicator{color:#72777c}.widget-action{color:#555d66}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.postbox .handlediv.button-link:focus,.postbox .handlediv.button-link:hover,.sidebar-name:hover .toggle-indicator,.widget-action:focus,.widget-top:hover .widget-action{color:#23282d}.widget-top .widget-action:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.accordion-section-title:after,.control-section .accordion-section-title:after{float:left;left:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top .widget-action .toggle-indicator:before{content:"\f142"}/*! * jQuery UI Draggable/Sortable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.accordion-section{border-bottom:1px solid #dcdcde;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dcdcde}.accordion-section-content{padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-right:1px solid #dcdcde;border-left:1px solid #dcdcde;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;left:10px;z-index:1}.accordion-section-title:focus{outline:1px solid transparent}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a7aaad transparent;outline:1px solid transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section{border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.control-section:focus-within{outline:2px solid #3582c4}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-right:none;border-left:none;padding:10px 14px 11px 10px;line-height:1.55;background:#fff}.control-section details[open] summary.accordion-section-title{color:#3c434a;background-color:#f6f7f7;border-bottom:1px solid #dcdcde}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#1d2327;background:#f6f7f7}.control-section.open .accordion-section-title{border-bottom:1px solid #dcdcde}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;left:0;background:#c3c4c7}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:right;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(odd){clear:right}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f6f7f7}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:right;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f6f7f7}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:right;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:right}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f6f7f7}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:right;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:right}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f6f7f7}}@media only screen and (min-width:1600px){.my-sites li{float:right;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:right}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f6f7f7}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) repeat-x bottom right;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){html.wp-toolbar{padding-top:46px}.screen-reader-shortcut:focus{top:-39px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{clear:both;margin-left:12px;margin-right:0}#col-left,#col-right{float:none;width:auto}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-left:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{left:-16em}code{word-wrap:break-word;word-wrap:anywhere;word-break:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#template .CodeMirror,#template textarea{box-sizing:border-box}#templateside{float:none;width:auto}#templateside>ul{border-right:1px solid #dcdcde}#templateside li{margin:0}#templateside li:not(.howto) a{display:block;padding:5px}#templateside li.howto{padding:12px}#templateside .highlight{padding:5px;margin-right:-5px;margin-top:-5px}#template .notice,#template>div{float:none;margin:1em 0;width:auto}#template .CodeMirror,#template textarea{width:100%}#templateside ul ul{padding-right:1.5em}[role=treeitem] .folder-label{display:block;padding:5px}.tree-folder .tree-folder::after,.tree-folder>li::after,.tree-folder>li::before{right:-8px}.tree-folder>li::before{top:0;height:13px}.tree-folder>.current-file::before{right:-5px;top:7px;width:4px}.tree-folder>.current-file::after{height:9px;right:-8px}.wrap #templateside span.notice{margin-right:-5px;width:100%}.fileedit-sub .alignright{float:right;margin-top:15px;width:100%;text-align:right}.fileedit-sub .alignright label{display:block}.fileedit-sub #plugin,.fileedit-sub #theme{margin-right:0;max-width:70%}.fileedit-sub input[type=submit]{margin-bottom:0}#documentation label[for=docs-list]{display:block}#documentation select[name=docs-list]{margin-right:0;max-width:60%}#documentation input[type=button]{margin-bottom:0}#wpfooter{display:none}#comments-form .checkforspam{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:2.1}.filter-drawer .filter-group-feature label{margin-right:32px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:2;height:28px}#screen-meta #contextual-help-wrap{overflow:visible}#screen-meta #contextual-help-back,#screen-meta .contextual-help-sidebar{display:none}#screen-meta .contextual-help-tabs{clear:both;width:100%;float:none}#screen-meta .contextual-help-tabs ul{margin:0 0 1em;padding:1em 0 0}#screen-meta .contextual-help-tabs .active{margin:0}#screen-meta .contextual-help-tabs-wrap{clear:both;max-width:100%;float:none}#screen-meta,#screen-meta-links{margin-left:10px}#screen-meta-links{margin-bottom:20px}.wp-filter .search-form input[type=search]{font-size:1rem}.wp-filter .search-form.search-plugins{min-width:100%}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open{overflow-x:hidden}html.wp-toolbar{padding-top:0}.screen-reader-shortcut:focus{top:7px}#wpbody{padding-top:46px}div#post-body.metabox-holder.columns-1{overflow-x:hidden}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab,nav .nav-tab{margin:10px 0 0 10px;border-bottom:1px solid #c3c4c7}.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #c3c4c7}.wp-filter .search-form input[type=search]{width:100%}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}} \ No newline at end of file + */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.accordion-section{border-bottom:1px solid #ddd;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#ddd}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-right:1px solid #ddd;border-left:1px solid #ddd;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;left:10px;z-index:1}.accordion-section-title:focus{outline:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-right:none;border-left:none;padding:10px 14px 11px 10px;line-height:21px;background:#fff}.control-section .accordion-section-title:after,.customize-pane-child .accordion-section-title:after{top:calc(50% - 10px)}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#23282d;background:#f5f5f5}.control-section.open .accordion-section-title{border-bottom:1px solid #ddd}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;left:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:right;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:right}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:right;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:right;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:right}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:right;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:right}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:right;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:right}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) repeat-x bottom right;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}#bulk-titles div a,#bulk-titles div a:hover,#screen-meta-links a.show-settings,.curtime #timestamp,.meta-box-sortables .postbox:hover .handlediv,.sidebar-name .toggle-indicator,.sidebar-name:hover .toggle-indicator,.widget-top .widget-action,.widget-top .widget-action:hover{background:0 0!important}}@media screen and (max-width:782px){html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-left:12px;margin-right:0}#col-left,#col-right{float:none;width:auto}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px 0;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-left:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{left:-16em}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#template .CodeMirror,#template textarea{box-sizing:border-box}#templateside{float:none;width:auto}#templateside>ul{border-right:1px solid #ddd}#templateside li{margin:0}#templateside li:not(.howto) a{display:block;padding:5px}#templateside li.howto{padding:12px}#templateside .highlight{padding:5px;margin-right:-5px;margin-top:-5px}#template .notice,#template>div{float:none;margin:1em 0;width:auto}#template .CodeMirror,#template textarea{width:100%}#templateside ul ul{padding-right:1.5em}[role=treeitem] .folder-label{display:block;padding:5px}.tree-folder .tree-folder::after,.tree-folder>li::after,.tree-folder>li::before{right:-8px}.tree-folder>li::before{top:0;height:13px}.tree-folder>.current-file::before{right:-5px;top:7px;width:4px}.tree-folder>.current-file::after{height:9px;right:-8px}.wrap #templateside span.notice{margin-right:-5px;width:100%}.fileedit-sub .alignright{float:right;margin-top:15px;width:100%;text-align:right}.fileedit-sub .alignright label{display:block}.fileedit-sub #plugin,.fileedit-sub #theme{margin-right:0;max-width:70%}.fileedit-sub input[type=submit]{margin-bottom:0;padding:8px 18px}#documentation label[for=docs-list]{display:block}#documentation select[name=docs-list]{margin-right:0;max-width:60%}#documentation input[type=button]{margin-bottom:0;padding:8px 18px}#wpfooter{display:none}#comments-form .checkforspam{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}.filter-drawer .filter-group-feature label{margin-right:32px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:26px;height:28px}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}div#post-body.metabox-holder.columns-1{overflow-x:hidden}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin:10px 0 0 10px;border-bottom:1px solid #ccc}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}} \ No newline at end of file diff --git a/wp-admin/css/common.css b/wp-admin/css/common.css index f2d0323..768d61c 100644 --- a/wp-admin/css/common.css +++ b/wp-admin/css/common.css @@ -26,7 +26,7 @@ padding-bottom: 65px; float: left; width: 100%; - overflow: visible; + overflow: visible !important; } /* inner 2 column liquid layout */ @@ -123,6 +123,7 @@ .ui-helper-hidden-accessible { border: 0; clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; @@ -133,36 +134,27 @@ word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ } -.button .screen-reader-text { - height: auto; /* Fixes a Safari+VoiceOver bug, see ticket #42006 */ -} - .screen-reader-shortcut { position: absolute; top: -1000em; +} + +.screen-reader-shortcut:focus { left: 6px; + top: -25px; height: auto; width: auto; display: block; font-size: 14px; font-weight: 600; padding: 15px 23px 14px; - /* Background and color set to prevent false positives in automated accessibility tests. */ - background: #f0f0f1; - color: #2271b1; + background: #f1f1f1; + color: #0073aa; z-index: 100000; line-height: normal; -} - -.screen-reader-shortcut:focus { - top: -25px; - /* Overrides a:focus in the admin. See ticket #56789. */ - color: #2271b1; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); text-decoration: none; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; + outline: none; } .hidden, @@ -192,8 +184,8 @@ p.popular-tags, .feature-filter, .imgedit-group, .comment-ays { - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); } table.widefat, @@ -217,8 +209,8 @@ body { } body { - background: #f0f0f1; - color: #3c434a; + background: #f1f1f1; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 13px; line-height: 1.4em; @@ -254,7 +246,7 @@ td { /* Any change to the default link style must be applied to button-link too. */ a { - color: #2271b1; + color: #0073aa; transition-property: border, background, color; transition-duration: .05s; transition-timing-function: ease-in-out; @@ -267,28 +259,23 @@ div { a:hover, a:active { - color: #135e96; + color: #00a0d2; } a:focus, a:focus .media-icon img, -a:focus .plugin-icon, .wp-person a:focus .gravatar { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } -#adminmenu a:focus { - box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; - outline-offset: -1px; +.ie8 a:focus { + outline: #5b9dd9 solid 1px; } +#adminmenu a:focus, .screen-reader-text:focus { box-shadow: none; outline: none; @@ -307,8 +294,7 @@ q:after { content: none; } -p, -.wp-die-message { +p { font-size: 13px; line-height: 1.5; margin: 1em 0; @@ -334,20 +320,20 @@ h6 { } h1 { - color: #1d2327; + color: #23282d; font-size: 2em; margin: .67em 0; } h2, h3 { - color: #1d2327; + color: #23282d; font-size: 1.3em; margin: 1em 0; } .update-core-php h2 { - margin-top: 4em; + margin-top: 2em; } .update-php h2, @@ -420,10 +406,10 @@ code { kbd, code { - padding: 3px 5px 2px; + padding: 3px 5px 2px 5px; margin: 0 1px; - background: #f0f0f1; - background: rgba(0, 0, 0, 0.07); + background: #eaeaea; + background: rgba(0,0,0,0.07); font-size: 13px; } @@ -433,7 +419,7 @@ code { padding: 0; font-size: 13px; float: left; - color: #646970; + color: #666; } .subsubsub a { @@ -444,7 +430,7 @@ code { .subsubsub a .count, .subsubsub a.current .count { - color: #50575e; /* #f1f1f1 background */ + color: #555d66; /* #f1f1f1 background */ font-weight: 400; } @@ -484,12 +470,12 @@ code { .widefat thead th, .widefat thead td { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #e1e1e1; } .widefat tfoot th, .widefat tfoot td { - border-top: 1px solid #c3c4c7; + border-top: 1px solid #e1e1e1; border-bottom: none; } @@ -574,10 +560,6 @@ code { margin: 10px 20px 0 2px; } -.wrap.block-editor-no-js { - padding-left: 20px; -} - .wrap > h2:first-child, /* Back-compat for pre-4.4 */ .wrap [class$="icon32"] + h2, /* Back-compat for pre-4.4 */ .postbox .inside h2, /* Back-compat for pre-4.4 */ @@ -585,8 +567,8 @@ code { font-size: 23px; font-weight: 400; margin: 0; - padding: 9px 0 4px; - line-height: 1.3; + padding: 9px 0 4px 0; + line-height: 29px; } .wrap h1.wp-heading-inline { @@ -602,16 +584,12 @@ code { .subtitle { margin: 0; padding-left: 25px; - color: #50575e; + color: #555d66; font-size: 14px; font-weight: 400; line-height: 1; } -.subtitle strong { - word-break: break-all; -} - .wrap .add-new-h2, /* deprecated */ .wrap .add-new-h2:active, /* deprecated */ .wrap .page-title-action, @@ -621,15 +599,17 @@ code { position: relative; top: -3px; text-decoration: none; - border: 1px solid #2271b1; + border: none; + border: 1px solid #ccc; border-radius: 2px; + background: #f7f7f7; text-shadow: none; font-weight: 600; font-size: 13px; line-height: normal; /* IE8-IE11 need this for buttons */ - color: #2271b1; /* use the standard color used for buttons */ - background: #f6f7f7; + color: #0073aa; /* some of these controls are button elements and don't inherit from links */ cursor: pointer; + outline: 0; } .wrap .wp-heading-inline + .page-title-action { @@ -638,27 +618,19 @@ code { .wrap .add-new-h2:hover, /* deprecated */ .wrap .page-title-action:hover { - background: #f0f0f1; - border-color: #0a4b78; - color: #0a4b78; + border-color: #008EC2; + background: #00a0d2; + color: #fff; } /* lower specificity: color needs to be overridden by :hover and :active */ .page-title-action:focus { - color: #0a4b78; -} - -/* Dashicon for language options on General Settings and Profile screens */ -.form-table th label[for="locale"] .dashicons, -.form-table th label[for="WPLANG"] .dashicons { - margin-left: 5px; + color: #124964; } .wrap .page-title-action:focus { - border-color: #3582c4; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); } .wrap h1.long-header { @@ -674,12 +646,12 @@ code { #available-widgets .widget-top:hover, div#widgets-right .widget-top:hover, #widgets-left .widget-top:hover { - border-color: #8c8f94; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + border-color: #999; + box-shadow: 0 1px 2px rgba(0,0,0,0.1); } .sorthelper { - background-color: #c5d9ed; + background-color: #ccf3fa; } .ac_match, @@ -690,47 +662,47 @@ div#widgets-right .widget-top:hover, .striped > tbody > :nth-child(odd), ul.striped > :nth-child(odd), .alternate { - background-color: #f6f7f7; + background-color: #f9f9f9; } .bar { - background-color: #f0f0f1; - border-right-color: #4f94d4; + background-color: #e8e8e8; + border-right-color: #99d; } -/* Helper classes for plugins to leverage the active WordPress color scheme */ +/* Helper classes for plugins to leverage the active ClassicPress color scheme */ .highlight { - background-color: #f0f6fc; - color: #3c434a; + background-color: #e4f2fd; + color: #000; } .wp-ui-primary { color: #fff; - background-color: #2c3338; + background-color: #32373c; } .wp-ui-text-primary { - color: #2c3338; + color: #32373c; } .wp-ui-highlight { color: #fff; - background-color: #2271b1; + background-color: #1e8cbe; } .wp-ui-text-highlight { - color: #2271b1; + color: #1e8cbe; } .wp-ui-notification { color: #fff; - background-color: #d63638; + background-color: #d54e21; } .wp-ui-text-notification { - color: #d63638; + color: #d54e21; } .wp-ui-text-icon { - color: #8c8f94; /* same as new icons */ + color: #82878c; /* same as new icons */ } /* For emoji replacement images */ @@ -770,16 +742,18 @@ img.emoji { .widget .widget-top, .menu-item-handle { - background: #f6f7f7; - color: #1d2327; + background: #fafafa; + color: #23282d; } +.postbox .hndle, .stuffbox .hndle { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #eee; } -.quicktags { - background-color: #c3c4c7; +.quicktags, +.search { + background-color: #ccc; color: #000; font-size: 12px; } @@ -791,14 +765,14 @@ img.emoji { /* @todo can we combine these into a class or use an existing dashicon one? */ .welcome-panel .welcome-panel-close:before, .tagchecklist .ntdelbutton .remove-tag-icon:before, -#bulk-titles .ntdelbutton:before, +#bulk-titles div a:before, .notice-dismiss:before { background: none; - color: #787c82; + color: #72777c; content: "\f153"; display: block; font: normal 16px/20px dashicons; - speak: never; + speak: none; height: 20px; text-align: center; width: 20px; @@ -810,10 +784,14 @@ img.emoji { margin: 0; } +#bulk-titles div a:before { + margin: 1px 0; +} + .tagchecklist .ntdelbutton .remove-tag-icon:before { margin-left: 2px; border-radius: 50%; - color: #2271b1; + color: #0073aa; /* vertically center the icon cross browsers */ line-height: 1.28; } @@ -822,17 +800,19 @@ img.emoji { outline: 0; } +.welcome-panel .welcome-panel-close:hover:before, +.welcome-panel .welcome-panel-close:focus:before, .tagchecklist .ntdelbutton:hover .remove-tag-icon:before, .tagchecklist .ntdelbutton:focus .remove-tag-icon:before, -#bulk-titles .ntdelbutton:hover:before, -#bulk-titles .ntdelbutton:focus:before { - color: #d63638; +#bulk-titles div a:hover:before, +#bulk-titles div a:focus:before { + color: #c00; } .tagchecklist .ntdelbutton:focus .remove-tag-icon:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .key-labels label { @@ -850,7 +830,8 @@ strong, b { } .howto { - color: #646970; + color: #666; + font-style: italic; display: block; } @@ -865,8 +846,8 @@ p.install-help { hr { border: 0; - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #f6f7f7; + border-top: 1px solid #ddd; + border-bottom: 1px solid #fafafa; } .row-actions span.delete a, @@ -879,10 +860,8 @@ hr { #media-items a.delete, #media-items a.delete-permanently, #nav-menu-footer .menu-delete, -#delete-link a.delete, -a#remove-post-thumbnail, -.privacy_requests .remove-personal-data .remove-personal-data-handle { - color: #b32d2e; +#delete-link a.delete { + color: #a00; } abbr.required, @@ -898,10 +877,8 @@ span.required, #media-items a.delete:hover, #media-items a.delete-permanently:hover, #nav-menu-footer .menu-delete:hover, -#delete-link a.delete:hover, -a#remove-post-thumbnail:hover, -.privacy_requests .remove-personal-data .remove-personal-data-handle:hover { - color: #b32d2e; +#delete-link a.delete:hover { + color: #dc3232; border: none; } @@ -912,17 +889,17 @@ a#remove-post-thumbnail:hover, #major-publishing-actions { padding: 10px; clear: both; - border-top: 1px solid #dcdcde; - background: #f6f7f7; + border-top: 1px solid #ddd; + background: #f5f5f5; } #delete-action { float: left; - line-height: 2.30769231; /* 30px */ + line-height: 28px; } #delete-link { - line-height: 2.30769231; /* 30px */ + line-height: 28px; vertical-align: middle; text-align: left; margin-left: 8px; @@ -935,12 +912,11 @@ a#remove-post-thumbnail:hover, #publishing-action { text-align: right; float: right; - line-height: 1.9; + line-height: 23px; } #publishing-action .spinner { - float: none; - margin-top: 5px; + float: left; } #misc-publishing-actions { @@ -951,13 +927,12 @@ a#remove-post-thumbnail:hover, padding: 6px 10px 8px; } -.word-wrap-break-word, .misc-pub-filename { word-wrap: break-word; } #minor-publishing-actions { - padding: 10px 10px 0; + padding: 10px 10px 0 10px; text-align: right; } @@ -1002,10 +977,10 @@ th.action-links { margin: 12px 0 25px; padding: 0 10px; width: 100%; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - border: 1px solid #c3c4c7; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + border: 1px solid #e5e5e5; background: #fff; - color: #50575e; + color: #555; font-size: 13px; } @@ -1026,7 +1001,7 @@ th.action-links { top: -1px; padding: 4px 10px; border-radius: 30px; - background: #646970; + background: #72777c; color: #fff; font-size: 14px; font-weight: 600; @@ -1059,21 +1034,21 @@ th.action-links { margin: 0 10px; padding: 15px 0; border-bottom: 4px solid #fff; - color: #646970; + color: #666; cursor: pointer; } .filter-links .current { box-shadow: none; - border-bottom: 4px solid #646970; - color: #1d2327; + border-bottom: 4px solid #666; + color: #23282d; } .filter-links li > a:hover, .filter-links li > a:focus, .show-filters .filter-links a.current:hover, .show-filters .filter-links a.current:focus { - color: #135e96; + color: #00a0d2; } .wp-filter .search-form { @@ -1082,33 +1057,23 @@ th.action-links { } .wp-filter .search-form input[type="search"] { - margin: 1px 0; + margin: 0; + padding: 3px 5px; width: 280px; max-width: 100%; + font-size: 16px; + font-weight: 300; + line-height: 1.5; } .wp-filter .search-form select { margin: 0; -} - -/* Use flexbox only on the plugins install page. The `filter-links` and search form children will become flex items. */ -.plugin-install-php .wp-filter { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - align-items: center; + height: 32px; + vertical-align: top; } .wp-filter .search-form.search-plugins { - /* This element is a flex item: the inherited float won't have any effect. */ - margin-top: 0; -} - -.wp-filter .search-form.search-plugins select, -.wp-filter .search-form.search-plugins .wp-filter-search { display: inline-block; - margin-top: 10px; - vertical-align: top; } .wp-filter .button.drawer-toggle { @@ -1116,7 +1081,7 @@ th.action-links { padding: 0 10px 0 6px; border-color: transparent; background-color: transparent; - color: #646970; + color: #666; vertical-align: baseline; box-shadow: none; } @@ -1124,7 +1089,7 @@ th.action-links { .wp-filter .drawer-toggle:before { content: "\f111"; margin: 0 5px 0 0; - color: #646970; + color: #72777c; font: normal 16px/1 dashicons; vertical-align: text-bottom; -webkit-font-smoothing: antialiased; @@ -1136,7 +1101,7 @@ th.action-links { .wp-filter .button.drawer-toggle:focus, .wp-filter .drawer-toggle:focus:before { background-color: transparent; - color: #135e96; + color: #00a0d2; } .wp-filter .button.drawer-toggle:hover, @@ -1145,7 +1110,7 @@ th.action-links { } .wp-filter .button.drawer-toggle:focus { - border-color: #4f94d4; + border-color: #5b9dd9; } .wp-filter .button.drawer-toggle:active { @@ -1163,8 +1128,8 @@ th.action-links { display: none; margin: 0 -10px 0 -20px; padding: 20px; - border-top: 1px solid #f0f0f1; - background: #f6f7f7; + border-top: 1px solid #eee; + background: #fafafa; overflow: hidden; } @@ -1179,13 +1144,13 @@ th.action-links { .show-filters .wp-filter .button.drawer-toggle { border-radius: 2px; - background: #646970; + background: #72777c; color: #fff; } .show-filters .wp-filter .drawer-toggle:hover, .show-filters .wp-filter .drawer-toggle:focus { - background: #2271b1; + background: rgb(46, 162, 204); } .show-filters .wp-filter .drawer-toggle:before { @@ -1200,8 +1165,8 @@ th.action-links { padding: 20px 10px 10px; width: 24%; background: #fff; - border: 1px solid #dcdcde; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); } .filter-group legend { @@ -1222,7 +1187,7 @@ th.action-links { .filter-drawer .filter-group-feature input, .filter-drawer .filter-group-feature label { - line-height: 1.4; + line-height: 16px; } .filter-drawer .filter-group-feature input { @@ -1232,7 +1197,7 @@ th.action-links { .filter-group .filter-group-feature label { display: block; - margin: 14px 0 14px 23px; + margin: 14px 0px 14px 23px; } .filter-drawer .buttons { @@ -1259,7 +1224,7 @@ th.action-links { .wp-filter .button-link.edit-filters { padding: 0 5px; - line-height: 2.2; + line-height: 28px; } .filtered-by { @@ -1282,8 +1247,8 @@ th.action-links { .filtered-by .tag { margin: 0 5px; padding: 4px 8px; - border: 1px solid #dcdcde; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); background: #fff; font-size: 11px; } @@ -1291,7 +1256,7 @@ th.action-links { .filters-applied .filter-group, .filters-applied .filter-drawer .buttons, .filters-applied .filter-drawer br { - display: none; + display: none !important; } .filters-applied .filtered-by { @@ -1322,7 +1287,7 @@ th.action-links { @media only screen and (max-width: 1120px) { .filter-drawer { - border-bottom: 1px solid #f0f0f1; + border-bottom: 1px solid #eee; } .filter-group { @@ -1377,19 +1342,17 @@ th.action-links { display: inline-block; } .plugin-categories-filter li { + background-color: #FFF; + border: 1px solid #DDD; float: left; + padding: 20px; width: 21.5%; } +.plugin-categories-filter li { + margin-right: 5px; +} .plugin-categories-filter li a { font-size: 1.5em; - background-color: #FFF; - border: 1px solid #c3c4c7; - padding: 20px; - display: block; - text-decoration: none; -} -.plugin-categories-filter li a:hover, .plugin-categories-filter li a:focus { - background-color: #f6f7f7; } /*------------------------------------------------------------------------------ @@ -1398,11 +1361,11 @@ th.action-links { .notice, div.updated, -div.error { +div.error, +.about-inline-notice { background: #fff; - border: 1px solid #c3c4c7; - border-left-width: 4px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border-left: 4px solid #fff; + box-shadow: 0 1px 1px 0 rgba( 0, 0, 0, 0.1 ); margin: 5px 15px 2px; padding: 1px 12px; } @@ -1438,7 +1401,7 @@ div.error p, .notice-title { display: inline-block; - color: #1d2327; + color: #23282d; font-size: 18px; } @@ -1455,55 +1418,57 @@ div.error p, margin: 0; padding: 9px; background: none; - color: #787c82; + color: #72777c; cursor: pointer; } .notice-dismiss:hover:before, .notice-dismiss:active:before, .notice-dismiss:focus:before { - color: #d63638; + color: #c00; } .notice-dismiss:focus { outline: none; - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 .notice-dismiss:focus { + outline: 1px solid #5b9dd9; } .notice-success, div.updated { - border-left-color: #00a32a; + border-left-color: #46b450; } .notice-success.notice-alt { - background-color: #edfaef; + background-color: #ecf7ed; } .notice-warning { - border-left-color: #dba617; + border-left-color: #ffb900; } .notice-warning.notice-alt { - background-color: #fcf9e8; + background-color: #fff8e5; } .notice-error, div.error { - border-left-color: #d63638; + border-left-color: #dc3232; } .notice-error.notice-alt { - background-color: #fcf0f1; + background-color: #fbeaea; } .notice-info { - border-left-color: #72aee6; + border-left-color: #00a0d2; } .notice-info.notice-alt { - background-color: #f0f6fc; + background-color: #e5f5fa; } .update-message p:before, @@ -1551,7 +1516,7 @@ div.error { .import-php .updating-message:before, .button.updating-message:before, .button.installing:before { - color: #d63638; + color: #f56e28; content: "\f463"; } @@ -1559,57 +1524,41 @@ div.error { .updating-message p:before, .import-php .updating-message:before, .button.updating-message:before, -.button.installing:before, -.plugins .column-auto-updates .dashicons-update.spin, -.theme-overlay .theme-autoupdate .dashicons-update.spin { +.button.installing:before { animation: rotation 2s infinite linear; } -@media (prefers-reduced-motion: reduce) { - .updating-message p:before, - .import-php .updating-message:before, - .button.updating-message:before, - .button.installing:before, - .plugins .column-auto-updates .dashicons-update.spin, - .theme-overlay .theme-autoupdate .dashicons-update.spin { - animation: none; - } -} - -.theme-overlay .theme-autoupdate .dashicons-update.spin { - margin-right: 3px; -} - /* Updated icon (check mark). */ .updated-message p:before, .installed p:before, .button.updated-message:before { - color: #68de7c; - content: "\f147"; + color: #79ba49; + content: '\f147'; } /* Error icon. */ .update-message.notice-error p:before { - color: #d63638; - content: "\f534"; + color: #dc3232; + content: "\f534"; } .wrap .notice p:before, .import-php .updating-message:before { margin-right: 6px; -} - -.import-php .updating-message:before { vertical-align: bottom; } #update-nag, .update-nag { display: inline-block; - line-height: 1.4; + line-height: 19px; padding: 11px 15px; font-size: 14px; + text-align: left; margin: 25px 20px 0 2px; + background-color: #fff; + border-left: 4px solid #ffba00; + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); } ul#dismissed-updates { @@ -1632,7 +1581,7 @@ form.upgrade { form.upgrade .hint { font-style: italic; font-size: 85%; - margin: -0.5em 0 2em; + margin: -0.5em 0 2em 0; } .update-php .spinner { @@ -1640,19 +1589,6 @@ form.upgrade .hint { margin: -4px 0; } -h2.wp-current-version { - margin-bottom: .3em; -} - -p.update-last-checked { - margin-top: 0; -} - -p.auto-update-status { - margin-top: 2em; - line-height: 1.8; -} - #ajax-loading, .ajax-loading, .ajax-feedback, @@ -1677,7 +1613,7 @@ p.auto-update-status { } .button-primary.updated-message:before { - color: #9ec2e6; + color: #66c6e4; } .button.updated-message { @@ -1691,7 +1627,7 @@ p.auto-update-status { .button.installing:before, .button.installed:before, .update-message p:before { - speak: never; + speak: none; } } @@ -1719,29 +1655,33 @@ p.auto-update-status { #contextual-help-wrap { overflow: auto; - margin-left: 0; + margin-left: 0 !important; } #screen-meta-links { - float: right; margin: 0 20px 0 0; } /* screen options and help tabs revert */ #screen-meta { display: none; - margin: 0 20px -1px 0; + margin: 0 20px -1px 0px; position: relative; background-color: #fff; - border: 1px solid #c3c4c7; + border: 1px solid #ddd; border-top: none; - box-shadow: 0 0 0 transparent; + box-shadow: 0 1px 0 rgba(0,0,0,.025); } #screen-options-link-wrap, #contextual-help-link-wrap { - float: left; + float: right; + height: 28px; margin: 0 0 0 6px; + border: 1px solid #ddd; + border-top: none; + background: #fff; + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); } #screen-meta-links .screen-meta-toggle { @@ -1750,31 +1690,22 @@ p.auto-update-status { } #screen-meta-links .show-settings { - border: 1px solid #c3c4c7; - border-top: none; - height: auto; - margin-bottom: 0; - padding: 3px 6px 3px 16px; - background: #fff; - border-radius: 0 0 4px 4px; - color: #646970; + border: 0; + background: none; + border-radius: 0; + color: #72777c; line-height: 1.7; - box-shadow: 0 0 0 transparent; - transition: box-shadow 0.1s linear; + padding: 3px 6px 3px 16px; } #screen-meta-links .show-settings:hover, #screen-meta-links .show-settings:active, #screen-meta-links .show-settings:focus { - color: #2c3338; -} - -#screen-meta-links .show-settings:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + color: #32373c; } #screen-meta-links .show-settings:active { + box-shadow: none; transform: none; } @@ -1782,7 +1713,7 @@ p.auto-update-status { right: 0; content: "\f140"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0 5px 0 0; bottom: 2px; @@ -1790,7 +1721,8 @@ p.auto-update-status { vertical-align: bottom; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none; + text-decoration: none !important; + color: #72777c; } #screen-meta-links .screen-meta-active:after { @@ -1817,14 +1749,18 @@ p.auto-update-status { #contextual-help-wrap h5 { margin: 0; padding: 8px 0; - font-size: 13px; + font-size: 13px; font-weight: 600; } +.ie8 #screen-options-wrap legend { + color: inherit; +} + .metabox-prefs label { display: inline-block; padding-right: 15px; - line-height: 2.35; + line-height: 30px; } #number-of-columns { @@ -1860,11 +1796,10 @@ p.auto-update-status { .metabox-prefs .screen-options .screen-per-page { margin-right: 15px; - padding-right: 0; } .metabox-prefs .screen-options label { - line-height: 2.2; + line-height: 28px; padding-right: 0; } @@ -1895,10 +1830,10 @@ p.auto-update-status { bottom: 0; left: 150px; right: 170px; - border: 1px solid #c3c4c7; + border: 1px solid #e1e1e1; border-top: none; border-bottom: none; - background: #f0f6fc; + background: #f6fbfd; } #contextual-help-wrap.no-sidebar #contextual-help-back { @@ -1928,7 +1863,7 @@ p.auto-update-status { .contextual-help-tabs a { display: block; padding: 5px 5px 5px 12px; - line-height: 1.4; + line-height: 18px; text-decoration: none; border: 1px solid transparent; border-right: none; @@ -1936,20 +1871,20 @@ p.auto-update-status { } .contextual-help-tabs a:hover { - color: #2c3338; + color: #32373c; } .contextual-help-tabs .active { padding: 0; margin: 0 -1px 0 0; - border-left: 2px solid #72aee6; - background: #f0f6fc; - box-shadow: 0 2px 0 rgba(0, 0, 0, 0.02), 0 1px 0 rgba(0, 0, 0, 0.02); + border-left: 2px solid #00a0d2; + background: #f6fbfd; + box-shadow: 0 2px 0 rgba(0,0,0,0.02), 0 1px 0 rgba(0,0,0,0.02); } .contextual-help-tabs .active a { - border-color: #c3c4c7; - color: #2c3338; + border-color: #e1e1e1; + color: #32373c; } .contextual-help-tabs-wrap { @@ -1960,7 +1895,7 @@ p.auto-update-status { .help-tab-content { display: none; margin: 0 22px 12px 0; - line-height: 1.6; + line-height: 1.6em; } .help-tab-content.active { @@ -1986,12 +1921,11 @@ p.auto-update-status { html.wp-toolbar { padding-top: 32px; box-sizing: border-box; - -ms-overflow-style: scrollbar; /* See ticket #48545 */ } .widefat th, .widefat td { - color: #50575e; + color: #555; } .widefat th, @@ -2004,7 +1938,7 @@ html.wp-toolbar { .widefat thead tr td, .widefat tfoot tr th, .widefat tfoot tr td { - color: #2c3338; + color: #32373c; } .widefat td p { @@ -2014,7 +1948,7 @@ html.wp-toolbar { .widefat p, .widefat ol, .widefat ul { - color: #2c3338; + color: #32373c; } .widefat .column-comment p { @@ -2035,47 +1969,39 @@ html.wp-toolbar { box-sizing: border-box; } -.postbox-container summary { - font-size: 14px; - font-weight: 600; - padding: 2px 12px; - margin: 0; - line-height: 1.4; - border-bottom: 1px solid #c3c4c7; -} - -.postbox-container summary > div { - display: inline-flex; -} - -.postbox-container .handle-actions { - right: 12px; - position: absolute; -} - #wpbody-content .metabox-holder { padding-top: 10px; } -.metabox-holder .postbox-container .meta-box-sortables { - /* The jQuery UI Sortables need some initial height to work properly. */ - min-height: 1px; +.metabox-holder .postbox-container .empty-container { + border: 3px dashed #b4b9be; + height: 250px; position: relative; } -/* Enhance default marker in details element */ -details summary > * { - display: inline; -} - -.metabox-holder details > summary::marker, -.metabox-holder details > summary::-webkit-details-marker { - font-size: 1.5em; - cursor: pointer; +.metabox-holder .postbox-container .empty-container:after { + content: attr(data-emptystring); + margin: auto; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + height: 1em; + width: 200px; + text-align: center; + color: #ccc; + font-size:18px; + display: none; } -.metabox-holder details > summary h2 { - padding-left: 5px !important; +.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; } #post-body-content { @@ -2097,7 +2023,7 @@ details summary > * { /* one column on the dash */ @media only screen and (max-width: 799px) { #wpbody-content .metabox-holder .postbox-container .empty-container { - outline: none; + border: 0 none; height: 0; min-height: 0; } @@ -2108,40 +2034,14 @@ details summary > * { cursor: move; } -.js .widget .widget-top.is-non-sortable, -.js .postbox .hndle.is-non-sortable { - cursor: auto; -} - -/* Configurable dashboard widgets "Configure" edit-box link. */ .hndle a { - font-size: 12px; + font-size: 11px; font-weight: 400; } -.postbox-header { - display: flex; - align-items: center; - justify-content: space-between; - border-bottom: 1px solid #c3c4c7; -} - -.postbox-header .hndle { - flex-grow: 1; - /* Handle the alignment for the configurable dashboard widgets "Configure" edit-box link. */ - display: flex; - justify-content: space-between; - align-items: center; -} - -.postbox-header .handle-actions { - flex-shrink: 0; -} - -/* Post box order and toggle buttons. */ -.postbox .handle-order-higher, -.postbox .handle-order-lower, .postbox .handlediv { + display: none; + float: right; width: 36px; height: 36px; margin: 0; @@ -2151,28 +2051,12 @@ details summary > * { cursor: pointer; } -.postbox .handle-order-higher, -.postbox .handle-order-lower { - color: #787c82; - width: 1.62rem; -} - -/* Post box order buttons in the block editor meta boxes area. */ -.edit-post-meta-boxes-area .postbox .handle-order-higher, -.edit-post-meta-boxes-area .postbox .handle-order-lower { - width: 44px; - height: 44px; - color: #1d2327 -} - -.postbox .handle-order-higher[aria-disabled="true"], -.postbox .handle-order-lower[aria-disabled="true"] { - cursor: default; - color: #a7aaad; +.js .postbox .handlediv { + display: block; } .sortable-placeholder { - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; margin-bottom: 20px; } @@ -2183,10 +2067,6 @@ details summary > * { line-height: 1; } -.postbox.closed { - border-bottom: 0; -} - /* user-select is not a part of the CSS standard - may change behavior in the future */ .postbox .hndle, .stuffbox .hndle { @@ -2195,17 +2075,11 @@ details summary > * { user-select: none; } -.postbox .inside { - padding: 0 12px 12px; - line-height: 1.4; - font-size: 13px; -} - +.postbox .inside, .stuffbox .inside { - padding: 0; - line-height: 1.4; + padding: 0 12px 12px; + line-height: 1.4em; font-size: 13px; - margin-top: 0; } .postbox .inside { @@ -2232,7 +2106,7 @@ details summary > * { } .temp-border { - border: 1px dotted #c3c4c7; + border: 1px dotted #ccc; } .columns-prefs label { @@ -2252,8 +2126,7 @@ details summary > * { #pass-strength-result.short, #ed_reply_toolbar #ed_reply_strong, .item-controls .item-order a, -.feature-filter .feature-name, -#comment-status-display { +.feature-filter .feature-name { font-weight: 600; } @@ -2267,13 +2140,13 @@ details summary > * { left: 0; right: 0; padding: 10px 20px; - color: #50575e; + color: #555d66; } #wpfooter p { font-size: 13px; margin: 0; - line-height: 1.55; + line-height: 20px; } #footer-thankyou { @@ -2286,15 +2159,15 @@ details summary > * { .nav-tab { float: left; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; border-bottom: none; margin-left: 0.5em; /* half the font size so set the font size properly */ padding: 5px 10px; font-size: 14px; - line-height: 1.71428571; + line-height: 24px; font-weight: 600; - background: #dcdcde; - color: #50575e; + background: #e5e5e5; + color: #555; text-decoration: none; white-space: nowrap; } @@ -2303,13 +2176,13 @@ h3 .nav-tab, /* Back-compat for pre-4.4 */ .nav-tab-small .nav-tab { padding: 5px 14px; font-size: 12px; - line-height: 1.33; + line-height: 16px; } .nav-tab:hover, .nav-tab:focus { background-color: #fff; - color: #3c434a; + color: #444; } .nav-tab-active, @@ -2319,22 +2192,22 @@ h3 .nav-tab, /* Back-compat for pre-4.4 */ .nav-tab-active { margin-bottom: -1px; - color: #3c434a; + color: #444; } .nav-tab-active, .nav-tab-active:hover, .nav-tab-active:focus, .nav-tab-active:focus:active { - border-bottom: 1px solid #f0f0f1; - background: #f0f0f1; + border-bottom: 1px solid #f1f1f1; + background: #f1f1f1; color: #000; } h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ .wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */ .nav-tab-wrapper { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #ccc; margin: 0; padding-top: 9px; padding-bottom: 0; @@ -2343,9 +2216,16 @@ h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ /* Back-compat for plugins. Deprecated. Use .wp-clearfix instead. */ .nav-tab-wrapper:not(.wp-clearfix):after { - content: ""; - display: table; - clear: both; + content: ""; + display: table; + clear: both; + } + +.ie8 .nav-tab-wrapper { + /* contain floats establishing a new block formatting context */ + display: inline-block; + width: 100%; + vertical-align: top; } /*------------------------------------------------------------------------------ @@ -2396,19 +2276,9 @@ h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */ } /* Back-compat for nav-menus screen */ -.nav-menus-php .metabox-holder details > summary { - line-height: 1.4; - padding-top: 6px; - margin-top: -0 !important; -} - -.nav-menus-php .metabox-holder details > summary::before { - margin-right: 0.2em -} - .nav-menus-php .metabox-holder h3 { - font-size: 1.1em; - font-weight: 500; + padding: 10px 10px 11px 14px; + line-height: 21px; } #templateside ul li a { @@ -2428,7 +2298,7 @@ table .column-rating { .attention, .error-message { - color: #d63638; + color: #dc3232; font-weight: 600; } @@ -2454,7 +2324,7 @@ body.iframe { } .media-icon img { - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; border: 1px solid rgba(0, 0, 0, 0.07); } @@ -2471,7 +2341,7 @@ body.iframe { .importers td { padding-right: 14px; - line-height: 1.4; + line-height: 1.5em; } .importers .import-system { @@ -2496,8 +2366,8 @@ body.iframe { } .importer-action { - line-height: 1.55; /* Same as with .updating-message */ - color: #50575e; + line-height: 20px; /* Same as with .updating-message */ + color: #555; margin-bottom: 1em; } @@ -2507,8 +2377,11 @@ body.iframe { } .edit-comment-author { - color: #1d2327; - border-bottom: 1px solid #f0f0f1; + font-size: 14px; + line-height: 1.4; + font-weight: 600; + color: #222; + margin: 2px 0 0 9px; } #namediv h3 label, /* Back-compat for pre-4.4 */ @@ -2526,13 +2399,17 @@ body.iframe { } #namediv input { - width: 100%; + width: 98%; } #namediv p { margin: 10px 0; } +#submitdiv h3 { + margin-bottom: 0 !important; +} + /* - Used - but could/should be deprecated with a CSS reset ------------------------------------------------------------------------------*/ .zerosize { @@ -2547,7 +2424,7 @@ body.iframe { br.clear { height: 2px; - line-height: 0.15; + line-height: 2px; } .checkbox { @@ -2602,9 +2479,9 @@ div.star-holder .star-rating { font-weight: 400; font-style: normal; vertical-align: top; - transition: color .1s ease-in; + transition: color .1s ease-in 0; text-align: center; - color: #dba617; + color: #ffb900; } .star-rating .star-full:before { @@ -2648,10 +2525,10 @@ div.action-links { #plugin-information-title { padding: 0 26px; - background: #f6f7f7; + background: #f5f5f5; font-size: 22px; font-weight: 600; - line-height: 2.4; + line-height: 56px; position: relative; height: 56px; } @@ -2677,15 +2554,15 @@ div.action-links { font-family: "Helvetica Neue", sans-serif; display: inline-block; font-size: 30px; - line-height: 1.68; + line-height: 50px; box-sizing: border-box; max-width: 100%; padding: 0 15px; margin-top: 174px; color: #fff; - background: rgba(29, 35, 39, 0.9); - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); - box-shadow: 0 0 30px rgba(255, 255, 255, 0.1); + background: rgba( 30, 30, 30, 0.9 ); + text-shadow: 0 1px 3px rgba( 0, 0, 0, 0.4 ); + box-shadow: 0 0 30px rgba( 255, 255, 255, 0.1 ); border-radius: 8px; } @@ -2701,7 +2578,7 @@ div.action-links { height: 250px; width: 100%; background: transparent; - box-shadow: inset 0 0 50px 4px rgba(0, 0, 0, 0.2), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 50px 4px rgba( 0, 0, 0, 0.2 ), inset 0 -1px 0 rgba( 0, 0, 0, 0.1 ); } #plugin-information-tabs { @@ -2712,8 +2589,8 @@ div.action-links { min-height: 36px; font-size: 0; z-index: 1; - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f3f3f3; } #plugin-information-tabs a { @@ -2722,7 +2599,7 @@ div.action-links { padding: 9px 10px; margin: 0; height: 18px; - line-height: 1.3; + line-height: 18px; font-size: 14px; text-decoration: none; transition: none; @@ -2731,10 +2608,10 @@ div.action-links { #plugin-information-tabs a.current { margin: 0 -1px -1px; background: #fff; - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-bottom-color: #fff; padding-top: 8px; - color: #2c3338; + color: #32373c; } #plugin-information-tabs.with-banner a.current { @@ -2770,14 +2647,10 @@ div.action-links { right: 250px; bottom: 0; left: 0; - margin-top: 10px; margin-right: 250px; /* FYI box */ - padding: 10px 26px 99999px; /* equal height column trick */ - margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ -} - -#section-holder .notice { - margin: 5px 0 15px; + padding: 10px 26px; + margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ } #section-holder .updated { @@ -2789,23 +2662,24 @@ div.action-links { position: relative; top: 0; right: 0; - padding: 16px 16px 99999px; /* equal height column trick */ - margin-bottom: -99932px; /* 67px less than the padding below to accommodate footer height */ + padding: 16px; + margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */ + padding-bottom: 99999px; /* equal height column trick */ width: 217px; - border-left: 1px solid #dcdcde; - background: #f6f7f7; - color: #646970; + border-left: 1px solid #ddd; + background: #f3f3f3; + color: #666; } #plugin-information .fyi strong { - color: #3c434a; + color: #444; } #plugin-information .fyi h3 { font-weight: 600; text-transform: uppercase; font-size: 12px; - color: #646970; + color: #666; margin: 24px 0 8px; } @@ -2842,13 +2716,13 @@ div.action-links { #plugin-information .counter-back { height: 17px; width: 92px; - background-color: #dcdcde; + background-color: #e5e5e5; float: left; } #plugin-information .counter-bar { height: 17px; - background-color: #f0c33c; /* slightly lighter than stars due to larger expanse */ + background-color: #ffc733; /* slightly lighter than stars due to larger expanse */ float: left; } @@ -2883,9 +2757,9 @@ div.action-links { right: 0; bottom: 0; left: 0; - height: 40px; /* actual height: 40+13+13+1=67 */ - border-top: 1px solid #dcdcde; - background: #f6f7f7; + height: 33px; /* 33+13+13+1=60 */ + border-top: 1px solid #ddd; + background: #f3f3f3; } /* rtl:ignore */ @@ -2917,7 +2791,7 @@ div.action-links { max-width: 100%; width: auto; height: auto; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 2px rgba( 0, 0, 0, 0.3 ); } /* rtl:ignore */ @@ -2929,12 +2803,12 @@ div.action-links { #plugin-information pre { padding: 7px; overflow: auto; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; } #plugin-information blockquote { - border-left: 2px solid #dcdcde; - color: #646970; + border-left: 2px solid #ddd; + color: #666; font-style: italic; margin: 1em 0; padding: 0 0 0 1em; @@ -2945,7 +2819,7 @@ div.action-links { overflow: hidden; /* clearfix */ width: 100%; margin-bottom: 20px; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #e5e5e5; } #plugin-information .review-title-section { @@ -2992,12 +2866,12 @@ div.action-links { font-size: 13px; } -/* For non-js plugin installation screen ticket #36430. */ +/* For non-js plugin installation screen https://core.trac.wordpress.org/ticket/36430. */ .update-php .button.button-primary { margin-right: 1em; } -@media screen and (max-width: 771px) { +@media screen and ( max-width: 771px ) { #plugin-information-title.with-banner { height: 100px; } @@ -3005,7 +2879,7 @@ div.action-links { #plugin-information-title.with-banner h2 { margin-top: 30px; font-size: 20px; - line-height: 2; + line-height: 40px; max-width: 85%; } @@ -3026,7 +2900,7 @@ div.action-links { #plugin-information .fyi { float: none; - border: 1px solid #dcdcde; + border: 1px solid #ddd; position: static; width: auto; margin: 26px 26px 0; @@ -3052,7 +2926,7 @@ div.action-links { /* Thickbox for the Plugin details modal. */ #TB_window.plugin-details-modal { - background: #fff; + background: #fcfcfc; } #TB_window.plugin-details-modal.thickbox-loading:before { @@ -3065,7 +2939,7 @@ div.action-links { top: 50%; z-index: -1; margin: -10px 0 0 -10px; - background: #fff url(../images/spinner.gif) no-repeat center; + background: #fcfcfc url(../images/spinner.gif) no-repeat center; background-size: 20px 20px; transform: translateZ(0); } @@ -3091,22 +2965,16 @@ div.action-links { .plugin-details-modal #TB_closeWindowButton { left: auto; right: -30px; - color: #f0f0f1; + color: #eee; } .plugin-details-modal #TB_closeWindowButton:hover, .plugin-details-modal #TB_closeWindowButton:focus { + color: #00a0d2; outline: none; box-shadow: none; } -.plugin-details-modal #TB_closeWindowButton:hover::after, -.plugin-details-modal #TB_closeWindowButton:focus::after { - outline: 2px solid; - outline-offset: -4px; - border-radius: 4px; -} - .plugin-details-modal .tb-close-icon { display: none; } @@ -3114,13 +2982,13 @@ div.action-links { .plugin-details-modal #TB_closeWindowButton:after { content: "\f335"; font: normal 32px/29px 'dashicons'; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* move plugin install close icon to top on narrow screens */ -@media screen and (max-width: 830px) { +@media screen and ( max-width: 830px ) { .plugin-details-modal #TB_closeWindowButton { right: 0; top: -30px; @@ -3133,83 +3001,52 @@ img { } /* Metabox collapse arrow indicators */ -.sidebar-name .toggle-indicator::before, -.meta-box-sortables .postbox .toggle-indicator::before, -.meta-box-sortables .postbox .order-higher-indicator::before, -.meta-box-sortables .postbox .order-lower-indicator::before, -.bulk-action-notice .toggle-indicator::before, -.privacy-text-box .toggle-indicator::before { +.sidebar-name .toggle-indicator:before, +.js .meta-box-sortables .postbox .toggle-indicator:before, +.bulk-action-notice .toggle-indicator:before, +.privacy-text-box .toggle-indicator:before { content: "\f142"; display: inline-block; font: normal 20px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none; + text-decoration: none !important; } -.js .widgets-holder-wrap.closed .toggle-indicator::before, -.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before, -.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before, -.privacy-text-box.closed .toggle-indicator::before { +.js .widgets-holder-wrap.closed .toggle-indicator:before, +.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before, +.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before, +.privacy-text-box.closed .toggle-indicator:before { content: "\f140"; } -.postbox .handle-order-higher .order-higher-indicator::before { - content: "\f343"; - color: inherit; -} - -.postbox .handle-order-lower .order-lower-indicator::before { - content: "\f347"; - color: inherit; -} - -.postbox .handle-order-higher .order-higher-indicator::before, -.postbox .handle-order-lower .order-lower-indicator::before { - position: relative; - top: 0.11rem; - width: 20px; - height: 20px; -} - -.postbox .handlediv .toggle-indicator::before { +.js .postbox .handlediv .toggle-indicator:before { + margin-top: 4px; width: 20px; border-radius: 50%; + text-indent: -1px; /* account for the dashicon alignment */ } -.postbox .handlediv .toggle-indicator::before { - position: relative; - top: 0.05rem; - text-indent: -1px; /* account for the dashicon glyph uneven horizontal alignment */ -} - -.rtl .postbox .handlediv .toggle-indicator::before { - text-indent: 1px; /* account for the dashicon glyph uneven horizontal alignment */ +.rtl.js .postbox .handlediv .toggle-indicator:before { + text-indent: 1px; /* account for the dashicon alignment */ } -.bulk-action-notice .toggle-indicator::before { +.bulk-action-notice .toggle-indicator:before { line-height: 16px; vertical-align: top; - color: #787c82; + color: #72777c; } -.postbox .handle-order-higher:focus, -.postbox .handle-order-lower:focus, -.postbox .handlediv:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; +.js .postbox .handlediv:focus { + box-shadow: none; + outline: none; } -.postbox .handle-order-higher:focus .order-higher-indicator::before, -.postbox .handle-order-lower:focus .order-lower-indicator::before, -.postbox .handlediv:focus .toggle-indicator::before { - box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; +.js .postbox .handlediv:focus .toggle-indicator:before { + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } /* @todo: appears to be Press This only and overridden */ @@ -3217,7 +3054,7 @@ img { width: 300px; } -/* Theme/Plugin file editor */ +/* Theme/Plugin Editor */ .alignleft h2 { margin: 0; } @@ -3225,7 +3062,7 @@ img { #template textarea { font-family: Consolas, Monaco, monospace; font-size: 13px; - background: #f6f7f7; + background: #f9f9f9; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; @@ -3236,7 +3073,7 @@ img { width: 100%; min-height: 60vh; height: calc( 100vh - 295px ); - border: 1px solid #dcdcde; + border: 1px solid #ddd; box-sizing: border-box; } @@ -3258,8 +3095,8 @@ img { padding: 0; min-height: 60vh; height: calc(100vh - 295px); - background-color: #f6f7f7; - border: 1px solid #dcdcde; + background-color: #f7f7f7; + border: 1px solid #ddd; border-left: none; } #templateside ul ul { @@ -3270,7 +3107,7 @@ img { } /* - * Styles for Theme and Plugin file editors. + * Styles for Theme and Plugin editors. */ /* Hide collapsed items. */ @@ -3303,14 +3140,12 @@ img { outline: 0; } [role="treeitem"] .folder-label.focus { - color: #043959; - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + color: #124964; + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); } [role="treeitem"].hover, [role="treeitem"] .folder-label.hover { - background-color: #f0f0f1; + background-color: #eaeaea; } .tree-folder { @@ -3323,30 +3158,30 @@ img { /* Styles for folder indicators/depth */ .tree-folder .tree-folder::after { - content: ""; + content: ' '; display: block; position: absolute; left: 2px; - border-left: 1px solid #c3c4c7; + border-left: 1px solid #ccc; top: -13px; bottom: 10px; } .tree-folder > li::before { - content: ""; + content: ' '; position: absolute; display: block; - border-left: 1px solid #c3c4c7; + border-left: 1px solid #ccc; left: 2px; top: -5px; height: 18px; width: 7px; - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #ccc; } .tree-folder > li::after { - content: ""; + content: ' '; position: absolute; display: block; - border-left: 1px solid #c3c4c7; + border-left: 1px solid #ccc; left: 2px; bottom: -7px; top: 0; @@ -3359,7 +3194,7 @@ img { .tree-folder > .current-file::before { left: 4px; height: 15px; - width: 0; + width: 0px; border-left: none; top: 3px; } @@ -3376,15 +3211,11 @@ img { display: none; } -#theme-plugin-editor-selector, -#theme-plugin-editor-label, -#documentation label { - font-weight: 600; -} #theme-plugin-editor-label { display: inline-block; margin-bottom: 1em; + font-weight: 600; } /* rtl:ignore */ @@ -3454,7 +3285,7 @@ img { } #templateside li.howto { - padding: 6px 12px 12px; + padding: 6px 12px 12px 12px; } .theme-editor-php .highlight { @@ -3467,7 +3298,7 @@ img { } .nonessential { - color: #646970; + color: #666; font-size: 11px; font-style: italic; padding-left: 12px; @@ -3478,8 +3309,9 @@ img { } #documentation label { - line-height: 1.8; + line-height: 22px; vertical-align: baseline; + font-weight: 600; } .fileedit-sub { @@ -3492,20 +3324,21 @@ img { } /* @todo: can we use a common class for these? */ -/* @since CP 2.0.0 removes .accordion-section-title:after */ .nav-menus-php .item-edit:before, -.widget-top .widget-action .toggle-indicator:before { +.widget-top .widget-action .toggle-indicator:before, +.control-section .accordion-section-title:after, +.accordion-section-title:after { content: "\f140"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: block; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: none; + text-decoration: none !important; } .widget-top .widget-action .toggle-indicator:before { - padding: 1px 2px 1px 0; + padding: 1px 2px 1px 0px; border-radius: 50%; } @@ -3514,11 +3347,11 @@ img { .item-edit, .toggle-indicator, .accordion-section-title:after { - color: #787c82; + color: #72777c; } .widget-action { - color: #50575e; /* #fafafa background in the Widgets screen */ + color: #555d66; /* #fafafa background in the Widgets screen */ } .widget-top:hover .widget-action, @@ -3531,22 +3364,26 @@ img { .item-edit:focus, .sidebar-name:hover .toggle-indicator, .accordion-section-title:hover:after { - color: #1d2327; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + color: #23282d; } .widget-top .widget-action:focus .toggle-indicator:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30,140,190,.8); +} + +.control-section .accordion-section-title:after, +.accordion-section-title:after { + float: right; + right: 20px; + top: -2px; } .control-section.open .accordion-section-title:after, #customize-info.open .accordion-section-title:after, .nav-menus-php .menu-item-edit-active .item-edit:before, -.widget.open .widget-top .widget-action .toggle-indicator:before, -.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before { +.widget.open .widget-top .widget-action .toggle-indicator:before { content: "\f142"; } @@ -3565,7 +3402,7 @@ img { /* Accordion */ .accordion-section { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; margin: 0; } @@ -3575,10 +3412,11 @@ img { } .accordion-section.open:hover { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; } .accordion-section-content { + display: none; padding: 10px 20px 15px; overflow: hidden; background: #fff; @@ -3588,8 +3426,8 @@ img { margin: 0; padding: 12px 15px 15px; position: relative; - border-left: 1px solid #dcdcde; - border-right: 1px solid #dcdcde; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; -webkit-user-select: none; -moz-user-select: none; user-select: none; @@ -3607,15 +3445,12 @@ img { } .accordion-section-title:focus { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + outline: none; } .accordion-section-title:hover:after, .accordion-section-title:focus:after { - border-color: #a7aaad transparent; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + border-color: #a0a5aa transparent; } .cannot-expand .accordion-section-title { @@ -3626,41 +3461,31 @@ img { display: none; } -.control-section { - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); -} - -.control-section:focus-within { - outline: 2px solid #3582c4; -} - .control-section .accordion-section-title, .customize-pane-child .accordion-section-title { border-left: none; border-right: none; padding: 10px 10px 11px 14px; - line-height: 1.55; + line-height: 21px; background: #fff; } -.control-section details[open] summary.accordion-section-title { - color: #3c434a; - background-color: #f6f7f7; - border-bottom: 1px solid #dcdcde; +.control-section .accordion-section-title:after, +.customize-pane-child .accordion-section-title:after { + top: calc(50% - 10px); /* Arrow height is 20px, so use half of that to vertically center */ } .js .control-section:hover .accordion-section-title, .js .control-section .accordion-section-title:hover, .js .control-section.open .accordion-section-title, .js .control-section .accordion-section-title:focus { - color: #1d2327; - background: #f6f7f7; + color: #23282d; + background: #f5f5f5; } .control-section.open .accordion-section-title { /* When expanded */ - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } /* Edit Site */ @@ -3700,7 +3525,7 @@ img { position: absolute; top: 0; right: 0; - background: #c3c4c7; + background: #ccc; } } @@ -3720,7 +3545,7 @@ img { } .my-sites li:nth-of-type(4n+1), .my-sites li:nth-of-type(4n+2) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3737,7 +3562,7 @@ img { .my-sites li:nth-of-type(6n+1), .my-sites li:nth-of-type(6n+2), .my-sites li:nth-of-type(6n+3) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3758,7 +3583,7 @@ img { .my-sites li:nth-of-type(8n+2), .my-sites li:nth-of-type(8n+3), .my-sites li:nth-of-type(8n+4) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3780,7 +3605,7 @@ img { .my-sites li:nth-of-type(10n+3), .my-sites li:nth-of-type(10n+4), .my-sites li:nth-of-type(10n+5) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3803,7 +3628,7 @@ img { .my-sites li:nth-of-type(12n+4), .my-sites li:nth-of-type(12n+5), .my-sites li:nth-of-type(12n+6) { - background-color: #f6f7f7; + background-color: #f9f9f9; } } @@ -3831,17 +3656,26 @@ img { background-image: url(../images/spinner-2x.gif); } + /* @todo: evaluate - most of these were likely replaced by dashicons */ + .curtime #timestamp, + #screen-meta-links a.show-settings, + .widget-top .widget-action, + .widget-top .widget-action:hover, + .sidebar-name .toggle-indicator, + .sidebar-name:hover .toggle-indicator, + .meta-box-sortables .postbox:hover .handlediv, + #bulk-titles div a, + #bulk-titles div a:hover { + background: none !important; + } + } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { html.wp-toolbar { padding-top: 46px; } - .screen-reader-shortcut:focus { - top: -39px; - } - body { min-width: 240px; overflow-x: hidden; @@ -3862,7 +3696,6 @@ img { } .wrap { - clear: both; margin-right: 12px; margin-left: 0; } @@ -3880,6 +3713,8 @@ img { } /* Hidden Elements */ + #screen-meta, + #screen-meta-links, #collapse-menu, .post-format-select { display: none !important; @@ -3903,7 +3738,7 @@ img { .wrap div.updated, .wrap div.error, .media-upload-form div.error { - margin: 20px 0 10px; + margin: 20px 0 10px 0; padding: 5px 10px; font-size: 14px; line-height: 175%; @@ -3927,8 +3762,6 @@ img { code { word-wrap: break-word; - word-wrap: anywhere; /* Firefox. Allow breaking long words anywhere */ - word-break: break-word; /* Webkit: Treated similarly to word-wrap: break-word */ } /* General Metabox */ @@ -3967,7 +3800,7 @@ img { } #templateside > ul { - border-left: 1px solid #dcdcde; + border-left: 1px solid #ddd; } #templateside li { @@ -4013,7 +3846,7 @@ img { left: -8px; } .tree-folder > li::before { - top: 0; + top: 0px; height: 13px; } .tree-folder > .current-file::before { @@ -4048,7 +3881,8 @@ img { } .fileedit-sub input[type="submit"] { - margin-bottom: 0; + margin-bottom: 0px; + padding: 8px 18px; } #documentation label[for="docs-list"] { @@ -4062,6 +3896,7 @@ img { #documentation input[type="button"] { margin-bottom: 0; + padding: 8px 18px; } #wpfooter { @@ -4078,7 +3913,7 @@ img { .filter-drawer .filter-group-feature input, .filter-drawer .filter-group-feature label { - line-height: 2.1; + line-height: 25px; } .filter-drawer .filter-group-feature label { @@ -4087,58 +3922,9 @@ img { .wp-filter .button.drawer-toggle { font-size: 13px; - line-height: 2; + line-height: 26px; height: 28px; } - - /* Fix help tab columns for smaller screens */ - #screen-meta #contextual-help-wrap { - overflow: visible; - } - - #screen-meta #contextual-help-back, - #screen-meta .contextual-help-sidebar { - display: none; - } - - #screen-meta .contextual-help-tabs { - clear: both; - width: 100%; - float: none; - } - - #screen-meta .contextual-help-tabs ul { - margin: 0 0 1em; - padding: 1em 0 0; - } - - #screen-meta .contextual-help-tabs .active { - margin: 0; - } - - #screen-meta .contextual-help-tabs-wrap { - clear: both; - max-width: 100%; - float: none; - } - - #screen-meta, - #screen-meta-links { - margin-right: 10px; - } - - #screen-meta-links { - margin-bottom: 20px; /* Add margins beneath links for better spacing between boxes and elements */ - } - - .wp-filter .search-form input[type="search"] { - font-size: 1rem; - } - - .wp-filter .search-form.search-plugins { - /* This element is a flex item. */ - min-width: 100%; - } } /* Smartphone */ @@ -4153,10 +3939,6 @@ img { padding-top: 0; } - .screen-reader-shortcut:focus { - top: 7px; - } - #wpbody { padding-top: 46px; } @@ -4174,20 +3956,9 @@ img { h1 .nav-tab, h2 .nav-tab, - h3 .nav-tab, - nav .nav-tab { + h3 .nav-tab { margin: 10px 10px 0 0; - border-bottom: 1px solid #c3c4c7; - } - - .nav-tab-active:hover, - .nav-tab-active:focus, - .nav-tab-active:focus:active { - border-bottom: 1px solid #c3c4c7; - } - - .wp-filter .search-form input[type="search"] { - width: 100%; + border-bottom: 1px solid #ccc; } } diff --git a/wp-admin/css/common.min.css b/wp-admin/css/common.min.css index b29a32b..42ef74b 100644 --- a/wp-admin/css/common.min.css +++ b/wp-admin/css/common.min.css @@ -1,9 +1,9 @@ /*! This file is auto-generated */ -#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-left:20px}#wpcontent,#wpfooter{margin-left:160px}.folded #wpcontent,.folded #wpfooter{margin-left:36px}#wpbody-content{padding-bottom:65px;float:left;width:100%;overflow:visible}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.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-left{float:left;width:35%}#col-right{float:right;width:65%}#col-left .col-wrap{padding:0 6px 0 0}#col-right .col-wrap{padding:0 0 0 6px}.alignleft{float:left}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.button .screen-reader-text{height:auto}.screen-reader-shortcut{position:absolute;top:-1000em;left:6px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f0f0f1;color:#2271b1;z-index:100000;line-height:normal}.screen-reader-shortcut:focus{top:-25px;color:#2271b1;box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:2px solid transparent;outline-offset:-2px}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#135e96}.wp-person a:focus .gravatar,a:focus,a:focus .media-icon img,a:focus .plugin-icon{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}#adminmenu a:focus{box-shadow:none;outline:1px solid transparent;outline-offset:-1px}.screen-reader-text:focus{box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}.wp-die-message,p{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{color:#1d2327;font-size:2em;margin:.67em 0}h2,h3{color:#1d2327;font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:4em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{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}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-left:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#f0f0f1;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;float:left;color:#646970}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#50575e;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a,.widefat button.button-link{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #c3c4c7}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #c3c4c7;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:left;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 0 0 3px}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-left:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 20px 0 2px}.wrap.block-editor-no-js{padding-left:20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px;line-height:1.3}.wrap h1.wp-heading-inline{display:inline-block;margin-right:5px}.wp-header-end{visibility:hidden;margin:-2px 0 0}.subtitle{margin:0;padding-left:25px;color:#50575e;font-size:14px;font-weight:400;line-height:1}.subtitle strong{word-break:break-all}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-left:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:1px solid #2271b1;border-radius:2px;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#2271b1;background:#f6f7f7;cursor:pointer}.wrap .wp-heading-inline+.page-title-action{margin-left:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}.page-title-action:focus{color:#0a4b78}.form-table th label[for=WPLANG] .dashicons,.form-table th label[for=locale] .dashicons{margin-left:5px}.wrap .page-title-action:focus{border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#c5d9ed}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f6f7f7}.bar{background-color:#f0f0f1;border-right-color:#4f94d4}.highlight{background-color:#f0f6fc;color:#3c434a}.wp-ui-primary{color:#fff;background-color:#2c3338}.wp-ui-text-primary{color:#2c3338}.wp-ui-highlight{color:#fff;background-color:#2271b1}.wp-ui-text-highlight{color:#2271b1}.wp-ui-notification{color:#fff;background-color:#d63638}.wp-ui-text-notification{color:#d63638}.wp-ui-text-icon{color:#8c8f94}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#f6f7f7;color:#1d2327}.stuffbox .hndle{border-bottom:1px solid #c3c4c7}.quicktags{background-color:#c3c4c7;color:#000;font-size:12px}.icon32{display:none}#bulk-titles .ntdelbutton:before,.notice-dismiss:before,.tagchecklist .ntdelbutton .remove-tag-icon:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#787c82;content:"\f153";display:block;font:normal 16px/20px dashicons;speak:never;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-left:2px;border-radius:50%;color:#2271b1;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles .ntdelbutton:focus:before,#bulk-titles .ntdelbutton:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before{color:#d63638}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{color:#646970;display:block}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}hr{border:0;border-top:1px solid #dcdcde;border-bottom:1px solid #f6f7f7}#all-plugins-table .plugins a.delete,#delete-link a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.privacy_requests .remove-personal-data .remove-personal-data-handle,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete,a#remove-post-thumbnail{color:#b32d2e}#all-plugins-table .plugins a.delete:hover,#delete-link a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.privacy_requests .remove-personal-data .remove-personal-data-handle:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,a#remove-post-thumbnail:hover,abbr.required,span.required{color:#b32d2e;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #dcdcde;background:#f6f7f7}#delete-action{float:left;line-height:2.30769231}#delete-link{line-height:2.30769231;vertical-align:middle;text-align:left;margin-left:8px}#delete-link a{text-decoration:none}#publishing-action{text-align:right;float:right;line-height:1.9}#publishing-action .spinner{float:none;margin-top:5px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}.misc-pub-filename,.word-wrap-break-word{word-wrap:break-word}#minor-publishing-actions{padding:10px 10px 0;text-align:right}#save-post{float:left}.preview{float:right}#sticky-span{margin-left:18px}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:right}#misc-publishing-actions .notice{margin-left:10px;margin-right:10px}.wp-filter{display:inline-block;position:relative;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #c3c4c7;background:#fff;color:#50575e;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;border-radius:30px;background:#646970;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-left:5px;margin-right:20px}.filter-items{float:left}.filter-links{display:inline-block;margin:0}.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#646970;cursor:pointer}.filter-links .current{box-shadow:none;border-bottom:4px solid #646970;color:#1d2327}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#135e96}.wp-filter .search-form{float:right;margin:10px 0}.wp-filter .search-form input[type=search]{margin:1px 0;width:280px;max-width:100%}.wp-filter .search-form select{margin:0}.plugin-install-php .wp-filter{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.wp-filter .search-form.search-plugins{margin-top:0}.wp-filter .search-form.search-plugins .wp-filter-search,.wp-filter .search-form.search-plugins select{display:inline-block;margin-top:10px;vertical-align:top}.wp-filter .button.drawer-toggle{margin:10px 9px 0;padding:0 10px 0 6px;border-color:transparent;background-color:transparent;color:#646970;vertical-align:baseline;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 5px 0 0;color:#646970;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#135e96}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#4f94d4}.wp-filter .button.drawer-toggle:active{background:0 0;box-shadow:none;transform:none}.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer,.wp-filter .favorites-form{display:none;margin:0 -10px 0 -20px;padding:20px;border-top:1px solid #f0f0f1;background:#f6f7f7;overflow:hidden}.show-favorites-form .favorites-form,.show-filters .filter-drawer{display:block}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{border-radius:2px;background:#646970;color:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2271b1}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:left;margin:0 1% 0 0;padding:20px 10px 10px;width:24%;background:#fff;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:1.4}.filter-drawer .filter-group-feature input{position:absolute;margin:0}.filter-group .filter-group-feature label{display:block;margin:14px 0 14px 23px}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-left:10px}.wp-filter .button-link.edit-filters{padding:0 5px;line-height:2.2}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-left:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #f0f0f1}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.plugin-categories-filter{display:inline-block}.plugin-categories-filter li{float:left;width:21.5%}.plugin-categories-filter li a{font-size:1.5em;background-color:#fff;border:1px solid #c3c4c7;padding:20px;display:block;text-decoration:none}.plugin-categories-filter li a:focus,.plugin-categories-filter li a:hover{background-color:#f6f7f7}.notice,div.error,div.updated{background:#fff;border:1px solid #c3c4c7;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,.04);margin:5px 15px 2px;padding:1px 12px}div[class=update-message]{padding:.5em 12px .5em 0}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#1d2327;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-right:38px;position:relative}.notice-dismiss{position:absolute;top:0;right:1px;border:none;margin:0;padding:9px;background:0 0;color:#787c82;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#d63638}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.notice-success,div.updated{border-left-color:#00a32a}.notice-success.notice-alt{background-color:#edfaef}.notice-warning{border-left-color:#dba617}.notice-warning.notice-alt{background-color:#fcf9e8}.notice-error,div.error{border-left-color:#d63638}.notice-error.notice-alt{background-color:#fcf0f1}.notice-info{border-left-color:#72aee6}.notice-info.notice-alt{background-color:#f0f6fc}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.wrap #templateside .notice{display:block;margin:0;padding:5px 8px;font-weight:600;text-decoration:none}.wrap #templateside span.notice{margin-left:-12px}#templateside li.notice a{padding:0}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#d63638;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:rotation 2s infinite linear}@media (prefers-reduced-motion:reduce){.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.plugins .column-auto-updates .dashicons-update.spin,.theme-overlay .theme-autoupdate .dashicons-update.spin,.updating-message p:before{animation:none}}.theme-overlay .theme-autoupdate .dashicons-update.spin{margin-right:3px}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#68de7c;content:"\f147"}.update-message.notice-error p:before{color:#d63638;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-right:6px}.import-php .updating-message:before{vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;margin:25px 20px 0 2px}ul#dismissed-updates{display:none}#dismissed-updates li>p{margin-top:0}#dismiss,#undismiss{margin-left:.5em}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}.update-php .spinner{float:none;margin:-4px 0}h2.wp-current-version{margin-bottom:.3em}p.update-last-checked{margin-top:0}p.auto-update-status{margin-top:2em;line-height:1.8}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px 5px 0 -2px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#9ec2e6}.button.updated-message{transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:never}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-left:0}#screen-meta-links{float:right;margin:0 20px 0 0}#screen-meta{display:none;margin:0 20px -1px 0;position:relative;background-color:#fff;border:1px solid #c3c4c7;border-top:none;box-shadow:0 0 0 transparent}#contextual-help-link-wrap,#screen-options-link-wrap{float:left;margin:0 0 0 6px}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:1px solid #c3c4c7;border-top:none;height:auto;margin-bottom:0;padding:3px 6px 3px 16px;background:#fff;border-radius:0 0 4px 4px;color:#646970;line-height:1.7;box-shadow:0 0 0 transparent;transition:box-shadow .1s linear}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#2c3338}#screen-meta-links .show-settings:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}#screen-meta-links .show-settings:active{transform:none}#screen-meta-links .show-settings:after{right:0;content:"\f140";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 5px 0 0;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.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}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:2.35}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-right:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 5px 0 0}.metabox-prefs .columns-prefs label input{margin:-1px 2px 0 0}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-right:15px;padding-right:0}.metabox-prefs .screen-options label{line-height:2.2;padding-right:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border:1px solid #c3c4c7;border-top:none;border-bottom:none;background:#f0f6fc}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;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:0 0 0 2px;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:1.4;text-decoration:none;border:1px solid transparent;border-right:none;border-left:none}.contextual-help-tabs a:hover{color:#2c3338}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-left:2px solid #72aee6;background:#f0f6fc;box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#c3c4c7;color:#2c3338}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6}.help-tab-content.active{display:block}.help-tab-content ul li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box;-ms-overflow-style:scrollbar}.widefat td,.widefat th{color:#50575e}.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th{color:#2c3338}.widefat td p{margin:2px 0 .8em}.widefat ol,.widefat p,.widefat ul{color:#2c3338}.widefat .column-comment p{margin:.6em 0}.widefat .column-comment ul{list-style:initial;margin-left:2em}.postbox-container{float:left}.postbox-container .meta-box-sortables{box-sizing:border-box}.postbox-container summary{font-size:14px;font-weight:600;padding:2px 12px;margin:0;line-height:1.4;border-bottom:1px solid #c3c4c7}.postbox-container summary>div{display:inline-flex}.postbox-container .handle-actions{right:12px;position:absolute}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .meta-box-sortables{min-height:1px;position:relative}details summary>*{display:inline}.metabox-holder details>summary::-webkit-details-marker,.metabox-holder details>summary::marker{font-size:1.5em;cursor:pointer}.metabox-holder details>summary h2{padding-left:5px!important}#post-body-content{width:100%;min-width:463px;float:left}#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 .metabox-holder .postbox-container .empty-container{outline:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .postbox .hndle.is-non-sortable,.js .widget .widget-top.is-non-sortable{cursor:auto}.hndle a{font-size:12px;font-weight:400}.postbox-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #c3c4c7}.postbox-header .hndle{flex-grow:1;display:flex;justify-content:space-between;align-items:center}.postbox-header .handle-actions{flex-shrink:0}.postbox .handle-order-higher,.postbox .handle-order-lower,.postbox .handlediv{width:36px;height:36px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.postbox .handle-order-higher,.postbox .handle-order-lower{color:#787c82;width:1.62rem}.edit-post-meta-boxes-area .postbox .handle-order-higher,.edit-post-meta-boxes-area .postbox .handle-order-lower{width:44px;height:44px;color:#1d2327}.postbox .handle-order-higher[aria-disabled=true],.postbox .handle-order-lower[aria-disabled=true]{cursor:default;color:#a7aaad}.sortable-placeholder{border:1px dashed #c3c4c7;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox.closed{border-bottom:0}.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;user-select:none}.postbox .inside{padding:0 12px 12px;line-height:1.4;font-size:13px}.stuffbox .inside{padding:0;line-height:1.4;font-size:13px;margin-top:0}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{box-shadow:none}.temp-border{border:1px dotted #c3c4c7}.columns-prefs label{padding:0 10px 0 0}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#comment-status-display,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 20px;color:#50575e}#wpfooter p{font-size:13px;margin:0;line-height:1.55}#footer-thankyou{font-style:italic}.nav-tab{float:left;border:1px solid #c3c4c7;border-bottom:none;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:1.71428571;font-weight:600;background:#dcdcde;color:#50575e;text-decoration:none;white-space:nowrap}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:1.33}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#3c434a}.nav-tab-active,.nav-tab:focus:active{box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#3c434a}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f0f0f1;background:#f0f0f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #c3c4c7;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;float:right;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template>div{margin-right:16em}#template .notice{margin-top:1em;margin-right:3%}#template .notice p{width:auto}#template .submit .spinner{float:none}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder details>summary{line-height:1.4;padding-top:6px;margin-top:0!important}.nav-menus-php .metabox-holder details>summary::before{margin-right:.2em}.nav-menus-php .metabox-holder h3{font-size:1.1em;font-weight:500}#templateside ul li a{text-decoration:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:left}.attention,.error-message{color:#d63638;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #dcdcde;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.importers{font-size:16px;width:auto}.importers td{padding-right:14px;line-height:1.4}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.importer-action,.importer-desc,.importer-title{display:block}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:1.55;color:#50575e;margin-bottom:1em}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{color:#1d2327;border-bottom:1px solid #f0f0f1}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px;white-space:nowrap}#namediv input{width:100%}#namediv p{margin:10px 0}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:.15}.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}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) repeat-x bottom left}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) repeat-x top left;height:17px;float:left}.star-rating{white-space:nowrap}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;transition:color .1s ease-in;text-align:center;color:#dba617}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{transform:rotateY(180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 26px;background:#f6f7f7;font-size:22px;font-weight:600;line-height:2.4;position:relative;height:56px}#plugin-information-title.with-banner{margin-right:0;height:250px;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:600;padding:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{position:relative;font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:1.68;box-sizing:border-box;max-width:100%;padding:0 15px;margin-top:174px;color:#fff;background:rgba(29,35,39,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 0 30px rgba(255,255,255,.1);border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{position:absolute;display:block;top:0;left:0;height:250px;width:100%;background:0 0;box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;right:0;left:0;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #dcdcde;background:#f6f7f7}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:1.3;font-size:14px;text-decoration:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #dcdcde;border-bottom-color:#fff;padding-top:8px;color:#2c3338}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;right:0;left:0;min-height:100%;min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;right:250px;bottom:0;left:0;margin-top:10px;margin-right:250px;padding:10px 26px 99999px;margin-bottom:-99932px}#section-holder .notice{margin:5px 0 15px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:right;position:relative;top:0;right:0;padding:16px 16px 99999px;margin-bottom:-99932px;width:217px;border-left:1px solid #dcdcde;background:#f6f7f7;color:#646970}#plugin-information .fyi strong{color:#3c434a}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#646970;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:left;margin-right:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#dcdcde;float:left}#plugin-information .counter-bar{height:17px;background-color:#f0c33c;float:left}#plugin-information .counter-count{margin-left:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:13px 16px;position:absolute;right:0;bottom:0;left:0;height:40px;border-top:1px solid #dcdcde;background:#f6f7f7}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #c3c4c7}#plugin-information blockquote{border-left:2px solid #dcdcde;color:#646970;font-style:italic;margin:1em 0;padding:0 0 0 1em}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #dcdcde}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-right:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:2;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #dcdcde;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}#TB_window.plugin-details-modal{background:#fff}#TB_window.plugin-details-modal.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;background:#fff url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#TB_window.plugin-details-modal.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}.plugin-details-modal #TB_title{float:left;height:1px}.plugin-details-modal #TB_ajaxWindowTitle{display:none}.plugin-details-modal #TB_closeWindowButton{left:auto;right:-30px;color:#f0f0f1}.plugin-details-modal #TB_closeWindowButton:focus,.plugin-details-modal #TB_closeWindowButton:hover{outline:0;box-shadow:none}.plugin-details-modal #TB_closeWindowButton:focus::after,.plugin-details-modal #TB_closeWindowButton:hover::after{outline:2px solid;outline-offset:-4px;border-radius:4px}.plugin-details-modal .tb-close-icon{display:none}.plugin-details-modal #TB_closeWindowButton:after{content:"\f335";font:normal 32px/29px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){.plugin-details-modal #TB_closeWindowButton{right:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator::before,.meta-box-sortables .postbox .order-higher-indicator::before,.meta-box-sortables .postbox .order-lower-indicator::before,.meta-box-sortables .postbox .toggle-indicator::before,.privacy-text-box .toggle-indicator::before,.sidebar-name .toggle-indicator::before{content:"\f142";display:inline-block;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator::before,.js .widgets-holder-wrap.closed .toggle-indicator::before,.meta-box-sortables .postbox.closed .handlediv .toggle-indicator::before,.privacy-text-box.closed .toggle-indicator::before{content:"\f140"}.postbox .handle-order-higher .order-higher-indicator::before{content:"\f343";color:inherit}.postbox .handle-order-lower .order-lower-indicator::before{content:"\f347";color:inherit}.postbox .handle-order-higher .order-higher-indicator::before,.postbox .handle-order-lower .order-lower-indicator::before{position:relative;top:.11rem;width:20px;height:20px}.postbox .handlediv .toggle-indicator::before{width:20px;border-radius:50%}.postbox .handlediv .toggle-indicator::before{position:relative;top:.05rem;text-indent:-1px}.rtl .postbox .handlediv .toggle-indicator::before{text-indent:1px}.bulk-action-notice .toggle-indicator::before{line-height:16px;vertical-align:top;color:#787c82}.postbox .handle-order-higher:focus,.postbox .handle-order-lower:focus,.postbox .handlediv:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}.postbox .handle-order-higher:focus .order-higher-indicator::before,.postbox .handle-order-lower:focus .order-lower-indicator::before,.postbox .handlediv:focus .toggle-indicator::before{box-shadow:none;outline:1px solid transparent}#photo-add-url-div input[type=text]{width:300px}.alignleft h2{margin:0}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;background:#f6f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4}#template .CodeMirror,#template textarea{width:100%;min-height:60vh;height:calc(100vh - 295px);border:1px solid #dcdcde;box-sizing:border-box}#templateside>h2{padding-top:6px;padding-bottom:7px;margin:0}#templateside ol,#templateside ul{margin:0;padding:0}#templateside>ul{box-sizing:border-box;margin-top:0;overflow:auto;padding:0;min-height:60vh;height:calc(100vh - 295px);background-color:#f6f7f7;border:1px solid #dcdcde;border-left:none}#templateside ul ul{padding-left:12px}#templateside>ul>li>ul[role=group]{padding-left:0}[role=treeitem][aria-expanded=false]>ul{display:none}[role=treeitem] span[aria-hidden]{display:inline;font-family:dashicons;font-size:20px;position:absolute;pointer-events:none}[role=treeitem][aria-expanded=false]>.folder-label .icon:after{content:"\f139"}[role=treeitem][aria-expanded=true]>.folder-label .icon:after{content:"\f140"}[role=treeitem] .folder-label{display:block;padding:3px 3px 3px 12px;cursor:pointer}[role=treeitem]{outline:0}[role=treeitem] .folder-label.focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}[role=treeitem] .folder-label.hover,[role=treeitem].hover{background-color:#f0f0f1}.tree-folder{margin:0;position:relative}[role=treeitem] li{position:relative}.tree-folder .tree-folder::after{content:"";display:block;position:absolute;left:2px;border-left:1px solid #c3c4c7;top:-13px;bottom:10px}.tree-folder>li::before{content:"";position:absolute;display:block;border-left:1px solid #c3c4c7;left:2px;top:-5px;height:18px;width:7px;border-bottom:1px solid #c3c4c7}.tree-folder>li::after{content:"";position:absolute;display:block;border-left:1px solid #c3c4c7;left:2px;bottom:-7px;top:0}#templateside .current-file{margin:-4px 0 -2px}.tree-folder>.current-file::before{left:4px;height:15px;width:0;border-left:none;top:3px}.tree-folder>.current-file::after{bottom:-4px;height:7px;left:2px;top:auto}.tree-folder li:last-child>.tree-folder::after,.tree-folder>li:last-child::after{display:none}#documentation label,#theme-plugin-editor-label,#theme-plugin-editor-selector{font-weight:600}#theme-plugin-editor-label{display:inline-block;margin-bottom:1em}#docs-list,#template textarea{direction:ltr}.fileedit-sub #plugin,.fileedit-sub #theme{max-width:40%}.fileedit-sub .alignright{text-align:right}#template p{width:97%}#file-editor-linting-error{margin-top:1em;margin-bottom:1em}#file-editor-linting-error>.notice{margin:0;display:inline-block}#file-editor-linting-error>.notice>p{width:auto}#template .submit{margin-top:1em;padding:0}#template .submit input[type=submit][disabled]{cursor:not-allowed}#templateside{float:right;width:16em;word-wrap:break-word}#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside li{margin:4px 0}#templateside li:not(.howto) a,.theme-editor-php .highlight{display:block;padding:3px 0 3px 12px;text-decoration:none}#templateside li:not(.howto)>a:first-of-type{padding-top:0}#templateside li.howto{padding:6px 12px 12px}.theme-editor-php .highlight{margin:-3px 3px -3px -12px}#templateside .highlight{border:none;font-weight:600}.nonessential{color:#646970;font-size:11px;font-style:italic;padding-left:12px}#documentation{margin-top:10px}#documentation label{line-height:1.8;vertical-align:baseline}.fileedit-sub{padding:10px 0 8px;line-height:180%}#file-editor-warning .file-editor-warning-content{margin:25px}.nav-menus-php .item-edit:before,.widget-top .widget-action .toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}.widget-top .widget-action .toggle-indicator:before{padding:1px 2px 1px 0;border-radius:50%}.accordion-section-title:after,.handlediv,.item-edit,.postbox .handlediv.button-link,.toggle-indicator{color:#787c82}.widget-action{color:#50575e}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.postbox .handlediv.button-link:focus,.postbox .handlediv.button-link:hover,.sidebar-name:hover .toggle-indicator,.widget-action:focus,.widget-top:hover .widget-action{color:#1d2327;outline:1px solid transparent}.widget-top .widget-action:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top .widget-action .toggle-indicator:before,.widget.widget-in-question .widget-top .widget-action .toggle-indicator:before{content:"\f142"}/*! +#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-left:20px}#wpcontent,#wpfooter{margin-left:160px}.folded #wpcontent,.folded #wpfooter{margin-left:36px}#wpbody-content{padding-bottom:65px;float:left;width:100%;overflow:visible!important}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.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-left{float:left;width:35%}#col-right{float:right;width:65%}#col-left .col-wrap{padding:0 6px 0 0}#col-right .col-wrap{padding:0 0 0 6px}.alignleft{float:left}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.wp-clearfix:after{content:"";display:table;clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{left:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}.wp-person a:focus .gravatar,a:focus,a:focus .media-icon img{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}#adminmenu a:focus,.screen-reader-text:focus{box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}p{font-size:13px;line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{color:#23282d;font-size:2em;margin:.67em 0}h2,h3{color:#23282d;font-size:1.3em;margin:1em 0}.update-core-php h2{margin-top:2em}.update-messages h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{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}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-left:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px 5px;margin:0 1px;background:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;float:left;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#555d66;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat *{word-wrap:break-word}.widefat a,.widefat button.button-link{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:left;line-height:1.3em;font-size:14px}.updates-table td input,.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tbody th.check-column{padding:9px 0 22px}.updates-table tbody td.check-column,.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 0 0 3px}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-left:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 20px 0 2px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 0;line-height:29px}.wrap h1.wp-heading-inline{display:inline-block;margin-right:5px}.wp-header-end{visibility:hidden;margin:-2px 0 0}.subtitle{margin:0;padding-left:25px;color:#555d66;font-size:14px;font-weight:400;line-height:1}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-left:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;border:1px solid #ccc;border-radius:2px;background:#f7f7f7;text-shadow:none;font-weight:600;font-size:13px;line-height:normal;color:#0073aa;cursor:pointer;outline:0}.wrap .wp-heading-inline+.page-title-action{margin-left:0}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{border-color:#008ec2;background:#00a0d2;color:#fff}.page-title-action:focus{color:#124964}.wrap .page-title-action:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-right-color:#99d}.highlight{background-color:#e4f2fd;color:#000}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#82878c}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#fafafa;color:#23282d}.postbox .hndle,.stuffbox .hndle{border-bottom:1px solid #eee}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist .ntdelbutton .remove-tag-icon:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#72777c;content:"\f153";display:block;font:normal 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}#bulk-titles div a:before{margin:1px 0}.tagchecklist .ntdelbutton .remove-tag-icon:before{margin-left:2px;border-radius:50%;color:#0073aa;line-height:1.28}.tagchecklist .ntdelbutton:focus{outline:0}#bulk-titles div a:focus:before,#bulk-titles div a:hover:before,.tagchecklist .ntdelbutton:focus .remove-tag-icon:before,.tagchecklist .ntdelbutton:hover .remove-tag-icon:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap;word-wrap:break-word}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}.no-break{white-space:nowrap}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins a.delete,#delete-link a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete{color:#a00}#all-plugins-table .plugins a.delete:hover,#delete-link a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,abbr.required,span.required{color:#dc3232;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{float:left;line-height:28px}#delete-link{line-height:28px;vertical-align:middle;text-align:left;margin-left:8px}#delete-link a{text-decoration:none}#publishing-action{text-align:right;float:right;line-height:23px}#publishing-action .spinner{float:left}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}.misc-pub-filename{word-wrap:break-word}#minor-publishing-actions{padding:10px 10px 0 10px;text-align:right}#save-post{float:left}.preview{float:right}#sticky-span{margin-left:18px}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:right}#misc-publishing-actions .notice{margin-left:10px;margin-right:10px}.wp-filter{display:inline-block;position:relative;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;border-radius:30px;background:#72777c;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-left:5px;margin-right:20px}.filter-items{float:left}.filter-links{display:inline-block;margin:0}.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#666;cursor:pointer}.filter-links .current{box-shadow:none;border-bottom:4px solid #666;color:#23282d}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#00a0d2}.wp-filter .search-form{float:right;margin:10px 0}.wp-filter .search-form input[type=search]{margin:0;padding:3px 5px;width:280px;max-width:100%;font-size:16px;font-weight:300;line-height:1.5}.wp-filter .search-form select{margin:0;height:32px;vertical-align:top}.wp-filter .search-form.search-plugins{display:inline-block}.wp-filter .button.drawer-toggle{margin:10px 9px 0;padding:0 10px 0 6px;border-color:transparent;background-color:transparent;color:#666;vertical-align:baseline;box-shadow:none}.wp-filter .drawer-toggle:before{content:"\f111";margin:0 5px 0 0;color:#72777c;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-filter .button.drawer-toggle:focus,.wp-filter .button.drawer-toggle:hover,.wp-filter .drawer-toggle:focus:before,.wp-filter .drawer-toggle:hover:before{background-color:transparent;color:#00a0d2}.wp-filter .button.drawer-toggle:focus:active,.wp-filter .button.drawer-toggle:hover{border-color:transparent}.wp-filter .button.drawer-toggle:focus{border-color:#5b9dd9}.wp-filter .button.drawer-toggle:active{background:0 0;box-shadow:none;transform:none}.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer,.wp-filter .favorites-form{display:none;margin:0 -10px 0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa;overflow:hidden}.show-favorites-form .favorites-form,.show-filters .filter-drawer{display:block}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .button.drawer-toggle{border-radius:2px;background:#72777c;color:#fff}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:left;margin:0 1% 0 0;padding:20px 10px 10px;width:24%;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:16px}.filter-drawer .filter-group-feature input{position:absolute;margin:0}.filter-group .filter-group-feature label{display:block;margin:14px 0 14px 23px}.filter-drawer .buttons{clear:both;margin-bottom:20px}.filter-drawer .filter-group+.buttons{margin-bottom:0;padding-top:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-left:10px}.wp-filter .button-link.edit-filters{padding:0 5px;line-height:28px}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-left:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none!important}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters .favorites-form,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.plugin-categories-filter{display:inline-block}.plugin-categories-filter li{background-color:#fff;border:1px solid #ddd;float:left;padding:20px;width:21.5%}.plugin-categories-filter li{margin-right:5px}.plugin-categories-filter li a{font-size:1.5em}.about-inline-notice,.notice,div.error,div.updated{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}div[class=update-message]{padding:.5em 12px .5em 0}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}.updated a{padding-bottom:2px}.notice-alt{box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-right:38px;position:relative}.notice-dismiss{position:absolute;top:0;right:1px;border:none;margin:0;padding:9px;background:0 0;color:#72777c;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .notice-dismiss:focus{outline:1px solid #5b9dd9}.notice-success,div.updated{border-left-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-left-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-left-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-left-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updated-message p:before,.updating-message p:before{display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}.wrap #templateside .notice{display:block;margin:0;padding:5px 8px;font-weight:600;text-decoration:none}.wrap #templateside span.notice{margin-left:-12px}#templateside li.notice a{padding:0}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.update-message p:before,.updating-message p:before{color:#f56e28;content:"\f463"}.button.installing:before,.button.updating-message:before,.import-php .updating-message:before,.updating-message p:before{animation:rotation 2s infinite linear}.button.updated-message:before,.installed p:before,.updated-message p:before{color:#79ba49;content:'\f147'}.update-message.notice-error p:before{color:#dc3232;content:"\f534"}.import-php .updating-message:before,.wrap .notice p:before{margin-right:6px;vertical-align:bottom}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}ul#dismissed-updates{display:none}#dismissed-updates li>p{margin-top:0}#dismiss,#undismiss{margin-left:.5em}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em 0}.update-php .spinner{float:none;margin:-4px 0}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}.button.installed:before,.button.installing:before,.button.updated-message:before,.button.updating-message:before{margin:3px 5px 0 -2px}.button-primary.updating-message:before{color:#fff}.button-primary.updated-message:before{color:#66c6e4}.button.updated-message{transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}@media aural{.button.installed:before,.button.installing:before,.update-message p:before,.wrap .notice p:before{speak:none}}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-left:0!important}#screen-meta-links{margin:0 20px 0 0}#screen-meta{display:none;margin:0 20px -1px 0;position:relative;background-color:#fff;border:1px solid #ddd;border-top:none;box-shadow:0 1px 0 rgba(0,0,0,.025)}#contextual-help-link-wrap,#screen-options-link-wrap{float:right;height:28px;margin:0 0 0 6px;border:1px solid #ddd;border-top:none;background:#fff;box-shadow:0 1px 1px -1px rgba(0,0,0,.1)}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:0;background:0 0;border-radius:0;color:#72777c;line-height:1.7;padding:3px 6px 3px 16px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{box-shadow:none;transform:none}#screen-meta-links .show-settings:after{right:0;content:"\f140";font:normal 20px/1 dashicons;speak:none;display:inline-block;padding:0 5px 0 0;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#72777c}#screen-meta-links .screen-meta-active:after{content:"\f142"}.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}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-right:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 5px 0 0}.metabox-prefs .columns-prefs label input{margin:-1px 2px 0 0}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-right:15px}.metabox-prefs .screen-options label{line-height:28px;padding-right:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;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:0 0 0 2px;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none;border:1px solid transparent;border-right:none;border-left:none}.contextual-help-tabs a:hover{color:#32373c}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-left:2px solid #00a0d2;background:#f6fbfd;box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#e1e1e1;color:#32373c}.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 ul li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box}.widefat td,.widefat th{color:#555}.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat ol,.widefat p,.widefat ul{color:#32373c}.widefat .column-comment p{margin:.6em 0}.widefat .column-comment ul{list-style:initial;margin-left:2em}.postbox-container{float:left}.postbox-container .meta-box-sortables{box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px;position:relative}.metabox-holder .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:0;left:0;bottom:0;right:0;height:1em;width:200px;text-align:center;color:#ccc;font-size:18px;display:none}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0 none;height:0;min-height:0}#post-body-content{width:100%;min-width:463px;float:left}#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 .metabox-holder .postbox-container .empty-container{border:0 none;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.hndle a{font-size:11px;font-weight:400}.postbox .handlediv{display:none;float:right;width:36px;height:36px;margin:0;padding:0;border:0;background:0 0;cursor:pointer}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;user-select:none}.postbox .inside,.stuffbox .inside{padding:0 12px 12px;line-height:1.4em;font-size:13px}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 10px 0 0}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 20px;color:#555d66}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}.nav-tab{float:left;border:1px solid #ccc;border-bottom:none;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;font-weight:600;background:#e5e5e5;color:#555;text-decoration:none;white-space:nowrap}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#444}.nav-tab-active,.nav-tab:focus:active{box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#444}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding-top:9px;padding-bottom:0;line-height:inherit}.nav-tab-wrapper:not(.wp-clearfix):after{content:"";display:table;clear:both}.ie8 .nav-tab-wrapper{display:inline-block;width:100%;vertical-align:top}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;display:inline-block;visibility:hidden;float:right;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.loading-content .spinner,.spinner.is-active{visibility:visible}#template>div{margin-right:16em}#template .notice{margin-top:1em;margin-right:3%}#template .notice p{width:auto}#template .submit .spinner{float:none}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 10px 11px 14px;line-height:21px}#templateside ul li a{text-decoration:none}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:left}.attention,.error-message{color:#dc3232;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e5e5e5;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.importers{font-size:16px;width:auto}.importers td{padding-right:14px;line-height:1.5em}.importers .import-system{max-width:250px}.importers td.desc{max-width:500px}.importer-action,.importer-desc,.importer-title{display:block}.importer-title{color:#000;font-size:14px;font-weight:400;margin-bottom:.2em}.importer-action{line-height:20px;color:#555;margin-bottom:1em}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 0 0 9px}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#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}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) repeat-x bottom left}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) repeat-x top left;height:17px;float:left}.star-rating{white-space:nowrap}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;transition:color .1s ease-in 0;text-align:center;color:#ffb900}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{transform:rotateY(180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400;margin:6px 0 0}#plugin-information{background:#fff;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 26px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;height:56px}#plugin-information-title.with-banner{margin-right:0;height:250px;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:600;padding:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{position:relative;font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;box-sizing:border-box;max-width:100%;padding:0 15px;margin-top:174px;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 0 30px rgba(255,255,255,.1);border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{position:absolute;display:block;top:0;left:0;height:250px;width:100%;background:0 0;box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;right:0;left:0;min-height:36px;font-size:0;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;display:inline-block;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;right:0;left:0;min-height:100%;min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;right:250px;bottom:0;left:0;margin-right:250px;padding:10px 26px;margin-bottom:-99939px;padding-bottom:99999px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:right;position:relative;top:0;right:0;padding:16px;margin-bottom:-99939px;padding-bottom:99999px;width:217px;border-left:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#444}#plugin-information .fyi h3{font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .fyi-description{margin-top:0}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:left;margin-right:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#e5e5e5;float:left}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:left}#plugin-information .counter-count{margin-left:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:13px 16px;position:absolute;right:0;bottom:0;left:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #ccc}#plugin-information blockquote{border-left:2px solid #ddd;color:#666;font-style:italic;margin:1em 0;padding:0 0 0 1em}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e5e5e5}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}.update-php .button.button-primary{margin-right:1em}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:40px;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #ddd;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}#TB_window.plugin-details-modal{background:#fcfcfc}#TB_window.plugin-details-modal.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;background:#fcfcfc url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#TB_window.plugin-details-modal.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}.plugin-details-modal #TB_title{float:left;height:1px}.plugin-details-modal #TB_ajaxWindowTitle{display:none}.plugin-details-modal #TB_closeWindowButton{left:auto;right:-30px;color:#eee}.plugin-details-modal #TB_closeWindowButton:focus,.plugin-details-modal #TB_closeWindowButton:hover{color:#00a0d2;outline:0;box-shadow:none}.plugin-details-modal .tb-close-icon{display:none}.plugin-details-modal #TB_closeWindowButton:after{content:"\f335";font:normal 32px/29px dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media screen and (max-width:830px){.plugin-details-modal #TB_closeWindowButton{right:0;top:-30px}}img{border:none}.bulk-action-notice .toggle-indicator:before,.js .meta-box-sortables .postbox .toggle-indicator:before,.privacy-text-box .toggle-indicator:before,.sidebar-name .toggle-indicator:before{content:"\f142";display:inline-block;font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.bulk-action-notice .bulk-action-errors-collapsed .toggle-indicator:before,.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .toggle-indicator:before,.privacy-text-box.closed .toggle-indicator:before{content:"\f140"}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;border-radius:50%;text-indent:-1px}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.bulk-action-notice .toggle-indicator:before{line-height:16px;vertical-align:top;color:#72777c}.js .postbox .handlediv:focus{box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#photo-add-url-div input[type=text]{width:300px}.alignleft h2{margin:0}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;background:#f9f9f9;-moz-tab-size:4;-o-tab-size:4;tab-size:4}#template .CodeMirror,#template textarea{width:100%;min-height:60vh;height:calc(100vh - 295px);border:1px solid #ddd;box-sizing:border-box}#templateside>h2{padding-top:6px;padding-bottom:7px;margin:0}#templateside ol,#templateside ul{margin:0;padding:0}#templateside>ul{box-sizing:border-box;margin-top:0;overflow:auto;padding:0;min-height:60vh;height:calc(100vh - 295px);background-color:#f7f7f7;border:1px solid #ddd;border-left:none}#templateside ul ul{padding-left:12px}#templateside>ul>li>ul[role=group]{padding-left:0}[role=treeitem][aria-expanded=false]>ul{display:none}[role=treeitem] span[aria-hidden]{display:inline;font-family:dashicons;font-size:20px;position:absolute;pointer-events:none}[role=treeitem][aria-expanded=false]>.folder-label .icon:after{content:"\f139"}[role=treeitem][aria-expanded=true]>.folder-label .icon:after{content:"\f140"}[role=treeitem] .folder-label{display:block;padding:3px 3px 3px 12px;cursor:pointer}[role=treeitem]{outline:0}[role=treeitem] .folder-label.focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}[role=treeitem] .folder-label.hover,[role=treeitem].hover{background-color:#eaeaea}.tree-folder{margin:0;position:relative}[role=treeitem] li{position:relative}.tree-folder .tree-folder::after{content:' ';display:block;position:absolute;left:2px;border-left:1px solid #ccc;top:-13px;bottom:10px}.tree-folder>li::before{content:' ';position:absolute;display:block;border-left:1px solid #ccc;left:2px;top:-5px;height:18px;width:7px;border-bottom:1px solid #ccc}.tree-folder>li::after{content:' ';position:absolute;display:block;border-left:1px solid #ccc;left:2px;bottom:-7px;top:0}#templateside .current-file{margin:-4px 0 -2px}.tree-folder>.current-file::before{left:4px;height:15px;width:0;border-left:none;top:3px}.tree-folder>.current-file::after{bottom:-4px;height:7px;left:2px;top:auto}.tree-folder li:last-child>.tree-folder::after,.tree-folder>li:last-child::after{display:none}#theme-plugin-editor-label{display:inline-block;margin-bottom:1em;font-weight:600}#docs-list,#template textarea{direction:ltr}.fileedit-sub #plugin,.fileedit-sub #theme{max-width:40%}.fileedit-sub .alignright{text-align:right}#template p{width:97%}#file-editor-linting-error{margin-top:1em;margin-bottom:1em}#file-editor-linting-error>.notice{margin:0;display:inline-block}#file-editor-linting-error>.notice>p{width:auto}#template .submit{margin-top:1em;padding:0}#template .submit input[type=submit][disabled]{cursor:not-allowed}#templateside{float:right;width:16em;word-wrap:break-word}#postcustomstuff p.submit{margin:0}#templateside h4{margin:1em 0 0}#templateside li{margin:4px 0}#templateside li:not(.howto) a,.theme-editor-php .highlight{display:block;padding:3px 0 3px 12px;text-decoration:none}#templateside li:not(.howto)>a:first-of-type{padding-top:0}#templateside li.howto{padding:6px 12px 12px 12px}.theme-editor-php .highlight{margin:-3px 3px -3px -12px}#templateside .highlight{border:none;font-weight:600}.nonessential{color:#666;font-size:11px;font-style:italic;padding-left:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}#file-editor-warning .file-editor-warning-content{margin:25px}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top .widget-action .toggle-indicator:before{content:"\f140";font:normal 20px/1 dashicons;speak:none;display:block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.widget-top .widget-action .toggle-indicator:before{padding:1px 2px 1px 0;border-radius:50%}.accordion-section-title:after,.handlediv,.item-edit,.postbox .handlediv.button-link,.toggle-indicator{color:#72777c}.widget-action{color:#555d66}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:focus,.item-edit:hover,.postbox .handlediv.button-link:focus,.postbox .handlediv.button-link:hover,.sidebar-name:hover .toggle-indicator,.widget-action:focus,.widget-top:hover .widget-action{color:#23282d}.widget-top .widget-action:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.accordion-section-title:after,.control-section .accordion-section-title:after{float:right;right:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top .widget-action .toggle-indicator:before{content:"\f142"}/*! * jQuery UI Draggable/Sortable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.accordion-section{border-bottom:1px solid #dcdcde;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dcdcde}.accordion-section-content{padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-left:1px solid #dcdcde;border-right:1px solid #dcdcde;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;right:10px;z-index:1}.accordion-section-title:focus{outline:1px solid transparent}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a7aaad transparent;outline:1px solid transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section{border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.control-section:focus-within{outline:2px solid #3582c4}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-left:none;border-right:none;padding:10px 10px 11px 14px;line-height:1.55;background:#fff}.control-section details[open] summary.accordion-section-title{color:#3c434a;background-color:#f6f7f7;border-bottom:1px solid #dcdcde}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#1d2327;background:#f6f7f7}.control-section.open .accordion-section-title{border-bottom:1px solid #dcdcde}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background:#c3c4c7}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:left;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(odd){clear:left}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f6f7f7}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:left;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f6f7f7}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:left;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:left}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f6f7f7}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:left;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:left}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f6f7f7}}@media only screen and (min-width:1600px){.my-sites li{float:left;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:left}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f6f7f7}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) repeat-x bottom left;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){html.wp-toolbar{padding-top:46px}.screen-reader-shortcut:focus{top:-39px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{clear:both;margin-right:12px;margin-left:0}#col-left,#col-right{float:none;width:auto}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-right:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{right:-16em}code{word-wrap:break-word;word-wrap:anywhere;word-break:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#template .CodeMirror,#template textarea{box-sizing:border-box}#templateside{float:none;width:auto}#templateside>ul{border-left:1px solid #dcdcde}#templateside li{margin:0}#templateside li:not(.howto) a{display:block;padding:5px}#templateside li.howto{padding:12px}#templateside .highlight{padding:5px;margin-left:-5px;margin-top:-5px}#template .notice,#template>div{float:none;margin:1em 0;width:auto}#template .CodeMirror,#template textarea{width:100%}#templateside ul ul{padding-left:1.5em}[role=treeitem] .folder-label{display:block;padding:5px}.tree-folder .tree-folder::after,.tree-folder>li::after,.tree-folder>li::before{left:-8px}.tree-folder>li::before{top:0;height:13px}.tree-folder>.current-file::before{left:-5px;top:7px;width:4px}.tree-folder>.current-file::after{height:9px;left:-8px}.wrap #templateside span.notice{margin-left:-5px;width:100%}.fileedit-sub .alignright{float:left;margin-top:15px;width:100%;text-align:left}.fileedit-sub .alignright label{display:block}.fileedit-sub #plugin,.fileedit-sub #theme{margin-left:0;max-width:70%}.fileedit-sub input[type=submit]{margin-bottom:0}#documentation label[for=docs-list]{display:block}#documentation select[name=docs-list]{margin-left:0;max-width:60%}#documentation input[type=button]{margin-bottom:0}#wpfooter{display:none}#comments-form .checkforspam{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:2.1}.filter-drawer .filter-group-feature label{margin-left:32px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:2;height:28px}#screen-meta #contextual-help-wrap{overflow:visible}#screen-meta #contextual-help-back,#screen-meta .contextual-help-sidebar{display:none}#screen-meta .contextual-help-tabs{clear:both;width:100%;float:none}#screen-meta .contextual-help-tabs ul{margin:0 0 1em;padding:1em 0 0}#screen-meta .contextual-help-tabs .active{margin:0}#screen-meta .contextual-help-tabs-wrap{clear:both;max-width:100%;float:none}#screen-meta,#screen-meta-links{margin-right:10px}#screen-meta-links{margin-bottom:20px}.wp-filter .search-form input[type=search]{font-size:1rem}.wp-filter .search-form.search-plugins{min-width:100%}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open{overflow-x:hidden}html.wp-toolbar{padding-top:0}.screen-reader-shortcut:focus{top:7px}#wpbody{padding-top:46px}div#post-body.metabox-holder.columns-1{overflow-x:hidden}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab,nav .nav-tab{margin:10px 10px 0 0;border-bottom:1px solid #c3c4c7}.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #c3c4c7}.wp-filter .search-form input[type=search]{width:100%}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}} \ No newline at end of file + */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.accordion-section{border-bottom:1px solid #ddd;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#ddd}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-left:1px solid #ddd;border-right:1px solid #ddd;-webkit-user-select:none;-moz-user-select:none;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;right:10px;z-index:1}.accordion-section-title:focus{outline:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title,.customize-pane-child .accordion-section-title{border-left:none;border-right:none;padding:10px 10px 11px 14px;line-height:21px;background:#fff}.control-section .accordion-section-title:after,.customize-pane-child .accordion-section-title:after{top:calc(50% - 10px)}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#23282d;background:#f5f5f5}.control-section.open .accordion-section-title{border-bottom:1px solid #ddd}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:left;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:left}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:left;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:left;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:left}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:left;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:left}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:left;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:left}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}.my-sites li a{text-decoration:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) repeat-x bottom left;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}#bulk-titles div a,#bulk-titles div a:hover,#screen-meta-links a.show-settings,.curtime #timestamp,.meta-box-sortables .postbox:hover .handlediv,.sidebar-name .toggle-indicator,.sidebar-name:hover .toggle-indicator,.widget-top .widget-action,.widget-top .widget-action:hover{background:0 0!important}}@media screen and (max-width:782px){html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-right:12px;margin-left:0}#col-left,#col-right{float:none;width:auto}#col-left .col-wrap,#col-right .col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap h1.wp-heading-inline{margin-bottom:.5em}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px 0;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-right:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{right:-16em}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#template .CodeMirror,#template textarea{box-sizing:border-box}#templateside{float:none;width:auto}#templateside>ul{border-left:1px solid #ddd}#templateside li{margin:0}#templateside li:not(.howto) a{display:block;padding:5px}#templateside li.howto{padding:12px}#templateside .highlight{padding:5px;margin-left:-5px;margin-top:-5px}#template .notice,#template>div{float:none;margin:1em 0;width:auto}#template .CodeMirror,#template textarea{width:100%}#templateside ul ul{padding-left:1.5em}[role=treeitem] .folder-label{display:block;padding:5px}.tree-folder .tree-folder::after,.tree-folder>li::after,.tree-folder>li::before{left:-8px}.tree-folder>li::before{top:0;height:13px}.tree-folder>.current-file::before{left:-5px;top:7px;width:4px}.tree-folder>.current-file::after{height:9px;left:-8px}.wrap #templateside span.notice{margin-left:-5px;width:100%}.fileedit-sub .alignright{float:left;margin-top:15px;width:100%;text-align:left}.fileedit-sub .alignright label{display:block}.fileedit-sub #plugin,.fileedit-sub #theme{margin-left:0;max-width:70%}.fileedit-sub input[type=submit]{margin-bottom:0;padding:8px 18px}#documentation label[for=docs-list]{display:block}#documentation select[name=docs-list]{margin-left:0;max-width:60%}#documentation input[type=button]{margin-bottom:0;padding:8px 18px}#wpfooter{display:none}#comments-form .checkforspam{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}.filter-drawer .filter-group-feature label{margin-left:32px}.wp-filter .button.drawer-toggle{font-size:13px;line-height:26px;height:28px}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}div#post-body.metabox-holder.columns-1{overflow-x:hidden}.nav-tab-wrapper,.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper{border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin:10px 10px 0 0;border-bottom:1px solid #ccc}}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}} \ No newline at end of file diff --git a/wp-admin/css/customize-controls-rtl.css b/wp-admin/css/customize-controls-rtl.css index d7e23b9..3dfe07d 100644 --- a/wp-admin/css/customize-controls-rtl.css +++ b/wp-admin/css/customize-controls-rtl.css @@ -21,7 +21,7 @@ body { } #customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked { - background-color: rgba(0, 0, 0, 0.7); + background-color: rgba( 0, 0, 0, 0.7 ); padding: 25px; } @@ -34,7 +34,7 @@ body { padding: 25px 109px 25px 25px; position: relative; background: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); line-height: 1.5; overflow-y: auto; text-align: right; @@ -61,7 +61,7 @@ body { } #customize-controls .description { - color: #50575e; + color: #555d66; } #customize-save-button-wrapper { @@ -80,7 +80,7 @@ body:not(.ready) #customize-save-button-wrapper .save { } #customize-save-button-wrapper .save:focus, #publish-settings:focus { - box-shadow: 0 1px 0 #2271b1, 0 0 2px 1px #72aee6; /* This is default box shadow for focus */ + box-shadow: 0 1px 0 #0073aa, 0 0 2px 1px #33b3db; /* This is default box shadow for focus */ } #customize-save-button-wrapper .save.has-next-sibling { @@ -98,19 +98,13 @@ body:not(.ready) #customize-save-button-wrapper .save { width: 100%; margin: 0; z-index: -1; - background: #f0f0f1; + background: #eee; transition: right .18s; - border-left: 1px solid #dcdcde; - border-right: 1px solid #dcdcde; + border-left: 1px solid #ddd; + border-right: 1px solid #ddd; height: 100%; } -@media (prefers-reduced-motion: reduce) { - #customize-sidebar-outer-content { - transition: none; - } -} - #customize-theme-controls .control-section-outer { display: none !important; } @@ -129,12 +123,6 @@ body:not(.ready) #customize-save-button-wrapper .save { transition: right .18s; } -@media (prefers-reduced-motion: reduce) { - .outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { - transition: none; - } -} - .customize-outer-pane-parent { margin: 0; } @@ -171,7 +159,6 @@ body:not(.ready) #customize-save-button-wrapper .save { float: right; transform: none; margin-top: 0; - line-height: 2; } body:not(.ready) #publish-settings, @@ -191,7 +178,7 @@ body.trashing #publish-settings { } #customize-header-actions { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } #customize-controls .wp-full-overlay-sidebar-content { @@ -200,19 +187,19 @@ body.trashing #publish-settings { } .outer-section-open #customize-controls .wp-full-overlay-sidebar-content { - background: #f0f0f1; + background: #eee; } #customize-controls .customize-info { border: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; margin-bottom: 15px; } #customize-control-changeset_status .customize-inside-control-row, #customize-control-changeset_preview_link input { - background-color: #fff; - border-bottom: 1px solid #dcdcde; + background-color: #ffffff; + border-bottom: 1px solid #ddd; box-sizing: content-box; width: 100%; margin-right: -12px; @@ -238,7 +225,7 @@ body.trashing #publish-settings { } #customize-controls .date-input:invalid { - border-color: #d63638; + border-color: #dc3232; } #customize-control-changeset_status .customize-inside-control-row { @@ -248,7 +235,7 @@ body.trashing #publish-settings { } #customize-control-changeset_status .customize-inside-control-row:first-of-type { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-control-changeset_status .customize-control-title { @@ -280,7 +267,7 @@ body.trashing #publish-settings { content: ""; height: 28px; position: absolute; - background: #fff; + background: #ffffff; top: -1px; } @@ -297,14 +284,12 @@ body.trashing #publish-settings { } #customize-control-changeset_preview_link input { - line-height: 2.85714286; /* 40px */ - border-top: 1px solid #dcdcde; + line-height: 2.5; + border-top: 1px solid #ddd; border-right: none; border-left: none; text-indent: -999px; color: #fff; - /* Only necessary for IE11 */ - min-height: 40px; } #customize-control-changeset_preview_link label { @@ -327,7 +312,7 @@ body.trashing #publish-settings { #customize-control-changeset_preview_link a.disabled:active, #customize-control-changeset_preview_link a.disabled:focus, #customize-control-changeset_preview_link a.disabled:visited { - color: #000; + color: black; opacity: 0.4; cursor: default; outline: none; @@ -362,7 +347,7 @@ body.trashing #publish-settings { } .date-time-fields .date-input.year { - width: 65px; + width: 60px; } .date-time-fields .date-input.meridian { @@ -374,6 +359,11 @@ body.trashing #publish-settings { margin-top: 12px; } +.date-time-fields .date-timezone { + line-height: 2.2; + text-decoration: none; +} + #customize-control-changeset_preview_link { margin-top: 6px; } @@ -388,8 +378,8 @@ body.trashing #publish-settings { width: 100%; margin-right: -12px; padding: 12px; - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #ffffff; + border-bottom: 1px solid #ddd; margin-bottom: 0; } @@ -402,7 +392,7 @@ body.trashing #publish-settings { position: absolute; z-index: 9; width: 100%; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 0 rgba(0, 0, 0, .1); } #customize-controls .customize-section-title.is-in-view { @@ -421,7 +411,7 @@ body.trashing #publish-settings { #customize-controls .customize-info .accordion-section-title { background: #fff; - color: #50575e; + color: #555d66; border-right: none; border-left: none; border-bottom: none; @@ -431,7 +421,7 @@ body.trashing #publish-settings { #customize-controls .customize-info.open .accordion-section-title:after, #customize-controls .customize-info .accordion-section-title:hover:after, #customize-controls .customize-info .accordion-section-title:focus:after { - color: #2c3338; + color: #32373c; } #customize-controls .customize-info .accordion-section-title:after { @@ -440,7 +430,7 @@ body.trashing #publish-settings { #customize-controls .customize-info .preview-notice { font-size: 13px; - line-height: 1.9; + line-height: 24px; } #customize-controls .customize-pane-child .customize-section-title h3, @@ -472,8 +462,9 @@ body.trashing #publish-settings { height: 20px; cursor: pointer; box-shadow: none; + -webkit-appearance: none; background: transparent; - color: #50575e; + color: #555d66; border: none; } @@ -486,18 +477,18 @@ body.trashing #publish-settings { #customize-controls .customize-info.open .customize-help-toggle, #customize-controls .customize-info .customize-help-toggle:focus, #customize-controls .customize-info .customize-help-toggle:hover { - color: #2271b1; + color: #0073aa; } #customize-controls .customize-info .customize-panel-description, #customize-controls .customize-info .customize-section-description, #customize-outer-theme-controls .customize-info .customize-section-description, #customize-controls .no-widget-areas-rendered-notice { - color: #50575e; + color: #555d66; display: none; background: #fff; padding: 12px 15px; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice { @@ -538,25 +529,17 @@ body.trashing #publish-settings { #customize-theme-controls .accordion-section-title, #customize-outer-theme-controls .accordion-section-title { - color: #50575e; + color: #555d66; background-color: #fff; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-right: 4px solid #fff; - transition: - .15s color ease-in-out, - .15s background-color ease-in-out, - .15s border-color ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - #customize-theme-controls .accordion-section-title, - #customize-outer-theme-controls .accordion-section-title { - transition: none; - } + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; } #customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title { - color: #50575e; + color: #555; background-color: #fff; border-right: 4px solid #fff; } @@ -564,13 +547,12 @@ body.trashing #publish-settings { #customize-theme-controls .accordion-section-title:after, #customize-outer-theme-controls .accordion-section-title:after { content: "\f341"; - font: normal 20px/1 dashicons; - color: #a7aaad; + color: #a0a5aa; } #customize-theme-controls .accordion-section-content, #customize-outer-theme-controls .accordion-section-content { - color: #50575e; + color: #555d66; background: transparent; } @@ -578,20 +560,20 @@ body.trashing #publish-settings { #customize-controls .control-section .accordion-section-title:hover, #customize-controls .control-section.open .accordion-section-title, #customize-controls .control-section .accordion-section-title:focus { - color: #2271b1; - background: #f6f7f7; - border-right-color: #2271b1; + color: #0073aa; + background: #f3f3f5; + border-right-color: #0073aa; } #accordion-section-themes + .control-section { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .js .control-section:hover .accordion-section-title, .js .control-section .accordion-section-title:hover, .js .control-section.open .accordion-section-title, .js .control-section .accordion-section-title:focus { - background: #f6f7f7; + background: #f3f3f5; } #customize-theme-controls .control-section:hover > .accordion-section-title:after, @@ -602,27 +584,27 @@ body.trashing #publish-settings { #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, #customize-outer-theme-controls .control-section.open .accordion-section-title:after, #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #2271b1; + color: #0073aa; } #customize-theme-controls .control-section.open { - border-bottom: 1px solid #f0f0f1; + border-bottom: 1px solid #eee; } #customize-theme-controls .control-section.open .accordion-section-title, #customize-outer-theme-controls .control-section.open .accordion-section-title { - border-bottom-color: #f0f0f1 !important; + border-bottom-color: #eee !important; } #customize-theme-controls .control-section:last-of-type.open, #customize-theme-controls .control-section:last-of-type > .accordion-section-title { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; } #customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2), #customize-theme-controls .control-panel-nav_menus .control-section-nav_menu, #customize-theme-controls .control-section-nav_menu_locations .accordion-section-title { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-theme-controls .control-panel-nav_menus .control-section-nav_menu + .control-section-nav_menu { @@ -654,14 +636,6 @@ body.trashing #publish-settings { transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); /* easeInOutCubic */ } -@media (prefers-reduced-motion: reduce) { - #customize-info, - #customize-theme-controls .customize-pane-parent, - #customize-theme-controls .customize-pane-child { - transition: none; - } -} - #customize-theme-controls .customize-pane-child.skip-transition { transition: none; } @@ -743,8 +717,8 @@ body.trashing #publish-settings { } .customize-section-title { - margin: -12px -12px 0; - border-bottom: 1px solid #dcdcde; + margin: -12px -12px 0 -12px; + border-bottom: 1px solid #ddd; background: #fff; } @@ -765,12 +739,12 @@ div.customize-section-description p:last-child { } #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { - border-bottom: 1px solid #dcdcde; - padding: 12px; + border-bottom: 1px solid #ddd; + padding: 12px 12px 12px 12px; } .ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { - padding: 12px 12px 13px; + padding: 12px 12px 13px 12px; } .customize-section-title h3, @@ -778,7 +752,7 @@ h3.customize-section-title { padding: 10px 14px 12px 10px; margin: 0; line-height: 21px; - color: #50575e; + color: #555d66; } .accordion-sub-container.control-panel-content { @@ -804,17 +778,16 @@ h3.customize-section-title { width: 45px; height: 41px; padding: 0 0 0 2px; - background: #f0f0f1; + background: #eee; border: none; - border-top: 4px solid #f0f0f1; - border-left: 1px solid #dcdcde; - color: #3c434a; + border-top: 4px solid #eee; + border-left: 1px solid #ddd; + color: #444; text-align: right; cursor: pointer; - transition: - color .15s ease-in-out, - border-color .15s ease-in-out, - background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; box-sizing: content-box; } @@ -828,14 +801,13 @@ h3.customize-section-title { margin: 0; background: #fff; border: none; - border-left: 1px solid #dcdcde; + border-left: 1px solid #ddd; border-right: 4px solid #fff; box-shadow: none; cursor: pointer; - transition: - color .15s ease-in-out, - border-color .15s ease-in-out, - background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; } .customize-section-back { @@ -858,7 +830,7 @@ h3.customize-section-title { #customize-controls .panel-meta.customize-info .accordion-section-title:hover, #customize-controls .cannot-expand:hover .accordion-section-title { background: #fff; - color: #50575e; + color: #555d66; border-right-color: #fff; } @@ -867,30 +839,22 @@ h3.customize-section-title { .customize-controls-preview-toggle:focus, .customize-controls-preview-toggle:hover { background: #fff; - color: #2271b1; - border-top-color: #2271b1; + color: #0073aa; + border-top-color: #0073aa; + outline: none; box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; } -#customize-theme-controls .accordion-section-title:focus .customize-action { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; - outline-offset: 1px; -} .customize-panel-back:hover, .customize-panel-back:focus, .customize-section-back:hover, .customize-section-back:focus { - color: #2271b1; - background: #f6f7f7; - border-right-color: #2271b1; + color: #0073aa; + background: #f3f3f5; + border-right-color: #0073aa; + outline: none; box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; } .customize-controls-close:before { @@ -910,7 +874,7 @@ h3.customize-section-title { } .wp-full-overlay-sidebar .wp-full-overlay-header { - background-color: #f0f0f1; + background-color: #eee; transition: padding ease-in-out .18s; } @@ -936,6 +900,11 @@ p.customize-section-description { text-align: left; } +.section-description-buttons button.button-link { + color: #0073aa; + text-decoration: underline; +} + .customize-control { width: 100%; float: right; @@ -943,15 +912,21 @@ p.customize-section-description { margin-bottom: 12px; } +.customize-control select, +.customize-control input[type="radio"], +.customize-control input[type="checkbox"] { + line-height: 28px; +} + .customize-control input[type="text"], .customize-control input[type="password"], .customize-control input[type="email"], .customize-control input[type="number"], .customize-control input[type="search"], .customize-control input[type="tel"], -.customize-control input[type="url"], -.customize-control input[type="range"] { +.customize-control input[type="url"] { width: 100%; + line-height: 18px; margin: 0; } @@ -966,6 +941,8 @@ p.customize-section-description { .customize-control select { width: 100%; + height: 28px; + line-height: 28px; } .customize-control select[multiple] { @@ -975,7 +952,7 @@ p.customize-section-description { .customize-control-title { display: block; font-size: 14px; - line-height: 1.75; + line-height: 24px; font-weight: 600; margin-bottom: 4px; } @@ -983,14 +960,14 @@ p.customize-section-description { .customize-control-description { display: block; font-style: italic; - line-height: 1.4; + line-height: 18px; margin-top: 0; margin-bottom: 5px; } .customize-section-description a.external-link:after { font: 16px/11px dashicons; - content: "\f504"; + content: "\f310"; top: 3px; position: relative; padding-right: 3px; @@ -1004,7 +981,7 @@ p.customize-section-description { } .customize-control .customize-inside-control-row { - line-height: 1.6; + line-height: 20px; display: block; margin-right: 24px; padding-top: 6px; @@ -1024,7 +1001,7 @@ p.customize-section-description { .customize-control-radio .customize-control-title { margin-bottom: 0; - line-height: 1.6; + line-height: 22px; } .customize-control-radio .customize-control-title + .customize-control-description { @@ -1090,7 +1067,7 @@ p.customize-section-description { position: absolute; bottom: 0; z-index: 10; - background: #f0f0f1; + background: #eee; display: flex; } @@ -1112,13 +1089,13 @@ p.customize-section-description { } .customize-control-dropdown-pages .new-content-item .create-item-input.invalid { - border: 1px solid #d63638; + border: 1px solid #dc3232; } .customize-control-dropdown-pages .add-new-toggle { margin-right: 1px; font-weight: 600; - line-height: 2.2; + line-height: 28px; } #customize-preview iframe { @@ -1131,8 +1108,8 @@ p.customize-section-description { } .wp-full-overlay-sidebar { - background: #f0f0f1; - border-left: 1px solid #dcdcde; + background: #eee; + border-left: 1px solid #ddd; } @@ -1141,20 +1118,20 @@ p.customize-section-description { */ #customize-controls .customize-control-notifications-container { /* Scoped to #customize-controls for specificity over notification styles in common.css. */ - margin: 4px 0 8px; + margin: 4px 0 8px 0; padding: 0; cursor: default; } #customize-controls .customize-control-widget_form.has-error .widget .widget-top, .customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle { - box-shadow: inset 0 0 0 2px #d63638; + box-shadow: inset 0 0 0 2px #dc3232; transition: .15s box-shadow linear; } #customize-controls .customize-control-notifications-container li.notice { list-style: none; - margin: 0 0 6px; + margin: 0 0 6px 0; padding: 9px 14px; overflow: hidden; } @@ -1175,14 +1152,14 @@ p.customize-section-description { } .customize-control-text.has-error input { - outline: 2px solid #d63638; + outline: 2px solid #dc3232; } #customize-controls #customize-notifications-area { position: absolute; top: 46px; width: 100%; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; display: block; padding: 0; margin: 0; @@ -1210,7 +1187,7 @@ p.customize-section-description { } #customize-controls .panel-meta > .customize-control-notifications-container, #customize-controls .customize-section-title > .customize-control-notifications-container { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-controls #customize-notifications-area .notice, #customize-controls .panel-meta > .customize-control-notifications-container .notice, @@ -1247,7 +1224,7 @@ p.customize-section-description { /* Note: Styles for this are also defined in themes.css */ #customize-controls #customize-notifications-area .notice.notification-overlay .notification-message { clear: both; - color: #1d2327; + color: #191e23; font-size: 18px; font-style: normal; margin: 0; @@ -1291,7 +1268,7 @@ p.customize-section-description { line-height: 16px; margin-left: 16px; padding: 4px 5px; - border: 2px solid #f0f0f1; + border: 2px solid #eee; -webkit-user-select: none; -moz-user-select: none; user-select: none; @@ -1304,13 +1281,13 @@ p.customize-section-description { bottom: 0; left: 0; width: 20px; - background: #f0f0f1; + background: #eee; } .customize-control .dropdown-arrow:after { content: "\f140"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: block; padding: 0; text-indent: 0; @@ -1319,12 +1296,12 @@ p.customize-section-description { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #2c3338; + color: #32373c; } .customize-control .dropdown-status { - color: #2c3338; - background: #f0f0f1; + color: #32373c; + background: #eee; display: none; max-width: 112px; } @@ -1335,7 +1312,7 @@ p.customize-section-description { } .customize-control-color .dropdown .dropdown-content { - background-color: #50575e; + background-color: #555d66; border: 1px solid rgba(0, 0, 0, 0.15); } @@ -1398,42 +1375,22 @@ p.customize-section-description { } .customize-control .attachment-media-view .placeholder, -.customize-control .attachment-media-view .button-add-media, .customize-control-header .placeholder { width: 100%; position: relative; text-align: center; cursor: default; - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; box-sizing: border-box; padding: 9px 0; - line-height: 1.6; -} - -.customize-control .attachment-media-view .button-add-media { - cursor: pointer; - background-color: #f0f0f1; - color: #2c3338; -} - -.customize-control .attachment-media-view .button-add-media:hover { - background-color: #fff; -} - -.customize-control .attachment-media-view .button-add-media:focus { - background-color: #fff; - border-color: #3582c4; - border-style: solid; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + line-height: 20px; } .customize-control-header .inner { display: none; position: absolute; width: 100%; - color: #50575e; + color: #555d66; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; @@ -1457,7 +1414,7 @@ p.customize-section-description { } .customize-control-header .header-view:last-child { - margin-bottom: 0; + margin-bottom: 0px; } /* Convoluted, but 'outline' support isn't good enough yet */ @@ -1470,14 +1427,14 @@ p.customize-section-description { } .customize-control-header .header-view.selected:after { - content: ""; + content: ''; position: absolute; height: auto; top: 0; right: 0; bottom: 0; left: 0; - border: 4px solid #72aee6; + border: 4px solid #00a0d2; border-radius: 2px; } @@ -1490,7 +1447,7 @@ p.customize-section-description { .customize-control-header .uploaded .header-view .close { font-size: 20px; color: #fff; - background: #50575e; + background: #555d66; background: rgba(0, 0, 0, 0.5); position: absolute; top: 10px; @@ -1508,7 +1465,7 @@ p.customize-section-description { } .customize-control-header .header-view .close:focus { - outline: 1px solid #4f94d4; + outline: 1px solid #5b9dd9; } /* Header control: randomiz(s)er */ @@ -1570,8 +1527,8 @@ p.customize-section-description { .customize-control-header .choice:focus { outline: none; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 3px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 3px 1px rgba(30, 140, 190, .8); } .customize-control-header .uploaded div:last-child > .choice { @@ -1662,11 +1619,11 @@ p.customize-section-description { .theme-browser .theme.active .theme-actions, .wp-customizer .theme-browser .theme .theme-actions { - padding: 9px 15px; - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); } -@media screen and (max-width: 640px) { +@media screen and ( max-width: 640px ) { .customize-section-description-container + #customize-control-custom_css:last-child { margin-left: 0; } @@ -1688,12 +1645,12 @@ p.customize-section-description { #customize-theme-controls .control-panel-themes > .accordion-section-title { cursor: default; background: #fff; - color: #50575e; - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #dcdcde; + color: #555d66; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; border-right: none; border-left: none; - margin: 0 0 15px; + margin: 0 0 15px 0; padding-left: 100px; /* Space for the button */ } @@ -1734,12 +1691,6 @@ p.customize-section-description { font-weight: 400; } -#customize-notifications-area .notification-message button.switch-to-editor { - display: block; - margin-top: 6px; - font-weight: 400; -} - #customize-theme-controls .control-panel-themes > .accordion-section-title:after { display: none; } @@ -1754,16 +1705,10 @@ p.customize-section-description { overflow-y: scroll; width: calc(100% - 300px); height: calc(100% - 96px); - background: #f0f0f1; + background: #eee; z-index: 20; } -@media (prefers-reduced-motion: reduce) { - .control-panel-themes .customize-themes-full-container { - transition: none; - } -} - @media screen and (min-width: 1670px) { .control-panel-themes .customize-themes-full-container { width: 82%; @@ -1797,7 +1742,7 @@ p.customize-section-description { } .wp-full-overlay.in-themes-panel { - background: #f0f0f1; /* Prevents a black flash when fading in the panel */ + background: #eee; /* Prevents a black flash when fading in the panel */ } .in-themes-panel #customize-save-button-wrapper, @@ -1826,18 +1771,19 @@ p.customize-section-description { } .themes-filter-bar .feature-filter-toggle:before { - content: "\f111"; - margin: 0 0 0 5px; - font: normal 16px/1 dashicons; - vertical-align: text-bottom; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + content: "\f111"; + margin: 0 0 0 5px; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } .themes-filter-bar .feature-filter-toggle.open { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } .themes-filter-bar .feature-filter-toggle .filter-count-filters { @@ -1853,8 +1799,8 @@ p.customize-section-description { padding: 25px 25px 25px 0; border-top: 0; margin: 0; - background: #f0f0f1; - border-bottom: 1px solid #dcdcde; + background: #eee; + border-bottom: 1px solid #ddd; } .filter-drawer .filter-group { @@ -1888,12 +1834,12 @@ p.customize-section-description { .control-panel-themes .filter-themes-count { position: relative; float: left; - line-height: 2.6; + line-height: 34px; } .control-panel-themes .filter-themes-count .themes-displayed { font-weight: 600; - color: #50575e; + color: #555d66; } .customize-themes-notifications { @@ -1901,7 +1847,7 @@ p.customize-section-description { } .control-panel-themes .customize-themes-notifications .notice { - margin: 0 0 25px; + margin: 0 0 25px 0; } .customize-themes-full-container .customize-themes-section { @@ -1915,10 +1861,10 @@ p.customize-section-description { .control-section .customize-section-text-before { padding: 0 15px 8px 0; - margin: 15px 0 0; + margin: 15px 0 0 0; line-height: 16px; - border-bottom: 1px solid #dcdcde; - color: #50575e; + border-bottom: 1px solid #ddd; + color: #555d66; } .control-panel-themes .customize-themes-section-title { @@ -1927,7 +1873,7 @@ p.customize-section-description { box-shadow: none; outline: none; border-top: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-right: 4px solid #fff; border-left: none; cursor: pointer; @@ -1936,12 +1882,12 @@ p.customize-section-description { text-align: right; font-size: 14px; font-weight: 600; - color: #50575e; + color: #555d66; text-shadow: none; } .control-panel-themes #accordion-section-installed_themes { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .control-panel-themes .theme-section { @@ -1951,9 +1897,9 @@ p.customize-section-description { .control-panel-themes .customize-themes-section-title:focus, .control-panel-themes .customize-themes-section-title:hover { - border-right-color: #2271b1; - color: #2271b1; - background: #f6f7f7; + border-right-color: #0073aa; + color: #0073aa; + background: #f5f5f5; } .customize-themes-section-title:not(.selected):after { @@ -1965,7 +1911,7 @@ p.customize-section-description { width: 18px; height: 18px; border-radius: 100%; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; background: #fff; } @@ -1980,12 +1926,12 @@ p.customize-section-description { position: absolute; top: 9px; left: 15px; - background: #2271b1; + background: #0073aa; color: #fff; } .control-panel-themes .customize-themes-section-title.selected { - color: #2271b1; + color: #0073aa; } #customize-theme-controls .themes.accordion-section-content { @@ -2019,7 +1965,7 @@ p.customize-section-description { .customize-control-theme .theme { width: 100%; margin: 0; - border: 1px solid #dcdcde; + border: 1px solid #ddd; background: #fff; } @@ -2096,11 +2042,11 @@ p.customize-section-description { right: 300px; width: calc(100% - 300px); height: 46px; - background: #f0f0f1; + background: #eee; z-index: 10; padding: 6px 25px; box-sizing: border-box; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } @media screen and (min-width: 1670px) { @@ -2117,7 +2063,7 @@ p.customize-section-description { } .themes-filter-bar .wp-filter-search { - line-height: 1.8; + line-height: 25px; padding: 6px 30px 6px 10px; max-width: 100%; width: 40%; @@ -2131,12 +2077,12 @@ p.customize-section-description { /* Unstick the filter bar on short windows/screens. This breakpoint is based on the current length of .org feature filters assuming translations do not wrap lines. */ -@media screen and (max-height: 540px), screen and (max-width: 1018px) { +@media screen and (max-height:540px), screen and (max-width:1018px) { .customize-preview-header.themes-filter-bar { position: relative; right: 0; width: 100%; - margin: 0 0 25px; + margin: 0 0 25px 0; } .filter-drawer { top: 46px; @@ -2154,13 +2100,13 @@ p.customize-section-description { } } -@media screen and (max-width: 1018px) { +@media screen and (max-width:1018px) { .filter-drawer .filter-group { width: calc( (100% - 50px) / 2); } } -@media screen and (max-width: 900px) { +@media screen and (max-width:900px) { .customize-preview-header.themes-filter-bar { height: 86px; padding-top: 46px; @@ -2181,7 +2127,7 @@ p.customize-section-description { } } -@media screen and (max-width: 792px) { +@media screen and (max-width:792px) { .filter-drawer .filter-group { width: calc( 100% - 25px); } @@ -2192,7 +2138,7 @@ p.customize-section-description { } /* Mobile - toggle between themes and filters */ -@media screen and (max-width: 600px) { +@media screen and (max-width:600px) { .filter-drawer { top: 132px; @@ -2221,8 +2167,8 @@ p.customize-section-description { position: fixed; top: 0; right: 0; - background: #f0f0f1; - color: #3c434a; + background: #eee; + color: #444; border-radius: 0; box-shadow: none; border: none; @@ -2231,7 +2177,7 @@ p.customize-section-description { z-index: 10; text-align: right; text-shadow: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-right: 4px solid transparent; margin: 0; padding: 0; @@ -2245,20 +2191,18 @@ p.customize-section-description { height: 46px; width: 26px; display: block; - line-height: 2.3; - padding: 0 8px; - border-left: 1px solid #dcdcde; + line-height: 46px; + padding: 0 8px 0 8px; + border-left: 1px solid #ddd; } .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover, .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus { - color: #2271b1; - background: #f6f7f7; - border-right-color: #2271b1; + color: #0073aa; + background: #f3f3f5; + border-right-color: #0073aa; + outline: none; box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; } .showing-themes #customize-header-actions { @@ -2297,7 +2241,7 @@ p.customize-section-description { } .wp-customizer .theme-overlay .theme-backdrop { - background: rgba(240, 240, 241, 0.75); + background: rgba( 238, 238, 238, 0.75 ); position: fixed; z-index: 110; } @@ -2322,8 +2266,8 @@ p.customize-section-description { .wp-customizer .theme-overlay .theme-actions { text-align: left; /* Because there're only one or two actions, match the UI pattern of media modals and right-align the action. */ padding: 10px 25px; - background: #f0f0f1; - border-top: 1px solid #dcdcde; + background: #eee; + border-top: 1px solid #ddd; } .wp-customizer .theme-overlay .theme-actions .theme-install.preview { @@ -2342,12 +2286,12 @@ p.customize-section-description { } .wp-customizer .theme-header { - background: #f0f0f1; + background: #eee; } .wp-customizer .theme-overlay .theme-header button, .wp-customizer .theme-overlay .theme-header .close:before { - color: #3c434a; + color: #444; } .wp-customizer .theme-overlay .theme-header .close:focus, @@ -2357,13 +2301,13 @@ p.customize-section-description { .wp-customizer .theme-overlay .theme-header .left:focus, .wp-customizer .theme-overlay .theme-header .left:hover { background: #fff; - border-bottom: 4px solid #2271b1; - color: #2271b1; + border-bottom: 4px solid #0073aa; + color: #0073aa; } .wp-customizer .theme-overlay .theme-header .close:focus:before, .wp-customizer .theme-overlay .theme-header .close:hover:before { - color: #2271b1; + color: #0073aa; } .wp-customizer .theme-overlay .theme-header button.disabled, @@ -2371,11 +2315,11 @@ p.customize-section-description { .wp-customizer .theme-overlay .theme-header button.disabled:focus { border-bottom: none; background: transparent; - color: #c3c4c7; + color: #ccc; } /* Small Screens */ -@media (max-width: 850px), (max-height: 472px) { +@media (max-width:850px), (max-height:472px) { .wp-customizer .theme-overlay .theme-wrap { right: 0; left: 0; @@ -2393,22 +2337,22 @@ body.cheatin { font-size: medium; height: auto; background: #fff; - border: 1px solid #c3c4c7; margin: 50px auto 2em; padding: 1em 2em; max-width: 700px; min-width: 0; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); } body.cheatin h1 { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; clear: both; - color: #50575e; + color: #555d66; font-size: 24px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - margin: 30px 0 0; - padding: 0 0 7px; + margin: 30px 0 0 0; + padding: 0; + padding-bottom: 7px; } body.cheatin p { @@ -2426,7 +2370,8 @@ body.cheatin p { #customize-theme-controls .add-new-menu-item { cursor: pointer; float: left; - margin: 0 10px 0 0; + margin: 0; + margin-right: 10px; transition: all 0.2s; -webkit-user-select: none; -moz-user-select: none; @@ -2484,7 +2429,7 @@ body.cheatin p { display: block; width: 33px; /* was 42px for mobile */ height: 43px; - color: #8c8f94; + color: #82878c; text-indent: -9999px; cursor: pointer; outline: none; @@ -2517,8 +2462,8 @@ body.cheatin p { .widget-reorder-nav span:focus, .menu-item-reorder-nav button:hover, .menu-item-reorder-nav button:focus { - color: #1d2327; - background: #f0f0f1; + color: #191e23; + background: #eee; } .move-widget-down:before, @@ -2537,7 +2482,7 @@ body.cheatin p { .move-down-disabled .menus-move-down, .move-right-disabled .menus-move-right, .move-left-disabled .menus-move-left { - color: #dcdcde; + color: #d5d5d5; background-color: #fff; cursor: default; pointer-events: none; @@ -2558,9 +2503,9 @@ body.adding-widget .add-new-widget:hover, .adding-menu-items .add-new-menu-item:hover, .add-menu-toggle.open, .add-menu-toggle.open:hover { - background: #f0f0f1; - border-color: #8c8f94; - color: #2c3338; + background: #eee; + border-color: #929793; + color: #32373c; box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); } @@ -2582,9 +2527,9 @@ body.adding-widget .add-new-widget:before, width: 300px; margin: 0; z-index: 4; - background: #f0f0f1; + background: #eee; transition: right .18s; - border-left: 1px solid #dcdcde; + border-left: 1px solid #ddd; } #available-widgets .customize-section-title, @@ -2598,7 +2543,7 @@ body.adding-widget .add-new-widget:before, overflow: auto; bottom: 0; width: 100%; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .no-widgets-found #available-widgets-list { @@ -2610,7 +2555,7 @@ body.adding-widget .add-new-widget:before, top: 0; z-index: 1; width: 300px; - background: #f0f0f1; + background: #eee; } /* search field container */ @@ -2623,9 +2568,9 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter input, #available-menu-items-search input { width: 100%; - min-height: 32px; + height: 32px; margin: 1px 0; - padding: 0 30px; + padding: 6px 30px; } #available-widgets-filter input::-ms-clear, @@ -2641,9 +2586,9 @@ body.adding-widget .add-new-widget:before, right: 16px; width: 30px; height: 30px; - line-height: 2.1; + line-height: 28px; text-align: center; - color: #646970; + color: #72777c; } #available-widgets-filter .clear-results, @@ -2657,7 +2602,7 @@ body.adding-widget .add-new-widget:before, border: 0; cursor: pointer; background: none; - color: #d63638; + color: #a00; text-decoration: none; outline: 0; } @@ -2686,14 +2631,14 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter .clear-results:focus, #available-menu-items-search .clear-results:hover, #available-menu-items-search .clear-results:focus { - color: #d63638; + color: #dc3232; } #available-widgets-filter .clear-results:focus, #available-menu-items-search .clear-results:focus { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } #available-menu-items-search .search-icon:after, @@ -2711,7 +2656,7 @@ body.adding-widget .add-new-widget:before, top: 7px; right: 26px; z-index: 1; - color: #646970; + color: #72777c; height: 30px; width: 30px; line-height: 2; @@ -2741,14 +2686,13 @@ body.adding-widget .add-new-widget:before, #available-widgets .widget-tpl, #available-menu-items .item-tpl { position: relative; - padding: 15px; + padding: 15px 60px 15px 15px; background: #fff; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-right: 4px solid #fff; - transition: - .15s color ease-in-out, - .15s background-color ease-in-out, - .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; cursor: pointer; display: none; } @@ -2792,7 +2736,7 @@ body.adding-widget .add-new-widget:before, .customize-control input[type="radio"] + label + br, .customize-control input[type="checkbox"] + label + br { - line-height: 2.5; /* For widgets checkboxes */ + line-height: 32px; /* For widgets checkboxes */ } .customize-control .date-time-fields select { @@ -2813,6 +2757,10 @@ body.adding-widget .add-new-widget:before, width: 80px; } + .date-time-fields .date-timezone { + line-height: 3.2; + } + #customize-control-changeset_preview_link a { bottom: 16px; } @@ -2832,7 +2780,7 @@ body.adding-widget .add-new-widget:before, } } -@media screen and (max-width: 1200px) { +@media screen and ( max-width: 1200px ) { .outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, .adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, .adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main { @@ -2840,10 +2788,10 @@ body.adding-widget .add-new-widget:before, } } -@media screen and (max-width: 640px) { +@media screen and ( max-width: 640px ) { /* when the sidebar is collapsed and switching to responsive view, - bring it back see ticket #35220 */ + bring it back see https://core.trac.wordpress.org/ticket/35220 */ .wp-full-overlay.collapsed #customize-controls { margin-right: 0; } @@ -2857,16 +2805,15 @@ body.adding-widget .add-new-widget:before, position: absolute; top: 0; right: 48px; - line-height: 2.6; + line-height: 45px; font-size: 14px; - padding: 0 12px 4px; + padding: 0 12px; margin: 0; height: 45px; - background: #f0f0f1; + background: #eee; border: 0; - border-left: 1px solid #dcdcde; - border-top: 4px solid #f0f0f1; - color: #50575e; + border-left: 1px solid #ddd; + color: #555d66; cursor: pointer; transition: color .1s ease-in-out, background .1s ease-in-out; } @@ -2906,11 +2853,15 @@ body.adding-widget .add-new-widget:before, } .wp-core-ui.wp-customizer .button { - min-height: 30px; - padding: 0 14px; - line-height: 2; + padding: 6px 14px; + line-height: normal; font-size: 14px; vertical-align: middle; + height: auto; + } + + #publish-settings { + height: 31px; } #customize-control-changeset_status .customize-inside-control-row { @@ -2941,7 +2892,7 @@ body.adding-widget .add-new-widget:before, padding: 9px 14px 12px 10px; margin: 0; line-height: 24px; - color: #50575e; + color: #555d66; display: block; overflow: hidden; white-space: nowrap; @@ -2981,9 +2932,21 @@ body.adding-widget .add-new-widget:before, .wp-core-ui .themes-filter-bar .feature-filter-toggle { margin: 0; } + + .theme-browser .theme.active .theme-actions, + .wp-customizer .theme-browser .theme .theme-actions { + padding: 9px 15px; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); + } } -@media screen and (max-width: 600px) { +@media screen and ( max-width: 600px ) { + .theme-browser .theme.active .theme-actions, + .wp-customizer .theme-browser .theme .theme-actions { + padding: 8px 15px; + box-shadow: none; + } + .wp-full-overlay.expanded { margin-right: 0; } @@ -3003,3 +2966,19 @@ body.adding-widget .add-new-widget:before, right: 0; } } + +/* Fix theme notices in customizer (overrides wp-admin/css/theme.css) */ + +@media screen and ( min-width: 650px ) and ( max-width: 850px ) { + /* Themes are shown in 1 wide column, can show full notices */ + .customize-control-theme .theme .notice .cut { + display: inline; + } +} + +@media screen and ( min-width: 851px ) and ( max-width: 1018px ) { + /* Themes are shown in 2 narrow columns, cut the notices */ + .customize-control-theme .theme .notice .cut { + display: none; + } +} diff --git a/wp-admin/css/customize-controls-rtl.min.css b/wp-admin/css/customize-controls-rtl.min.css index 33f3ae1..ed62de7 100644 --- a/wp-admin/css/customize-controls-rtl.min.css +++ b/wp-admin/css/customize-controls-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked{background-color:rgba(0,0,0,.7);padding:25px}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message{margin-right:auto;margin-left:auto;max-width:366px;min-height:64px;width:auto;padding:25px 109px 25px 25px;position:relative;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;overflow-y:auto;text-align:right;top:calc(50% - 100px)}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing{margin-top:0}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons{margin-bottom:0}.customize-changeset-locked-avatar{width:64px;position:absolute;right:25px;top:25px}.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button{margin-left:10px;margin-top:0}#customize-controls .description{color:#50575e}#customize-save-button-wrapper{float:left;margin-top:9px}body:not(.ready) #customize-save-button-wrapper .save{visibility:hidden}#customize-save-button-wrapper .save{float:right;border-radius:3px;box-shadow:none;margin-top:0}#customize-save-button-wrapper .save:focus,#publish-settings:focus{box-shadow:0 1px 0 #2271b1,0 0 2px 1px #72aee6}#customize-save-button-wrapper .save.has-next-sibling{border-radius:0 3px 3px 0}#customize-sidebar-outer-content{position:absolute;top:0;bottom:0;right:0;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:100%;margin:0;z-index:-1;background:#f0f0f1;transition:right .18s;border-left:1px solid #dcdcde;border-right:1px solid #dcdcde;height:100%}@media (prefers-reduced-motion:reduce){#customize-sidebar-outer-content{transition:none}}#customize-theme-controls .control-section-outer{display:none!important}#customize-outer-theme-controls .accordion-section-content{padding:12px}#customize-outer-theme-controls .accordion-section-content.open{display:block}.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{visibility:visible;right:100%;transition:right .18s}@media (prefers-reduced-motion:reduce){.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{transition:none}}.customize-outer-pane-parent{margin:0}.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main{right:300px;opacity:.4}.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main{right:64%}#customize-outer-theme-controls li.notice{padding-top:8px;padding-bottom:8px;margin-right:0;margin-bottom:10px}#publish-settings{text-indent:0;border-radius:3px 0 0 3px;padding-right:0;padding-left:0;box-shadow:none;font-size:14px;width:30px;float:right;transform:none;margin-top:0;line-height:2}body.trashing #customize-save-button-wrapper .save,body.trashing #publish-settings,body:not(.ready) #publish-settings{display:none}#customize-header-actions .spinner{margin-top:13px;margin-left:4px}.saving #customize-header-actions .spinner,.trashing #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #dcdcde}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}.outer-section-open #customize-controls .wp-full-overlay-sidebar-content{background:#f0f0f1}#customize-controls .customize-info{border:none;border-bottom:1px solid #dcdcde;margin-bottom:15px}#customize-control-changeset_preview_link input,#customize-control-changeset_status .customize-inside-control-row{background-color:#fff;border-bottom:1px solid #dcdcde;box-sizing:content-box;width:100%;margin-right:-12px;padding-right:12px;padding-left:12px}#customize-control-trash_changeset{margin-top:20px}#customize-control-trash_changeset .button-link{position:relative;padding-right:24px;display:inline-block}#customize-control-trash_changeset .button-link:before{content:"\f182";font:normal 22px dashicons;text-decoration:none;position:absolute;right:0;top:-2px}#customize-controls .date-input:invalid{border-color:#d63638}#customize-control-changeset_status .customize-inside-control-row{padding-top:10px;padding-bottom:10px;font-weight:500}#customize-control-changeset_status .customize-inside-control-row:first-of-type{border-top:1px solid #dcdcde}#customize-control-changeset_status .customize-control-title{margin-bottom:6px}#customize-control-changeset_status input{margin-right:0}#customize-control-changeset_preview_link{position:relative;display:block}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{margin:0;position:absolute;bottom:9px;left:0}.preview-link-wrapper{position:relative}.customize-copy-preview-link:after,.customize-copy-preview-link:before{content:"";height:28px;position:absolute;background:#fff;top:-1px}.customize-copy-preview-link:before{right:-10px;width:9px;opacity:.75}.customize-copy-preview-link:after{right:-5px;width:4px;opacity:.8}#customize-control-changeset_preview_link input{line-height:2.85714286;border-top:1px solid #dcdcde;border-right:none;border-left:none;text-indent:-999px;color:#fff;min-height:40px}#customize-control-changeset_preview_link label{position:relative;display:block}#customize-control-changeset_preview_link a{display:inline-block;position:absolute;white-space:nowrap;overflow:hidden;width:90%;bottom:14px;font-size:14px;text-decoration:none}#customize-control-changeset_preview_link a.disabled,#customize-control-changeset_preview_link a.disabled:active,#customize-control-changeset_preview_link a.disabled:focus,#customize-control-changeset_preview_link a.disabled:visited{color:#000;opacity:.4;cursor:default;outline:0;box-shadow:none}#sub-accordion-section-publish_settings .customize-section-description-container{display:none}#customize-controls .customize-info.section-meta{margin-bottom:15px}.customize-control-date_time .customize-control-description+.date-time-fields.includes-time{margin-top:10px}.customize-control.customize-control-date_time .date-time-fields .date-input.day{margin-left:0}.date-time-fields .date-input.month{width:auto;margin:0}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:46px}.date-time-fields .date-input.year{width:65px}.date-time-fields .date-input.meridian{width:auto;margin:0}.date-time-fields .time-row{margin-top:12px}#customize-control-changeset_preview_link{margin-top:6px}#customize-control-changeset_status{margin-bottom:0;padding-bottom:0}#customize-control-changeset_scheduled_date{box-sizing:content-box;width:100%;margin-right:-12px;padding:12px;background:#fff;border-bottom:1px solid #dcdcde;margin-bottom:0}#customize-control-changeset_scheduled_date .customize-control-description{font-style:normal}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#50575e;border-right:none;border-left:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#2c3338}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:1.9}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title,#customize-outer-theme-controls .customize-pane-child .customize-section-title h3,#customize-outer-theme-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;left:1px;padding:20px 10px 10px 20px;width:20px;height:20px;cursor:pointer;box-shadow:none;background:0 0;color:#50575e;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;right:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#2271b1}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice,#customize-outer-theme-controls .customize-info .customize-section-description{color:#50575e;display:none;background:#fff;padding:12px 15px;border-top:1px solid #dcdcde}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}.no-widget-areas-rendered-notice{font-style:italic}.no-widget-areas-rendered-notice p:first-child{margin-top:0}.no-widget-areas-rendered-notice p:last-child{margin-bottom:0}#customize-controls .customize-info .customize-section-description{margin-bottom:15px}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-left:30px}#customize-outer-theme-controls .control-section,#customize-theme-controls .control-section{border:none}#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{color:#50575e;background-color:#fff;border-bottom:1px solid #dcdcde;border-right:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}@media (prefers-reduced-motion:reduce){#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{transition:none}}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#50575e;background-color:#fff;border-right:4px solid #fff}#customize-outer-theme-controls .accordion-section-title:after,#customize-theme-controls .accordion-section-title:after{content:"\f341";font:normal 20px/1 dashicons;color:#a7aaad}#customize-outer-theme-controls .accordion-section-content,#customize-theme-controls .accordion-section-content{color:#50575e;background:0 0}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#2271b1;background:#f6f7f7;border-right-color:#2271b1}#accordion-section-themes+.control-section{border-top:1px solid #dcdcde}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f6f7f7}#customize-outer-theme-controls .control-section .accordion-section-title:focus:after,#customize-outer-theme-controls .control-section .accordion-section-title:hover:after,#customize-outer-theme-controls .control-section.open .accordion-section-title:after,#customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#2271b1}#customize-theme-controls .control-section.open{border-bottom:1px solid #f0f0f1}#customize-outer-theme-controls .control-section.open .accordion-section-title,#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#f0f0f1!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#dcdcde}#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title{border-top:1px solid #dcdcde}#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu+.control-section-nav_menu{border-top:none}#customize-theme-controls>ul{margin:0}#customize-theme-controls .accordion-section-content{position:absolute;top:0;right:100%;width:100%;margin:0;padding:12px;box-sizing:border-box}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{overflow:visible;width:100%;margin:0;padding:0;box-sizing:border-box;transition:.18s transform cubic-bezier(.645, .045, .355, 1)}@media (prefers-reduced-motion:reduce){#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{transition:none}}#customize-theme-controls .customize-pane-child.skip-transition{transition:none}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;right:0;visibility:hidden;height:0;max-height:none;overflow:hidden;transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open{transform:none}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;transform:translateX(100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.control-section-nav_menu .customize-section-description-container,.control-section-new_menu .customize-section-description-container,.customize-section-description-container{margin-bottom:15px}.control-section-nav_menu .customize-control,.control-section-new_menu .customize-control{margin-bottom:0}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #dcdcde;background:#fff}div.customize-section-description{margin-top:22px}.customize-info div.customize-section-description{margin-top:0}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #dcdcde;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 14px 12px 10px;margin:0;line-height:21px;color:#50575e}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;right:0;width:45px;height:41px;padding:0 0 0 2px;background:#f0f0f1;border:none;border-top:4px solid #f0f0f1;border-left:1px solid #dcdcde;color:#3c434a;text-align:right;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:right;width:48px;height:71px;padding:0 0 0 24px;margin:0;background:#fff;border:none;border-left:1px solid #dcdcde;border-right:4px solid #fff;box-shadow:none;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-right:48px;border-right:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#50575e;border-right-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#2271b1;border-top-color:#2271b1;box-shadow:none;outline:1px solid transparent}#customize-theme-controls .accordion-section-title:focus .customize-action{outline:1px solid transparent;outline-offset:1px}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#2271b1;background:#f6f7f7;border-right-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.customize-controls-close:before{font:normal 22px/45px dashicons;content:"\f335";position:relative;top:-3px;right:13px}.customize-panel-back:before,.customize-section-back:before{font:normal 20px/72px dashicons;content:"\f345";position:relative;right:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#f0f0f1;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-right:62px}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-section-description ul{margin-right:1em}.customize-section-description ul>li{list-style:disc}.section-description-buttons{text-align:left}.customize-control{width:100%;float:right;clear:both;margin-bottom:12px}.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=password],.customize-control input[type=range],.customize-control input[type=search],.customize-control input[type=tel],.customize-control input[type=text],.customize-control input[type=url]{width:100%;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:1.75;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:1.4;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f504";top:3px;position:relative;padding-right:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control .customize-inside-control-row{line-height:1.6;display:block;margin-right:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:4px;margin-right:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:1.6}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-checkbox label,.customize-control-radio label{vertical-align:top}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image,.customize-control .wp-media-wrapper.wp-video,.customize-control-header .current{line-height:0}.customize-control-site_icon .favicon-preview .browser-preview{vertical-align:top}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:right}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#f0f0f1;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;padding:5px 1px 5px 0;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 6px 2px 0;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid #d63638}.customize-control-dropdown-pages .add-new-toggle{margin-right:1px;font-weight:600;line-height:2.2}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#f0f0f1;border-left:1px solid #dcdcde}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{box-shadow:inset 0 0 0 2px #d63638;transition:.15s box-shadow linear}#customize-controls .customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:9px 14px;overflow:hidden}#customize-controls .customize-control-notifications-container .notice.is-dismissible{padding-left:38px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container{margin-top:8px}.customize-control-text.has-error input{outline:2px solid #d63638}#customize-controls #customize-notifications-area{position:absolute;top:46px;width:100%;border-bottom:1px solid #dcdcde;display:block;padding:0;margin:0}.wp-full-overlay.collapsed #customize-controls #customize-notifications-area{display:none!important}#customize-controls #customize-notifications-area:not(.has-overlay-notifications),#customize-controls .customize-section-title>.customize-control-notifications-container:not(.has-overlay-notifications),#customize-controls .panel-meta>.customize-control-notifications-container:not(.has-overlay-notifications){max-height:210px;overflow-x:hidden;overflow-y:auto}#customize-controls #customize-notifications-area .notice,#customize-controls #customize-notifications-area>ul,#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container .notice{margin:0}#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container{border-top:1px solid #dcdcde}#customize-controls #customize-notifications-area .notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice{padding:9px 14px}#customize-controls #customize-notifications-area .notice.is-dismissible,#customize-controls .customize-section-title>.customize-control-notifications-container .notice.is-dismissible,#customize-controls .panel-meta>.customize-control-notifications-container .notice.is-dismissible{padding-left:38px}#customize-controls #customize-notifications-area .notice+.notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice+.notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice+.notice{margin-top:1px}@keyframes customize-fade-in{0%{opacity:0}100%{opacity:1}}#customize-controls #customize-notifications-area .notice.notification-overlay,#customize-controls .notice.notification-overlay{margin:0;border-right:0}#customize-controls .customize-control-notifications-container.has-overlay-notifications{animation:customize-fade-in .5s;z-index:30}#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message{clear:both;color:#1d2327;font-size:18px;font-style:normal;margin:0;padding:2em 0;text-align:center;width:100%;display:block;top:50%;position:relative}#customize-control-show_on_front.has-error{margin-bottom:0}#customize-control-show_on_front.has-error .customize-control-notifications-container{margin-top:12px}.accordion-section .dropdown{float:right;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:right;min-width:30px;height:16px;line-height:16px;margin-left:16px;padding:4px 5px;border:2px solid #f0f0f1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;left:0;width:20px;background:#f0f0f1}.customize-control .dropdown-arrow:after{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#2c3338}.customize-control .dropdown-status{color:#2c3338;background:#f0f0f1;display:none;max-width:112px}.customize-control-color .dropdown{margin-left:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#50575e;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control .actions .button{margin-top:12px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-header button img{display:block}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{width:auto;height:auto;white-space:normal}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .button-add-media,.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #c3c4c7;box-sizing:border-box;padding:9px 0;line-height:1.6}.customize-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.customize-control .attachment-media-view .button-add-media:hover{background-color:#fff}.customize-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#50575e;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:12px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:"";position:absolute;height:auto;top:0;right:0;bottom:0;left:0;border:4px solid #72aee6;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#50575e;background:rgba(0,0,0,.5);position:absolute;top:10px;right:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{right:auto;left:10px}.customize-control-header .header-view .close:focus{outline:1px solid #4f94d4}.customize-control-header .random.placeholder{cursor:pointer;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{animation:dice-color-change 3s infinite}.button-see-me{animation:bounce .7s 1;transform-origin:center bottom}@keyframes bounce{20%,53%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-12px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-6px,0)}90%{transform:translate3d(0,-1px,0)}}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 3px 1px rgba(79,148,212,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{margin-left:8px}.customize-control-background_position .background-position-control .button-group{display:block}.customize-control-code_editor textarea{width:100%;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.customize-control-code_editor .CodeMirror,.customize-control-code_editor textarea{height:14em}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;height:500px}.customize-section-description-container+#customize-control-custom_css .customize-control-title{margin-right:12px}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-left:0;border-right:0;height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:-12px;width:299px;width:calc(100% + 24px);margin-bottom:-12px}.customize-section-description-container+#customize-control-custom_css:last-child .CodeMirror{height:calc(100vh - 185px)}.CodeMirror-hints,.CodeMirror-lint-tooltip{z-index:500000!important}.customize-section-description-container+#customize-control-custom_css:last-child .customize-control-notifications-container{margin-right:12px;margin-left:12px}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:0}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:calc(100vh - 140px)}}#customize-theme-controls .control-panel-themes{border-bottom:none}#customize-theme-controls .control-panel-themes>.accordion-section-title,#customize-theme-controls .control-panel-themes>.accordion-section-title:hover{cursor:default;background:#fff;color:#50575e;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;border-right:none;border-left:none;margin:0 0 15px;padding-left:100px}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-left:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action,.control-panel-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme{position:absolute;left:10px;top:50%;margin-top:-14px;font-weight:400}#customize-notifications-area .notification-message button.switch-to-editor{display:block;margin-top:6px;font-weight:400}#customize-theme-controls .control-panel-themes>.accordion-section-title:after{display:none}.control-panel-themes .customize-themes-full-container{position:fixed;top:0;right:0;transition:.18s right ease-in-out;margin:0 300px 0 0;padding:71px 0 25px;overflow-y:scroll;width:calc(100% - 300px);height:calc(100% - 96px);background:#f0f0f1;z-index:20}@media (prefers-reduced-motion:reduce){.control-panel-themes .customize-themes-full-container{transition:none}}@media screen and (min-width:1670px){.control-panel-themes .customize-themes-full-container{width:82%;left:0;right:initial}}.modal-open .control-panel-themes .customize-themes-full-container{overflow-y:visible}#customize-header-actions .customize-controls-preview-toggle,#customize-header-actions .spinner,#customize-save-button-wrapper{transition:.18s margin ease-in-out}#customize-footer-actions,#customize-footer-actions .collapse-sidebar{bottom:0;transition:.18s bottom ease-in-out}.in-themes-panel:not(.animating) #customize-footer-actions,.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel:not(.animating) #customize-header-actions .spinner,.in-themes-panel:not(.animating) #customize-preview{visibility:hidden}.wp-full-overlay.in-themes-panel{background:#f0f0f1}.in-themes-panel #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel #customize-header-actions .spinner,.in-themes-panel #customize-save-button-wrapper{margin-top:-46px}.in-themes-panel #customize-footer-actions,.in-themes-panel #customize-footer-actions .collapse-sidebar{bottom:-45px}.in-themes-panel.animating .control-panel-themes .filter-themes-count{display:none}.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content{bottom:0}.themes-filter-bar .feature-filter-toggle{float:left;margin:3px 25px 3px 0}.themes-filter-bar .feature-filter-toggle:before{content:"\f111";margin:0 0 0 5px;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .feature-filter-toggle.open{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.themes-filter-bar .feature-filter-toggle .filter-count-filters{display:none}.filter-drawer{box-sizing:border-box;width:100%;position:absolute;top:46px;right:0;padding:25px 25px 25px 0;border-top:0;margin:0;background:#f0f0f1;border-bottom:1px solid #dcdcde}.filter-drawer .filter-group{margin:0 0 0 25px;width:calc((100% - 75px)/ 3);min-width:200px;max-width:320px}@keyframes themes-fade-in{0%{opacity:0}50%{opacity:0}100%{opacity:1}}.control-panel-themes .customize-themes-full-container.animate{animation:.6s themes-fade-in 1}.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count{animation:.6s themes-fade-in 1}.control-panel-themes .filter-themes-count{position:relative;float:left;line-height:2.6}.control-panel-themes .filter-themes-count .themes-displayed{font-weight:600;color:#50575e}.customize-themes-notifications{margin:0}.control-panel-themes .customize-themes-notifications .notice{margin:0 0 25px}.customize-themes-full-container .customize-themes-section{display:none!important;overflow:hidden}.customize-themes-full-container .customize-themes-section.current-section{display:list-item!important}.control-section .customize-section-text-before{padding:0 15px 8px 0;margin:15px 0 0;line-height:16px;border-bottom:1px solid #dcdcde;color:#50575e}.control-panel-themes .customize-themes-section-title{width:100%;background:#fff;box-shadow:none;outline:0;border-top:none;border-bottom:1px solid #dcdcde;border-right:4px solid #fff;border-left:none;cursor:pointer;padding:10px 15px;position:relative;text-align:right;font-size:14px;font-weight:600;color:#50575e;text-shadow:none}.control-panel-themes #accordion-section-installed_themes{border-top:1px solid #dcdcde}.control-panel-themes .theme-section{margin:0;position:relative}.control-panel-themes .customize-themes-section-title:focus,.control-panel-themes .customize-themes-section-title:hover{border-right-color:#2271b1;color:#2271b1;background:#f6f7f7}.customize-themes-section-title:not(.selected):after{content:"";display:block;position:absolute;top:9px;left:15px;width:18px;height:18px;border-radius:100%;border:1px solid #c3c4c7;background:#fff}.control-panel-themes .theme-section .customize-themes-section-title.selected:after{content:"\f147";font:16px/1 dashicons;box-sizing:border-box;width:20px;height:20px;padding:3px 1px 1px 3px;border-radius:100%;position:absolute;top:9px;left:15px;background:#2271b1;color:#fff}.control-panel-themes .customize-themes-section-title.selected{color:#2271b1}#customize-theme-controls .themes.accordion-section-content{position:relative;right:0;padding:0;width:100%}.loading .customize-themes-section .spinner{display:block;visibility:visible;position:relative;clear:both;width:20px;height:20px;right:calc(50% - 10px);float:none;margin-top:50px}.customize-themes-section .no-themes,.customize-themes-section .no-themes-local{display:none}.themes-section-installed_themes .theme .notice-success:not(.updated-message){display:none}.customize-control-theme .theme{width:100%;margin:0;border:1px solid #dcdcde;background:#fff}.customize-control-theme .theme .theme-actions,.customize-control-theme .theme .theme-name{background:#fff;border:none}.customize-control.customize-control-theme{box-sizing:border-box;width:25%;max-width:600px;margin:0 0 25px 25px;padding:0;clear:none}@media screen and (min-width:2101px){.customize-control.customize-control-theme{width:calc((100% - 125px)/ 5 - 1px)}}@media screen and (min-width:1601px) and (max-width:2100px){.customize-control.customize-control-theme{width:calc((100% - 100px)/ 4 - 1px)}}@media screen and (min-width:1201px) and (max-width:1600px){.customize-control.customize-control-theme{width:calc((100% - 75px)/ 3 - 1px)}}@media screen and (min-width:851px) and (max-width:1200px){.customize-control.customize-control-theme{width:calc((100% - 50px)/ 2 - 1px)}}@media screen and (max-width:850px){.customize-control.customize-control-theme{width:100%}}.wp-customizer .theme-browser .themes{padding:0 25px 25px 0;transition:.18s margin-top linear}.wp-customizer .theme-browser .theme .theme-actions{opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.customize-preview-header.themes-filter-bar{position:fixed;top:0;right:300px;width:calc(100% - 300px);height:46px;background:#f0f0f1;z-index:10;padding:6px 25px;box-sizing:border-box;border-bottom:1px solid #dcdcde}@media screen and (min-width:1670px){.customize-preview-header.themes-filter-bar{width:82%;left:0;right:initial}}.themes-filter-bar .themes-filter-container{margin:0;padding:0}.themes-filter-bar .wp-filter-search{line-height:1.8;padding:6px 30px 6px 10px;max-width:100%;width:40%;min-width:300px;position:absolute;top:6px;right:25px;height:32px;margin:1px 0}@media screen and (max-height:540px),screen and (max-width:1018px){.customize-preview-header.themes-filter-bar{position:relative;right:0;width:100%;margin:0 0 25px}.filter-drawer{top:46px}.wp-customizer .theme-browser .themes{padding:0 25px 25px 0;overflow:hidden}.control-panel-themes .customize-themes-full-container{margin-top:0;padding:0;height:100%;width:calc(100% - 300px)}}@media screen and (max-width:1018px){.filter-drawer .filter-group{width:calc((100% - 50px)/ 2)}}@media screen and (max-width:900px){.customize-preview-header.themes-filter-bar{height:86px;padding-top:46px}.themes-filter-bar .wp-filter-search{width:calc(100% - 50px);margin:0;min-width:200px}.filter-drawer{top:86px}.control-panel-themes .filter-themes-count{float:right}}@media screen and (max-width:792px){.filter-drawer .filter-group{width:calc(100% - 25px)}}.control-panel-themes .customize-themes-mobile-back{display:none}@media screen and (max-width:600px){.filter-drawer{top:132px}.wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes{display:block;float:left}.control-panel-themes .customize-themes-full-container{width:100%;margin:0;padding-top:46px;height:calc(100% - 46px);z-index:1;display:none}.showing-themes .control-panel-themes .customize-themes-full-container{display:block}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back{display:block;position:fixed;top:0;right:0;background:#f0f0f1;color:#3c434a;border-radius:0;box-shadow:none;border:none;height:46px;width:100%;z-index:10;text-align:right;text-shadow:none;border-bottom:1px solid #dcdcde;border-right:4px solid transparent;margin:0;padding:0;font-size:0;overflow:hidden}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before{right:0;top:0;height:46px;width:26px;display:block;line-height:2.3;padding:0 8px;border-left:1px solid #dcdcde}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus,.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover{color:#2271b1;background:#f6f7f7;border-right-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.showing-themes #customize-header-actions{display:none}#customize-controls{width:100%}}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;right:0;top:0;left:0;bottom:0;z-index:109}.wp-customizer.modal-open #customize-header-actions,.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after,.wp-customizer.modal-open .control-panel-themes .filter-themes-count{z-index:-1}.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(240,240,241,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .star-rating{float:right;margin-left:8px}.wp-customizer .theme-rating .num-ratings{line-height:20px}.wp-customizer .theme-overlay .theme-wrap{right:90px;left:90px;top:45px;bottom:45px;z-index:120}.wp-customizer .theme-overlay .theme-actions{text-align:left;padding:10px 25px;background:#f0f0f1;border-top:1px solid #dcdcde}.wp-customizer .theme-overlay .theme-actions .theme-install.preview{margin-right:8px}.control-panel-themes .theme-actions .delete-theme{right:15px;left:auto;bottom:auto;position:absolute}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-header{background:#f0f0f1}.wp-customizer .theme-overlay .theme-header .close:before,.wp-customizer .theme-overlay .theme-header button{color:#3c434a}.wp-customizer .theme-overlay .theme-header .close:focus,.wp-customizer .theme-overlay .theme-header .close:hover,.wp-customizer .theme-overlay .theme-header .left:focus,.wp-customizer .theme-overlay .theme-header .left:hover,.wp-customizer .theme-overlay .theme-header .right:focus,.wp-customizer .theme-overlay .theme-header .right:hover{background:#fff;border-bottom:4px solid #2271b1;color:#2271b1}.wp-customizer .theme-overlay .theme-header .close:focus:before,.wp-customizer .theme-overlay .theme-header .close:hover:before{color:#2271b1}.wp-customizer .theme-overlay .theme-header button.disabled,.wp-customizer .theme-overlay .theme-header button.disabled:focus,.wp-customizer .theme-overlay .theme-header button.disabled:hover{border-bottom:none;background:0 0;color:#c3c4c7}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{right:0;left:0;top:0;bottom:0}.wp-customizer .theme-browser .themes{padding-left:25px}}body.cheatin{font-size:medium;height:auto;background:#fff;border:1px solid #c3c4c7;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;box-shadow:0 1px 1px rgba(0,0,0,.04)}body.cheatin h1{border-bottom:1px solid #dcdcde;clear:both;color:#50575e;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin:0 10px 0 0;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;right:-2px;top:0;font:normal 20px/1 dashicons;vertical-align:middle;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:left;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:right;display:block;width:33px;height:43px;color:#8c8f94;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:normal 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#1d2327;background:#f0f0f1}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#dcdcde;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{left:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#f0f0f1;border-color:#8c8f94;color:#2c3338;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before,body.adding-widget .add-new-widget:before{transform:rotate(-45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#f0f0f1;transition:right .18s;border-left:1px solid #dcdcde}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #dcdcde}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#f0f0f1}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;min-height:32px;margin:1px 0;padding:0 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;right:16px;width:30px;height:30px;line-height:2.1;text-align:center;color:#646970}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;left:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#d63638;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#d63638}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}#available-menu-items-search .search-icon:after,#available-widgets-filter .search-icon:after,.themes-filter-bar .search-icon:after{content:"\f179";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .search-icon{position:absolute;top:7px;right:26px;z-index:1;color:#646970;height:30px;width:30px;line-height:2;text-align:center}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:15px;background:#fff;border-bottom:1px solid #dcdcde;border-right:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-header button.random .dice{margin-top:0}.customize-control-checkbox .customize-inside-control-row,.customize-control-nav_menu_auto_add .customize-inside-control-row,.customize-control-radio .customize-inside-control-row{margin-right:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:-32px}.customize-control input[type=checkbox]+label+br,.customize-control input[type=radio]+label+br{line-height:2.5}.customize-control .date-time-fields select{height:39px}.date-time-fields .date-input.month{width:79px}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:55px}.date-time-fields .date-input.year{width:80px}#customize-control-changeset_preview_link a{bottom:16px}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{bottom:10px}.media-widget-control .media-widget-buttons .button.change-media,.media-widget-control .media-widget-buttons .button.edit-media,.media-widget-control .media-widget-buttons .button.select-media{margin-top:12px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:3px 25px 3px 0}}@media screen and (max-width:1200px){.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main{right:67%}}@media screen and (max-width:640px){.wp-full-overlay.collapsed #customize-controls{margin-right:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;right:48px;line-height:2.6;font-size:14px;padding:0 12px 4px;margin:0;height:45px;background:#f0f0f1;border:0;border-left:1px solid #dcdcde;border-top:4px solid #f0f0f1;color:#50575e;cursor:pointer;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.preview-only #customize-save-button-wrapper{margin-top:-46px}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:normal 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-left:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}.wp-core-ui.wp-customizer .button{min-height:30px;padding:0 14px;line-height:2;font-size:14px;vertical-align:middle}#customize-control-changeset_status .customize-inside-control-row{padding-top:15px}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#50575e;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}.reorder,.reordering .reorder-done{padding:8px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:0}}@media screen and (max-width:600px){.wp-full-overlay.expanded{margin-right:0}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{top:46px;z-index:10}body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content{right:-100%}body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{right:0}} \ No newline at end of file +body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked{background-color:rgba(0,0,0,.7);padding:25px}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message{margin-right:auto;margin-left:auto;max-width:366px;min-height:64px;width:auto;padding:25px 109px 25px 25px;position:relative;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;overflow-y:auto;text-align:right;top:calc(50% - 100px)}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing{margin-top:0}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons{margin-bottom:0}.customize-changeset-locked-avatar{width:64px;position:absolute;right:25px;top:25px}.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button{margin-left:10px;margin-top:0}#customize-controls .description{color:#555d66}#customize-save-button-wrapper{float:left;margin-top:9px}body:not(.ready) #customize-save-button-wrapper .save{visibility:hidden}#customize-save-button-wrapper .save{float:right;border-radius:3px;box-shadow:none;margin-top:0}#customize-save-button-wrapper .save:focus,#publish-settings:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}#customize-save-button-wrapper .save.has-next-sibling{border-radius:0 3px 3px 0}#customize-sidebar-outer-content{position:absolute;top:0;bottom:0;right:0;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:100%;margin:0;z-index:-1;background:#eee;transition:right .18s;border-left:1px solid #ddd;border-right:1px solid #ddd;height:100%}#customize-theme-controls .control-section-outer{display:none!important}#customize-outer-theme-controls .accordion-section-content{padding:12px}#customize-outer-theme-controls .accordion-section-content.open{display:block}.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{visibility:visible;right:100%;transition:right .18s}.customize-outer-pane-parent{margin:0}.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main{right:300px;opacity:.4}.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main{right:64%}#customize-outer-theme-controls li.notice{padding-top:8px;padding-bottom:8px;margin-right:0;margin-bottom:10px}#publish-settings{text-indent:0;border-radius:3px 0 0 3px;padding-right:0;padding-left:0;box-shadow:none;font-size:14px;width:30px;float:right;transform:none;margin-top:0}body.trashing #customize-save-button-wrapper .save,body.trashing #publish-settings,body:not(.ready) #publish-settings{display:none}#customize-header-actions .spinner{margin-top:13px;margin-left:4px}.saving #customize-header-actions .spinner,.trashing #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #ddd}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}.outer-section-open #customize-controls .wp-full-overlay-sidebar-content{background:#eee}#customize-controls .customize-info{border:none;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-control-changeset_preview_link input,#customize-control-changeset_status .customize-inside-control-row{background-color:#fff;border-bottom:1px solid #ddd;box-sizing:content-box;width:100%;margin-right:-12px;padding-right:12px;padding-left:12px}#customize-control-trash_changeset{margin-top:20px}#customize-control-trash_changeset .button-link{position:relative;padding-right:24px;display:inline-block}#customize-control-trash_changeset .button-link:before{content:"\f182";font:normal 22px dashicons;text-decoration:none;position:absolute;right:0;top:-2px}#customize-controls .date-input:invalid{border-color:#dc3232}#customize-control-changeset_status .customize-inside-control-row{padding-top:10px;padding-bottom:10px;font-weight:500}#customize-control-changeset_status .customize-inside-control-row:first-of-type{border-top:1px solid #ddd}#customize-control-changeset_status .customize-control-title{margin-bottom:6px}#customize-control-changeset_status input{margin-right:0}#customize-control-changeset_preview_link{position:relative;display:block}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{margin:0;position:absolute;bottom:9px;left:0}.preview-link-wrapper{position:relative}.customize-copy-preview-link:after,.customize-copy-preview-link:before{content:"";height:28px;position:absolute;background:#fff;top:-1px}.customize-copy-preview-link:before{right:-10px;width:9px;opacity:.75}.customize-copy-preview-link:after{right:-5px;width:4px;opacity:.8}#customize-control-changeset_preview_link input{line-height:2.5;border-top:1px solid #ddd;border-right:none;border-left:none;text-indent:-999px;color:#fff}#customize-control-changeset_preview_link label{position:relative;display:block}#customize-control-changeset_preview_link a{display:inline-block;position:absolute;white-space:nowrap;overflow:hidden;width:90%;bottom:14px;font-size:14px;text-decoration:none}#customize-control-changeset_preview_link a.disabled,#customize-control-changeset_preview_link a.disabled:active,#customize-control-changeset_preview_link a.disabled:focus,#customize-control-changeset_preview_link a.disabled:visited{color:#000;opacity:.4;cursor:default;outline:0;box-shadow:none}#sub-accordion-section-publish_settings .customize-section-description-container{display:none}#customize-controls .customize-info.section-meta{margin-bottom:15px}.customize-control-date_time .customize-control-description+.date-time-fields.includes-time{margin-top:10px}.customize-control.customize-control-date_time .date-time-fields .date-input.day{margin-left:0}.date-time-fields .date-input.month{width:auto;margin:0}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:46px}.date-time-fields .date-input.year{width:60px}.date-time-fields .date-input.meridian{width:auto;margin:0}.date-time-fields .time-row{margin-top:12px}.date-time-fields .date-timezone{line-height:2.2;text-decoration:none}#customize-control-changeset_preview_link{margin-top:6px}#customize-control-changeset_status{margin-bottom:0;padding-bottom:0}#customize-control-changeset_scheduled_date{box-sizing:content-box;width:100%;margin-right:-12px;padding:12px;background:#fff;border-bottom:1px solid #ddd;margin-bottom:0}#customize-control-changeset_scheduled_date .customize-control-description{font-style:normal}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555d66;border-right:none;border-left:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#32373c}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title,#customize-outer-theme-controls .customize-pane-child .customize-section-title h3,#customize-outer-theme-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;left:1px;padding:20px 10px 10px 20px;width:20px;height:20px;cursor:pointer;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555d66;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;right:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice,#customize-outer-theme-controls .customize-info .customize-section-description{color:#555d66;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}.no-widget-areas-rendered-notice{font-style:italic}.no-widget-areas-rendered-notice p:first-child{margin-top:0}.no-widget-areas-rendered-notice p:last-child{margin-bottom:0}#customize-controls .customize-info .customize-section-description{margin-bottom:15px}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-left:30px}#customize-outer-theme-controls .control-section,#customize-theme-controls .control-section{border:none}#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{color:#555d66;background-color:#fff;border-bottom:1px solid #ddd;border-right:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#555;background-color:#fff;border-right:4px solid #fff}#customize-outer-theme-controls .accordion-section-title:after,#customize-theme-controls .accordion-section-title:after{content:"\f341";color:#a0a5aa}#customize-outer-theme-controls .accordion-section-content,#customize-theme-controls .accordion-section-content{color:#555d66;background:0 0}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;background:#f3f3f5;border-right-color:#0073aa}#accordion-section-themes+.control-section{border-top:1px solid #ddd}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f3f3f5}#customize-outer-theme-controls .control-section .accordion-section-title:focus:after,#customize-outer-theme-controls .control-section .accordion-section-title:hover:after,#customize-outer-theme-controls .control-section.open .accordion-section-title:after,#customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-outer-theme-controls .control-section.open .accordion-section-title,#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title{border-top:1px solid #ddd}#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu+.control-section-nav_menu{border-top:none}#customize-theme-controls>ul{margin:0}#customize-theme-controls .accordion-section-content{position:absolute;top:0;right:100%;width:100%;margin:0;padding:12px;box-sizing:border-box}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{overflow:visible;width:100%;margin:0;padding:0;box-sizing:border-box;transition:.18s transform cubic-bezier(.645, .045, .355, 1)}#customize-theme-controls .customize-pane-child.skip-transition{transition:none}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;right:0;visibility:hidden;height:0;max-height:none;overflow:hidden;transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open{transform:none}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;transform:translateX(100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.control-section-nav_menu .customize-section-description-container,.control-section-new_menu .customize-section-description-container,.customize-section-description-container{margin-bottom:15px}.control-section-nav_menu .customize-control,.control-section-new_menu .customize-control{margin-bottom:0}.customize-section-title{margin:-12px -12px 0 -12px;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}.customize-info div.customize-section-description{margin-top:0}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #ddd;padding:12px 12px 12px 12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px 12px}.customize-section-title h3,h3.customize-section-title{padding:10px 14px 12px 10px;margin:0;line-height:21px;color:#555d66}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;right:0;width:45px;height:41px;padding:0 0 0 2px;background:#eee;border:none;border-top:4px solid #eee;border-left:1px solid #ddd;color:#444;text-align:right;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:right;width:48px;height:71px;padding:0 0 0 24px;margin:0;background:#fff;border:none;border-left:1px solid #ddd;border-right:4px solid #fff;box-shadow:none;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-right:48px;border-right:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555d66;border-right-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#0073aa;border-top-color:#0073aa;outline:0;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#0073aa;background:#f3f3f5;border-right-color:#0073aa;outline:0;box-shadow:none}.customize-controls-close:before{font:normal 22px/45px dashicons;content:"\f335";position:relative;top:-3px;right:13px}.customize-panel-back:before,.customize-section-back:before{font:normal 20px/72px dashicons;content:"\f345";position:relative;right:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#eee;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-right:62px}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-section-description ul{margin-right:1em}.customize-section-description ul>li{list-style:disc}.section-description-buttons{text-align:left}.section-description-buttons button.button-link{color:#0073aa;text-decoration:underline}.customize-control{width:100%;float:right;clear:both;margin-bottom:12px}.customize-control input[type=checkbox],.customize-control input[type=radio],.customize-control select{line-height:28px}.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=password],.customize-control input[type=search],.customize-control input[type=tel],.customize-control input[type=text],.customize-control input[type=url]{width:100%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f310";top:3px;position:relative;padding-right:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control .customize-inside-control-row{line-height:20px;display:block;margin-right:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:4px;margin-right:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-checkbox label,.customize-control-radio label{vertical-align:top}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image,.customize-control .wp-media-wrapper.wp-video,.customize-control-header .current{line-height:0}.customize-control-site_icon .favicon-preview .browser-preview{vertical-align:top}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:right}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#eee;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;padding:5px 1px 5px 0;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 6px 2px 0;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid #dc3232}.customize-control-dropdown-pages .add-new-toggle{margin-right:1px;font-weight:600;line-height:28px}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}#customize-controls .customize-control-notifications-container{margin:4px 0 8px 0;padding:0;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{box-shadow:inset 0 0 0 2px #dc3232;transition:.15s box-shadow linear}#customize-controls .customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px 0;padding:9px 14px;overflow:hidden}#customize-controls .customize-control-notifications-container .notice.is-dismissible{padding-left:38px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container{margin-top:8px}.customize-control-text.has-error input{outline:2px solid #dc3232}#customize-controls #customize-notifications-area{position:absolute;top:46px;width:100%;border-bottom:1px solid #ddd;display:block;padding:0;margin:0}.wp-full-overlay.collapsed #customize-controls #customize-notifications-area{display:none!important}#customize-controls #customize-notifications-area:not(.has-overlay-notifications),#customize-controls .customize-section-title>.customize-control-notifications-container:not(.has-overlay-notifications),#customize-controls .panel-meta>.customize-control-notifications-container:not(.has-overlay-notifications){max-height:210px;overflow-x:hidden;overflow-y:auto}#customize-controls #customize-notifications-area .notice,#customize-controls #customize-notifications-area>ul,#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container .notice{margin:0}#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container{border-top:1px solid #ddd}#customize-controls #customize-notifications-area .notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice{padding:9px 14px}#customize-controls #customize-notifications-area .notice.is-dismissible,#customize-controls .customize-section-title>.customize-control-notifications-container .notice.is-dismissible,#customize-controls .panel-meta>.customize-control-notifications-container .notice.is-dismissible{padding-left:38px}#customize-controls #customize-notifications-area .notice+.notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice+.notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice+.notice{margin-top:1px}@keyframes customize-fade-in{0%{opacity:0}100%{opacity:1}}#customize-controls #customize-notifications-area .notice.notification-overlay,#customize-controls .notice.notification-overlay{margin:0;border-right:0}#customize-controls .customize-control-notifications-container.has-overlay-notifications{animation:customize-fade-in .5s;z-index:30}#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message{clear:both;color:#191e23;font-size:18px;font-style:normal;margin:0;padding:2em 0;text-align:center;width:100%;display:block;top:50%;position:relative}#customize-control-show_on_front.has-error{margin-bottom:0}#customize-control-show_on_front.has-error .customize-control-notifications-container{margin-top:12px}.accordion-section .dropdown{float:right;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:right;min-width:30px;height:16px;line-height:16px;margin-left:16px;padding:4px 5px;border:2px solid #eee;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;left:0;width:20px;background:#eee}.customize-control .dropdown-arrow:after{content:"\f140";font:normal 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#32373c}.customize-control .dropdown-status{color:#32373c;background:#eee;display:none;max-width:112px}.customize-control-color .dropdown{margin-left:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555d66;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control .actions .button{margin-top:12px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-header button img{display:block}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{width:auto;height:auto;white-space:normal}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #b4b9be;box-sizing:border-box;padding:9px 0;line-height:20px}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#555d66;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:12px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;right:0;bottom:0;left:0;border:4px solid #00a0d2;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#555d66;background:rgba(0,0,0,.5);position:absolute;top:10px;right:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{right:auto;left:10px}.customize-control-header .header-view .close:focus{outline:1px solid #5b9dd9}.customize-control-header .random.placeholder{cursor:pointer;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{animation:dice-color-change 3s infinite}.button-see-me{animation:bounce .7s 1;transform-origin:center bottom}@keyframes bounce{20%,53%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-12px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-6px,0)}90%{transform:translate3d(0,-1px,0)}}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 3px 1px rgba(30,140,190,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{margin-left:8px}.customize-control-background_position .background-position-control .button-group{display:block}.customize-control-code_editor textarea{width:100%;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.customize-control-code_editor .CodeMirror,.customize-control-code_editor textarea{height:14em}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;height:500px}.customize-section-description-container+#customize-control-custom_css .customize-control-title{margin-right:12px}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-left:0;border-right:0;height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:-12px;width:299px;width:calc(100% + 24px);margin-bottom:-12px}.customize-section-description-container+#customize-control-custom_css:last-child .CodeMirror{height:calc(100vh - 185px)}.CodeMirror-hints,.CodeMirror-lint-tooltip{z-index:500000!important}.customize-section-description-container+#customize-control-custom_css:last-child .customize-control-notifications-container{margin-right:12px;margin-left:12px}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:10px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:0}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:calc(100vh - 140px)}}#customize-theme-controls .control-panel-themes{border-bottom:none}#customize-theme-controls .control-panel-themes>.accordion-section-title,#customize-theme-controls .control-panel-themes>.accordion-section-title:hover{cursor:default;background:#fff;color:#555d66;border-top:1px solid #ddd;border-bottom:1px solid #ddd;border-right:none;border-left:none;margin:0 0 15px 0;padding-left:100px}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-left:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action,.control-panel-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme{position:absolute;left:10px;top:50%;margin-top:-14px;font-weight:400}#customize-theme-controls .control-panel-themes>.accordion-section-title:after{display:none}.control-panel-themes .customize-themes-full-container{position:fixed;top:0;right:0;transition:.18s right ease-in-out;margin:0 300px 0 0;padding:71px 0 25px;overflow-y:scroll;width:calc(100% - 300px);height:calc(100% - 96px);background:#eee;z-index:20}@media screen and (min-width:1670px){.control-panel-themes .customize-themes-full-container{width:82%;left:0;right:initial}}.modal-open .control-panel-themes .customize-themes-full-container{overflow-y:visible}#customize-header-actions .customize-controls-preview-toggle,#customize-header-actions .spinner,#customize-save-button-wrapper{transition:.18s margin ease-in-out}#customize-footer-actions,#customize-footer-actions .collapse-sidebar{bottom:0;transition:.18s bottom ease-in-out}.in-themes-panel:not(.animating) #customize-footer-actions,.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel:not(.animating) #customize-header-actions .spinner,.in-themes-panel:not(.animating) #customize-preview{visibility:hidden}.wp-full-overlay.in-themes-panel{background:#eee}.in-themes-panel #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel #customize-header-actions .spinner,.in-themes-panel #customize-save-button-wrapper{margin-top:-46px}.in-themes-panel #customize-footer-actions,.in-themes-panel #customize-footer-actions .collapse-sidebar{bottom:-45px}.in-themes-panel.animating .control-panel-themes .filter-themes-count{display:none}.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content{bottom:0}.themes-filter-bar .feature-filter-toggle{float:left;margin:3px 25px 3px 0}.themes-filter-bar .feature-filter-toggle:before{content:"\f111";margin:0 0 0 5px;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .feature-filter-toggle.open{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.themes-filter-bar .feature-filter-toggle .filter-count-filters{display:none}.filter-drawer{box-sizing:border-box;width:100%;position:absolute;top:46px;right:0;padding:25px 25px 25px 0;border-top:0;margin:0;background:#eee;border-bottom:1px solid #ddd}.filter-drawer .filter-group{margin:0 0 0 25px;width:calc((100% - 75px)/ 3);min-width:200px;max-width:320px}@keyframes themes-fade-in{0%{opacity:0}50%{opacity:0}100%{opacity:1}}.control-panel-themes .customize-themes-full-container.animate{animation:.6s themes-fade-in 1}.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count{animation:.6s themes-fade-in 1}.control-panel-themes .filter-themes-count{position:relative;float:left;line-height:34px}.control-panel-themes .filter-themes-count .themes-displayed{font-weight:600;color:#555d66}.customize-themes-notifications{margin:0}.control-panel-themes .customize-themes-notifications .notice{margin:0 0 25px 0}.customize-themes-full-container .customize-themes-section{display:none!important;overflow:hidden}.customize-themes-full-container .customize-themes-section.current-section{display:list-item!important}.control-section .customize-section-text-before{padding:0 15px 8px 0;margin:15px 0 0 0;line-height:16px;border-bottom:1px solid #ddd;color:#555d66}.control-panel-themes .customize-themes-section-title{width:100%;background:#fff;box-shadow:none;outline:0;border-top:none;border-bottom:1px solid #ddd;border-right:4px solid #fff;border-left:none;cursor:pointer;padding:10px 15px;position:relative;text-align:right;font-size:14px;font-weight:600;color:#555d66;text-shadow:none}.control-panel-themes #accordion-section-installed_themes{border-top:1px solid #ddd}.control-panel-themes .theme-section{margin:0;position:relative}.control-panel-themes .customize-themes-section-title:focus,.control-panel-themes .customize-themes-section-title:hover{border-right-color:#0073aa;color:#0073aa;background:#f5f5f5}.customize-themes-section-title:not(.selected):after{content:"";display:block;position:absolute;top:9px;left:15px;width:18px;height:18px;border-radius:100%;border:1px solid #ccc;background:#fff}.control-panel-themes .theme-section .customize-themes-section-title.selected:after{content:"\f147";font:16px/1 dashicons;box-sizing:border-box;width:20px;height:20px;padding:3px 1px 1px 3px;border-radius:100%;position:absolute;top:9px;left:15px;background:#0073aa;color:#fff}.control-panel-themes .customize-themes-section-title.selected{color:#0073aa}#customize-theme-controls .themes.accordion-section-content{position:relative;right:0;padding:0;width:100%}.loading .customize-themes-section .spinner{display:block;visibility:visible;position:relative;clear:both;width:20px;height:20px;right:calc(50% - 10px);float:none;margin-top:50px}.customize-themes-section .no-themes,.customize-themes-section .no-themes-local{display:none}.themes-section-installed_themes .theme .notice-success:not(.updated-message){display:none}.customize-control-theme .theme{width:100%;margin:0;border:1px solid #ddd;background:#fff}.customize-control-theme .theme .theme-actions,.customize-control-theme .theme .theme-name{background:#fff;border:none}.customize-control.customize-control-theme{box-sizing:border-box;width:25%;max-width:600px;margin:0 0 25px 25px;padding:0;clear:none}@media screen and (min-width:2101px){.customize-control.customize-control-theme{width:calc((100% - 125px)/ 5 - 1px)}}@media screen and (min-width:1601px) and (max-width:2100px){.customize-control.customize-control-theme{width:calc((100% - 100px)/ 4 - 1px)}}@media screen and (min-width:1201px) and (max-width:1600px){.customize-control.customize-control-theme{width:calc((100% - 75px)/ 3 - 1px)}}@media screen and (min-width:851px) and (max-width:1200px){.customize-control.customize-control-theme{width:calc((100% - 50px)/ 2 - 1px)}}@media screen and (max-width:850px){.customize-control.customize-control-theme{width:100%}}.wp-customizer .theme-browser .themes{padding:0 25px 25px 0;transition:.18s margin-top linear}.wp-customizer .theme-browser .theme .theme-actions{opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.customize-preview-header.themes-filter-bar{position:fixed;top:0;right:300px;width:calc(100% - 300px);height:46px;background:#eee;z-index:10;padding:6px 25px;box-sizing:border-box;border-bottom:1px solid #ddd}@media screen and (min-width:1670px){.customize-preview-header.themes-filter-bar{width:82%;left:0;right:initial}}.themes-filter-bar .themes-filter-container{margin:0;padding:0}.themes-filter-bar .wp-filter-search{line-height:25px;padding:6px 30px 6px 10px;max-width:100%;width:40%;min-width:300px;position:absolute;top:6px;right:25px;height:32px;margin:1px 0}@media screen and (max-height:540px),screen and (max-width:1018px){.customize-preview-header.themes-filter-bar{position:relative;right:0;width:100%;margin:0 0 25px 0}.filter-drawer{top:46px}.wp-customizer .theme-browser .themes{padding:0 25px 25px 0;overflow:hidden}.control-panel-themes .customize-themes-full-container{margin-top:0;padding:0;height:100%;width:calc(100% - 300px)}}@media screen and (max-width:1018px){.filter-drawer .filter-group{width:calc((100% - 50px)/ 2)}}@media screen and (max-width:900px){.customize-preview-header.themes-filter-bar{height:86px;padding-top:46px}.themes-filter-bar .wp-filter-search{width:calc(100% - 50px);margin:0;min-width:200px}.filter-drawer{top:86px}.control-panel-themes .filter-themes-count{float:right}}@media screen and (max-width:792px){.filter-drawer .filter-group{width:calc(100% - 25px)}}.control-panel-themes .customize-themes-mobile-back{display:none}@media screen and (max-width:600px){.filter-drawer{top:132px}.wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes{display:block;float:left}.control-panel-themes .customize-themes-full-container{width:100%;margin:0;padding-top:46px;height:calc(100% - 46px);z-index:1;display:none}.showing-themes .control-panel-themes .customize-themes-full-container{display:block}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back{display:block;position:fixed;top:0;right:0;background:#eee;color:#444;border-radius:0;box-shadow:none;border:none;height:46px;width:100%;z-index:10;text-align:right;text-shadow:none;border-bottom:1px solid #ddd;border-right:4px solid transparent;margin:0;padding:0;font-size:0;overflow:hidden}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before{right:0;top:0;height:46px;width:26px;display:block;line-height:46px;padding:0 8px 0 8px;border-left:1px solid #ddd}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus,.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover{color:#0073aa;background:#f3f3f5;border-right-color:#0073aa;outline:0;box-shadow:none}.showing-themes #customize-header-actions{display:none}#customize-controls{width:100%}}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;right:0;top:0;left:0;bottom:0;z-index:109}.wp-customizer.modal-open #customize-header-actions,.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after,.wp-customizer.modal-open .control-panel-themes .filter-themes-count{z-index:-1}.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .star-rating{float:right;margin-left:8px}.wp-customizer .theme-rating .num-ratings{line-height:20px}.wp-customizer .theme-overlay .theme-wrap{right:90px;left:90px;top:45px;bottom:45px;z-index:120}.wp-customizer .theme-overlay .theme-actions{text-align:left;padding:10px 25px;background:#eee;border-top:1px solid #ddd}.wp-customizer .theme-overlay .theme-actions .theme-install.preview{margin-right:8px}.control-panel-themes .theme-actions .delete-theme{right:15px;left:auto;bottom:auto;position:absolute}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-header{background:#eee}.wp-customizer .theme-overlay .theme-header .close:before,.wp-customizer .theme-overlay .theme-header button{color:#444}.wp-customizer .theme-overlay .theme-header .close:focus,.wp-customizer .theme-overlay .theme-header .close:hover,.wp-customizer .theme-overlay .theme-header .left:focus,.wp-customizer .theme-overlay .theme-header .left:hover,.wp-customizer .theme-overlay .theme-header .right:focus,.wp-customizer .theme-overlay .theme-header .right:hover{background:#fff;border-bottom:4px solid #0073aa;color:#0073aa}.wp-customizer .theme-overlay .theme-header .close:focus:before,.wp-customizer .theme-overlay .theme-header .close:hover:before{color:#0073aa}.wp-customizer .theme-overlay .theme-header button.disabled,.wp-customizer .theme-overlay .theme-header button.disabled:focus,.wp-customizer .theme-overlay .theme-header button.disabled:hover{border-bottom:none;background:0 0;color:#ccc}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{right:0;left:0;top:0;bottom:0}.wp-customizer .theme-browser .themes{padding-left:25px}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin h1{border-bottom:1px solid #ddd;clear:both;color:#555d66;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0 0;padding:0;padding-bottom:7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin:0;margin-right:10px;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;right:-2px;top:0;font:normal 20px/1 dashicons;vertical-align:middle;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:left;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:right;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:normal 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#191e23;background:#eee}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{left:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#929793;color:#32373c;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before,body.adding-widget .add-new-widget:before{transform:rotate(-45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;transition:right .18s;border-left:1px solid #ddd}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #ddd}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#eee}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;height:32px;margin:1px 0;padding:6px 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;right:16px;width:30px;height:30px;line-height:28px;text-align:center;color:#72777c}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;left:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#a00;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#dc3232}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .search-icon:after,#available-widgets-filter .search-icon:after,.themes-filter-bar .search-icon:after{content:"\f179";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .search-icon{position:absolute;top:7px;right:26px;z-index:1;color:#72777c;height:30px;width:30px;line-height:2;text-align:center}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:15px 60px 15px 15px;background:#fff;border-bottom:1px solid #ddd;border-right:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-header button.random .dice{margin-top:0}.customize-control-checkbox .customize-inside-control-row,.customize-control-nav_menu_auto_add .customize-inside-control-row,.customize-control-radio .customize-inside-control-row{margin-right:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:-32px}.customize-control input[type=checkbox]+label+br,.customize-control input[type=radio]+label+br{line-height:32px}.customize-control .date-time-fields select{height:39px}.date-time-fields .date-input.month{width:79px}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:55px}.date-time-fields .date-input.year{width:80px}.date-time-fields .date-timezone{line-height:3.2}#customize-control-changeset_preview_link a{bottom:16px}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{bottom:10px}.media-widget-control .media-widget-buttons .button.change-media,.media-widget-control .media-widget-buttons .button.edit-media,.media-widget-control .media-widget-buttons .button.select-media{margin-top:12px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:3px 25px 3px 0}}@media screen and (max-width:1200px){.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main{right:67%}}@media screen and (max-width:640px){.wp-full-overlay.collapsed #customize-controls{margin-right:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;right:48px;line-height:45px;font-size:14px;padding:0 12px;margin:0;height:45px;background:#eee;border:0;border-left:1px solid #ddd;color:#555d66;cursor:pointer;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.preview-only #customize-save-button-wrapper{margin-top:-46px}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:normal 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-left:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto}#publish-settings{height:31px}#customize-control-changeset_status .customize-inside-control-row{padding-top:15px}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555d66;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}.reorder,.reordering .reorder-done{padding:8px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:0}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}}@media screen and (max-width:600px){.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:8px 15px;box-shadow:none}.wp-full-overlay.expanded{margin-right:0}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{top:46px;z-index:10}body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content{right:-100%}body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{right:0}}@media screen and (min-width:650px) and (max-width:850px){.customize-control-theme .theme .notice .cut{display:inline}}@media screen and (min-width:851px) and (max-width:1018px){.customize-control-theme .theme .notice .cut{display:none}} \ No newline at end of file diff --git a/wp-admin/css/customize-controls.css b/wp-admin/css/customize-controls.css index c990bbe..60bdf05 100644 --- a/wp-admin/css/customize-controls.css +++ b/wp-admin/css/customize-controls.css @@ -21,7 +21,7 @@ body { } #customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked { - background-color: rgba(0, 0, 0, 0.7); + background-color: rgba( 0, 0, 0, 0.7 ); padding: 25px; } @@ -34,7 +34,7 @@ body { padding: 25px 25px 25px 109px; position: relative; background: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); line-height: 1.5; overflow-y: auto; text-align: left; @@ -61,7 +61,7 @@ body { } #customize-controls .description { - color: #50575e; + color: #555d66; } #customize-save-button-wrapper { @@ -80,7 +80,7 @@ body:not(.ready) #customize-save-button-wrapper .save { } #customize-save-button-wrapper .save:focus, #publish-settings:focus { - box-shadow: 0 1px 0 #2271b1, 0 0 2px 1px #72aee6; /* This is default box shadow for focus */ + box-shadow: 0 1px 0 #0073aa, 0 0 2px 1px #33b3db; /* This is default box shadow for focus */ } #customize-save-button-wrapper .save.has-next-sibling { @@ -98,19 +98,13 @@ body:not(.ready) #customize-save-button-wrapper .save { width: 100%; margin: 0; z-index: -1; - background: #f0f0f1; + background: #eee; transition: left .18s; - border-right: 1px solid #dcdcde; - border-left: 1px solid #dcdcde; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; height: 100%; } -@media (prefers-reduced-motion: reduce) { - #customize-sidebar-outer-content { - transition: none; - } -} - #customize-theme-controls .control-section-outer { display: none !important; } @@ -129,12 +123,6 @@ body:not(.ready) #customize-save-button-wrapper .save { transition: left .18s; } -@media (prefers-reduced-motion: reduce) { - .outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content { - transition: none; - } -} - .customize-outer-pane-parent { margin: 0; } @@ -171,7 +159,6 @@ body:not(.ready) #customize-save-button-wrapper .save { float: left; transform: none; margin-top: 0; - line-height: 2; } body:not(.ready) #publish-settings, @@ -191,7 +178,7 @@ body.trashing #publish-settings { } #customize-header-actions { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } #customize-controls .wp-full-overlay-sidebar-content { @@ -200,19 +187,19 @@ body.trashing #publish-settings { } .outer-section-open #customize-controls .wp-full-overlay-sidebar-content { - background: #f0f0f1; + background: #eee; } #customize-controls .customize-info { border: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; margin-bottom: 15px; } #customize-control-changeset_status .customize-inside-control-row, #customize-control-changeset_preview_link input { - background-color: #fff; - border-bottom: 1px solid #dcdcde; + background-color: #ffffff; + border-bottom: 1px solid #ddd; box-sizing: content-box; width: 100%; margin-left: -12px; @@ -238,7 +225,7 @@ body.trashing #publish-settings { } #customize-controls .date-input:invalid { - border-color: #d63638; + border-color: #dc3232; } #customize-control-changeset_status .customize-inside-control-row { @@ -248,7 +235,7 @@ body.trashing #publish-settings { } #customize-control-changeset_status .customize-inside-control-row:first-of-type { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-control-changeset_status .customize-control-title { @@ -280,7 +267,7 @@ body.trashing #publish-settings { content: ""; height: 28px; position: absolute; - background: #fff; + background: #ffffff; top: -1px; } @@ -297,14 +284,12 @@ body.trashing #publish-settings { } #customize-control-changeset_preview_link input { - line-height: 2.85714286; /* 40px */ - border-top: 1px solid #dcdcde; + line-height: 2.5; + border-top: 1px solid #ddd; border-left: none; border-right: none; text-indent: -999px; color: #fff; - /* Only necessary for IE11 */ - min-height: 40px; } #customize-control-changeset_preview_link label { @@ -327,7 +312,7 @@ body.trashing #publish-settings { #customize-control-changeset_preview_link a.disabled:active, #customize-control-changeset_preview_link a.disabled:focus, #customize-control-changeset_preview_link a.disabled:visited { - color: #000; + color: black; opacity: 0.4; cursor: default; outline: none; @@ -362,7 +347,7 @@ body.trashing #publish-settings { } .date-time-fields .date-input.year { - width: 65px; + width: 60px; } .date-time-fields .date-input.meridian { @@ -374,6 +359,11 @@ body.trashing #publish-settings { margin-top: 12px; } +.date-time-fields .date-timezone { + line-height: 2.2; + text-decoration: none; +} + #customize-control-changeset_preview_link { margin-top: 6px; } @@ -388,8 +378,8 @@ body.trashing #publish-settings { width: 100%; margin-left: -12px; padding: 12px; - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #ffffff; + border-bottom: 1px solid #ddd; margin-bottom: 0; } @@ -402,7 +392,7 @@ body.trashing #publish-settings { position: absolute; z-index: 9; width: 100%; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 0 rgba(0, 0, 0, .1); } #customize-controls .customize-section-title.is-in-view { @@ -421,7 +411,7 @@ body.trashing #publish-settings { #customize-controls .customize-info .accordion-section-title { background: #fff; - color: #50575e; + color: #555d66; border-left: none; border-right: none; border-bottom: none; @@ -431,7 +421,7 @@ body.trashing #publish-settings { #customize-controls .customize-info.open .accordion-section-title:after, #customize-controls .customize-info .accordion-section-title:hover:after, #customize-controls .customize-info .accordion-section-title:focus:after { - color: #2c3338; + color: #32373c; } #customize-controls .customize-info .accordion-section-title:after { @@ -440,7 +430,7 @@ body.trashing #publish-settings { #customize-controls .customize-info .preview-notice { font-size: 13px; - line-height: 1.9; + line-height: 24px; } #customize-controls .customize-pane-child .customize-section-title h3, @@ -472,8 +462,9 @@ body.trashing #publish-settings { height: 20px; cursor: pointer; box-shadow: none; + -webkit-appearance: none; background: transparent; - color: #50575e; + color: #555d66; border: none; } @@ -486,18 +477,18 @@ body.trashing #publish-settings { #customize-controls .customize-info.open .customize-help-toggle, #customize-controls .customize-info .customize-help-toggle:focus, #customize-controls .customize-info .customize-help-toggle:hover { - color: #2271b1; + color: #0073aa; } #customize-controls .customize-info .customize-panel-description, #customize-controls .customize-info .customize-section-description, #customize-outer-theme-controls .customize-info .customize-section-description, #customize-controls .no-widget-areas-rendered-notice { - color: #50575e; + color: #555d66; display: none; background: #fff; padding: 12px 15px; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice { @@ -538,25 +529,17 @@ body.trashing #publish-settings { #customize-theme-controls .accordion-section-title, #customize-outer-theme-controls .accordion-section-title { - color: #50575e; + color: #555d66; background-color: #fff; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-left: 4px solid #fff; - transition: - .15s color ease-in-out, - .15s background-color ease-in-out, - .15s border-color ease-in-out; -} - -@media (prefers-reduced-motion: reduce) { - #customize-theme-controls .accordion-section-title, - #customize-outer-theme-controls .accordion-section-title { - transition: none; - } + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; } #customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title { - color: #50575e; + color: #555; background-color: #fff; border-left: 4px solid #fff; } @@ -564,13 +547,12 @@ body.trashing #publish-settings { #customize-theme-controls .accordion-section-title:after, #customize-outer-theme-controls .accordion-section-title:after { content: "\f345"; - font: normal 20px/1 dashicons; - color: #a7aaad; + color: #a0a5aa; } #customize-theme-controls .accordion-section-content, #customize-outer-theme-controls .accordion-section-content { - color: #50575e; + color: #555d66; background: transparent; } @@ -578,20 +560,20 @@ body.trashing #publish-settings { #customize-controls .control-section .accordion-section-title:hover, #customize-controls .control-section.open .accordion-section-title, #customize-controls .control-section .accordion-section-title:focus { - color: #2271b1; - background: #f6f7f7; - border-left-color: #2271b1; + color: #0073aa; + background: #f3f3f5; + border-left-color: #0073aa; } #accordion-section-themes + .control-section { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .js .control-section:hover .accordion-section-title, .js .control-section .accordion-section-title:hover, .js .control-section.open .accordion-section-title, .js .control-section .accordion-section-title:focus { - background: #f6f7f7; + background: #f3f3f5; } #customize-theme-controls .control-section:hover > .accordion-section-title:after, @@ -602,27 +584,27 @@ body.trashing #publish-settings { #customize-outer-theme-controls .control-section .accordion-section-title:hover:after, #customize-outer-theme-controls .control-section.open .accordion-section-title:after, #customize-outer-theme-controls .control-section .accordion-section-title:focus:after { - color: #2271b1; + color: #0073aa; } #customize-theme-controls .control-section.open { - border-bottom: 1px solid #f0f0f1; + border-bottom: 1px solid #eee; } #customize-theme-controls .control-section.open .accordion-section-title, #customize-outer-theme-controls .control-section.open .accordion-section-title { - border-bottom-color: #f0f0f1 !important; + border-bottom-color: #eee !important; } #customize-theme-controls .control-section:last-of-type.open, #customize-theme-controls .control-section:last-of-type > .accordion-section-title { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; } #customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2), #customize-theme-controls .control-panel-nav_menus .control-section-nav_menu, #customize-theme-controls .control-section-nav_menu_locations .accordion-section-title { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-theme-controls .control-panel-nav_menus .control-section-nav_menu + .control-section-nav_menu { @@ -654,14 +636,6 @@ body.trashing #publish-settings { transition: 0.18s transform cubic-bezier(0.645, 0.045, 0.355, 1); /* easeInOutCubic */ } -@media (prefers-reduced-motion: reduce) { - #customize-info, - #customize-theme-controls .customize-pane-parent, - #customize-theme-controls .customize-pane-child { - transition: none; - } -} - #customize-theme-controls .customize-pane-child.skip-transition { transition: none; } @@ -743,8 +717,8 @@ body.trashing #publish-settings { } .customize-section-title { - margin: -12px -12px 0; - border-bottom: 1px solid #dcdcde; + margin: -12px -12px 0 -12px; + border-bottom: 1px solid #ddd; background: #fff; } @@ -765,12 +739,12 @@ div.customize-section-description p:last-child { } #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { - border-bottom: 1px solid #dcdcde; - padding: 12px; + border-bottom: 1px solid #ddd; + padding: 12px 12px 12px 12px; } .ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child { - padding: 12px 12px 13px; + padding: 12px 12px 13px 12px; } .customize-section-title h3, @@ -778,7 +752,7 @@ h3.customize-section-title { padding: 10px 10px 12px 14px; margin: 0; line-height: 21px; - color: #50575e; + color: #555d66; } .accordion-sub-container.control-panel-content { @@ -804,17 +778,16 @@ h3.customize-section-title { width: 45px; height: 41px; padding: 0 2px 0 0; - background: #f0f0f1; + background: #eee; border: none; - border-top: 4px solid #f0f0f1; - border-right: 1px solid #dcdcde; - color: #3c434a; + border-top: 4px solid #eee; + border-right: 1px solid #ddd; + color: #444; text-align: left; cursor: pointer; - transition: - color .15s ease-in-out, - border-color .15s ease-in-out, - background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; box-sizing: content-box; } @@ -828,14 +801,13 @@ h3.customize-section-title { margin: 0; background: #fff; border: none; - border-right: 1px solid #dcdcde; + border-right: 1px solid #ddd; border-left: 4px solid #fff; box-shadow: none; cursor: pointer; - transition: - color .15s ease-in-out, - border-color .15s ease-in-out, - background .15s ease-in-out; + transition: color .15s ease-in-out, + border-color .15s ease-in-out, + background .15s ease-in-out; } .customize-section-back { @@ -858,7 +830,7 @@ h3.customize-section-title { #customize-controls .panel-meta.customize-info .accordion-section-title:hover, #customize-controls .cannot-expand:hover .accordion-section-title { background: #fff; - color: #50575e; + color: #555d66; border-left-color: #fff; } @@ -867,30 +839,22 @@ h3.customize-section-title { .customize-controls-preview-toggle:focus, .customize-controls-preview-toggle:hover { background: #fff; - color: #2271b1; - border-top-color: #2271b1; + color: #0073aa; + border-top-color: #0073aa; + outline: none; box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; } -#customize-theme-controls .accordion-section-title:focus .customize-action { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; - outline-offset: 1px; -} .customize-panel-back:hover, .customize-panel-back:focus, .customize-section-back:hover, .customize-section-back:focus { - color: #2271b1; - background: #f6f7f7; - border-left-color: #2271b1; + color: #0073aa; + background: #f3f3f5; + border-left-color: #0073aa; + outline: none; box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; } .customize-controls-close:before { @@ -910,7 +874,7 @@ h3.customize-section-title { } .wp-full-overlay-sidebar .wp-full-overlay-header { - background-color: #f0f0f1; + background-color: #eee; transition: padding ease-in-out .18s; } @@ -936,6 +900,11 @@ p.customize-section-description { text-align: right; } +.section-description-buttons button.button-link { + color: #0073aa; + text-decoration: underline; +} + .customize-control { width: 100%; float: left; @@ -943,15 +912,21 @@ p.customize-section-description { margin-bottom: 12px; } +.customize-control select, +.customize-control input[type="radio"], +.customize-control input[type="checkbox"] { + line-height: 28px; +} + .customize-control input[type="text"], .customize-control input[type="password"], .customize-control input[type="email"], .customize-control input[type="number"], .customize-control input[type="search"], .customize-control input[type="tel"], -.customize-control input[type="url"], -.customize-control input[type="range"] { +.customize-control input[type="url"] { width: 100%; + line-height: 18px; margin: 0; } @@ -966,6 +941,8 @@ p.customize-section-description { .customize-control select { width: 100%; + height: 28px; + line-height: 28px; } .customize-control select[multiple] { @@ -975,7 +952,7 @@ p.customize-section-description { .customize-control-title { display: block; font-size: 14px; - line-height: 1.75; + line-height: 24px; font-weight: 600; margin-bottom: 4px; } @@ -983,14 +960,14 @@ p.customize-section-description { .customize-control-description { display: block; font-style: italic; - line-height: 1.4; + line-height: 18px; margin-top: 0; margin-bottom: 5px; } .customize-section-description a.external-link:after { font: 16px/11px dashicons; - content: "\f504"; + content: "\f310"; top: 3px; position: relative; padding-left: 3px; @@ -1004,7 +981,7 @@ p.customize-section-description { } .customize-control .customize-inside-control-row { - line-height: 1.6; + line-height: 20px; display: block; margin-left: 24px; padding-top: 6px; @@ -1024,7 +1001,7 @@ p.customize-section-description { .customize-control-radio .customize-control-title { margin-bottom: 0; - line-height: 1.6; + line-height: 22px; } .customize-control-radio .customize-control-title + .customize-control-description { @@ -1090,7 +1067,7 @@ p.customize-section-description { position: absolute; bottom: 0; z-index: 10; - background: #f0f0f1; + background: #eee; display: flex; } @@ -1112,13 +1089,13 @@ p.customize-section-description { } .customize-control-dropdown-pages .new-content-item .create-item-input.invalid { - border: 1px solid #d63638; + border: 1px solid #dc3232; } .customize-control-dropdown-pages .add-new-toggle { margin-left: 1px; font-weight: 600; - line-height: 2.2; + line-height: 28px; } #customize-preview iframe { @@ -1131,8 +1108,8 @@ p.customize-section-description { } .wp-full-overlay-sidebar { - background: #f0f0f1; - border-right: 1px solid #dcdcde; + background: #eee; + border-right: 1px solid #ddd; } @@ -1141,20 +1118,20 @@ p.customize-section-description { */ #customize-controls .customize-control-notifications-container { /* Scoped to #customize-controls for specificity over notification styles in common.css. */ - margin: 4px 0 8px; + margin: 4px 0 8px 0; padding: 0; cursor: default; } #customize-controls .customize-control-widget_form.has-error .widget .widget-top, .customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle { - box-shadow: inset 0 0 0 2px #d63638; + box-shadow: inset 0 0 0 2px #dc3232; transition: .15s box-shadow linear; } #customize-controls .customize-control-notifications-container li.notice { list-style: none; - margin: 0 0 6px; + margin: 0 0 6px 0; padding: 9px 14px; overflow: hidden; } @@ -1175,14 +1152,14 @@ p.customize-section-description { } .customize-control-text.has-error input { - outline: 2px solid #d63638; + outline: 2px solid #dc3232; } #customize-controls #customize-notifications-area { position: absolute; top: 46px; width: 100%; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; display: block; padding: 0; margin: 0; @@ -1210,7 +1187,7 @@ p.customize-section-description { } #customize-controls .panel-meta > .customize-control-notifications-container, #customize-controls .customize-section-title > .customize-control-notifications-container { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #customize-controls #customize-notifications-area .notice, #customize-controls .panel-meta > .customize-control-notifications-container .notice, @@ -1247,7 +1224,7 @@ p.customize-section-description { /* Note: Styles for this are also defined in themes.css */ #customize-controls #customize-notifications-area .notice.notification-overlay .notification-message { clear: both; - color: #1d2327; + color: #191e23; font-size: 18px; font-style: normal; margin: 0; @@ -1291,7 +1268,7 @@ p.customize-section-description { line-height: 16px; margin-right: 16px; padding: 4px 5px; - border: 2px solid #f0f0f1; + border: 2px solid #eee; -webkit-user-select: none; -moz-user-select: none; user-select: none; @@ -1304,13 +1281,13 @@ p.customize-section-description { bottom: 0; right: 0; width: 20px; - background: #f0f0f1; + background: #eee; } .customize-control .dropdown-arrow:after { content: "\f140"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: block; padding: 0; text-indent: 0; @@ -1319,12 +1296,12 @@ p.customize-section-description { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #2c3338; + color: #32373c; } .customize-control .dropdown-status { - color: #2c3338; - background: #f0f0f1; + color: #32373c; + background: #eee; display: none; max-width: 112px; } @@ -1335,7 +1312,7 @@ p.customize-section-description { } .customize-control-color .dropdown .dropdown-content { - background-color: #50575e; + background-color: #555d66; border: 1px solid rgba(0, 0, 0, 0.15); } @@ -1398,42 +1375,22 @@ p.customize-section-description { } .customize-control .attachment-media-view .placeholder, -.customize-control .attachment-media-view .button-add-media, .customize-control-header .placeholder { width: 100%; position: relative; text-align: center; cursor: default; - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; box-sizing: border-box; padding: 9px 0; - line-height: 1.6; -} - -.customize-control .attachment-media-view .button-add-media { - cursor: pointer; - background-color: #f0f0f1; - color: #2c3338; -} - -.customize-control .attachment-media-view .button-add-media:hover { - background-color: #fff; -} - -.customize-control .attachment-media-view .button-add-media:focus { - background-color: #fff; - border-color: #3582c4; - border-style: solid; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + line-height: 20px; } .customize-control-header .inner { display: none; position: absolute; width: 100%; - color: #50575e; + color: #555d66; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; @@ -1457,7 +1414,7 @@ p.customize-section-description { } .customize-control-header .header-view:last-child { - margin-bottom: 0; + margin-bottom: 0px; } /* Convoluted, but 'outline' support isn't good enough yet */ @@ -1470,14 +1427,14 @@ p.customize-section-description { } .customize-control-header .header-view.selected:after { - content: ""; + content: ''; position: absolute; height: auto; top: 0; left: 0; bottom: 0; right: 0; - border: 4px solid #72aee6; + border: 4px solid #00a0d2; border-radius: 2px; } @@ -1490,7 +1447,7 @@ p.customize-section-description { .customize-control-header .uploaded .header-view .close { font-size: 20px; color: #fff; - background: #50575e; + background: #555d66; background: rgba(0, 0, 0, 0.5); position: absolute; top: 10px; @@ -1508,7 +1465,7 @@ p.customize-section-description { } .customize-control-header .header-view .close:focus { - outline: 1px solid #4f94d4; + outline: 1px solid #5b9dd9; } /* Header control: randomiz(s)er */ @@ -1570,8 +1527,8 @@ p.customize-section-description { .customize-control-header .choice:focus { outline: none; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 3px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 3px 1px rgba(30, 140, 190, .8); } .customize-control-header .uploaded div:last-child > .choice { @@ -1662,11 +1619,11 @@ p.customize-section-description { .theme-browser .theme.active .theme-actions, .wp-customizer .theme-browser .theme .theme-actions { - padding: 9px 15px; - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); } -@media screen and (max-width: 640px) { +@media screen and ( max-width: 640px ) { .customize-section-description-container + #customize-control-custom_css:last-child { margin-right: 0; } @@ -1688,12 +1645,12 @@ p.customize-section-description { #customize-theme-controls .control-panel-themes > .accordion-section-title { cursor: default; background: #fff; - color: #50575e; - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #dcdcde; + color: #555d66; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; border-left: none; border-right: none; - margin: 0 0 15px; + margin: 0 0 15px 0; padding-right: 100px; /* Space for the button */ } @@ -1734,12 +1691,6 @@ p.customize-section-description { font-weight: 400; } -#customize-notifications-area .notification-message button.switch-to-editor { - display: block; - margin-top: 6px; - font-weight: 400; -} - #customize-theme-controls .control-panel-themes > .accordion-section-title:after { display: none; } @@ -1754,16 +1705,10 @@ p.customize-section-description { overflow-y: scroll; width: calc(100% - 300px); height: calc(100% - 96px); - background: #f0f0f1; + background: #eee; z-index: 20; } -@media (prefers-reduced-motion: reduce) { - .control-panel-themes .customize-themes-full-container { - transition: none; - } -} - @media screen and (min-width: 1670px) { .control-panel-themes .customize-themes-full-container { width: 82%; @@ -1797,7 +1742,7 @@ p.customize-section-description { } .wp-full-overlay.in-themes-panel { - background: #f0f0f1; /* Prevents a black flash when fading in the panel */ + background: #eee; /* Prevents a black flash when fading in the panel */ } .in-themes-panel #customize-save-button-wrapper, @@ -1826,18 +1771,19 @@ p.customize-section-description { } .themes-filter-bar .feature-filter-toggle:before { - content: "\f111"; - margin: 0 5px 0 0; - font: normal 16px/1 dashicons; - vertical-align: text-bottom; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + content: "\f111"; + margin: 0 5px 0 0; + font: normal 16px/1 dashicons; + vertical-align: text-bottom; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } .themes-filter-bar .feature-filter-toggle.open { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } .themes-filter-bar .feature-filter-toggle .filter-count-filters { @@ -1853,8 +1799,8 @@ p.customize-section-description { padding: 25px 0 25px 25px; border-top: 0; margin: 0; - background: #f0f0f1; - border-bottom: 1px solid #dcdcde; + background: #eee; + border-bottom: 1px solid #ddd; } .filter-drawer .filter-group { @@ -1888,12 +1834,12 @@ p.customize-section-description { .control-panel-themes .filter-themes-count { position: relative; float: right; - line-height: 2.6; + line-height: 34px; } .control-panel-themes .filter-themes-count .themes-displayed { font-weight: 600; - color: #50575e; + color: #555d66; } .customize-themes-notifications { @@ -1901,7 +1847,7 @@ p.customize-section-description { } .control-panel-themes .customize-themes-notifications .notice { - margin: 0 0 25px; + margin: 0 0 25px 0; } .customize-themes-full-container .customize-themes-section { @@ -1915,10 +1861,10 @@ p.customize-section-description { .control-section .customize-section-text-before { padding: 0 0 8px 15px; - margin: 15px 0 0; + margin: 15px 0 0 0; line-height: 16px; - border-bottom: 1px solid #dcdcde; - color: #50575e; + border-bottom: 1px solid #ddd; + color: #555d66; } .control-panel-themes .customize-themes-section-title { @@ -1927,7 +1873,7 @@ p.customize-section-description { box-shadow: none; outline: none; border-top: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-left: 4px solid #fff; border-right: none; cursor: pointer; @@ -1936,12 +1882,12 @@ p.customize-section-description { text-align: left; font-size: 14px; font-weight: 600; - color: #50575e; + color: #555d66; text-shadow: none; } .control-panel-themes #accordion-section-installed_themes { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .control-panel-themes .theme-section { @@ -1951,9 +1897,9 @@ p.customize-section-description { .control-panel-themes .customize-themes-section-title:focus, .control-panel-themes .customize-themes-section-title:hover { - border-left-color: #2271b1; - color: #2271b1; - background: #f6f7f7; + border-left-color: #0073aa; + color: #0073aa; + background: #f5f5f5; } .customize-themes-section-title:not(.selected):after { @@ -1965,7 +1911,7 @@ p.customize-section-description { width: 18px; height: 18px; border-radius: 100%; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; background: #fff; } @@ -1980,12 +1926,12 @@ p.customize-section-description { position: absolute; top: 9px; right: 15px; - background: #2271b1; + background: #0073aa; color: #fff; } .control-panel-themes .customize-themes-section-title.selected { - color: #2271b1; + color: #0073aa; } #customize-theme-controls .themes.accordion-section-content { @@ -2019,7 +1965,7 @@ p.customize-section-description { .customize-control-theme .theme { width: 100%; margin: 0; - border: 1px solid #dcdcde; + border: 1px solid #ddd; background: #fff; } @@ -2096,11 +2042,11 @@ p.customize-section-description { left: 300px; width: calc(100% - 300px); height: 46px; - background: #f0f0f1; + background: #eee; z-index: 10; padding: 6px 25px; box-sizing: border-box; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } @media screen and (min-width: 1670px) { @@ -2117,7 +2063,7 @@ p.customize-section-description { } .themes-filter-bar .wp-filter-search { - line-height: 1.8; + line-height: 25px; padding: 6px 10px 6px 30px; max-width: 100%; width: 40%; @@ -2131,12 +2077,12 @@ p.customize-section-description { /* Unstick the filter bar on short windows/screens. This breakpoint is based on the current length of .org feature filters assuming translations do not wrap lines. */ -@media screen and (max-height: 540px), screen and (max-width: 1018px) { +@media screen and (max-height:540px), screen and (max-width:1018px) { .customize-preview-header.themes-filter-bar { position: relative; left: 0; width: 100%; - margin: 0 0 25px; + margin: 0 0 25px 0; } .filter-drawer { top: 46px; @@ -2154,13 +2100,13 @@ p.customize-section-description { } } -@media screen and (max-width: 1018px) { +@media screen and (max-width:1018px) { .filter-drawer .filter-group { width: calc( (100% - 50px) / 2); } } -@media screen and (max-width: 900px) { +@media screen and (max-width:900px) { .customize-preview-header.themes-filter-bar { height: 86px; padding-top: 46px; @@ -2181,7 +2127,7 @@ p.customize-section-description { } } -@media screen and (max-width: 792px) { +@media screen and (max-width:792px) { .filter-drawer .filter-group { width: calc( 100% - 25px); } @@ -2192,7 +2138,7 @@ p.customize-section-description { } /* Mobile - toggle between themes and filters */ -@media screen and (max-width: 600px) { +@media screen and (max-width:600px) { .filter-drawer { top: 132px; @@ -2221,8 +2167,8 @@ p.customize-section-description { position: fixed; top: 0; left: 0; - background: #f0f0f1; - color: #3c434a; + background: #eee; + color: #444; border-radius: 0; box-shadow: none; border: none; @@ -2231,7 +2177,7 @@ p.customize-section-description { z-index: 10; text-align: left; text-shadow: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-left: 4px solid transparent; margin: 0; padding: 0; @@ -2245,20 +2191,18 @@ p.customize-section-description { height: 46px; width: 26px; display: block; - line-height: 2.3; - padding: 0 8px; - border-right: 1px solid #dcdcde; + line-height: 46px; + padding: 0 8px 0 8px; + border-right: 1px solid #ddd; } .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover, .wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus { - color: #2271b1; - background: #f6f7f7; - border-left-color: #2271b1; + color: #0073aa; + background: #f3f3f5; + border-left-color: #0073aa; + outline: none; box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; } .showing-themes #customize-header-actions { @@ -2297,7 +2241,7 @@ p.customize-section-description { } .wp-customizer .theme-overlay .theme-backdrop { - background: rgba(240, 240, 241, 0.75); + background: rgba( 238, 238, 238, 0.75 ); position: fixed; z-index: 110; } @@ -2322,8 +2266,8 @@ p.customize-section-description { .wp-customizer .theme-overlay .theme-actions { text-align: right; /* Because there're only one or two actions, match the UI pattern of media modals and right-align the action. */ padding: 10px 25px; - background: #f0f0f1; - border-top: 1px solid #dcdcde; + background: #eee; + border-top: 1px solid #ddd; } .wp-customizer .theme-overlay .theme-actions .theme-install.preview { @@ -2342,12 +2286,12 @@ p.customize-section-description { } .wp-customizer .theme-header { - background: #f0f0f1; + background: #eee; } .wp-customizer .theme-overlay .theme-header button, .wp-customizer .theme-overlay .theme-header .close:before { - color: #3c434a; + color: #444; } .wp-customizer .theme-overlay .theme-header .close:focus, @@ -2357,13 +2301,13 @@ p.customize-section-description { .wp-customizer .theme-overlay .theme-header .left:focus, .wp-customizer .theme-overlay .theme-header .left:hover { background: #fff; - border-bottom: 4px solid #2271b1; - color: #2271b1; + border-bottom: 4px solid #0073aa; + color: #0073aa; } .wp-customizer .theme-overlay .theme-header .close:focus:before, .wp-customizer .theme-overlay .theme-header .close:hover:before { - color: #2271b1; + color: #0073aa; } .wp-customizer .theme-overlay .theme-header button.disabled, @@ -2371,11 +2315,11 @@ p.customize-section-description { .wp-customizer .theme-overlay .theme-header button.disabled:focus { border-bottom: none; background: transparent; - color: #c3c4c7; + color: #ccc; } /* Small Screens */ -@media (max-width: 850px), (max-height: 472px) { +@media (max-width:850px), (max-height:472px) { .wp-customizer .theme-overlay .theme-wrap { left: 0; right: 0; @@ -2393,22 +2337,22 @@ body.cheatin { font-size: medium; height: auto; background: #fff; - border: 1px solid #c3c4c7; margin: 50px auto 2em; padding: 1em 2em; max-width: 700px; min-width: 0; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 1px 3px rgba(0,0,0,0.13); } body.cheatin h1 { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; clear: both; - color: #50575e; + color: #555d66; font-size: 24px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - margin: 30px 0 0; - padding: 0 0 7px; + margin: 30px 0 0 0; + padding: 0; + padding-bottom: 7px; } body.cheatin p { @@ -2426,7 +2370,8 @@ body.cheatin p { #customize-theme-controls .add-new-menu-item { cursor: pointer; float: right; - margin: 0 0 0 10px; + margin: 0; + margin-left: 10px; transition: all 0.2s; -webkit-user-select: none; -moz-user-select: none; @@ -2484,7 +2429,7 @@ body.cheatin p { display: block; width: 33px; /* was 42px for mobile */ height: 43px; - color: #8c8f94; + color: #82878c; text-indent: -9999px; cursor: pointer; outline: none; @@ -2517,8 +2462,8 @@ body.cheatin p { .widget-reorder-nav span:focus, .menu-item-reorder-nav button:hover, .menu-item-reorder-nav button:focus { - color: #1d2327; - background: #f0f0f1; + color: #191e23; + background: #eee; } .move-widget-down:before, @@ -2537,7 +2482,7 @@ body.cheatin p { .move-down-disabled .menus-move-down, .move-right-disabled .menus-move-right, .move-left-disabled .menus-move-left { - color: #dcdcde; + color: #d5d5d5; background-color: #fff; cursor: default; pointer-events: none; @@ -2558,9 +2503,9 @@ body.adding-widget .add-new-widget:hover, .adding-menu-items .add-new-menu-item:hover, .add-menu-toggle.open, .add-menu-toggle.open:hover { - background: #f0f0f1; - border-color: #8c8f94; - color: #2c3338; + background: #eee; + border-color: #929793; + color: #32373c; box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); } @@ -2582,9 +2527,9 @@ body.adding-widget .add-new-widget:before, width: 300px; margin: 0; z-index: 4; - background: #f0f0f1; + background: #eee; transition: left .18s; - border-right: 1px solid #dcdcde; + border-right: 1px solid #ddd; } #available-widgets .customize-section-title, @@ -2598,7 +2543,7 @@ body.adding-widget .add-new-widget:before, overflow: auto; bottom: 0; width: 100%; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .no-widgets-found #available-widgets-list { @@ -2610,7 +2555,7 @@ body.adding-widget .add-new-widget:before, top: 0; z-index: 1; width: 300px; - background: #f0f0f1; + background: #eee; } /* search field container */ @@ -2623,9 +2568,9 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter input, #available-menu-items-search input { width: 100%; - min-height: 32px; + height: 32px; margin: 1px 0; - padding: 0 30px; + padding: 6px 30px; } #available-widgets-filter input::-ms-clear, @@ -2641,9 +2586,9 @@ body.adding-widget .add-new-widget:before, left: 16px; width: 30px; height: 30px; - line-height: 2.1; + line-height: 28px; text-align: center; - color: #646970; + color: #72777c; } #available-widgets-filter .clear-results, @@ -2657,7 +2602,7 @@ body.adding-widget .add-new-widget:before, border: 0; cursor: pointer; background: none; - color: #d63638; + color: #a00; text-decoration: none; outline: 0; } @@ -2686,14 +2631,14 @@ body.adding-widget .add-new-widget:before, #available-widgets-filter .clear-results:focus, #available-menu-items-search .clear-results:hover, #available-menu-items-search .clear-results:focus { - color: #d63638; + color: #dc3232; } #available-widgets-filter .clear-results:focus, #available-menu-items-search .clear-results:focus { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } #available-menu-items-search .search-icon:after, @@ -2711,7 +2656,7 @@ body.adding-widget .add-new-widget:before, top: 7px; left: 26px; z-index: 1; - color: #646970; + color: #72777c; height: 30px; width: 30px; line-height: 2; @@ -2741,14 +2686,13 @@ body.adding-widget .add-new-widget:before, #available-widgets .widget-tpl, #available-menu-items .item-tpl { position: relative; - padding: 15px; + padding: 15px 15px 15px 60px; background: #fff; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; border-left: 4px solid #fff; - transition: - .15s color ease-in-out, - .15s background-color ease-in-out, - .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; cursor: pointer; display: none; } @@ -2792,7 +2736,7 @@ body.adding-widget .add-new-widget:before, .customize-control input[type="radio"] + label + br, .customize-control input[type="checkbox"] + label + br { - line-height: 2.5; /* For widgets checkboxes */ + line-height: 32px; /* For widgets checkboxes */ } .customize-control .date-time-fields select { @@ -2813,6 +2757,10 @@ body.adding-widget .add-new-widget:before, width: 80px; } + .date-time-fields .date-timezone { + line-height: 3.2; + } + #customize-control-changeset_preview_link a { bottom: 16px; } @@ -2832,7 +2780,7 @@ body.adding-widget .add-new-widget:before, } } -@media screen and (max-width: 1200px) { +@media screen and ( max-width: 1200px ) { .outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, .adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main, .adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main { @@ -2840,10 +2788,10 @@ body.adding-widget .add-new-widget:before, } } -@media screen and (max-width: 640px) { +@media screen and ( max-width: 640px ) { /* when the sidebar is collapsed and switching to responsive view, - bring it back see ticket #35220 */ + bring it back see https://core.trac.wordpress.org/ticket/35220 */ .wp-full-overlay.collapsed #customize-controls { margin-left: 0; } @@ -2857,16 +2805,15 @@ body.adding-widget .add-new-widget:before, position: absolute; top: 0; left: 48px; - line-height: 2.6; + line-height: 45px; font-size: 14px; - padding: 0 12px 4px; + padding: 0 12px; margin: 0; height: 45px; - background: #f0f0f1; + background: #eee; border: 0; - border-right: 1px solid #dcdcde; - border-top: 4px solid #f0f0f1; - color: #50575e; + border-right: 1px solid #ddd; + color: #555d66; cursor: pointer; transition: color .1s ease-in-out, background .1s ease-in-out; } @@ -2906,11 +2853,15 @@ body.adding-widget .add-new-widget:before, } .wp-core-ui.wp-customizer .button { - min-height: 30px; - padding: 0 14px; - line-height: 2; + padding: 6px 14px; + line-height: normal; font-size: 14px; vertical-align: middle; + height: auto; + } + + #publish-settings { + height: 31px; } #customize-control-changeset_status .customize-inside-control-row { @@ -2941,7 +2892,7 @@ body.adding-widget .add-new-widget:before, padding: 9px 10px 12px 14px; margin: 0; line-height: 24px; - color: #50575e; + color: #555d66; display: block; overflow: hidden; white-space: nowrap; @@ -2981,9 +2932,21 @@ body.adding-widget .add-new-widget:before, .wp-core-ui .themes-filter-bar .feature-filter-toggle { margin: 0; } + + .theme-browser .theme.active .theme-actions, + .wp-customizer .theme-browser .theme .theme-actions { + padding: 9px 15px; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); + } } -@media screen and (max-width: 600px) { +@media screen and ( max-width: 600px ) { + .theme-browser .theme.active .theme-actions, + .wp-customizer .theme-browser .theme .theme-actions { + padding: 8px 15px; + box-shadow: none; + } + .wp-full-overlay.expanded { margin-left: 0; } @@ -3003,3 +2966,19 @@ body.adding-widget .add-new-widget:before, left: 0; } } + +/* Fix theme notices in customizer (overrides wp-admin/css/theme.css) */ + +@media screen and ( min-width: 650px ) and ( max-width: 850px ) { + /* Themes are shown in 1 wide column, can show full notices */ + .customize-control-theme .theme .notice .cut { + display: inline; + } +} + +@media screen and ( min-width: 851px ) and ( max-width: 1018px ) { + /* Themes are shown in 2 narrow columns, cut the notices */ + .customize-control-theme .theme .notice .cut { + display: none; + } +} diff --git a/wp-admin/css/customize-controls.min.css b/wp-admin/css/customize-controls.min.css index 35c463b..92edfc3 100644 --- a/wp-admin/css/customize-controls.min.css +++ b/wp-admin/css/customize-controls.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked{background-color:rgba(0,0,0,.7);padding:25px}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message{margin-left:auto;margin-right:auto;max-width:366px;min-height:64px;width:auto;padding:25px 25px 25px 109px;position:relative;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;overflow-y:auto;text-align:left;top:calc(50% - 100px)}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing{margin-top:0}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons{margin-bottom:0}.customize-changeset-locked-avatar{width:64px;position:absolute;left:25px;top:25px}.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button{margin-right:10px;margin-top:0}#customize-controls .description{color:#50575e}#customize-save-button-wrapper{float:right;margin-top:9px}body:not(.ready) #customize-save-button-wrapper .save{visibility:hidden}#customize-save-button-wrapper .save{float:left;border-radius:3px;box-shadow:none;margin-top:0}#customize-save-button-wrapper .save:focus,#publish-settings:focus{box-shadow:0 1px 0 #2271b1,0 0 2px 1px #72aee6}#customize-save-button-wrapper .save.has-next-sibling{border-radius:3px 0 0 3px}#customize-sidebar-outer-content{position:absolute;top:0;bottom:0;left:0;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:100%;margin:0;z-index:-1;background:#f0f0f1;transition:left .18s;border-right:1px solid #dcdcde;border-left:1px solid #dcdcde;height:100%}@media (prefers-reduced-motion:reduce){#customize-sidebar-outer-content{transition:none}}#customize-theme-controls .control-section-outer{display:none!important}#customize-outer-theme-controls .accordion-section-content{padding:12px}#customize-outer-theme-controls .accordion-section-content.open{display:block}.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{visibility:visible;left:100%;transition:left .18s}@media (prefers-reduced-motion:reduce){.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{transition:none}}.customize-outer-pane-parent{margin:0}.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main{left:300px;opacity:.4}.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main{left:64%}#customize-outer-theme-controls li.notice{padding-top:8px;padding-bottom:8px;margin-left:0;margin-bottom:10px}#publish-settings{text-indent:0;border-radius:0 3px 3px 0;padding-left:0;padding-right:0;box-shadow:none;font-size:14px;width:30px;float:left;transform:none;margin-top:0;line-height:2}body.trashing #customize-save-button-wrapper .save,body.trashing #publish-settings,body:not(.ready) #publish-settings{display:none}#customize-header-actions .spinner{margin-top:13px;margin-right:4px}.saving #customize-header-actions .spinner,.trashing #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #dcdcde}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}.outer-section-open #customize-controls .wp-full-overlay-sidebar-content{background:#f0f0f1}#customize-controls .customize-info{border:none;border-bottom:1px solid #dcdcde;margin-bottom:15px}#customize-control-changeset_preview_link input,#customize-control-changeset_status .customize-inside-control-row{background-color:#fff;border-bottom:1px solid #dcdcde;box-sizing:content-box;width:100%;margin-left:-12px;padding-left:12px;padding-right:12px}#customize-control-trash_changeset{margin-top:20px}#customize-control-trash_changeset .button-link{position:relative;padding-left:24px;display:inline-block}#customize-control-trash_changeset .button-link:before{content:"\f182";font:normal 22px dashicons;text-decoration:none;position:absolute;left:0;top:-2px}#customize-controls .date-input:invalid{border-color:#d63638}#customize-control-changeset_status .customize-inside-control-row{padding-top:10px;padding-bottom:10px;font-weight:500}#customize-control-changeset_status .customize-inside-control-row:first-of-type{border-top:1px solid #dcdcde}#customize-control-changeset_status .customize-control-title{margin-bottom:6px}#customize-control-changeset_status input{margin-left:0}#customize-control-changeset_preview_link{position:relative;display:block}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{margin:0;position:absolute;bottom:9px;right:0}.preview-link-wrapper{position:relative}.customize-copy-preview-link:after,.customize-copy-preview-link:before{content:"";height:28px;position:absolute;background:#fff;top:-1px}.customize-copy-preview-link:before{left:-10px;width:9px;opacity:.75}.customize-copy-preview-link:after{left:-5px;width:4px;opacity:.8}#customize-control-changeset_preview_link input{line-height:2.85714286;border-top:1px solid #dcdcde;border-left:none;border-right:none;text-indent:-999px;color:#fff;min-height:40px}#customize-control-changeset_preview_link label{position:relative;display:block}#customize-control-changeset_preview_link a{display:inline-block;position:absolute;white-space:nowrap;overflow:hidden;width:90%;bottom:14px;font-size:14px;text-decoration:none}#customize-control-changeset_preview_link a.disabled,#customize-control-changeset_preview_link a.disabled:active,#customize-control-changeset_preview_link a.disabled:focus,#customize-control-changeset_preview_link a.disabled:visited{color:#000;opacity:.4;cursor:default;outline:0;box-shadow:none}#sub-accordion-section-publish_settings .customize-section-description-container{display:none}#customize-controls .customize-info.section-meta{margin-bottom:15px}.customize-control-date_time .customize-control-description+.date-time-fields.includes-time{margin-top:10px}.customize-control.customize-control-date_time .date-time-fields .date-input.day{margin-right:0}.date-time-fields .date-input.month{width:auto;margin:0}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:46px}.date-time-fields .date-input.year{width:65px}.date-time-fields .date-input.meridian{width:auto;margin:0}.date-time-fields .time-row{margin-top:12px}#customize-control-changeset_preview_link{margin-top:6px}#customize-control-changeset_status{margin-bottom:0;padding-bottom:0}#customize-control-changeset_scheduled_date{box-sizing:content-box;width:100%;margin-left:-12px;padding:12px;background:#fff;border-bottom:1px solid #dcdcde;margin-bottom:0}#customize-control-changeset_scheduled_date .customize-control-description{font-style:normal}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#50575e;border-left:none;border-right:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#2c3338}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:1.9}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title,#customize-outer-theme-controls .customize-pane-child .customize-section-title h3,#customize-outer-theme-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;right:1px;padding:20px 20px 10px 10px;width:20px;height:20px;cursor:pointer;box-shadow:none;background:0 0;color:#50575e;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;left:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#2271b1}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice,#customize-outer-theme-controls .customize-info .customize-section-description{color:#50575e;display:none;background:#fff;padding:12px 15px;border-top:1px solid #dcdcde}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}.no-widget-areas-rendered-notice{font-style:italic}.no-widget-areas-rendered-notice p:first-child{margin-top:0}.no-widget-areas-rendered-notice p:last-child{margin-bottom:0}#customize-controls .customize-info .customize-section-description{margin-bottom:15px}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-right:30px}#customize-outer-theme-controls .control-section,#customize-theme-controls .control-section{border:none}#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{color:#50575e;background-color:#fff;border-bottom:1px solid #dcdcde;border-left:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}@media (prefers-reduced-motion:reduce){#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{transition:none}}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#50575e;background-color:#fff;border-left:4px solid #fff}#customize-outer-theme-controls .accordion-section-title:after,#customize-theme-controls .accordion-section-title:after{content:"\f345";font:normal 20px/1 dashicons;color:#a7aaad}#customize-outer-theme-controls .accordion-section-content,#customize-theme-controls .accordion-section-content{color:#50575e;background:0 0}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#2271b1;background:#f6f7f7;border-left-color:#2271b1}#accordion-section-themes+.control-section{border-top:1px solid #dcdcde}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f6f7f7}#customize-outer-theme-controls .control-section .accordion-section-title:focus:after,#customize-outer-theme-controls .control-section .accordion-section-title:hover:after,#customize-outer-theme-controls .control-section.open .accordion-section-title:after,#customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#2271b1}#customize-theme-controls .control-section.open{border-bottom:1px solid #f0f0f1}#customize-outer-theme-controls .control-section.open .accordion-section-title,#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#f0f0f1!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#dcdcde}#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title{border-top:1px solid #dcdcde}#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu+.control-section-nav_menu{border-top:none}#customize-theme-controls>ul{margin:0}#customize-theme-controls .accordion-section-content{position:absolute;top:0;left:100%;width:100%;margin:0;padding:12px;box-sizing:border-box}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{overflow:visible;width:100%;margin:0;padding:0;box-sizing:border-box;transition:.18s transform cubic-bezier(.645, .045, .355, 1)}@media (prefers-reduced-motion:reduce){#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{transition:none}}#customize-theme-controls .customize-pane-child.skip-transition{transition:none}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;left:0;visibility:hidden;height:0;max-height:none;overflow:hidden;transform:translateX(100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open{transform:none}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.control-section-nav_menu .customize-section-description-container,.control-section-new_menu .customize-section-description-container,.customize-section-description-container{margin-bottom:15px}.control-section-nav_menu .customize-control,.control-section-new_menu .customize-control{margin-bottom:0}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #dcdcde;background:#fff}div.customize-section-description{margin-top:22px}.customize-info div.customize-section-description{margin-top:0}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #dcdcde;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 10px 12px 14px;margin:0;line-height:21px;color:#50575e}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;left:0;width:45px;height:41px;padding:0 2px 0 0;background:#f0f0f1;border:none;border-top:4px solid #f0f0f1;border-right:1px solid #dcdcde;color:#3c434a;text-align:left;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:left;width:48px;height:71px;padding:0 24px 0 0;margin:0;background:#fff;border:none;border-right:1px solid #dcdcde;border-left:4px solid #fff;box-shadow:none;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-left:48px;border-left:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#50575e;border-left-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#2271b1;border-top-color:#2271b1;box-shadow:none;outline:1px solid transparent}#customize-theme-controls .accordion-section-title:focus .customize-action{outline:1px solid transparent;outline-offset:1px}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#2271b1;background:#f6f7f7;border-left-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.customize-controls-close:before{font:normal 22px/45px dashicons;content:"\f335";position:relative;top:-3px;left:13px}.customize-panel-back:before,.customize-section-back:before{font:normal 20px/72px dashicons;content:"\f341";position:relative;left:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#f0f0f1;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-left:62px}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-section-description ul{margin-left:1em}.customize-section-description ul>li{list-style:disc}.section-description-buttons{text-align:right}.customize-control{width:100%;float:left;clear:both;margin-bottom:12px}.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=password],.customize-control input[type=range],.customize-control input[type=search],.customize-control input[type=tel],.customize-control input[type=text],.customize-control input[type=url]{width:100%;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:1.75;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:1.4;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f504";top:3px;position:relative;padding-left:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control .customize-inside-control-row{line-height:1.6;display:block;margin-left:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:4px;margin-left:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:1.6}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-checkbox label,.customize-control-radio label{vertical-align:top}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image,.customize-control .wp-media-wrapper.wp-video,.customize-control-header .current{line-height:0}.customize-control-site_icon .favicon-preview .browser-preview{vertical-align:top}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:left}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#f0f0f1;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;padding:5px 0 5px 1px;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 0 2px 6px;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid #d63638}.customize-control-dropdown-pages .add-new-toggle{margin-left:1px;font-weight:600;line-height:2.2}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#f0f0f1;border-right:1px solid #dcdcde}#customize-controls .customize-control-notifications-container{margin:4px 0 8px;padding:0;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{box-shadow:inset 0 0 0 2px #d63638;transition:.15s box-shadow linear}#customize-controls .customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px;padding:9px 14px;overflow:hidden}#customize-controls .customize-control-notifications-container .notice.is-dismissible{padding-right:38px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container{margin-top:8px}.customize-control-text.has-error input{outline:2px solid #d63638}#customize-controls #customize-notifications-area{position:absolute;top:46px;width:100%;border-bottom:1px solid #dcdcde;display:block;padding:0;margin:0}.wp-full-overlay.collapsed #customize-controls #customize-notifications-area{display:none!important}#customize-controls #customize-notifications-area:not(.has-overlay-notifications),#customize-controls .customize-section-title>.customize-control-notifications-container:not(.has-overlay-notifications),#customize-controls .panel-meta>.customize-control-notifications-container:not(.has-overlay-notifications){max-height:210px;overflow-x:hidden;overflow-y:auto}#customize-controls #customize-notifications-area .notice,#customize-controls #customize-notifications-area>ul,#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container .notice{margin:0}#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container{border-top:1px solid #dcdcde}#customize-controls #customize-notifications-area .notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice{padding:9px 14px}#customize-controls #customize-notifications-area .notice.is-dismissible,#customize-controls .customize-section-title>.customize-control-notifications-container .notice.is-dismissible,#customize-controls .panel-meta>.customize-control-notifications-container .notice.is-dismissible{padding-right:38px}#customize-controls #customize-notifications-area .notice+.notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice+.notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice+.notice{margin-top:1px}@keyframes customize-fade-in{0%{opacity:0}100%{opacity:1}}#customize-controls #customize-notifications-area .notice.notification-overlay,#customize-controls .notice.notification-overlay{margin:0;border-left:0}#customize-controls .customize-control-notifications-container.has-overlay-notifications{animation:customize-fade-in .5s;z-index:30}#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message{clear:both;color:#1d2327;font-size:18px;font-style:normal;margin:0;padding:2em 0;text-align:center;width:100%;display:block;top:50%;position:relative}#customize-control-show_on_front.has-error{margin-bottom:0}#customize-control-show_on_front.has-error .customize-control-notifications-container{margin-top:12px}.accordion-section .dropdown{float:left;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;border:2px solid #f0f0f1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:20px;background:#f0f0f1}.customize-control .dropdown-arrow:after{content:"\f140";font:normal 20px/1 dashicons;speak:never;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#2c3338}.customize-control .dropdown-status{color:#2c3338;background:#f0f0f1;display:none;max-width:112px}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#50575e;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control .actions .button{margin-top:12px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-header button img{display:block}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{width:auto;height:auto;white-space:normal}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .button-add-media,.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #c3c4c7;box-sizing:border-box;padding:9px 0;line-height:1.6}.customize-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.customize-control .attachment-media-view .button-add-media:hover{background-color:#fff}.customize-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-color:#3582c4;border-style:solid;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#50575e;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:12px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:"";position:absolute;height:auto;top:0;left:0;bottom:0;right:0;border:4px solid #72aee6;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#50575e;background:rgba(0,0,0,.5);position:absolute;top:10px;left:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{left:auto;right:10px}.customize-control-header .header-view .close:focus{outline:1px solid #4f94d4}.customize-control-header .random.placeholder{cursor:pointer;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{animation:dice-color-change 3s infinite}.button-see-me{animation:bounce .7s 1;transform-origin:center bottom}@keyframes bounce{20%,53%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-12px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-6px,0)}90%{transform:translate3d(0,-1px,0)}}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 3px 1px rgba(79,148,212,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{margin-right:8px}.customize-control-background_position .background-position-control .button-group{display:block}.customize-control-code_editor textarea{width:100%;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.customize-control-code_editor .CodeMirror,.customize-control-code_editor textarea{height:14em}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;height:500px}.customize-section-description-container+#customize-control-custom_css .customize-control-title{margin-left:12px}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-right:0;border-left:0;height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:-12px;width:299px;width:calc(100% + 24px);margin-bottom:-12px}.customize-section-description-container+#customize-control-custom_css:last-child .CodeMirror{height:calc(100vh - 185px)}.CodeMirror-hints,.CodeMirror-lint-tooltip{z-index:500000!important}.customize-section-description-container+#customize-control-custom_css:last-child .customize-control-notifications-container{margin-left:12px;margin-right:12px}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:0}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:calc(100vh - 140px)}}#customize-theme-controls .control-panel-themes{border-bottom:none}#customize-theme-controls .control-panel-themes>.accordion-section-title,#customize-theme-controls .control-panel-themes>.accordion-section-title:hover{cursor:default;background:#fff;color:#50575e;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;border-left:none;border-right:none;margin:0 0 15px;padding-right:100px}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-right:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action,.control-panel-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme{position:absolute;right:10px;top:50%;margin-top:-14px;font-weight:400}#customize-notifications-area .notification-message button.switch-to-editor{display:block;margin-top:6px;font-weight:400}#customize-theme-controls .control-panel-themes>.accordion-section-title:after{display:none}.control-panel-themes .customize-themes-full-container{position:fixed;top:0;left:0;transition:.18s left ease-in-out;margin:0 0 0 300px;padding:71px 0 25px;overflow-y:scroll;width:calc(100% - 300px);height:calc(100% - 96px);background:#f0f0f1;z-index:20}@media (prefers-reduced-motion:reduce){.control-panel-themes .customize-themes-full-container{transition:none}}@media screen and (min-width:1670px){.control-panel-themes .customize-themes-full-container{width:82%;right:0;left:initial}}.modal-open .control-panel-themes .customize-themes-full-container{overflow-y:visible}#customize-header-actions .customize-controls-preview-toggle,#customize-header-actions .spinner,#customize-save-button-wrapper{transition:.18s margin ease-in-out}#customize-footer-actions,#customize-footer-actions .collapse-sidebar{bottom:0;transition:.18s bottom ease-in-out}.in-themes-panel:not(.animating) #customize-footer-actions,.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel:not(.animating) #customize-header-actions .spinner,.in-themes-panel:not(.animating) #customize-preview{visibility:hidden}.wp-full-overlay.in-themes-panel{background:#f0f0f1}.in-themes-panel #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel #customize-header-actions .spinner,.in-themes-panel #customize-save-button-wrapper{margin-top:-46px}.in-themes-panel #customize-footer-actions,.in-themes-panel #customize-footer-actions .collapse-sidebar{bottom:-45px}.in-themes-panel.animating .control-panel-themes .filter-themes-count{display:none}.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content{bottom:0}.themes-filter-bar .feature-filter-toggle{float:right;margin:3px 0 3px 25px}.themes-filter-bar .feature-filter-toggle:before{content:"\f111";margin:0 5px 0 0;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .feature-filter-toggle.open{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.themes-filter-bar .feature-filter-toggle .filter-count-filters{display:none}.filter-drawer{box-sizing:border-box;width:100%;position:absolute;top:46px;left:0;padding:25px 0 25px 25px;border-top:0;margin:0;background:#f0f0f1;border-bottom:1px solid #dcdcde}.filter-drawer .filter-group{margin:0 25px 0 0;width:calc((100% - 75px)/ 3);min-width:200px;max-width:320px}@keyframes themes-fade-in{0%{opacity:0}50%{opacity:0}100%{opacity:1}}.control-panel-themes .customize-themes-full-container.animate{animation:.6s themes-fade-in 1}.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count{animation:.6s themes-fade-in 1}.control-panel-themes .filter-themes-count{position:relative;float:right;line-height:2.6}.control-panel-themes .filter-themes-count .themes-displayed{font-weight:600;color:#50575e}.customize-themes-notifications{margin:0}.control-panel-themes .customize-themes-notifications .notice{margin:0 0 25px}.customize-themes-full-container .customize-themes-section{display:none!important;overflow:hidden}.customize-themes-full-container .customize-themes-section.current-section{display:list-item!important}.control-section .customize-section-text-before{padding:0 0 8px 15px;margin:15px 0 0;line-height:16px;border-bottom:1px solid #dcdcde;color:#50575e}.control-panel-themes .customize-themes-section-title{width:100%;background:#fff;box-shadow:none;outline:0;border-top:none;border-bottom:1px solid #dcdcde;border-left:4px solid #fff;border-right:none;cursor:pointer;padding:10px 15px;position:relative;text-align:left;font-size:14px;font-weight:600;color:#50575e;text-shadow:none}.control-panel-themes #accordion-section-installed_themes{border-top:1px solid #dcdcde}.control-panel-themes .theme-section{margin:0;position:relative}.control-panel-themes .customize-themes-section-title:focus,.control-panel-themes .customize-themes-section-title:hover{border-left-color:#2271b1;color:#2271b1;background:#f6f7f7}.customize-themes-section-title:not(.selected):after{content:"";display:block;position:absolute;top:9px;right:15px;width:18px;height:18px;border-radius:100%;border:1px solid #c3c4c7;background:#fff}.control-panel-themes .theme-section .customize-themes-section-title.selected:after{content:"\f147";font:16px/1 dashicons;box-sizing:border-box;width:20px;height:20px;padding:3px 3px 1px 1px;border-radius:100%;position:absolute;top:9px;right:15px;background:#2271b1;color:#fff}.control-panel-themes .customize-themes-section-title.selected{color:#2271b1}#customize-theme-controls .themes.accordion-section-content{position:relative;left:0;padding:0;width:100%}.loading .customize-themes-section .spinner{display:block;visibility:visible;position:relative;clear:both;width:20px;height:20px;left:calc(50% - 10px);float:none;margin-top:50px}.customize-themes-section .no-themes,.customize-themes-section .no-themes-local{display:none}.themes-section-installed_themes .theme .notice-success:not(.updated-message){display:none}.customize-control-theme .theme{width:100%;margin:0;border:1px solid #dcdcde;background:#fff}.customize-control-theme .theme .theme-actions,.customize-control-theme .theme .theme-name{background:#fff;border:none}.customize-control.customize-control-theme{box-sizing:border-box;width:25%;max-width:600px;margin:0 25px 25px 0;padding:0;clear:none}@media screen and (min-width:2101px){.customize-control.customize-control-theme{width:calc((100% - 125px)/ 5 - 1px)}}@media screen and (min-width:1601px) and (max-width:2100px){.customize-control.customize-control-theme{width:calc((100% - 100px)/ 4 - 1px)}}@media screen and (min-width:1201px) and (max-width:1600px){.customize-control.customize-control-theme{width:calc((100% - 75px)/ 3 - 1px)}}@media screen and (min-width:851px) and (max-width:1200px){.customize-control.customize-control-theme{width:calc((100% - 50px)/ 2 - 1px)}}@media screen and (max-width:850px){.customize-control.customize-control-theme{width:100%}}.wp-customizer .theme-browser .themes{padding:0 0 25px 25px;transition:.18s margin-top linear}.wp-customizer .theme-browser .theme .theme-actions{opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.customize-preview-header.themes-filter-bar{position:fixed;top:0;left:300px;width:calc(100% - 300px);height:46px;background:#f0f0f1;z-index:10;padding:6px 25px;box-sizing:border-box;border-bottom:1px solid #dcdcde}@media screen and (min-width:1670px){.customize-preview-header.themes-filter-bar{width:82%;right:0;left:initial}}.themes-filter-bar .themes-filter-container{margin:0;padding:0}.themes-filter-bar .wp-filter-search{line-height:1.8;padding:6px 10px 6px 30px;max-width:100%;width:40%;min-width:300px;position:absolute;top:6px;left:25px;height:32px;margin:1px 0}@media screen and (max-height:540px),screen and (max-width:1018px){.customize-preview-header.themes-filter-bar{position:relative;left:0;width:100%;margin:0 0 25px}.filter-drawer{top:46px}.wp-customizer .theme-browser .themes{padding:0 0 25px 25px;overflow:hidden}.control-panel-themes .customize-themes-full-container{margin-top:0;padding:0;height:100%;width:calc(100% - 300px)}}@media screen and (max-width:1018px){.filter-drawer .filter-group{width:calc((100% - 50px)/ 2)}}@media screen and (max-width:900px){.customize-preview-header.themes-filter-bar{height:86px;padding-top:46px}.themes-filter-bar .wp-filter-search{width:calc(100% - 50px);margin:0;min-width:200px}.filter-drawer{top:86px}.control-panel-themes .filter-themes-count{float:left}}@media screen and (max-width:792px){.filter-drawer .filter-group{width:calc(100% - 25px)}}.control-panel-themes .customize-themes-mobile-back{display:none}@media screen and (max-width:600px){.filter-drawer{top:132px}.wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes{display:block;float:right}.control-panel-themes .customize-themes-full-container{width:100%;margin:0;padding-top:46px;height:calc(100% - 46px);z-index:1;display:none}.showing-themes .control-panel-themes .customize-themes-full-container{display:block}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back{display:block;position:fixed;top:0;left:0;background:#f0f0f1;color:#3c434a;border-radius:0;box-shadow:none;border:none;height:46px;width:100%;z-index:10;text-align:left;text-shadow:none;border-bottom:1px solid #dcdcde;border-left:4px solid transparent;margin:0;padding:0;font-size:0;overflow:hidden}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before{left:0;top:0;height:46px;width:26px;display:block;line-height:2.3;padding:0 8px;border-right:1px solid #dcdcde}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus,.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover{color:#2271b1;background:#f6f7f7;border-left-color:#2271b1;box-shadow:none;outline:2px solid transparent;outline-offset:-2px}.showing-themes #customize-header-actions{display:none}#customize-controls{width:100%}}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:109}.wp-customizer.modal-open #customize-header-actions,.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after,.wp-customizer.modal-open .control-panel-themes .filter-themes-count{z-index:-1}.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(240,240,241,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .star-rating{float:left;margin-right:8px}.wp-customizer .theme-rating .num-ratings{line-height:20px}.wp-customizer .theme-overlay .theme-wrap{left:90px;right:90px;top:45px;bottom:45px;z-index:120}.wp-customizer .theme-overlay .theme-actions{text-align:right;padding:10px 25px;background:#f0f0f1;border-top:1px solid #dcdcde}.wp-customizer .theme-overlay .theme-actions .theme-install.preview{margin-left:8px}.control-panel-themes .theme-actions .delete-theme{left:15px;right:auto;bottom:auto;position:absolute}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-header{background:#f0f0f1}.wp-customizer .theme-overlay .theme-header .close:before,.wp-customizer .theme-overlay .theme-header button{color:#3c434a}.wp-customizer .theme-overlay .theme-header .close:focus,.wp-customizer .theme-overlay .theme-header .close:hover,.wp-customizer .theme-overlay .theme-header .left:focus,.wp-customizer .theme-overlay .theme-header .left:hover,.wp-customizer .theme-overlay .theme-header .right:focus,.wp-customizer .theme-overlay .theme-header .right:hover{background:#fff;border-bottom:4px solid #2271b1;color:#2271b1}.wp-customizer .theme-overlay .theme-header .close:focus:before,.wp-customizer .theme-overlay .theme-header .close:hover:before{color:#2271b1}.wp-customizer .theme-overlay .theme-header button.disabled,.wp-customizer .theme-overlay .theme-header button.disabled:focus,.wp-customizer .theme-overlay .theme-header button.disabled:hover{border-bottom:none;background:0 0;color:#c3c4c7}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{left:0;right:0;top:0;bottom:0}.wp-customizer .theme-browser .themes{padding-right:25px}}body.cheatin{font-size:medium;height:auto;background:#fff;border:1px solid #c3c4c7;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;box-shadow:0 1px 1px rgba(0,0,0,.04)}body.cheatin h1{border-bottom:1px solid #dcdcde;clear:both;color:#50575e;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin:0 0 0 10px;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;left:-2px;top:0;font:normal 20px/1 dashicons;vertical-align:middle;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:right;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:left;display:block;width:33px;height:43px;color:#8c8f94;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:normal 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#1d2327;background:#f0f0f1}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#dcdcde;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{right:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#f0f0f1;border-color:#8c8f94;color:#2c3338;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before,body.adding-widget .add-new-widget:before{transform:rotate(45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#f0f0f1;transition:left .18s;border-right:1px solid #dcdcde}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #dcdcde}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#f0f0f1}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;min-height:32px;margin:1px 0;padding:0 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;left:16px;width:30px;height:30px;line-height:2.1;text-align:center;color:#646970}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;right:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#d63638;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#d63638}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}#available-menu-items-search .search-icon:after,#available-widgets-filter .search-icon:after,.themes-filter-bar .search-icon:after{content:"\f179";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .search-icon{position:absolute;top:7px;left:26px;z-index:1;color:#646970;height:30px;width:30px;line-height:2;text-align:center}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:15px;background:#fff;border-bottom:1px solid #dcdcde;border-left:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-header button.random .dice{margin-top:0}.customize-control-checkbox .customize-inside-control-row,.customize-control-nav_menu_auto_add .customize-inside-control-row,.customize-control-radio .customize-inside-control-row{margin-left:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:-32px}.customize-control input[type=checkbox]+label+br,.customize-control input[type=radio]+label+br{line-height:2.5}.customize-control .date-time-fields select{height:39px}.date-time-fields .date-input.month{width:79px}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:55px}.date-time-fields .date-input.year{width:80px}#customize-control-changeset_preview_link a{bottom:16px}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{bottom:10px}.media-widget-control .media-widget-buttons .button.change-media,.media-widget-control .media-widget-buttons .button.edit-media,.media-widget-control .media-widget-buttons .button.select-media{margin-top:12px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:3px 0 3px 25px}}@media screen and (max-width:1200px){.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main{left:67%}}@media screen and (max-width:640px){.wp-full-overlay.collapsed #customize-controls{margin-left:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;left:48px;line-height:2.6;font-size:14px;padding:0 12px 4px;margin:0;height:45px;background:#f0f0f1;border:0;border-right:1px solid #dcdcde;border-top:4px solid #f0f0f1;color:#50575e;cursor:pointer;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.preview-only #customize-save-button-wrapper{margin-top:-46px}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:normal 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-right:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}.wp-core-ui.wp-customizer .button{min-height:30px;padding:0 14px;line-height:2;font-size:14px;vertical-align:middle}#customize-control-changeset_status .customize-inside-control-row{padding-top:15px}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#50575e;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}.reorder,.reordering .reorder-done{padding:8px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:0}}@media screen and (max-width:600px){.wp-full-overlay.expanded{margin-left:0}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{top:46px;z-index:10}body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content{left:-100%}body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{left:0}} \ No newline at end of file +body{overflow:hidden;-webkit-text-size-adjust:100%}.customize-controls-close,.widget-control-actions a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked{background-color:rgba(0,0,0,.7);padding:25px}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .customize-changeset-locked-message{margin-left:auto;margin-right:auto;max-width:366px;min-height:64px;width:auto;padding:25px 25px 25px 109px;position:relative;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;overflow-y:auto;text-align:left;top:calc(50% - 100px)}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .currently-editing{margin-top:0}#customize-controls #customize-notifications-area .notice.notification-overlay.notification-changeset-locked .action-buttons{margin-bottom:0}.customize-changeset-locked-avatar{width:64px;position:absolute;left:25px;top:25px}.wp-core-ui.wp-customizer .customize-changeset-locked-message a.button{margin-right:10px;margin-top:0}#customize-controls .description{color:#555d66}#customize-save-button-wrapper{float:right;margin-top:9px}body:not(.ready) #customize-save-button-wrapper .save{visibility:hidden}#customize-save-button-wrapper .save{float:left;border-radius:3px;box-shadow:none;margin-top:0}#customize-save-button-wrapper .save:focus,#publish-settings:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}#customize-save-button-wrapper .save.has-next-sibling{border-radius:3px 0 0 3px}#customize-sidebar-outer-content{position:absolute;top:0;bottom:0;left:0;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:100%;margin:0;z-index:-1;background:#eee;transition:left .18s;border-right:1px solid #ddd;border-left:1px solid #ddd;height:100%}#customize-theme-controls .control-section-outer{display:none!important}#customize-outer-theme-controls .accordion-section-content{padding:12px}#customize-outer-theme-controls .accordion-section-content.open{display:block}.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{visibility:visible;left:100%;transition:left .18s}.customize-outer-pane-parent{margin:0}.outer-section-open .wp-full-overlay.expanded .wp-full-overlay-main{left:300px;opacity:.4}.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-menu-items .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-tablet .wp-full-overlay-main{left:64%}#customize-outer-theme-controls li.notice{padding-top:8px;padding-bottom:8px;margin-left:0;margin-bottom:10px}#publish-settings{text-indent:0;border-radius:0 3px 3px 0;padding-left:0;padding-right:0;box-shadow:none;font-size:14px;width:30px;float:left;transform:none;margin-top:0}body.trashing #customize-save-button-wrapper .save,body.trashing #publish-settings,body:not(.ready) #publish-settings{display:none}#customize-header-actions .spinner{margin-top:13px;margin-right:4px}.saving #customize-header-actions .spinner,.trashing #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #ddd}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}.outer-section-open #customize-controls .wp-full-overlay-sidebar-content{background:#eee}#customize-controls .customize-info{border:none;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-control-changeset_preview_link input,#customize-control-changeset_status .customize-inside-control-row{background-color:#fff;border-bottom:1px solid #ddd;box-sizing:content-box;width:100%;margin-left:-12px;padding-left:12px;padding-right:12px}#customize-control-trash_changeset{margin-top:20px}#customize-control-trash_changeset .button-link{position:relative;padding-left:24px;display:inline-block}#customize-control-trash_changeset .button-link:before{content:"\f182";font:normal 22px dashicons;text-decoration:none;position:absolute;left:0;top:-2px}#customize-controls .date-input:invalid{border-color:#dc3232}#customize-control-changeset_status .customize-inside-control-row{padding-top:10px;padding-bottom:10px;font-weight:500}#customize-control-changeset_status .customize-inside-control-row:first-of-type{border-top:1px solid #ddd}#customize-control-changeset_status .customize-control-title{margin-bottom:6px}#customize-control-changeset_status input{margin-left:0}#customize-control-changeset_preview_link{position:relative;display:block}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{margin:0;position:absolute;bottom:9px;right:0}.preview-link-wrapper{position:relative}.customize-copy-preview-link:after,.customize-copy-preview-link:before{content:"";height:28px;position:absolute;background:#fff;top:-1px}.customize-copy-preview-link:before{left:-10px;width:9px;opacity:.75}.customize-copy-preview-link:after{left:-5px;width:4px;opacity:.8}#customize-control-changeset_preview_link input{line-height:2.5;border-top:1px solid #ddd;border-left:none;border-right:none;text-indent:-999px;color:#fff}#customize-control-changeset_preview_link label{position:relative;display:block}#customize-control-changeset_preview_link a{display:inline-block;position:absolute;white-space:nowrap;overflow:hidden;width:90%;bottom:14px;font-size:14px;text-decoration:none}#customize-control-changeset_preview_link a.disabled,#customize-control-changeset_preview_link a.disabled:active,#customize-control-changeset_preview_link a.disabled:focus,#customize-control-changeset_preview_link a.disabled:visited{color:#000;opacity:.4;cursor:default;outline:0;box-shadow:none}#sub-accordion-section-publish_settings .customize-section-description-container{display:none}#customize-controls .customize-info.section-meta{margin-bottom:15px}.customize-control-date_time .customize-control-description+.date-time-fields.includes-time{margin-top:10px}.customize-control.customize-control-date_time .date-time-fields .date-input.day{margin-right:0}.date-time-fields .date-input.month{width:auto;margin:0}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:46px}.date-time-fields .date-input.year{width:60px}.date-time-fields .date-input.meridian{width:auto;margin:0}.date-time-fields .time-row{margin-top:12px}.date-time-fields .date-timezone{line-height:2.2;text-decoration:none}#customize-control-changeset_preview_link{margin-top:6px}#customize-control-changeset_status{margin-bottom:0;padding-bottom:0}#customize-control-changeset_scheduled_date{box-sizing:content-box;width:100%;margin-left:-12px;padding:12px;background:#fff;border-bottom:1px solid #ddd;margin-bottom:0}#customize-control-changeset_scheduled_date .customize-control-description{font-style:normal}#customize-controls .customize-info.is-in-view,#customize-controls .customize-section-title.is-in-view{position:absolute;z-index:9;width:100%;box-shadow:0 1px 0 rgba(0,0,0,.1)}#customize-controls .customize-section-title.is-in-view{margin-top:0}#customize-controls .customize-info.is-in-view+.accordion-section{margin-top:15px}#customize-controls .customize-info.is-sticky,#customize-controls .customize-section-title.is-sticky{position:fixed;top:46px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555d66;border-left:none;border-right:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#32373c}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .customize-info .panel-title,#customize-controls .customize-pane-child .customize-section-title h3,#customize-controls .customize-pane-child h3.customize-section-title,#customize-outer-theme-controls .customize-pane-child .customize-section-title h3,#customize-outer-theme-controls .customize-pane-child h3.customize-section-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;right:1px;padding:20px 20px 10px 10px;width:20px;height:20px;cursor:pointer;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555d66;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;left:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description,#customize-controls .customize-info .customize-section-description,#customize-controls .no-widget-areas-rendered-notice,#customize-outer-theme-controls .customize-info .customize-section-description{color:#555d66;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}.no-widget-areas-rendered-notice{font-style:italic}.no-widget-areas-rendered-notice p:first-child{margin-top:0}.no-widget-areas-rendered-notice p:last-child{margin-bottom:0}#customize-controls .customize-info .customize-section-description{margin-bottom:15px}#customize-controls .customize-info .customize-panel-description p:first-child,#customize-controls .customize-info .customize-section-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child,#customize-controls .customize-info .customize-section-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-right:30px}#customize-outer-theme-controls .control-section,#customize-theme-controls .control-section{border:none}#customize-outer-theme-controls .accordion-section-title,#customize-theme-controls .accordion-section-title{color:#555d66;background-color:#fff;border-bottom:1px solid #ddd;border-left:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}#customize-controls #customize-theme-controls .customize-themes-panel .accordion-section-title{color:#555;background-color:#fff;border-left:4px solid #fff}#customize-outer-theme-controls .accordion-section-title:after,#customize-theme-controls .accordion-section-title:after{content:"\f345";color:#a0a5aa}#customize-outer-theme-controls .accordion-section-content,#customize-theme-controls .accordion-section-content{color:#555d66;background:0 0}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#0073aa;background:#f3f3f5;border-left-color:#0073aa}#accordion-section-themes+.control-section{border-top:1px solid #ddd}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f3f3f5}#customize-outer-theme-controls .control-section .accordion-section-title:focus:after,#customize-outer-theme-controls .control-section .accordion-section-title:hover:after,#customize-outer-theme-controls .control-section.open .accordion-section-title:after,#customize-outer-theme-controls .control-section:hover>.accordion-section-title:after,#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#0073aa}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-outer-theme-controls .control-section.open .accordion-section-title,#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls .control-panel-content:not(.control-panel-nav_menus) .control-section:nth-child(2),#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu,#customize-theme-controls .control-section-nav_menu_locations .accordion-section-title{border-top:1px solid #ddd}#customize-theme-controls .control-panel-nav_menus .control-section-nav_menu+.control-section-nav_menu{border-top:none}#customize-theme-controls>ul{margin:0}#customize-theme-controls .accordion-section-content{position:absolute;top:0;left:100%;width:100%;margin:0;padding:12px;box-sizing:border-box}#customize-info,#customize-theme-controls .customize-pane-child,#customize-theme-controls .customize-pane-parent{overflow:visible;width:100%;margin:0;padding:0;box-sizing:border-box;transition:.18s transform cubic-bezier(.645, .045, .355, 1)}#customize-theme-controls .customize-pane-child.skip-transition{transition:none}#customize-info,#customize-theme-controls .customize-pane-parent{position:relative;visibility:visible;height:auto;max-height:none;overflow:auto;transform:none}#customize-theme-controls .customize-pane-child{position:absolute;top:0;left:0;visibility:hidden;height:0;max-height:none;overflow:hidden;transform:translateX(100%)}#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open{transform:none}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls .customize-pane-parent,.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,.section-open #customize-info,.section-open #customize-theme-controls .customize-pane-parent{visibility:hidden;height:0;overflow:hidden;transform:translateX(-100%)}#customize-theme-controls .customize-pane-child.busy,#customize-theme-controls .customize-pane-child.current-panel,#customize-theme-controls .customize-pane-child.open,.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,.in-sub-panel #customize-info.busy,.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,.section-open #customize-info.busy,.section-open #customize-theme-controls .customize-pane-parent.busy{visibility:visible;height:auto;overflow:auto}#customize-theme-controls .customize-pane-child.accordion-section-content,#customize-theme-controls .customize-pane-child.accordion-sub-container{display:block;overflow-x:hidden}#customize-theme-controls .customize-pane-child.accordion-section-content{padding:12px}#customize-theme-controls .customize-pane-child.menu li{position:static}.control-section-nav_menu .customize-section-description-container,.control-section-new_menu .customize-section-description-container,.customize-section-description-container{margin-bottom:15px}.control-section-nav_menu .customize-control,.control-section-new_menu .customize-control{margin-bottom:0}.customize-section-title{margin:-12px -12px 0 -12px;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}.customize-info div.customize-section-description{margin-top:0}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #ddd;padding:12px 12px 12px 12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px 12px}.customize-section-title h3,h3.customize-section-title{padding:10px 10px 12px 14px;margin:0;line-height:21px;color:#555d66}.accordion-sub-container.control-panel-content{display:none;position:absolute;top:0;width:100%}.accordion-sub-container.control-panel-content.busy{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;left:0;width:45px;height:41px;padding:0 2px 0 0;background:#eee;border:none;border-top:4px solid #eee;border-right:1px solid #ddd;color:#444;text-align:left;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:left;width:48px;height:71px;padding:0 24px 0 0;margin:0;background:#fff;border:none;border-right:1px solid #ddd;border-left:4px solid #fff;box-shadow:none;cursor:pointer;transition:color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}#customize-controls .panel-meta.customize-info .accordion-section-title{margin-left:48px;border-left:none}#customize-controls .cannot-expand:hover .accordion-section-title,#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555d66;border-left-color:#fff}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#fff;color:#0073aa;border-top-color:#0073aa;outline:0;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#0073aa;background:#f3f3f5;border-left-color:#0073aa;outline:0;box-shadow:none}.customize-controls-close:before{font:normal 22px/45px dashicons;content:"\f335";position:relative;top:-3px;left:13px}.customize-panel-back:before,.customize-section-back:before{font:normal 20px/72px dashicons;content:"\f341";position:relative;left:9px}.wp-full-overlay-sidebar .wp-full-overlay-header{background-color:#eee;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-left:62px}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-section-description ul{margin-left:1em}.customize-section-description ul>li{list-style:disc}.section-description-buttons{text-align:right}.section-description-buttons button.button-link{color:#0073aa;text-decoration:underline}.customize-control{width:100%;float:left;clear:both;margin-bottom:12px}.customize-control input[type=checkbox],.customize-control input[type=radio],.customize-control select{line-height:28px}.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=password],.customize-control input[type=search],.customize-control input[type=tel],.customize-control input[type=text],.customize-control input[type=url]{width:100%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{width:100%;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:4px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-top:0;margin-bottom:5px}.customize-section-description a.external-link:after{font:16px/11px dashicons;content:"\f310";top:3px;position:relative;padding-left:3px;display:inline-block;text-decoration:none}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control .customize-inside-control-row{line-height:20px;display:block;margin-left:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:4px;margin-left:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-checkbox label,.customize-control-radio label{vertical-align:top}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:600;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image,.customize-control .wp-media-wrapper.wp-video,.customize-control-header .current{line-height:0}.customize-control-site_icon .favicon-preview .browser-preview{vertical-align:top}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:left}#available-menu-items .accordion-section-content .new-content-item,.customize-control-dropdown-pages .new-content-item{width:calc(100% - 30px);padding:8px 15px;position:absolute;bottom:0;z-index:10;background:#eee;display:flex}.customize-control-dropdown-pages .new-content-item{width:100%;padding:5px 0 5px 1px;position:relative}#available-menu-items .new-content-item .create-item-input,.customize-control-dropdown-pages .new-content-item .create-item-input{flex-grow:10}#available-menu-items .new-content-item .add-content,.customize-control-dropdown-pages .new-content-item .add-content{margin:2px 0 2px 6px;flex-grow:1}.customize-control-dropdown-pages .new-content-item .create-item-input.invalid{border:1px solid #dc3232}.customize-control-dropdown-pages .add-new-toggle{margin-left:1px;font-weight:600;line-height:28px}#customize-preview iframe{width:100%;height:100%;position:absolute}#customize-preview iframe+iframe{visibility:hidden}.wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}#customize-controls .customize-control-notifications-container{margin:4px 0 8px 0;padding:0;cursor:default}#customize-controls .customize-control-widget_form.has-error .widget .widget-top,.customize-control-nav_menu_item.has-error .menu-item-bar .menu-item-handle{box-shadow:inset 0 0 0 2px #dc3232;transition:.15s box-shadow linear}#customize-controls .customize-control-notifications-container li.notice{list-style:none;margin:0 0 6px 0;padding:9px 14px;overflow:hidden}#customize-controls .customize-control-notifications-container .notice.is-dismissible{padding-right:38px}.customize-control-notifications-container li.notice:last-child{margin-bottom:0}#customize-controls .customize-control-nav_menu_item .customize-control-notifications-container{margin-top:0}#customize-controls .customize-control-widget_form .customize-control-notifications-container{margin-top:8px}.customize-control-text.has-error input{outline:2px solid #dc3232}#customize-controls #customize-notifications-area{position:absolute;top:46px;width:100%;border-bottom:1px solid #ddd;display:block;padding:0;margin:0}.wp-full-overlay.collapsed #customize-controls #customize-notifications-area{display:none!important}#customize-controls #customize-notifications-area:not(.has-overlay-notifications),#customize-controls .customize-section-title>.customize-control-notifications-container:not(.has-overlay-notifications),#customize-controls .panel-meta>.customize-control-notifications-container:not(.has-overlay-notifications){max-height:210px;overflow-x:hidden;overflow-y:auto}#customize-controls #customize-notifications-area .notice,#customize-controls #customize-notifications-area>ul,#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container .notice{margin:0}#customize-controls .customize-section-title>.customize-control-notifications-container,#customize-controls .panel-meta>.customize-control-notifications-container{border-top:1px solid #ddd}#customize-controls #customize-notifications-area .notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice{padding:9px 14px}#customize-controls #customize-notifications-area .notice.is-dismissible,#customize-controls .customize-section-title>.customize-control-notifications-container .notice.is-dismissible,#customize-controls .panel-meta>.customize-control-notifications-container .notice.is-dismissible{padding-right:38px}#customize-controls #customize-notifications-area .notice+.notice,#customize-controls .customize-section-title>.customize-control-notifications-container .notice+.notice,#customize-controls .panel-meta>.customize-control-notifications-container .notice+.notice{margin-top:1px}@keyframes customize-fade-in{0%{opacity:0}100%{opacity:1}}#customize-controls #customize-notifications-area .notice.notification-overlay,#customize-controls .notice.notification-overlay{margin:0;border-left:0}#customize-controls .customize-control-notifications-container.has-overlay-notifications{animation:customize-fade-in .5s;z-index:30}#customize-controls #customize-notifications-area .notice.notification-overlay .notification-message{clear:both;color:#191e23;font-size:18px;font-style:normal;margin:0;padding:2em 0;text-align:center;width:100%;display:block;top:50%;position:relative}#customize-control-show_on_front.has-error{margin-bottom:0}#customize-control-show_on_front.has-error .customize-control-notifications-container{margin-top:12px}.accordion-section .dropdown{float:left;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;border:2px solid #eee;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:20px;background:#eee}.customize-control .dropdown-arrow:after{content:"\f140";font:normal 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#32373c}.customize-control .dropdown-status{color:#32373c;background:#eee;display:none;max-width:112px}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555d66;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control .actions .button{margin-top:12px}.customize-control-header .actions,.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-header button img{display:block}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control .attachment-media-view .upload-button,.customize-control-header button.new,.customize-control-header button.remove{width:auto;height:auto;white-space:normal}.customize-control .attachment-media-view .thumbnail,.customize-control-header .current .container{overflow:hidden}.customize-control .attachment-media-view .placeholder,.customize-control-header .placeholder{width:100%;position:relative;text-align:center;cursor:default;border:1px dashed #b4b9be;box-sizing:border-box;padding:9px 0;line-height:20px}.customize-control-header .inner{display:none;position:absolute;width:100%;color:#555d66;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-header .inner,.customize-control-header .inner .dashicons{line-height:20px;top:8px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:12px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected .choice:focus{outline:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;left:0;bottom:0;right:0;border:4px solid #00a0d2;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#555d66;background:rgba(0,0,0,.5);position:absolute;top:10px;left:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{left:auto;right:10px}.customize-control-header .header-view .close:focus{outline:1px solid #5b9dd9}.customize-control-header .random.placeholder{cursor:pointer;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{animation:dice-color-change 3s infinite}.button-see-me{animation:bounce .7s 1;transform-origin:center bottom}@keyframes bounce{20%,53%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000);transform:translate3d(0,0,0)}40%,43%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-12px,0)}70%{animation-timing-function:cubic-bezier(0.755,0.050,0.855,0.060);transform:translate3d(0,-6px,0)}90%{transform:translate3d(0,-1px,0)}}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .choice:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 3px 1px rgba(30,140,190,.8)}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control .attachment-media-view .thumbnail-image img,.customize-control-header img{max-width:100%}.customize-control .attachment-media-view .default-button,.customize-control .attachment-media-view .remove-button,.customize-control-header .remove{margin-right:8px}.customize-control-background_position .background-position-control .button-group{display:block}.customize-control-code_editor textarea{width:100%;font-family:Consolas,Monaco,monospace;font-size:12px;padding:6px 8px;-moz-tab-size:2;-o-tab-size:2;tab-size:2}.customize-control-code_editor .CodeMirror,.customize-control-code_editor textarea{height:14em}#customize-controls .customize-section-description-container.section-meta.customize-info{border-bottom:none}#sub-accordion-section-custom_css .customize-control-notifications-container{margin-bottom:15px}#customize-control-custom_css textarea{display:block;height:500px}.customize-section-description-container+#customize-control-custom_css .customize-control-title{margin-left:12px}.customize-section-description-container+#customize-control-custom_css:last-child textarea{border-right:0;border-left:0;height:calc(100vh - 185px);resize:none}.customize-section-description-container+#customize-control-custom_css:last-child{margin-left:-12px;width:299px;width:calc(100% + 24px);margin-bottom:-12px}.customize-section-description-container+#customize-control-custom_css:last-child .CodeMirror{height:calc(100vh - 185px)}.CodeMirror-hints,.CodeMirror-lint-tooltip{z-index:500000!important}.customize-section-description-container+#customize-control-custom_css:last-child .customize-control-notifications-container{margin-left:12px;margin-right:12px}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:10px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}@media screen and (max-width:640px){.customize-section-description-container+#customize-control-custom_css:last-child{margin-right:0}.customize-section-description-container+#customize-control-custom_css:last-child textarea{height:calc(100vh - 140px)}}#customize-theme-controls .control-panel-themes{border-bottom:none}#customize-theme-controls .control-panel-themes>.accordion-section-title,#customize-theme-controls .control-panel-themes>.accordion-section-title:hover{cursor:default;background:#fff;color:#555d66;border-top:1px solid #ddd;border-bottom:1px solid #ddd;border-left:none;border-right:none;margin:0 0 15px 0;padding-right:100px}#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child,#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover{border-top:0}#customize-theme-controls .control-section-themes>.accordion-section-title,#customize-theme-controls .control-section-themes>.accordion-section-title:hover{margin:0 0 15px}#customize-controls .customize-themes-panel .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title:hover{margin:15px -8px}#customize-controls .control-section-themes .accordion-section-title,#customize-controls .customize-themes-panel .accordion-section-title{padding-right:100px}#customize-controls .control-section-themes .accordion-section-title span.customize-action,#customize-controls .customize-section-title span.customize-action,.control-panel-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}#customize-theme-controls .control-panel-themes .accordion-section-title .change-theme{position:absolute;right:10px;top:50%;margin-top:-14px;font-weight:400}#customize-theme-controls .control-panel-themes>.accordion-section-title:after{display:none}.control-panel-themes .customize-themes-full-container{position:fixed;top:0;left:0;transition:.18s left ease-in-out;margin:0 0 0 300px;padding:71px 0 25px;overflow-y:scroll;width:calc(100% - 300px);height:calc(100% - 96px);background:#eee;z-index:20}@media screen and (min-width:1670px){.control-panel-themes .customize-themes-full-container{width:82%;right:0;left:initial}}.modal-open .control-panel-themes .customize-themes-full-container{overflow-y:visible}#customize-header-actions .customize-controls-preview-toggle,#customize-header-actions .spinner,#customize-save-button-wrapper{transition:.18s margin ease-in-out}#customize-footer-actions,#customize-footer-actions .collapse-sidebar{bottom:0;transition:.18s bottom ease-in-out}.in-themes-panel:not(.animating) #customize-footer-actions,.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel:not(.animating) #customize-header-actions .spinner,.in-themes-panel:not(.animating) #customize-preview{visibility:hidden}.wp-full-overlay.in-themes-panel{background:#eee}.in-themes-panel #customize-header-actions .customize-controls-preview-toggle,.in-themes-panel #customize-header-actions .spinner,.in-themes-panel #customize-save-button-wrapper{margin-top:-46px}.in-themes-panel #customize-footer-actions,.in-themes-panel #customize-footer-actions .collapse-sidebar{bottom:-45px}.in-themes-panel.animating .control-panel-themes .filter-themes-count{display:none}.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content{bottom:0}.themes-filter-bar .feature-filter-toggle{float:right;margin:3px 0 3px 25px}.themes-filter-bar .feature-filter-toggle:before{content:"\f111";margin:0 5px 0 0;font:normal 16px/1 dashicons;vertical-align:text-bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .feature-filter-toggle.open{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.themes-filter-bar .feature-filter-toggle .filter-count-filters{display:none}.filter-drawer{box-sizing:border-box;width:100%;position:absolute;top:46px;left:0;padding:25px 0 25px 25px;border-top:0;margin:0;background:#eee;border-bottom:1px solid #ddd}.filter-drawer .filter-group{margin:0 25px 0 0;width:calc((100% - 75px)/ 3);min-width:200px;max-width:320px}@keyframes themes-fade-in{0%{opacity:0}50%{opacity:0}100%{opacity:1}}.control-panel-themes .customize-themes-full-container.animate{animation:.6s themes-fade-in 1}.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count{animation:.6s themes-fade-in 1}.control-panel-themes .filter-themes-count{position:relative;float:right;line-height:34px}.control-panel-themes .filter-themes-count .themes-displayed{font-weight:600;color:#555d66}.customize-themes-notifications{margin:0}.control-panel-themes .customize-themes-notifications .notice{margin:0 0 25px 0}.customize-themes-full-container .customize-themes-section{display:none!important;overflow:hidden}.customize-themes-full-container .customize-themes-section.current-section{display:list-item!important}.control-section .customize-section-text-before{padding:0 0 8px 15px;margin:15px 0 0 0;line-height:16px;border-bottom:1px solid #ddd;color:#555d66}.control-panel-themes .customize-themes-section-title{width:100%;background:#fff;box-shadow:none;outline:0;border-top:none;border-bottom:1px solid #ddd;border-left:4px solid #fff;border-right:none;cursor:pointer;padding:10px 15px;position:relative;text-align:left;font-size:14px;font-weight:600;color:#555d66;text-shadow:none}.control-panel-themes #accordion-section-installed_themes{border-top:1px solid #ddd}.control-panel-themes .theme-section{margin:0;position:relative}.control-panel-themes .customize-themes-section-title:focus,.control-panel-themes .customize-themes-section-title:hover{border-left-color:#0073aa;color:#0073aa;background:#f5f5f5}.customize-themes-section-title:not(.selected):after{content:"";display:block;position:absolute;top:9px;right:15px;width:18px;height:18px;border-radius:100%;border:1px solid #ccc;background:#fff}.control-panel-themes .theme-section .customize-themes-section-title.selected:after{content:"\f147";font:16px/1 dashicons;box-sizing:border-box;width:20px;height:20px;padding:3px 3px 1px 1px;border-radius:100%;position:absolute;top:9px;right:15px;background:#0073aa;color:#fff}.control-panel-themes .customize-themes-section-title.selected{color:#0073aa}#customize-theme-controls .themes.accordion-section-content{position:relative;left:0;padding:0;width:100%}.loading .customize-themes-section .spinner{display:block;visibility:visible;position:relative;clear:both;width:20px;height:20px;left:calc(50% - 10px);float:none;margin-top:50px}.customize-themes-section .no-themes,.customize-themes-section .no-themes-local{display:none}.themes-section-installed_themes .theme .notice-success:not(.updated-message){display:none}.customize-control-theme .theme{width:100%;margin:0;border:1px solid #ddd;background:#fff}.customize-control-theme .theme .theme-actions,.customize-control-theme .theme .theme-name{background:#fff;border:none}.customize-control.customize-control-theme{box-sizing:border-box;width:25%;max-width:600px;margin:0 25px 25px 0;padding:0;clear:none}@media screen and (min-width:2101px){.customize-control.customize-control-theme{width:calc((100% - 125px)/ 5 - 1px)}}@media screen and (min-width:1601px) and (max-width:2100px){.customize-control.customize-control-theme{width:calc((100% - 100px)/ 4 - 1px)}}@media screen and (min-width:1201px) and (max-width:1600px){.customize-control.customize-control-theme{width:calc((100% - 75px)/ 3 - 1px)}}@media screen and (min-width:851px) and (max-width:1200px){.customize-control.customize-control-theme{width:calc((100% - 50px)/ 2 - 1px)}}@media screen and (max-width:850px){.customize-control.customize-control-theme{width:100%}}.wp-customizer .theme-browser .themes{padding:0 0 25px 25px;transition:.18s margin-top linear}.wp-customizer .theme-browser .theme .theme-actions{opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.customize-preview-header.themes-filter-bar{position:fixed;top:0;left:300px;width:calc(100% - 300px);height:46px;background:#eee;z-index:10;padding:6px 25px;box-sizing:border-box;border-bottom:1px solid #ddd}@media screen and (min-width:1670px){.customize-preview-header.themes-filter-bar{width:82%;right:0;left:initial}}.themes-filter-bar .themes-filter-container{margin:0;padding:0}.themes-filter-bar .wp-filter-search{line-height:25px;padding:6px 10px 6px 30px;max-width:100%;width:40%;min-width:300px;position:absolute;top:6px;left:25px;height:32px;margin:1px 0}@media screen and (max-height:540px),screen and (max-width:1018px){.customize-preview-header.themes-filter-bar{position:relative;left:0;width:100%;margin:0 0 25px 0}.filter-drawer{top:46px}.wp-customizer .theme-browser .themes{padding:0 0 25px 25px;overflow:hidden}.control-panel-themes .customize-themes-full-container{margin-top:0;padding:0;height:100%;width:calc(100% - 300px)}}@media screen and (max-width:1018px){.filter-drawer .filter-group{width:calc((100% - 50px)/ 2)}}@media screen and (max-width:900px){.customize-preview-header.themes-filter-bar{height:86px;padding-top:46px}.themes-filter-bar .wp-filter-search{width:calc(100% - 50px);margin:0;min-width:200px}.filter-drawer{top:86px}.control-panel-themes .filter-themes-count{float:left}}@media screen and (max-width:792px){.filter-drawer .filter-group{width:calc(100% - 25px)}}.control-panel-themes .customize-themes-mobile-back{display:none}@media screen and (max-width:600px){.filter-drawer{top:132px}.wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes{display:block;float:right}.control-panel-themes .customize-themes-full-container{width:100%;margin:0;padding-top:46px;height:calc(100% - 46px);z-index:1;display:none}.showing-themes .control-panel-themes .customize-themes-full-container{display:block}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back{display:block;position:fixed;top:0;left:0;background:#eee;color:#444;border-radius:0;box-shadow:none;border:none;height:46px;width:100%;z-index:10;text-align:left;text-shadow:none;border-bottom:1px solid #ddd;border-left:4px solid transparent;margin:0;padding:0;font-size:0;overflow:hidden}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:before{left:0;top:0;height:46px;width:26px;display:block;line-height:46px;padding:0 8px 0 8px;border-right:1px solid #ddd}.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:focus,.wp-customizer .showing-themes .control-panel-themes .customize-themes-mobile-back:hover{color:#0073aa;background:#f3f3f5;border-left-color:#0073aa;outline:0;box-shadow:none}.showing-themes #customize-header-actions{display:none}#customize-controls{width:100%}}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:109}.wp-customizer.modal-open #customize-header-actions,.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after,.wp-customizer.modal-open .control-panel-themes .filter-themes-count{z-index:-1}.wp-full-overlay.in-themes-panel.themes-panel-expanded #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .star-rating{float:left;margin-right:8px}.wp-customizer .theme-rating .num-ratings{line-height:20px}.wp-customizer .theme-overlay .theme-wrap{left:90px;right:90px;top:45px;bottom:45px;z-index:120}.wp-customizer .theme-overlay .theme-actions{text-align:right;padding:10px 25px;background:#eee;border-top:1px solid #ddd}.wp-customizer .theme-overlay .theme-actions .theme-install.preview{margin-left:8px}.control-panel-themes .theme-actions .delete-theme{left:15px;right:auto;bottom:auto;position:absolute}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.wp-customizer .theme-header{background:#eee}.wp-customizer .theme-overlay .theme-header .close:before,.wp-customizer .theme-overlay .theme-header button{color:#444}.wp-customizer .theme-overlay .theme-header .close:focus,.wp-customizer .theme-overlay .theme-header .close:hover,.wp-customizer .theme-overlay .theme-header .left:focus,.wp-customizer .theme-overlay .theme-header .left:hover,.wp-customizer .theme-overlay .theme-header .right:focus,.wp-customizer .theme-overlay .theme-header .right:hover{background:#fff;border-bottom:4px solid #0073aa;color:#0073aa}.wp-customizer .theme-overlay .theme-header .close:focus:before,.wp-customizer .theme-overlay .theme-header .close:hover:before{color:#0073aa}.wp-customizer .theme-overlay .theme-header button.disabled,.wp-customizer .theme-overlay .theme-header button.disabled:focus,.wp-customizer .theme-overlay .theme-header button.disabled:hover{border-bottom:none;background:0 0;color:#ccc}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{left:0;right:0;top:0;bottom:0}.wp-customizer .theme-browser .themes{padding-right:25px}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin h1{border-bottom:1px solid #ddd;clear:both;color:#555d66;font-size:24px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:30px 0 0 0;padding:0;padding-bottom:7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin:0;margin-left:10px;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#available-menu-items .new-content-item .add-content:before,.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;left:-2px;top:0;font:normal 20px/1 dashicons;vertical-align:middle;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:right;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none}.menu-item-reorder-nav button,.widget-reorder-nav span{position:relative;overflow:hidden;float:left;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.menu-item-reorder-nav button{width:30px;height:40px;background:0 0;border:none;box-shadow:none}.menu-item-reorder-nav button:before,.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:normal 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover,.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#191e23;background:#eee}.menus-move-down:before,.move-widget-down:before{content:"\f347"}.menus-move-up:before,.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down,.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5;background-color:#fff;cursor:default;pointer-events:none}.wp-full-overlay-main{right:auto;width:100%}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover,body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#929793;color:#32373c;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before,body.adding-widget .add-new-widget:before{transform:rotate(45deg)}#available-menu-items,#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;transition:left .18s;border-right:1px solid #ddd}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:none}#available-widgets-list{top:60px;position:absolute;overflow:auto;bottom:0;width:100%;border-top:1px solid #ddd}.no-widgets-found #available-widgets-list{border-top:none}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;background:#eee}#available-menu-items-search .accordion-section-title,#available-widgets-filter{padding:13px 15px;box-sizing:border-box}#available-menu-items-search input,#available-widgets-filter input{width:100%;height:32px;margin:1px 0;padding:6px 30px}#available-menu-items-search input::-ms-clear,#available-widgets-filter input::-ms-clear{display:none}#available-menu-items-search .search-icon,#available-widgets-filter .search-icon{display:block;position:absolute;top:15px;left:16px;width:30px;height:30px;line-height:28px;text-align:center;color:#72777c}#available-menu-items-search .clear-results,#available-widgets-filter .clear-results{position:absolute;top:15px;right:16px;width:30px;height:30px;padding:0;border:0;cursor:pointer;background:0 0;color:#a00;text-decoration:none;outline:0}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible,#available-widgets-filter .clear-results{display:none}#available-menu-items-search .clear-results.is-visible,#available-widgets-filter .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before,#available-widgets-filter .clear-results:before{content:"\f335";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover,#available-widgets-filter .clear-results:focus,#available-widgets-filter .clear-results:hover{color:#dc3232}#available-menu-items-search .clear-results:focus,#available-widgets-filter .clear-results:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .search-icon:after,#available-widgets-filter .search-icon:after,.themes-filter-bar .search-icon:after{content:"\f179";font:normal 20px/1 dashicons;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.themes-filter-bar .search-icon{position:absolute;top:7px;left:26px;z-index:1;color:#72777c;height:30px;width:30px;line-height:2;text-align:center}.no-widgets-found-message{display:none;margin:0;padding:0 15px;line-height:inherit}.no-widgets-found .no-widgets-found-message{display:block}#available-menu-items .item-top,#available-menu-items .item-top:hover,#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;box-shadow:none}#available-menu-items .item-tpl,#available-widgets .widget-tpl{position:relative;padding:15px 15px 15px 60px;background:#fff;border-bottom:1px solid #ddd;border-left:4px solid #fff;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out;cursor:pointer;display:none}#available-menu-items .item,#available-widgets .widget{position:static}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-header button.random .dice{margin-top:0}.customize-control-checkbox .customize-inside-control-row,.customize-control-nav_menu_auto_add .customize-inside-control-row,.customize-control-radio .customize-inside-control-row{margin-left:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:-32px}.customize-control input[type=checkbox]+label+br,.customize-control input[type=radio]+label+br{line-height:32px}.customize-control .date-time-fields select{height:39px}.date-time-fields .date-input.month{width:79px}.date-time-fields .date-input.day,.date-time-fields .date-input.hour,.date-time-fields .date-input.minute{width:55px}.date-time-fields .date-input.year{width:80px}.date-time-fields .date-timezone{line-height:3.2}#customize-control-changeset_preview_link a{bottom:16px}.preview-link-wrapper .customize-copy-preview-link.preview-control-element.button{bottom:10px}.media-widget-control .media-widget-buttons .button.change-media,.media-widget-control .media-widget-buttons .button.edit-media,.media-widget-control .media-widget-buttons .button.select-media{margin-top:12px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:3px 0 3px 25px}}@media screen and (max-width:1200px){.adding-menu-items .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.adding-widget .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main,.outer-section-open .wp-full-overlay.expanded.preview-mobile .wp-full-overlay-main{left:67%}}@media screen and (max-width:640px){.wp-full-overlay.collapsed #customize-controls{margin-left:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;left:48px;line-height:45px;font-size:14px;padding:0 12px;margin:0;height:45px;background:#eee;border:0;border-right:1px solid #ddd;color:#555d66;cursor:pointer;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.preview-only #customize-save-button-wrapper{margin-top:-46px}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:normal 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-right:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto}#publish-settings{height:31px}#customize-control-changeset_status .customize-inside-control-row{padding-top:15px}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{width:100%}#available-menu-items .customize-section-title,#available-widgets .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back,#available-widgets .customize-section-back{height:69px}#available-menu-items .customize-section-title h3,#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555d66;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action,#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;height:auto}#available-widgets-list{top:130px}#available-menu-items-search .clear-results,#available-menu-items-search .search-icon{top:85px}.reorder,.reordering .reorder-done{padding:8px}.wp-core-ui .themes-filter-bar .feature-filter-toggle{margin:0}.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}}@media screen and (max-width:600px){.theme-browser .theme.active .theme-actions,.wp-customizer .theme-browser .theme .theme-actions{padding:8px 15px;box-shadow:none}.wp-full-overlay.expanded{margin-left:0}body.adding-menu-items div#available-menu-items,body.adding-widget div#available-widgets,body.outer-section-open div#customize-sidebar-outer-content{top:46px;z-index:10}body.wp-customizer .wp-full-overlay.expanded #customize-sidebar-outer-content{left:-100%}body.wp-customizer.outer-section-open .wp-full-overlay.expanded #customize-sidebar-outer-content{left:0}}@media screen and (min-width:650px) and (max-width:850px){.customize-control-theme .theme .notice .cut{display:inline}}@media screen and (min-width:851px) and (max-width:1018px){.customize-control-theme .theme .notice .cut{display:none}} \ No newline at end of file diff --git a/wp-admin/css/customize-nav-menus-rtl.css b/wp-admin/css/customize-nav-menus-rtl.css index fcd76d4..7021dc4 100644 --- a/wp-admin/css/customize-nav-menus-rtl.css +++ b/wp-admin/css/customize-nav-menus-rtl.css @@ -4,14 +4,14 @@ } #customize-theme-controls #accordion-section-menu_locations > .accordion-section-title { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; margin-top: 15px; } #customize-theme-controls .customize-section-title-nav_menus-heading, #customize-theme-controls .customize-section-title-menu_locations-heading, #customize-theme-controls .customize-section-title-menu_locations-description { - padding: 0 12px; + padding: 0 12px 0 12px; } #customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description { @@ -29,7 +29,7 @@ #customize-controls .theme-location-set, #customize-controls .control-section .accordion-section-title:focus .menu-in-location, #customize-controls .control-section .accordion-section-title:hover .menu-in-location { - color: #50575e; + color: #555; } /* The `edit-menu` and `create-menu` buttons also use the `button-link` class. */ @@ -37,7 +37,7 @@ .customize-control-nav_menu_location .create-menu { margin-right: 6px; vertical-align: middle; - line-height: 2.2; + line-height: 28px; } #customize-controls .customize-control-nav_menu_name { @@ -65,7 +65,6 @@ .wp-customizer .menu-item-bar .menu-item-handle { width: 100%; - max-width: 100%; background: #fff; } @@ -84,7 +83,7 @@ } .customize-control-nav_menu_item.has-notifications .menu-item-handle { - border-right: 4px solid #72aee6; + border-right: 4px solid #00a0d2; } .wp-customizer .menu-item-settings { @@ -92,15 +91,15 @@ overflow: hidden; z-index: 8; padding: 10px; - background: #f0f0f1; - border: 1px solid #8c8f94; + background: #eee; + border: 1px solid #999; border-top: none; } .wp-customizer .menu-item-settings .description-thin { width: 100%; height: auto; - margin: 0 0 8px; + margin: 0 0 8px 0; } .wp-customizer .menu-item-settings input[type="text"] { @@ -185,7 +184,7 @@ } .wp-customizer .menu-settings dl { - margin: 12px 0 0; + margin: 12px 0 0 0; padding: 0; } @@ -194,7 +193,7 @@ } .wp-customizer .menu-settings .menu-theme-locations { - border-top: 1px solid #c3c4c7; + border-top: 1px solid #ccc; } .wp-customizer .menu-settings { @@ -209,7 +208,7 @@ .wp-customizer .control-section-nav_menu .menu-location-settings { margin-top: 24px; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .wp-customizer .control-section-nav_menu .menu-location-settings, @@ -234,14 +233,14 @@ } #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle { - color: #50575e; + color: #555; } /* Screen Options */ .customize-screen-options-toggle { background: none; border: none; - color: #50575e; + color: #555; cursor: pointer; margin: 0; padding: 20px; @@ -265,13 +264,12 @@ #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #2271b1; + color: #0073aa; } .customize-screen-options-toggle:focus, #customize-controls .customize-info .customize-help-toggle:focus { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + outline: none; } .customize-screen-options-toggle:before { @@ -297,7 +295,7 @@ .wp-customizer #screen-options-wrap { display: none; background: #fff; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; padding: 4px 15px 15px; } @@ -307,7 +305,7 @@ line-height: 30px; } -/* rework the arrow indicator implementation for NVDA bug same as #32715 */ +/* rework the arrow indicator implementation for NVDA bug same as https://core.trac.wordpress.org/ticket/32715 */ .wp-customizer .toggle-indicator { display: inline-block; font-size: 20px; @@ -322,10 +320,10 @@ #available-menu-items .accordion-section-title .toggle-indicator:before { content: "\f140"; display: block; - padding: 1px 0 1px 2px; - speak: never; + padding: 1px 0px 1px 2px; + speak: none; border-radius: 50%; - color: #787c82; + color: #72777c; font: normal 20px/1 dashicons; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -431,7 +429,7 @@ max-width: calc(100% - 2px); float: right; display: list-item; - border-color: #a7aaad; + border-color: #a0a5aa; } .menu-item-transport li.customize-control { @@ -456,7 +454,7 @@ } .menu-item-bar .item-delete { - color: #d63638; + color: #a00; position: absolute; top: 2px; left: -19px; @@ -477,11 +475,15 @@ -moz-osx-font-smoothing: grayscale; } +.ie8 .menu-item-bar .item-delete:before { + top: -10px; +} + .menu-item-bar .item-delete:hover, .menu-item-bar .item-delete:focus { box-shadow: none; outline: none; - color: #d63638; + color: #dc3232; } .adding-menu-items .menu-item-bar .item-edit { @@ -510,7 +512,7 @@ border-left: none; background: #fff; transition: background-color 0.15s; - /* Reset the value inherited from the base .accordion-section-title style. Ticket #37589. */ + /* Reset the value inherited from the base .accordion-section-title style. See https://core.trac.wordpress.org/ticket/37589. */ -webkit-user-select: auto; -moz-user-select: auto; user-select: auto; @@ -518,10 +520,10 @@ #available-menu-items .open .accordion-section-title, #available-menu-items #available-menu-items-search .accordion-section-title { - background: #f0f0f1; + background: #eee; } -/* rework the arrow indicator implementation for NVDA bug see #32715 */ +/* rework the arrow indicator implementation for NVDA bug. See https://core.trac.wordpress.org/ticket/32715 */ #available-menu-items .accordion-section-title:after { content: none !important; } @@ -529,12 +531,12 @@ #available-menu-items .accordion-section-title:hover .toggle-indicator:before, #available-menu-items .button-link:hover .toggle-indicator:before, #available-menu-items .button-link:focus .toggle-indicator:before { - color: #1d2327; + color: #23282d; } #available-menu-items .open .accordion-section-title .toggle-indicator:before { content: "\f142"; - color: #1d2327; + color: #23282d; } #available-menu-items .available-menu-items-list { @@ -568,7 +570,7 @@ #available-menu-items .cannot-expand .accordion-section-title .no-items { float: left; - color: #50575e; + color: #555d66; font-weight: 400; margin-right: 5px; } @@ -582,8 +584,8 @@ } #available-menu-items .accordion-section-content .available-menu-items-list { - margin: 0 0 45px; - padding: 1px 15px 15px; + margin: 0 0 45px 0; + padding: 1px 15px 15px 15px; } #available-menu-items .accordion-section-content .available-menu-items-list:only-child { /* Types that do not support new items for the current user */ @@ -591,7 +593,7 @@ } #new-custom-menu-item .accordion-section-content { - padding: 0 15px 15px; + padding: 0 15px 15px 15px; } #available-menu-items .menu-item-tpl { @@ -605,7 +607,7 @@ .menu-name-field.invalid:focus, #available-menu-items .new-content-item .create-item-input.invalid, #available-menu-items .new-content-item .create-item-input.invalid:focus { - border: 1px solid #d63638; + border: 1px solid #dc3232; } #available-menu-items .menu-item-handle .item-type { @@ -638,7 +640,7 @@ position: absolute; top: 1px; right: 1px; - color: #8c8f94; + color: #82878c; width: 30px; height: 38px; box-shadow: none; @@ -648,7 +650,7 @@ } #available-menu-items .menu-item-handle .item-add:focus { - color: #1d2327; + color: #23282d; } #available-menu-items .item-add:before { @@ -666,7 +668,7 @@ #available-menu-items .menu-item-handle.item-added .item-title, #available-menu-items .menu-item-handle.item-added:hover .item-add, #available-menu-items .menu-item-handle.item-added .item-add:focus { - color: #8c8f94; + color: #82878c; } #available-menu-items .menu-item-handle.item-added .item-add:before { @@ -691,7 +693,7 @@ position: absolute; right: 0; top: 60px; /* below title div / search input */ - bottom: 0; /* 100% height that still triggers lazy load */ + bottom: 0px; /* 100% height that still triggers lazy load */ max-height: none; width: 100%; padding: 1px 15px 15px; @@ -761,7 +763,7 @@ body.adding-menu-items #customize-preview iframe { cursor: default; opacity: .5; background: #fff; - color: #787c82; + color: #727773; } .added-menu-item .menu-item-handle { @@ -773,7 +775,7 @@ body.adding-menu-items #customize-preview iframe { /* Add/delete Menus */ #customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; } /* @todo update selector */ @@ -791,12 +793,12 @@ body.adding-menu-items #customize-preview iframe { } #accordion-section-add_menu .customize-add-menu-button { - font-weight: 400; + font-weight: normal; } #create-new-menu-submit { float: left; - margin: 0 0 12px; + margin: 0 0 12px 0; } .menu-delete-item { @@ -806,7 +808,7 @@ body.adding-menu-items #customize-preview iframe { } .assigned-menu-locations-title p { - margin: 0 0 8px; + margin: 0 0 8px 0; } li.assigned-to-menu-location .menu-delete-item { @@ -827,17 +829,17 @@ li.assigned-to-menu-location .add-new-menu-item { .menu-item-handle:hover { position: relative; z-index: 10; - color: #2271b1; + color: #0073aa; } .menu-item-handle:hover .item-type, .menu-item-handle:hover .item-edit, #available-menu-items .menu-item-handle:hover .item-add { - color: #2271b1; + color: #0073aa; } .menu-item-edit-active .menu-item-handle { - border-color: #8c8f94; + border-color: #999; border-bottom: none; } @@ -866,18 +868,18 @@ li.assigned-to-menu-location .add-new-menu-item { .menu-item-bar .item-delete:focus:before, #available-menu-items .item-add:focus:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { #available-menu-items #available-menu-items-search .accordion-section-content { top: 63px; } } -@media screen and (max-width: 640px) { +@media screen and ( max-width: 640px ) { #available-menu-items #available-menu-items-search .accordion-section-content { top: 130px; } diff --git a/wp-admin/css/customize-nav-menus-rtl.min.css b/wp-admin/css/customize-nav-menus-rtl.min.css index 4fbde97..f961c54 100644 --- a/wp-admin/css/customize-nav-menus-rtl.min.css +++ b/wp-admin/css/customize-nav-menus-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-top:30px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#dcdcde;margin-top:15px}#customize-theme-controls .customize-section-title-menu_locations-description,#customize-theme-controls .customize-section-title-menu_locations-heading,#customize-theme-controls .customize-section-title-nav_menus-heading{padding:0 12px}#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description{font-style:normal}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#50575e}.customize-control-nav_menu_location .create-menu,.customize-control-nav_menu_location .edit-menu{margin-right:6px;vertical-align:middle;line-height:2.2}#customize-controls .customize-control-nav_menu_name{margin-bottom:12px}.customize-control-nav_menu_name p:last-of-type{margin-bottom:0}#customize-new-menu-submit{float:left;min-width:85px}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;max-width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-left:0}.wp-customizer .menu-item-handle .item-type{padding:1px 5px 0 21px;float:left;text-align:left}.wp-customizer .menu-item-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-right:4px solid #72aee6}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#f0f0f1;border:1px solid #8c8f94;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:right;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.menus-move-left:before{content:"\f345"}.menus-move-right:before{content:"\f341"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%}.wp-customizer .menu-item .item-edit{position:absolute;left:-19px;top:2px;display:block;width:30px;height:38px;margin-left:0!important;box-shadow:none;outline:0;overflow:hidden;cursor:pointer;text-align:center}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #c3c4c7}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.wp-customizer .menu-location-settings{margin-top:12px;border-top:none}.wp-customizer .control-section-nav_menu .menu-location-settings{margin-top:24px;border-top:1px solid #dcdcde}.customize-control-nav_menu_auto_add,.wp-customizer .control-section-nav_menu .menu-location-settings{padding-top:12px}.menu-location-settings .customize-control-checkbox .theme-location-set{line-height:1}.customize-control-nav_menu_auto_add label{vertical-align:top}.menu-location-settings .new-menu-locations-widget-note{display:block}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#50575e}.customize-screen-options-toggle{background:0 0;border:none;color:#50575e;cursor:pointer;margin:0;padding:20px;position:absolute;left:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#2271b1}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:1px solid transparent}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;right:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #dcdcde;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.rtl .wp-customizer .toggle-indicator{text-indent:1px}#available-menu-items .accordion-section-title .toggle-indicator:before,.wp-customizer .menu-item .item-edit .toggle-indicator:before{content:"\f140";display:block;padding:1px 0 1px 2px;speak:never;border-radius:50%;color:#787c82;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:20px}.menu-item-depth-2{margin-right:40px}.menu-item-depth-3{margin-right:60px}.menu-item-depth-4{margin-right:80px}.menu-item-depth-5{margin-right:100px}.menu-item-depth-6{margin-right:120px}.menu-item-depth-7{margin-right:140px}.menu-item-depth-8{margin-right:160px}.menu-item-depth-9{margin-right:180px}.menu-item-depth-10{margin-right:200px}.menu-item-depth-11{margin-right:220px}.menu-item-depth-0>.menu-item-bar{margin-left:0}.menu-item-depth-1>.menu-item-bar{margin-left:20px}.menu-item-depth-2>.menu-item-bar{margin-left:40px}.menu-item-depth-3>.menu-item-bar{margin-left:60px}.menu-item-depth-4>.menu-item-bar{margin-left:80px}.menu-item-depth-5>.menu-item-bar{margin-left:100px}.menu-item-depth-6>.menu-item-bar{margin-left:120px}.menu-item-depth-7>.menu-item-bar{margin-left:140px}.menu-item-depth-8>.menu-item-bar{margin-left:160px}.menu-item-depth-9>.menu-item-bar{margin-left:180px}.menu-item-depth-10>.menu-item-bar{margin-left:200px}.menu-item-depth-11>.menu-item-bar{margin-left:220px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-20px}.menu-item-depth-3 .menu-item-transport{margin-right:-60px}.menu-item-depth-4 .menu-item-transport{margin-right:-80px}.menu-item-depth-2 .menu-item-transport{margin-right:-40px}.menu-item-depth-5 .menu-item-transport{margin-right:-100px}.menu-item-depth-6 .menu-item-transport{margin-right:-120px}.menu-item-depth-7 .menu-item-transport{margin-right:-140px}.menu-item-depth-8 .menu-item-transport{margin-right:-160px}.menu-item-depth-9 .menu-item-transport{margin-right:-180px}.menu-item-depth-10 .menu-item-transport{margin-right:-200px}.menu-item-depth-11 .menu-item-transport{margin-right:-220px}.reordering .menu-item-depth-0{margin-right:0}.reordering .menu-item-depth-1{margin-right:15px}.reordering .menu-item-depth-2{margin-right:30px}.reordering .menu-item-depth-3{margin-right:45px}.reordering .menu-item-depth-4{margin-right:60px}.reordering .menu-item-depth-5{margin-right:75px}.reordering .menu-item-depth-6{margin-right:90px}.reordering .menu-item-depth-7{margin-right:105px}.reordering .menu-item-depth-8{margin-right:120px}.reordering .menu-item-depth-9{margin-right:135px}.reordering .menu-item-depth-10{margin-right:150px}.reordering .menu-item-depth-11{margin-right:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-left:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-left:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-left:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-left:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-left:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-left:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-left:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-left:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-left:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-left:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-left:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-left:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-right:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-left:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:calc(100% - 2px);float:right;display:list-item;border-color:#a7aaad}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar{margin-top:0}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#d63638;position:absolute;top:2px;left:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;right:5px;border-radius:50%;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{box-shadow:none;outline:0;color:#d63638}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-right:none;border-left:none;background:#fff;transition:background-color .15s;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#f0f0f1}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:before,#available-menu-items .button-link:focus .toggle-indicator:before,#available-menu-items .button-link:hover .toggle-indicator:before{color:#1d2327}#available-menu-items .open .accordion-section-title .toggle-indicator:before{content:"\f142";color:#1d2327}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:left;color:#50575e;font-weight:400;margin-right:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px;padding:1px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.edit-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid #d63638}#available-menu-items .menu-item-handle .item-type{padding-left:0}#available-menu-items .menu-item-handle .item-title{padding-right:20px}#available-menu-items .menu-item-handle{cursor:pointer}#available-menu-items .menu-item-handle{box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;right:1px;color:#8c8f94;width:30px;height:38px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .menu-item-handle .item-add:focus{color:#1d2327}#available-menu-items .item-add:before{content:"\f543";position:relative;right:2px;top:3px;display:inline-block;height:20px;border-radius:50%;font:normal 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#8c8f94}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;left:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;right:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{transition:all .2s}body.adding-menu-items #available-menu-items{right:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{right:300px}body.adding-menu-items #customize-preview{opacity:.4}body.adding-menu-items #customize-preview iframe{pointer-events:none}.menu-item-handle .spinner{display:none;float:right;margin:0 0 0 8px}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 8px 0 0}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 8px 10px 15px;cursor:default;opacity:.5;background:#fff;color:#787c82}.added-menu-item .menu-item-handle{transition-property:opacity,background,color;transition-duration:1.25s;transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#dcdcde}#accordion-section-add_menu{margin:15px 12px}#accordion-section-add_menu h3{text-align:left}#accordion-section-add_menu .customize-add-menu-button,#accordion-section-add_menu h3{margin:0}#accordion-section-add_menu .customize-add-menu-button{font-weight:400}#create-new-menu-submit{float:left;margin:0 0 12px}.menu-delete-item{float:right;padding:1em 0;width:100%}.assigned-menu-locations-title p{margin:0 0 8px}li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#2271b1}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#2271b1}.menu-item-edit-active .menu-item-handle{border-color:#8c8f94;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu .new-menu-item-invitation{margin-top:0;margin-bottom:0}.customize-control-nav_menu .customize-control-nav_menu-buttons{margin-top:12px}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file +#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-top:30px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#ddd;margin-top:15px}#customize-theme-controls .customize-section-title-menu_locations-description,#customize-theme-controls .customize-section-title-menu_locations-heading,#customize-theme-controls .customize-section-title-nav_menus-heading{padding:0 12px 0 12px}#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description{font-style:normal}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#555}.customize-control-nav_menu_location .create-menu,.customize-control-nav_menu_location .edit-menu{margin-right:6px;vertical-align:middle;line-height:28px}#customize-controls .customize-control-nav_menu_name{margin-bottom:12px}.customize-control-nav_menu_name p:last-of-type{margin-bottom:0}#customize-new-menu-submit{float:left;min-width:85px}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-left:0}.wp-customizer .menu-item-handle .item-type{padding:1px 5px 0 21px;float:left;text-align:left}.wp-customizer .menu-item-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-right:4px solid #00a0d2}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px 0}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:right;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.menus-move-left:before{content:"\f345"}.menus-move-right:before{content:"\f341"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%}.wp-customizer .menu-item .item-edit{position:absolute;left:-19px;top:2px;display:block;width:30px;height:38px;margin-left:0!important;box-shadow:none;outline:0;overflow:hidden;cursor:pointer;text-align:center}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.wp-customizer .menu-location-settings{margin-top:12px;border-top:none}.wp-customizer .control-section-nav_menu .menu-location-settings{margin-top:24px;border-top:1px solid #ddd}.customize-control-nav_menu_auto_add,.wp-customizer .control-section-nav_menu .menu-location-settings{padding-top:12px}.menu-location-settings .customize-control-checkbox .theme-location-set{line-height:1}.customize-control-nav_menu_auto_add label{vertical-align:top}.menu-location-settings .new-menu-locations-widget-note{display:block}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#555}.customize-screen-options-toggle{background:0 0;border:none;color:#555;cursor:pointer;margin:0;padding:20px;position:absolute;left:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#0073aa}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:0}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;right:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.rtl .wp-customizer .toggle-indicator{text-indent:1px}#available-menu-items .accordion-section-title .toggle-indicator:before,.wp-customizer .menu-item .item-edit .toggle-indicator:before{content:"\f140";display:block;padding:1px 0 1px 2px;speak:none;border-radius:50%;color:#72777c;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:20px}.menu-item-depth-2{margin-right:40px}.menu-item-depth-3{margin-right:60px}.menu-item-depth-4{margin-right:80px}.menu-item-depth-5{margin-right:100px}.menu-item-depth-6{margin-right:120px}.menu-item-depth-7{margin-right:140px}.menu-item-depth-8{margin-right:160px}.menu-item-depth-9{margin-right:180px}.menu-item-depth-10{margin-right:200px}.menu-item-depth-11{margin-right:220px}.menu-item-depth-0>.menu-item-bar{margin-left:0}.menu-item-depth-1>.menu-item-bar{margin-left:20px}.menu-item-depth-2>.menu-item-bar{margin-left:40px}.menu-item-depth-3>.menu-item-bar{margin-left:60px}.menu-item-depth-4>.menu-item-bar{margin-left:80px}.menu-item-depth-5>.menu-item-bar{margin-left:100px}.menu-item-depth-6>.menu-item-bar{margin-left:120px}.menu-item-depth-7>.menu-item-bar{margin-left:140px}.menu-item-depth-8>.menu-item-bar{margin-left:160px}.menu-item-depth-9>.menu-item-bar{margin-left:180px}.menu-item-depth-10>.menu-item-bar{margin-left:200px}.menu-item-depth-11>.menu-item-bar{margin-left:220px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-20px}.menu-item-depth-3 .menu-item-transport{margin-right:-60px}.menu-item-depth-4 .menu-item-transport{margin-right:-80px}.menu-item-depth-2 .menu-item-transport{margin-right:-40px}.menu-item-depth-5 .menu-item-transport{margin-right:-100px}.menu-item-depth-6 .menu-item-transport{margin-right:-120px}.menu-item-depth-7 .menu-item-transport{margin-right:-140px}.menu-item-depth-8 .menu-item-transport{margin-right:-160px}.menu-item-depth-9 .menu-item-transport{margin-right:-180px}.menu-item-depth-10 .menu-item-transport{margin-right:-200px}.menu-item-depth-11 .menu-item-transport{margin-right:-220px}.reordering .menu-item-depth-0{margin-right:0}.reordering .menu-item-depth-1{margin-right:15px}.reordering .menu-item-depth-2{margin-right:30px}.reordering .menu-item-depth-3{margin-right:45px}.reordering .menu-item-depth-4{margin-right:60px}.reordering .menu-item-depth-5{margin-right:75px}.reordering .menu-item-depth-6{margin-right:90px}.reordering .menu-item-depth-7{margin-right:105px}.reordering .menu-item-depth-8{margin-right:120px}.reordering .menu-item-depth-9{margin-right:135px}.reordering .menu-item-depth-10{margin-right:150px}.reordering .menu-item-depth-11{margin-right:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-left:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-left:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-left:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-left:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-left:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-left:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-left:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-left:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-left:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-left:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-left:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-left:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-right:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-left:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:calc(100% - 2px);float:right;display:list-item;border-color:#a0a5aa}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar{margin-top:0}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;left:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;right:5px;border-radius:50%;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{box-shadow:none;outline:0;color:#dc3232}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-right:none;border-left:none;background:#fff;transition:background-color .15s;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:before,#available-menu-items .button-link:focus .toggle-indicator:before,#available-menu-items .button-link:hover .toggle-indicator:before{color:#23282d}#available-menu-items .open .accordion-section-title .toggle-indicator:before{content:"\f142";color:#23282d}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:left;color:#555d66;font-weight:400;margin-right:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px 0;padding:1px 15px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.edit-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid #dc3232}#available-menu-items .menu-item-handle .item-type{padding-left:0}#available-menu-items .menu-item-handle .item-title{padding-right:20px}#available-menu-items .menu-item-handle{cursor:pointer}#available-menu-items .menu-item-handle{box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;right:1px;color:#82878c;width:30px;height:38px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;right:2px;top:3px;display:inline-block;height:20px;border-radius:50%;font:normal 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;left:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;right:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{transition:all .2s}body.adding-menu-items #available-menu-items{right:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{right:300px}body.adding-menu-items #customize-preview{opacity:.4}body.adding-menu-items #customize-preview iframe{pointer-events:none}.menu-item-handle .spinner{display:none;float:right;margin:0 0 0 8px}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 8px 0 0}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 8px 10px 15px;cursor:default;opacity:.5;background:#fff;color:#727773}.added-menu-item .menu-item-handle{transition-property:opacity,background,color;transition-duration:1.25s;transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#ddd}#accordion-section-add_menu{margin:15px 12px}#accordion-section-add_menu h3{text-align:left}#accordion-section-add_menu .customize-add-menu-button,#accordion-section-add_menu h3{margin:0}#accordion-section-add_menu .customize-add-menu-button{font-weight:400}#create-new-menu-submit{float:left;margin:0 0 12px 0}.menu-delete-item{float:right;padding:1em 0;width:100%}.assigned-menu-locations-title p{margin:0 0 8px 0}li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#0073aa}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#0073aa}.menu-item-edit-active .menu-item-handle{border-color:#999;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu .new-menu-item-invitation{margin-top:0;margin-bottom:0}.customize-control-nav_menu .customize-control-nav_menu-buttons{margin-top:12px}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file diff --git a/wp-admin/css/customize-nav-menus.css b/wp-admin/css/customize-nav-menus.css index aede85d..cb8b78d 100644 --- a/wp-admin/css/customize-nav-menus.css +++ b/wp-admin/css/customize-nav-menus.css @@ -4,14 +4,14 @@ } #customize-theme-controls #accordion-section-menu_locations > .accordion-section-title { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; margin-top: 15px; } #customize-theme-controls .customize-section-title-nav_menus-heading, #customize-theme-controls .customize-section-title-menu_locations-heading, #customize-theme-controls .customize-section-title-menu_locations-description { - padding: 0 12px; + padding: 0 12px 0 12px; } #customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description { @@ -29,7 +29,7 @@ #customize-controls .theme-location-set, #customize-controls .control-section .accordion-section-title:focus .menu-in-location, #customize-controls .control-section .accordion-section-title:hover .menu-in-location { - color: #50575e; + color: #555; } /* The `edit-menu` and `create-menu` buttons also use the `button-link` class. */ @@ -37,7 +37,7 @@ .customize-control-nav_menu_location .create-menu { margin-left: 6px; vertical-align: middle; - line-height: 2.2; + line-height: 28px; } #customize-controls .customize-control-nav_menu_name { @@ -65,7 +65,6 @@ .wp-customizer .menu-item-bar .menu-item-handle { width: 100%; - max-width: 100%; background: #fff; } @@ -84,7 +83,7 @@ } .customize-control-nav_menu_item.has-notifications .menu-item-handle { - border-left: 4px solid #72aee6; + border-left: 4px solid #00a0d2; } .wp-customizer .menu-item-settings { @@ -92,15 +91,15 @@ overflow: hidden; z-index: 8; padding: 10px; - background: #f0f0f1; - border: 1px solid #8c8f94; + background: #eee; + border: 1px solid #999; border-top: none; } .wp-customizer .menu-item-settings .description-thin { width: 100%; height: auto; - margin: 0 0 8px; + margin: 0 0 8px 0; } .wp-customizer .menu-item-settings input[type="text"] { @@ -185,7 +184,7 @@ } .wp-customizer .menu-settings dl { - margin: 12px 0 0; + margin: 12px 0 0 0; padding: 0; } @@ -194,7 +193,7 @@ } .wp-customizer .menu-settings .menu-theme-locations { - border-top: 1px solid #c3c4c7; + border-top: 1px solid #ccc; } .wp-customizer .menu-settings { @@ -209,7 +208,7 @@ .wp-customizer .control-section-nav_menu .menu-location-settings { margin-top: 24px; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .wp-customizer .control-section-nav_menu .menu-location-settings, @@ -234,14 +233,14 @@ } #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle { - color: #50575e; + color: #555; } /* Screen Options */ .customize-screen-options-toggle { background: none; border: none; - color: #50575e; + color: #555; cursor: pointer; margin: 0; padding: 20px; @@ -265,13 +264,12 @@ #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover, #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active, #customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus { - color: #2271b1; + color: #0073aa; } .customize-screen-options-toggle:focus, #customize-controls .customize-info .customize-help-toggle:focus { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + outline: none; } .customize-screen-options-toggle:before { @@ -297,7 +295,7 @@ .wp-customizer #screen-options-wrap { display: none; background: #fff; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; padding: 4px 15px 15px; } @@ -307,7 +305,7 @@ line-height: 30px; } -/* rework the arrow indicator implementation for NVDA bug same as #32715 */ +/* rework the arrow indicator implementation for NVDA bug same as https://core.trac.wordpress.org/ticket/32715 */ .wp-customizer .toggle-indicator { display: inline-block; font-size: 20px; @@ -322,10 +320,10 @@ #available-menu-items .accordion-section-title .toggle-indicator:before { content: "\f140"; display: block; - padding: 1px 2px 1px 0; - speak: never; + padding: 1px 2px 1px 0px; + speak: none; border-radius: 50%; - color: #787c82; + color: #72777c; font: normal 20px/1 dashicons; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -431,7 +429,7 @@ max-width: calc(100% - 2px); float: left; display: list-item; - border-color: #a7aaad; + border-color: #a0a5aa; } .menu-item-transport li.customize-control { @@ -456,7 +454,7 @@ } .menu-item-bar .item-delete { - color: #d63638; + color: #a00; position: absolute; top: 2px; right: -19px; @@ -477,11 +475,15 @@ -moz-osx-font-smoothing: grayscale; } +.ie8 .menu-item-bar .item-delete:before { + top: -10px; +} + .menu-item-bar .item-delete:hover, .menu-item-bar .item-delete:focus { box-shadow: none; outline: none; - color: #d63638; + color: #dc3232; } .adding-menu-items .menu-item-bar .item-edit { @@ -510,7 +512,7 @@ border-right: none; background: #fff; transition: background-color 0.15s; - /* Reset the value inherited from the base .accordion-section-title style. Ticket #37589. */ + /* Reset the value inherited from the base .accordion-section-title style. See https://core.trac.wordpress.org/ticket/37589. */ -webkit-user-select: auto; -moz-user-select: auto; user-select: auto; @@ -518,10 +520,10 @@ #available-menu-items .open .accordion-section-title, #available-menu-items #available-menu-items-search .accordion-section-title { - background: #f0f0f1; + background: #eee; } -/* rework the arrow indicator implementation for NVDA bug see #32715 */ +/* rework the arrow indicator implementation for NVDA bug. See https://core.trac.wordpress.org/ticket/32715 */ #available-menu-items .accordion-section-title:after { content: none !important; } @@ -529,12 +531,12 @@ #available-menu-items .accordion-section-title:hover .toggle-indicator:before, #available-menu-items .button-link:hover .toggle-indicator:before, #available-menu-items .button-link:focus .toggle-indicator:before { - color: #1d2327; + color: #23282d; } #available-menu-items .open .accordion-section-title .toggle-indicator:before { content: "\f142"; - color: #1d2327; + color: #23282d; } #available-menu-items .available-menu-items-list { @@ -568,7 +570,7 @@ #available-menu-items .cannot-expand .accordion-section-title .no-items { float: right; - color: #50575e; + color: #555d66; font-weight: 400; margin-left: 5px; } @@ -582,8 +584,8 @@ } #available-menu-items .accordion-section-content .available-menu-items-list { - margin: 0 0 45px; - padding: 1px 15px 15px; + margin: 0 0 45px 0; + padding: 1px 15px 15px 15px; } #available-menu-items .accordion-section-content .available-menu-items-list:only-child { /* Types that do not support new items for the current user */ @@ -591,7 +593,7 @@ } #new-custom-menu-item .accordion-section-content { - padding: 0 15px 15px; + padding: 0 15px 15px 15px; } #available-menu-items .menu-item-tpl { @@ -605,7 +607,7 @@ .menu-name-field.invalid:focus, #available-menu-items .new-content-item .create-item-input.invalid, #available-menu-items .new-content-item .create-item-input.invalid:focus { - border: 1px solid #d63638; + border: 1px solid #dc3232; } #available-menu-items .menu-item-handle .item-type { @@ -638,7 +640,7 @@ position: absolute; top: 1px; left: 1px; - color: #8c8f94; + color: #82878c; width: 30px; height: 38px; box-shadow: none; @@ -648,7 +650,7 @@ } #available-menu-items .menu-item-handle .item-add:focus { - color: #1d2327; + color: #23282d; } #available-menu-items .item-add:before { @@ -666,7 +668,7 @@ #available-menu-items .menu-item-handle.item-added .item-title, #available-menu-items .menu-item-handle.item-added:hover .item-add, #available-menu-items .menu-item-handle.item-added .item-add:focus { - color: #8c8f94; + color: #82878c; } #available-menu-items .menu-item-handle.item-added .item-add:before { @@ -691,7 +693,7 @@ position: absolute; left: 0; top: 60px; /* below title div / search input */ - bottom: 0; /* 100% height that still triggers lazy load */ + bottom: 0px; /* 100% height that still triggers lazy load */ max-height: none; width: 100%; padding: 1px 15px 15px; @@ -761,7 +763,7 @@ body.adding-menu-items #customize-preview iframe { cursor: default; opacity: .5; background: #fff; - color: #787c82; + color: #727773; } .added-menu-item .menu-item-handle { @@ -773,7 +775,7 @@ body.adding-menu-items #customize-preview iframe { /* Add/delete Menus */ #customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title { - border-bottom-color: #dcdcde; + border-bottom-color: #ddd; } /* @todo update selector */ @@ -791,12 +793,12 @@ body.adding-menu-items #customize-preview iframe { } #accordion-section-add_menu .customize-add-menu-button { - font-weight: 400; + font-weight: normal; } #create-new-menu-submit { float: right; - margin: 0 0 12px; + margin: 0 0 12px 0; } .menu-delete-item { @@ -806,7 +808,7 @@ body.adding-menu-items #customize-preview iframe { } .assigned-menu-locations-title p { - margin: 0 0 8px; + margin: 0 0 8px 0; } li.assigned-to-menu-location .menu-delete-item { @@ -827,17 +829,17 @@ li.assigned-to-menu-location .add-new-menu-item { .menu-item-handle:hover { position: relative; z-index: 10; - color: #2271b1; + color: #0073aa; } .menu-item-handle:hover .item-type, .menu-item-handle:hover .item-edit, #available-menu-items .menu-item-handle:hover .item-add { - color: #2271b1; + color: #0073aa; } .menu-item-edit-active .menu-item-handle { - border-color: #8c8f94; + border-color: #999; border-bottom: none; } @@ -866,18 +868,18 @@ li.assigned-to-menu-location .add-new-menu-item { .menu-item-bar .item-delete:focus:before, #available-menu-items .item-add:focus:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { #available-menu-items #available-menu-items-search .accordion-section-content { top: 63px; } } -@media screen and (max-width: 640px) { +@media screen and ( max-width: 640px ) { #available-menu-items #available-menu-items-search .accordion-section-content { top: 130px; } diff --git a/wp-admin/css/customize-nav-menus.min.css b/wp-admin/css/customize-nav-menus.min.css index 14511d8..5191a38 100644 --- a/wp-admin/css/customize-nav-menus.min.css +++ b/wp-admin/css/customize-nav-menus.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-top:30px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#dcdcde;margin-top:15px}#customize-theme-controls .customize-section-title-menu_locations-description,#customize-theme-controls .customize-section-title-menu_locations-heading,#customize-theme-controls .customize-section-title-nav_menus-heading{padding:0 12px}#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description{font-style:normal}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#50575e}.customize-control-nav_menu_location .create-menu,.customize-control-nav_menu_location .edit-menu{margin-left:6px;vertical-align:middle;line-height:2.2}#customize-controls .customize-control-nav_menu_name{margin-bottom:12px}.customize-control-nav_menu_name p:last-of-type{margin-bottom:0}#customize-new-menu-submit{float:right;min-width:85px}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;max-width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-right:0}.wp-customizer .menu-item-handle .item-type{padding:1px 21px 0 5px;float:right;text-align:right}.wp-customizer .menu-item-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-left:4px solid #72aee6}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#f0f0f1;border:1px solid #8c8f94;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:left;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.menus-move-left:before{content:"\f341"}.menus-move-right:before{content:"\f345"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%}.wp-customizer .menu-item .item-edit{position:absolute;right:-19px;top:2px;display:block;width:30px;height:38px;margin-right:0!important;box-shadow:none;outline:0;overflow:hidden;cursor:pointer;text-align:center}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #c3c4c7}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.wp-customizer .menu-location-settings{margin-top:12px;border-top:none}.wp-customizer .control-section-nav_menu .menu-location-settings{margin-top:24px;border-top:1px solid #dcdcde}.customize-control-nav_menu_auto_add,.wp-customizer .control-section-nav_menu .menu-location-settings{padding-top:12px}.menu-location-settings .customize-control-checkbox .theme-location-set{line-height:1}.customize-control-nav_menu_auto_add label{vertical-align:top}.menu-location-settings .new-menu-locations-widget-note{display:block}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#50575e}.customize-screen-options-toggle{background:0 0;border:none;color:#50575e;cursor:pointer;margin:0;padding:20px;position:absolute;right:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#2271b1}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:1px solid transparent}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;left:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #dcdcde;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.rtl .wp-customizer .toggle-indicator{text-indent:1px}#available-menu-items .accordion-section-title .toggle-indicator:before,.wp-customizer .menu-item .item-edit .toggle-indicator:before{content:"\f140";display:block;padding:1px 2px 1px 0;speak:never;border-radius:50%;color:#787c82;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:20px}.menu-item-depth-2{margin-left:40px}.menu-item-depth-3{margin-left:60px}.menu-item-depth-4{margin-left:80px}.menu-item-depth-5{margin-left:100px}.menu-item-depth-6{margin-left:120px}.menu-item-depth-7{margin-left:140px}.menu-item-depth-8{margin-left:160px}.menu-item-depth-9{margin-left:180px}.menu-item-depth-10{margin-left:200px}.menu-item-depth-11{margin-left:220px}.menu-item-depth-0>.menu-item-bar{margin-right:0}.menu-item-depth-1>.menu-item-bar{margin-right:20px}.menu-item-depth-2>.menu-item-bar{margin-right:40px}.menu-item-depth-3>.menu-item-bar{margin-right:60px}.menu-item-depth-4>.menu-item-bar{margin-right:80px}.menu-item-depth-5>.menu-item-bar{margin-right:100px}.menu-item-depth-6>.menu-item-bar{margin-right:120px}.menu-item-depth-7>.menu-item-bar{margin-right:140px}.menu-item-depth-8>.menu-item-bar{margin-right:160px}.menu-item-depth-9>.menu-item-bar{margin-right:180px}.menu-item-depth-10>.menu-item-bar{margin-right:200px}.menu-item-depth-11>.menu-item-bar{margin-right:220px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-20px}.menu-item-depth-3 .menu-item-transport{margin-left:-60px}.menu-item-depth-4 .menu-item-transport{margin-left:-80px}.menu-item-depth-2 .menu-item-transport{margin-left:-40px}.menu-item-depth-5 .menu-item-transport{margin-left:-100px}.menu-item-depth-6 .menu-item-transport{margin-left:-120px}.menu-item-depth-7 .menu-item-transport{margin-left:-140px}.menu-item-depth-8 .menu-item-transport{margin-left:-160px}.menu-item-depth-9 .menu-item-transport{margin-left:-180px}.menu-item-depth-10 .menu-item-transport{margin-left:-200px}.menu-item-depth-11 .menu-item-transport{margin-left:-220px}.reordering .menu-item-depth-0{margin-left:0}.reordering .menu-item-depth-1{margin-left:15px}.reordering .menu-item-depth-2{margin-left:30px}.reordering .menu-item-depth-3{margin-left:45px}.reordering .menu-item-depth-4{margin-left:60px}.reordering .menu-item-depth-5{margin-left:75px}.reordering .menu-item-depth-6{margin-left:90px}.reordering .menu-item-depth-7{margin-left:105px}.reordering .menu-item-depth-8{margin-left:120px}.reordering .menu-item-depth-9{margin-left:135px}.reordering .menu-item-depth-10{margin-left:150px}.reordering .menu-item-depth-11{margin-left:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-right:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-right:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-right:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-right:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-right:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-right:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-right:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-right:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-right:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-right:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-right:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-right:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-left:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-right:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:calc(100% - 2px);float:left;display:list-item;border-color:#a7aaad}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar{margin-top:0}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#d63638;position:absolute;top:2px;right:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;left:5px;border-radius:50%;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{box-shadow:none;outline:0;color:#d63638}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-left:none;border-right:none;background:#fff;transition:background-color .15s;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#f0f0f1}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:before,#available-menu-items .button-link:focus .toggle-indicator:before,#available-menu-items .button-link:hover .toggle-indicator:before{color:#1d2327}#available-menu-items .open .accordion-section-title .toggle-indicator:before{content:"\f142";color:#1d2327}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:right;color:#50575e;font-weight:400;margin-left:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px;padding:1px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.edit-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid #d63638}#available-menu-items .menu-item-handle .item-type{padding-right:0}#available-menu-items .menu-item-handle .item-title{padding-left:20px}#available-menu-items .menu-item-handle{cursor:pointer}#available-menu-items .menu-item-handle{box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;left:1px;color:#8c8f94;width:30px;height:38px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .menu-item-handle .item-add:focus{color:#1d2327}#available-menu-items .item-add:before{content:"\f543";position:relative;left:2px;top:3px;display:inline-block;height:20px;border-radius:50%;font:normal 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#8c8f94}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;right:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;left:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{transition:all .2s}body.adding-menu-items #available-menu-items{left:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{left:300px}body.adding-menu-items #customize-preview{opacity:.4}body.adding-menu-items #customize-preview iframe{pointer-events:none}.menu-item-handle .spinner{display:none;float:left;margin:0 8px 0 0}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 0 0 8px}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 15px 10px 8px;cursor:default;opacity:.5;background:#fff;color:#787c82}.added-menu-item .menu-item-handle{transition-property:opacity,background,color;transition-duration:1.25s;transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#dcdcde}#accordion-section-add_menu{margin:15px 12px}#accordion-section-add_menu h3{text-align:right}#accordion-section-add_menu .customize-add-menu-button,#accordion-section-add_menu h3{margin:0}#accordion-section-add_menu .customize-add-menu-button{font-weight:400}#create-new-menu-submit{float:right;margin:0 0 12px}.menu-delete-item{float:left;padding:1em 0;width:100%}.assigned-menu-locations-title p{margin:0 0 8px}li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#2271b1}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#2271b1}.menu-item-edit-active .menu-item-handle{border-color:#8c8f94;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu .new-menu-item-invitation{margin-top:0;margin-bottom:0}.customize-control-nav_menu .customize-control-nav_menu-buttons{margin-top:12px}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file +#customize-theme-controls #accordion-section-menu_locations{position:relative;margin-top:30px}#customize-theme-controls #accordion-section-menu_locations>.accordion-section-title{border-bottom-color:#ddd;margin-top:15px}#customize-theme-controls .customize-section-title-menu_locations-description,#customize-theme-controls .customize-section-title-menu_locations-heading,#customize-theme-controls .customize-section-title-nav_menus-heading{padding:0 12px 0 12px}#customize-theme-controls .customize-control-description.customize-section-title-menu_locations-description{font-style:normal}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .theme-location-set{color:#555}.customize-control-nav_menu_location .create-menu,.customize-control-nav_menu_location .edit-menu{margin-left:6px;vertical-align:middle;line-height:28px}#customize-controls .customize-control-nav_menu_name{margin-bottom:12px}.customize-control-nav_menu_name p:last-of-type{margin-bottom:0}#customize-new-menu-submit{float:right;min-width:85px}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-right:0}.wp-customizer .menu-item-handle .item-type{padding:1px 21px 0 5px;float:right;text-align:right}.wp-customizer .menu-item-handle:hover{z-index:8}.customize-control-nav_menu_item.has-notifications .menu-item-handle{border-left:4px solid #00a0d2}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;z-index:8;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px 0}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{float:left;margin:6px 0 0;padding:0;cursor:pointer}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.menus-move-left:before{content:"\f341"}.menus-move-right:before{content:"\f345"}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%}.wp-customizer .menu-item .item-edit{position:absolute;right:-19px;top:2px;display:block;width:30px;height:38px;margin-right:0!important;box-shadow:none;outline:0;overflow:hidden;cursor:pointer;text-align:center}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:before{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.wp-customizer .menu-location-settings{margin-top:12px;border-top:none}.wp-customizer .control-section-nav_menu .menu-location-settings{margin-top:24px;border-top:1px solid #ddd}.customize-control-nav_menu_auto_add,.wp-customizer .control-section-nav_menu .menu-location-settings{padding-top:12px}.menu-location-settings .customize-control-checkbox .theme-location-set{line-height:1}.customize-control-nav_menu_auto_add label{vertical-align:top}.menu-location-settings .new-menu-locations-widget-note{display:block}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#555}.customize-screen-options-toggle{background:0 0;border:none;color:#555;cursor:pointer;margin:0;padding:20px;position:absolute;right:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#0073aa}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:0}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;left:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.rtl .wp-customizer .toggle-indicator{text-indent:1px}#available-menu-items .accordion-section-title .toggle-indicator:before,.wp-customizer .menu-item .item-edit .toggle-indicator:before{content:"\f140";display:block;padding:1px 2px 1px 0;speak:none;border-radius:50%;color:#72777c;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.control-section-nav_menu .field-css-classes,.control-section-nav_menu .field-description,.control-section-nav_menu .field-link-target,.control-section-nav_menu .field-title-attribute,.control-section-nav_menu .field-xfn{display:none}.control-section-nav_menu.field-css-classes-active .field-css-classes,.control-section-nav_menu.field-description-active .field-description,.control-section-nav_menu.field-link-target-active .field-link-target,.control-section-nav_menu.field-title-attribute-active .field-title-attribute,.control-section-nav_menu.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:20px}.menu-item-depth-2{margin-left:40px}.menu-item-depth-3{margin-left:60px}.menu-item-depth-4{margin-left:80px}.menu-item-depth-5{margin-left:100px}.menu-item-depth-6{margin-left:120px}.menu-item-depth-7{margin-left:140px}.menu-item-depth-8{margin-left:160px}.menu-item-depth-9{margin-left:180px}.menu-item-depth-10{margin-left:200px}.menu-item-depth-11{margin-left:220px}.menu-item-depth-0>.menu-item-bar{margin-right:0}.menu-item-depth-1>.menu-item-bar{margin-right:20px}.menu-item-depth-2>.menu-item-bar{margin-right:40px}.menu-item-depth-3>.menu-item-bar{margin-right:60px}.menu-item-depth-4>.menu-item-bar{margin-right:80px}.menu-item-depth-5>.menu-item-bar{margin-right:100px}.menu-item-depth-6>.menu-item-bar{margin-right:120px}.menu-item-depth-7>.menu-item-bar{margin-right:140px}.menu-item-depth-8>.menu-item-bar{margin-right:160px}.menu-item-depth-9>.menu-item-bar{margin-right:180px}.menu-item-depth-10>.menu-item-bar{margin-right:200px}.menu-item-depth-11>.menu-item-bar{margin-right:220px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-20px}.menu-item-depth-3 .menu-item-transport{margin-left:-60px}.menu-item-depth-4 .menu-item-transport{margin-left:-80px}.menu-item-depth-2 .menu-item-transport{margin-left:-40px}.menu-item-depth-5 .menu-item-transport{margin-left:-100px}.menu-item-depth-6 .menu-item-transport{margin-left:-120px}.menu-item-depth-7 .menu-item-transport{margin-left:-140px}.menu-item-depth-8 .menu-item-transport{margin-left:-160px}.menu-item-depth-9 .menu-item-transport{margin-left:-180px}.menu-item-depth-10 .menu-item-transport{margin-left:-200px}.menu-item-depth-11 .menu-item-transport{margin-left:-220px}.reordering .menu-item-depth-0{margin-left:0}.reordering .menu-item-depth-1{margin-left:15px}.reordering .menu-item-depth-2{margin-left:30px}.reordering .menu-item-depth-3{margin-left:45px}.reordering .menu-item-depth-4{margin-left:60px}.reordering .menu-item-depth-5{margin-left:75px}.reordering .menu-item-depth-6{margin-left:90px}.reordering .menu-item-depth-7{margin-left:105px}.reordering .menu-item-depth-8{margin-left:120px}.reordering .menu-item-depth-9{margin-left:135px}.reordering .menu-item-depth-10{margin-left:150px}.reordering .menu-item-depth-11{margin-left:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-right:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-right:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-right:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-right:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-right:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-right:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-right:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-right:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-right:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-right:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-right:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-right:165px}.control-section-nav_menu.menu .menu-item-edit-active{margin-left:0}.control-section-nav_menu.menu .menu-item-edit-active .menu-item-bar{margin-right:0}.control-section-nav_menu.menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:calc(100% - 2px);float:left;display:list-item;border-color:#a0a5aa}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu.menu ul.menu-item-transport .menu-item-bar{margin-top:0}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;right:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;left:5px;border-radius:50%;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{box-shadow:none;outline:0;color:#dc3232}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-left:none;border-right:none;background:#fff;transition:background-color .15s;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:before,#available-menu-items .button-link:focus .toggle-indicator:before,#available-menu-items .button-link:hover .toggle-indicator:before{color:#23282d}#available-menu-items .open .accordion-section-title .toggle-indicator:before{content:"\f142";color:#23282d}#available-menu-items .available-menu-items-list{overflow-y:auto;max-height:200px;background:0 0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{float:right;color:#555d66;font-weight:400;margin-left:5px}#available-menu-items .accordion-section-content{max-height:290px;margin:0;padding:0;position:relative;background:0 0}#available-menu-items .accordion-section-content .available-menu-items-list{margin:0 0 45px 0;padding:1px 15px 15px 15px}#available-menu-items .accordion-section-content .available-menu-items-list:only-child{margin-bottom:0}#new-custom-menu-item .accordion-section-content{padding:0 15px 15px 15px}#available-menu-items .menu-item-tpl{margin:0}#available-menu-items .new-content-item .create-item-input.invalid,#available-menu-items .new-content-item .create-item-input.invalid:focus,#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.edit-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid #dc3232}#available-menu-items .menu-item-handle .item-type{padding-right:0}#available-menu-items .menu-item-handle .item-title{padding-left:20px}#available-menu-items .menu-item-handle{cursor:pointer}#available-menu-items .menu-item-handle{box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;left:1px;color:#82878c;width:30px;height:38px;box-shadow:none;outline:0;cursor:pointer;text-align:center}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;left:2px;top:3px;display:inline-block;height:20px;border-radius:50%;font:normal 20px/1.05 dashicons}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .spinner{position:absolute;top:20px;right:21px;margin:0!important}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;left:0;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;box-sizing:border-box}#available-menu-items-search .nothing-found{margin-top:-1px}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{transition:all .2s}body.adding-menu-items #available-menu-items{left:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{left:300px}body.adding-menu-items #customize-preview{opacity:.4}body.adding-menu-items #customize-preview iframe{pointer-events:none}.menu-item-handle .spinner{display:none;float:left;margin:0 8px 0 0}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 0 0 8px}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 15px 10px 8px;cursor:default;opacity:.5;background:#fff;color:#727773}.added-menu-item .menu-item-handle{transition-property:opacity,background,color;transition-duration:1.25s;transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#customize-theme-controls .control-panel-content .control-section-nav_menu:nth-last-child(2) .accordion-section-title{border-bottom-color:#ddd}#accordion-section-add_menu{margin:15px 12px}#accordion-section-add_menu h3{text-align:right}#accordion-section-add_menu .customize-add-menu-button,#accordion-section-add_menu h3{margin:0}#accordion-section-add_menu .customize-add-menu-button{font-weight:400}#create-new-menu-submit{float:right;margin:0 0 12px 0}.menu-delete-item{float:left;padding:1em 0;width:100%}.assigned-menu-locations-title p{margin:0 0 8px 0}li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#0073aa}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#0073aa}.menu-item-edit-active .menu-item-handle{border-color:#999;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu .new-menu-item-invitation{margin-top:0;margin-bottom:0}.customize-control-nav_menu .customize-control-nav_menu-buttons{margin-top:12px}#available-menu-items .item-add:focus:before,#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before,.menu-delete:focus,.menu-item-bar .item-delete:focus:before,.wp-customizer .menu-item .submitbox .submitdelete:focus,.wp-customizer button:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){#available-menu-items #available-menu-items-search .accordion-section-content{top:130px}} \ No newline at end of file diff --git a/wp-admin/css/customize-widgets-rtl.css b/wp-admin/css/customize-widgets-rtl.css index cfd8b96..934e544 100644 --- a/wp-admin/css/customize-widgets-rtl.css +++ b/wp-admin/css/customize-widgets-rtl.css @@ -25,12 +25,12 @@ } .customize-control .widget-action { - color: #787c82; + color: #72777c; } .customize-control .widget-top:hover .widget-action, .customize-control .widget-action:focus { - color: #1d2327; + color: #23282d; } .customize-control-widget_form:not(.widget-rendered) .widget-top { @@ -53,8 +53,8 @@ .customize-control-widget_form.widget-form-disabled .widget-content { opacity: 0.7; pointer-events: none; - -webkit-user-select: none; -moz-user-select: none; + -webkit-user-select: none; user-select: none; } @@ -66,7 +66,7 @@ position: fixed; right: 299px; top: 25%; - border: 1px solid #dcdcde; + border: 1px solid rgb(229, 229, 229); overflow: auto; } .customize-control-widget_form.wide-widget-control .widget-inside > .form { @@ -78,14 +78,13 @@ } .customize-control-widget_form.wide-widget-control.expanding .widget-top, .customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top { - background-color: #dcdcde; + background-color: rgb(227, 227, 227); } .widget-inside { - padding: 1px 10px 10px; - border: 0; - border-top: 1px solid #c3c4c7; - line-height: 1.23076923; + padding: 1px 10px 10px 10px; + border-top: none; + line-height: 16px; } .customize-control-widget_form.expanded .widget-action .toggle-indicator:before { @@ -112,7 +111,7 @@ .control-section.accordion-section.highlighted > .accordion-section-title, .customize-control-widget_form.highlighted { outline: none; - box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); + box-shadow: 0 0 2px rgba(30,140,190,0.8); position: relative; z-index: 1; } @@ -128,7 +127,7 @@ #customize-theme-controls .widget-reorder-nav { display: none; float: left; - background-color: #f6f7f7; + background-color: #fafafa; } .move-widget:before { @@ -138,7 +137,7 @@ #customize-theme-controls .move-widget-area { display: none; background: #fff; - border: 1px solid #c3c4c7; + border: 1px solid #ddd; border-top: none; cursor: auto; } @@ -163,8 +162,8 @@ position: relative; margin: 0; padding: 13px 42px 15px 15px; - color: #50575e; - border-top: 1px solid #c3c4c7; + color: #555; + border-top: 1px solid #eee; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; @@ -183,12 +182,13 @@ } #customize-theme-controls .widget-area-select li:last-child { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #eee; } #customize-theme-controls .widget-area-select .selected { color: #fff; - background: #2271b1; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); + background: #00a0d2; } #customize-theme-controls .widget-area-select .selected:before { @@ -233,35 +233,30 @@ width: auto !important; } -/* Keep rule that is no longer necessary on widgets.php. */ -#available-widgets .widget-action { - display: none; -} - .ios #available-widgets { transition: right 0s; } #available-widgets .widget-tpl:hover, #available-widgets .widget-tpl.selected { - background: #f6f7f7; - border-bottom-color: #c3c4c7; - color: #2271b1; - border-right: 4px solid #2271b1; + background: #f3f3f5; + border-bottom-color: #ccc; + color: #0073aa; + border-right: 4px solid #0073aa; } -#customize-controls summary.widget-title { +#customize-controls .widget-title h3 { font-size: 1em; } -#available-widgets summary.widget-title { +#available-widgets .widget-title h3 { padding: 0 0 5px; font-size: 14px; } #available-widgets .widget .widget-description { padding: 0; - color: #646970; + color: #72777c; } #customize-preview { @@ -290,21 +285,17 @@ body.adding-widget #customize-preview { #available-widgets .widget-title { position: relative; - list-style: none; - padding: 10px 0; -} - -/* Fix for Safari */ -#available-widgets summary::-webkit-details-marker { - display: none; } #available-widgets .widget-title:before { content: "\f132"; - position: inline; - vertical-align: sub; + position: absolute; + top: -3px; + left: 100%; margin-left: 20px; - color: #2c3338; + width: 20px; + height: 20px; + color: #32373c; font: normal 20px/1 dashicons; text-align: center; box-sizing: border-box; @@ -312,76 +303,76 @@ body.adding-widget #customize-preview { -moz-osx-font-smoothing: grayscale; } -/* dashicons-smiley */ +/* smiley */ #available-widgets [class*="easy"] .widget-title:before { content: "\f328"; top: -4px; } -/* dashicons-star-filled */ +/* star-filled */ #available-widgets [class*="super"] .widget-title:before, #available-widgets [class*="like"] .widget-title:before { content: "\f155"; top: -4px; } -/* dashicons-wordpress */ +/* wordpress */ #available-widgets [class*="meta"] .widget-title:before { content: "\f120"; } -/* dashicons-archive */ +/* archive-box */ #available-widgets [class*="archives"] .widget-title:before { content: "\f480"; top: -4px; } -/* dashicons-category */ +/* category */ #available-widgets [class*="categor"] .widget-title:before { content: "\f318"; top: -4px; } -/* dashicons-admin-comments */ +/* comments */ #available-widgets [class*="comment"] .widget-title:before, #available-widgets [class*="testimonial"] .widget-title:before, #available-widgets [class*="chat"] .widget-title:before { content: "\f101"; } -/* dashicons-admin-post */ +/* post */ #available-widgets [class*="post"] .widget-title:before { content: "\f109"; } -/* dashicons-admin-page */ +/* admin-page */ #available-widgets [class*="page"] .widget-title:before { content: "\f105"; } -/* dashicons-text */ +/* text */ #available-widgets [class*="text"] .widget-title:before { content: "\f478"; } -/* dashicons-admin-links */ +/* links */ #available-widgets [class*="link"] .widget-title:before { content: "\f103"; } -/* dashicons-search */ +/* search */ #available-widgets [class*="search"] .widget-title:before { content: "\f179"; } -/* dashicons-menu */ +/* menu */ #available-widgets [class*="menu"] .widget-title:before, #available-widgets [class*="nav"] .widget-title:before { content: "\f333"; } -/* dashicons-tagcloud */ +/* tag-cloud */ #available-widgets [class*="tag"] .widget-title:before { content: "\f479"; } -/* dashicons-rss */ +/* rss */ #available-widgets [class*="rss"] .widget-title:before { content: "\f303"; top: -6px; } -/* dashicons-calendar */ +/* calendar */ #available-widgets [class*="event"] .widget-title:before, #available-widgets [class*="calendar"] .widget-title:before { content: "\f145"; top: -4px;} -/* dashicons-format-image */ +/* format-image */ #available-widgets [class*="image"] .widget-title:before, #available-widgets [class*="photo"] .widget-title:before, #available-widgets [class*="slide"] .widget-title:before, #available-widgets [class*="instagram"] .widget-title:before { content: "\f128"; } -/* dashicons-format-gallery */ +/* format-gallery */ #available-widgets [class*="album"] .widget-title:before, #available-widgets [class*="galler"] .widget-title:before { content: "\f161"; } -/* dashicons-format-video */ +/* format-video */ #available-widgets [class*="video"] .widget-title:before, #available-widgets [class*="tube"] .widget-title:before { content: "\f126"; } -/* dashicons-format-audio */ +/* format-audio */ #available-widgets [class*="music"] .widget-title:before, #available-widgets [class*="radio"] .widget-title:before, #available-widgets [class*="audio"] .widget-title:before { content: "\f127"; } -/* dashicons-admin-users */ +/* admin-users */ #available-widgets [class*="login"] .widget-title:before, #available-widgets [class*="user"] .widget-title:before, #available-widgets [class*="member"] .widget-title:before, @@ -390,56 +381,56 @@ body.adding-widget #customize-preview { #available-widgets [class*="profile"] .widget-title:before, #available-widgets [class*="grofile"] .widget-title:before { content: "\f110"; } -/* dashicons-cart */ +/* cart */ #available-widgets [class*="commerce"] .widget-title:before, #available-widgets [class*="shop"] .widget-title:before, #available-widgets [class*="cart"] .widget-title:before { content: "\f174"; top: -4px; } -/* dashicons-shield */ +/* shield */ #available-widgets [class*="secur"] .widget-title:before, #available-widgets [class*="firewall"] .widget-title:before { content: "\f332"; } -/* dashicons-chart-bar */ +/* chart-bar */ #available-widgets [class*="analytic"] .widget-title:before, #available-widgets [class*="stat"] .widget-title:before, #available-widgets [class*="poll"] .widget-title:before { content: "\f185"; } -/* dashicons-feedback */ +/* feedback */ #available-widgets [class*="form"] .widget-title:before { content: "\f175"; } -/* dashicons-email-alt */ +/* email-alt */ #available-widgets [class*="subscribe"] .widget-title:before, #available-widgets [class*="news"] .widget-title:before, #available-widgets [class*="contact"] .widget-title:before, #available-widgets [class*="mail"] .widget-title:before { content: "\f466"; } -/* dashicons-share */ +/* share */ #available-widgets [class*="share"] .widget-title:before, #available-widgets [class*="socia"] .widget-title:before { content: "\f237"; } -/* dashicons-translation */ +/* translation */ #available-widgets [class*="lang"] .widget-title:before, #available-widgets [class*="translat"] .widget-title:before { content: "\f326"; } -/* dashicons-location-alt */ +/* location-alt */ #available-widgets [class*="locat"] .widget-title:before, #available-widgets [class*="map"] .widget-title:before { content: "\f231"; } -/* dashicons-download */ +/* download */ #available-widgets [class*="download"] .widget-title:before { content: "\f316"; } -/* dashicons-cloud */ +/* cloud */ #available-widgets [class*="weather"] .widget-title:before { content: "\f176"; top: -4px;} -/* dashicons-facebook */ +/* facebook */ #available-widgets [class*="facebook"] .widget-title:before { content: "\f304"; } -/* dashicons-twitter */ +/* twitter */ #available-widgets [class*="tweet"] .widget-title:before, #available-widgets [class*="twitter"] .widget-title:before { content: "\f301"; } @media screen and (max-height: 700px) and (min-width: 981px) { - /* Compact widget-tops on smaller laptops, but not tablets. See ticket #27112#comment:4 */ + /* Compact widget-tops on smaller laptops, but not tablets. See https://core.trac.wordpress.org/ticket/27112#comment:4 */ .customize-control-widget_form { margin-bottom: 0; } diff --git a/wp-admin/css/customize-widgets-rtl.min.css b/wp-admin/css/customize-widgets-rtl.min.css index 468b345..4d9f6ba 100644 --- a/wp-admin/css/customize-widgets-rtl.min.css +++ b/wp-admin/css/customize-widgets-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.control-section.control-section-sidebar .accordion-section-content.ui-sortable{overflow:visible}.customize-control-widget_form .widget-top{background:#fff;transition:opacity .5s}.customize-control .widget-action{color:#787c82}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#1d2327}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;right:299px;top:25%;border:1px solid #dcdcde;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#dcdcde}.widget-inside{padding:1px 10px 10px;border:0;border-top:1px solid #c3c4c7;line-height:1.23076923}.customize-control-widget_form.expanded .widget-action .toggle-indicator:before{content:"\f142"}.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before{content:"\f141"}.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before{content:"\f139"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title,.widget-top{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;box-shadow:0 0 2px rgba(79,148,212,.8);position:relative;z-index:1}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#f6f7f7}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #c3c4c7;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 42px 15px 15px;color:#50575e;border-top:1px solid #c3c4c7;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;right:10px;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #c3c4c7}#customize-theme-controls .widget-area-select .selected{color:#fff;background:#2271b1}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:left;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-customizer div.mce-inline-toolbar-grp,.wp-customizer div.mce-tooltip{z-index:500100!important}.wp-customizer .ui-autocomplete.wplink-autocomplete{z-index:500110}.wp-customizer #wp-link-backdrop{z-index:500100}.wp-customizer #wp-link-wrap{z-index:500105}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets .widget-action{display:none}.ios #available-widgets{transition:right 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f6f7f7;border-bottom-color:#c3c4c7;color:#2271b1;border-right:4px solid #2271b1}#customize-controls summary.widget-title{font-size:1em}#available-widgets summary.widget-title{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#646970}#customize-preview{transition:all .2s}body.adding-widget #available-widgets{right:0;visibility:visible}body.adding-widget .wp-full-overlay-main{right:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative;list-style:none;padding:10px 0}#available-widgets summary::-webkit-details-marker{display:none}#available-widgets .widget-title:before{content:"\f132";position:inline;vertical-align:sub;margin-left:20px;color:#2c3338;font:normal 20px/1 dashicons;text-align:center;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=like] .widget-title:before,#available-widgets [class*=super] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=chat] .widget-title:before,#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=calendar] .widget-title:before,#available-widgets [class*=event] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=tube] .widget-title:before,#available-widgets [class*=video] .widget-title:before{content:"\f126"}#available-widgets [class*=audio] .widget-title:before,#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before{content:"\f127"}#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before,#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=user] .widget-title:before{content:"\f110"}#available-widgets [class*=cart] .widget-title:before,#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=firewall] .widget-title:before,#available-widgets [class*=secur] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=poll] .widget-title:before,#available-widgets [class*=stat] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=subscribe] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget_form{margin-bottom:0}.widget-top{box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-top .widget-action{padding:8px 10px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 42px 11px 15px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file +.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.control-section.control-section-sidebar .accordion-section-content.ui-sortable{overflow:visible}.customize-control-widget_form .widget-top{background:#fff;transition:opacity .5s}.customize-control .widget-action{color:#72777c}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#23282d}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;right:299px;top:25%;border:1px solid #e5e5e5;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#e3e3e3}.widget-inside{padding:1px 10px 10px 10px;border-top:none;line-height:16px}.customize-control-widget_form.expanded .widget-action .toggle-indicator:before{content:"\f142"}.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before{content:"\f141"}.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before{content:"\f139"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title,.widget-top{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#fafafa}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #ddd;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 42px 15px 15px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;right:10px;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #eee}#customize-theme-controls .widget-area-select .selected{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.4);background:#00a0d2}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:left;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-customizer div.mce-inline-toolbar-grp,.wp-customizer div.mce-tooltip{z-index:500100!important}.wp-customizer .ui-autocomplete.wplink-autocomplete{z-index:500110}.wp-customizer #wp-link-backdrop{z-index:500100}.wp-customizer #wp-link-wrap{z-index:500105}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}.ios #available-widgets{transition:right 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f3f3f5;border-bottom-color:#ccc;color:#0073aa;border-right:4px solid #0073aa}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#72777c}#customize-preview{transition:all .2s}body.adding-widget #available-widgets{right:0;visibility:visible}body.adding-widget .wp-full-overlay-main{right:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{content:"\f132";position:absolute;top:-3px;left:100%;margin-left:20px;width:20px;height:20px;color:#32373c;font:normal 20px/1 dashicons;text-align:center;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=like] .widget-title:before,#available-widgets [class*=super] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=chat] .widget-title:before,#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=calendar] .widget-title:before,#available-widgets [class*=event] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=tube] .widget-title:before,#available-widgets [class*=video] .widget-title:before{content:"\f126"}#available-widgets [class*=audio] .widget-title:before,#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before{content:"\f127"}#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before,#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=user] .widget-title:before{content:"\f110"}#available-widgets [class*=cart] .widget-title:before,#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=firewall] .widget-title:before,#available-widgets [class*=secur] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=poll] .widget-title:before,#available-widgets [class*=stat] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=subscribe] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget_form{margin-bottom:0}.widget-top{box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-top .widget-action{padding:8px 10px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 42px 11px 15px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file diff --git a/wp-admin/css/customize-widgets.css b/wp-admin/css/customize-widgets.css index dd5f483..7f4a3a0 100644 --- a/wp-admin/css/customize-widgets.css +++ b/wp-admin/css/customize-widgets.css @@ -25,12 +25,12 @@ } .customize-control .widget-action { - color: #787c82; + color: #72777c; } .customize-control .widget-top:hover .widget-action, .customize-control .widget-action:focus { - color: #1d2327; + color: #23282d; } .customize-control-widget_form:not(.widget-rendered) .widget-top { @@ -53,8 +53,8 @@ .customize-control-widget_form.widget-form-disabled .widget-content { opacity: 0.7; pointer-events: none; - -webkit-user-select: none; -moz-user-select: none; + -webkit-user-select: none; user-select: none; } @@ -66,7 +66,7 @@ position: fixed; left: 299px; top: 25%; - border: 1px solid #dcdcde; + border: 1px solid rgb(229, 229, 229); overflow: auto; } .customize-control-widget_form.wide-widget-control .widget-inside > .form { @@ -78,14 +78,13 @@ } .customize-control-widget_form.wide-widget-control.expanding .widget-top, .customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top { - background-color: #dcdcde; + background-color: rgb(227, 227, 227); } .widget-inside { - padding: 1px 10px 10px; - border: 0; - border-top: 1px solid #c3c4c7; - line-height: 1.23076923; + padding: 1px 10px 10px 10px; + border-top: none; + line-height: 16px; } .customize-control-widget_form.expanded .widget-action .toggle-indicator:before { @@ -112,7 +111,7 @@ .control-section.accordion-section.highlighted > .accordion-section-title, .customize-control-widget_form.highlighted { outline: none; - box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); + box-shadow: 0 0 2px rgba(30,140,190,0.8); position: relative; z-index: 1; } @@ -128,7 +127,7 @@ #customize-theme-controls .widget-reorder-nav { display: none; float: right; - background-color: #f6f7f7; + background-color: #fafafa; } .move-widget:before { @@ -138,7 +137,7 @@ #customize-theme-controls .move-widget-area { display: none; background: #fff; - border: 1px solid #c3c4c7; + border: 1px solid #ddd; border-top: none; cursor: auto; } @@ -163,8 +162,8 @@ position: relative; margin: 0; padding: 13px 15px 15px 42px; - color: #50575e; - border-top: 1px solid #c3c4c7; + color: #555; + border-top: 1px solid #eee; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; @@ -183,12 +182,13 @@ } #customize-theme-controls .widget-area-select li:last-child { - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #eee; } #customize-theme-controls .widget-area-select .selected { color: #fff; - background: #2271b1; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); + background: #00a0d2; } #customize-theme-controls .widget-area-select .selected:before { @@ -233,35 +233,30 @@ width: auto !important; } -/* Keep rule that is no longer necessary on widgets.php. */ -#available-widgets .widget-action { - display: none; -} - .ios #available-widgets { transition: left 0s; } #available-widgets .widget-tpl:hover, #available-widgets .widget-tpl.selected { - background: #f6f7f7; - border-bottom-color: #c3c4c7; - color: #2271b1; - border-left: 4px solid #2271b1; + background: #f3f3f5; + border-bottom-color: #ccc; + color: #0073aa; + border-left: 4px solid #0073aa; } -#customize-controls summary.widget-title { +#customize-controls .widget-title h3 { font-size: 1em; } -#available-widgets summary.widget-title { +#available-widgets .widget-title h3 { padding: 0 0 5px; font-size: 14px; } #available-widgets .widget .widget-description { padding: 0; - color: #646970; + color: #72777c; } #customize-preview { @@ -290,21 +285,17 @@ body.adding-widget #customize-preview { #available-widgets .widget-title { position: relative; - list-style: none; - padding: 10px 0; -} - -/* Fix for Safari */ -#available-widgets summary::-webkit-details-marker { - display: none; } #available-widgets .widget-title:before { content: "\f132"; - position: inline; - vertical-align: sub; + position: absolute; + top: -3px; + right: 100%; margin-right: 20px; - color: #2c3338; + width: 20px; + height: 20px; + color: #32373c; font: normal 20px/1 dashicons; text-align: center; box-sizing: border-box; @@ -312,76 +303,76 @@ body.adding-widget #customize-preview { -moz-osx-font-smoothing: grayscale; } -/* dashicons-smiley */ +/* smiley */ #available-widgets [class*="easy"] .widget-title:before { content: "\f328"; top: -4px; } -/* dashicons-star-filled */ +/* star-filled */ #available-widgets [class*="super"] .widget-title:before, #available-widgets [class*="like"] .widget-title:before { content: "\f155"; top: -4px; } -/* dashicons-wordpress */ +/* wordpress */ #available-widgets [class*="meta"] .widget-title:before { content: "\f120"; } -/* dashicons-archive */ +/* archive-box */ #available-widgets [class*="archives"] .widget-title:before { content: "\f480"; top: -4px; } -/* dashicons-category */ +/* category */ #available-widgets [class*="categor"] .widget-title:before { content: "\f318"; top: -4px; } -/* dashicons-admin-comments */ +/* comments */ #available-widgets [class*="comment"] .widget-title:before, #available-widgets [class*="testimonial"] .widget-title:before, #available-widgets [class*="chat"] .widget-title:before { content: "\f101"; } -/* dashicons-admin-post */ +/* post */ #available-widgets [class*="post"] .widget-title:before { content: "\f109"; } -/* dashicons-admin-page */ +/* admin-page */ #available-widgets [class*="page"] .widget-title:before { content: "\f105"; } -/* dashicons-text */ +/* text */ #available-widgets [class*="text"] .widget-title:before { content: "\f478"; } -/* dashicons-admin-links */ +/* links */ #available-widgets [class*="link"] .widget-title:before { content: "\f103"; } -/* dashicons-search */ +/* search */ #available-widgets [class*="search"] .widget-title:before { content: "\f179"; } -/* dashicons-menu */ +/* menu */ #available-widgets [class*="menu"] .widget-title:before, #available-widgets [class*="nav"] .widget-title:before { content: "\f333"; } -/* dashicons-tagcloud */ +/* tag-cloud */ #available-widgets [class*="tag"] .widget-title:before { content: "\f479"; } -/* dashicons-rss */ +/* rss */ #available-widgets [class*="rss"] .widget-title:before { content: "\f303"; top: -6px; } -/* dashicons-calendar */ +/* calendar */ #available-widgets [class*="event"] .widget-title:before, #available-widgets [class*="calendar"] .widget-title:before { content: "\f145"; top: -4px;} -/* dashicons-format-image */ +/* format-image */ #available-widgets [class*="image"] .widget-title:before, #available-widgets [class*="photo"] .widget-title:before, #available-widgets [class*="slide"] .widget-title:before, #available-widgets [class*="instagram"] .widget-title:before { content: "\f128"; } -/* dashicons-format-gallery */ +/* format-gallery */ #available-widgets [class*="album"] .widget-title:before, #available-widgets [class*="galler"] .widget-title:before { content: "\f161"; } -/* dashicons-format-video */ +/* format-video */ #available-widgets [class*="video"] .widget-title:before, #available-widgets [class*="tube"] .widget-title:before { content: "\f126"; } -/* dashicons-format-audio */ +/* format-audio */ #available-widgets [class*="music"] .widget-title:before, #available-widgets [class*="radio"] .widget-title:before, #available-widgets [class*="audio"] .widget-title:before { content: "\f127"; } -/* dashicons-admin-users */ +/* admin-users */ #available-widgets [class*="login"] .widget-title:before, #available-widgets [class*="user"] .widget-title:before, #available-widgets [class*="member"] .widget-title:before, @@ -390,56 +381,56 @@ body.adding-widget #customize-preview { #available-widgets [class*="profile"] .widget-title:before, #available-widgets [class*="grofile"] .widget-title:before { content: "\f110"; } -/* dashicons-cart */ +/* cart */ #available-widgets [class*="commerce"] .widget-title:before, #available-widgets [class*="shop"] .widget-title:before, #available-widgets [class*="cart"] .widget-title:before { content: "\f174"; top: -4px; } -/* dashicons-shield */ +/* shield */ #available-widgets [class*="secur"] .widget-title:before, #available-widgets [class*="firewall"] .widget-title:before { content: "\f332"; } -/* dashicons-chart-bar */ +/* chart-bar */ #available-widgets [class*="analytic"] .widget-title:before, #available-widgets [class*="stat"] .widget-title:before, #available-widgets [class*="poll"] .widget-title:before { content: "\f185"; } -/* dashicons-feedback */ +/* feedback */ #available-widgets [class*="form"] .widget-title:before { content: "\f175"; } -/* dashicons-email-alt */ +/* email-alt */ #available-widgets [class*="subscribe"] .widget-title:before, #available-widgets [class*="news"] .widget-title:before, #available-widgets [class*="contact"] .widget-title:before, #available-widgets [class*="mail"] .widget-title:before { content: "\f466"; } -/* dashicons-share */ +/* share */ #available-widgets [class*="share"] .widget-title:before, #available-widgets [class*="socia"] .widget-title:before { content: "\f237"; } -/* dashicons-translation */ +/* translation */ #available-widgets [class*="lang"] .widget-title:before, #available-widgets [class*="translat"] .widget-title:before { content: "\f326"; } -/* dashicons-location-alt */ +/* location-alt */ #available-widgets [class*="locat"] .widget-title:before, #available-widgets [class*="map"] .widget-title:before { content: "\f231"; } -/* dashicons-download */ +/* download */ #available-widgets [class*="download"] .widget-title:before { content: "\f316"; } -/* dashicons-cloud */ +/* cloud */ #available-widgets [class*="weather"] .widget-title:before { content: "\f176"; top: -4px;} -/* dashicons-facebook */ +/* facebook */ #available-widgets [class*="facebook"] .widget-title:before { content: "\f304"; } -/* dashicons-twitter */ +/* twitter */ #available-widgets [class*="tweet"] .widget-title:before, #available-widgets [class*="twitter"] .widget-title:before { content: "\f301"; } @media screen and (max-height: 700px) and (min-width: 981px) { - /* Compact widget-tops on smaller laptops, but not tablets. See ticket #27112#comment:4 */ + /* Compact widget-tops on smaller laptops, but not tablets. See https://core.trac.wordpress.org/ticket/27112#comment:4 */ .customize-control-widget_form { margin-bottom: 0; } diff --git a/wp-admin/css/customize-widgets.min.css b/wp-admin/css/customize-widgets.min.css index 3740a9a..14905dc 100644 --- a/wp-admin/css/customize-widgets.min.css +++ b/wp-admin/css/customize-widgets.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.control-section.control-section-sidebar .accordion-section-content.ui-sortable{overflow:visible}.customize-control-widget_form .widget-top{background:#fff;transition:opacity .5s}.customize-control .widget-action{color:#787c82}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#1d2327}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;left:299px;top:25%;border:1px solid #dcdcde;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#dcdcde}.widget-inside{padding:1px 10px 10px;border:0;border-top:1px solid #c3c4c7;line-height:1.23076923}.customize-control-widget_form.expanded .widget-action .toggle-indicator:before{content:"\f142"}.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before{content:"\f139"}.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before{content:"\f141"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title,.widget-top{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;box-shadow:0 0 2px rgba(79,148,212,.8);position:relative;z-index:1}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#f6f7f7}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #c3c4c7;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 15px 15px 42px;color:#50575e;border-top:1px solid #c3c4c7;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;left:10px;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #c3c4c7}#customize-theme-controls .widget-area-select .selected{color:#fff;background:#2271b1}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:right;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-customizer div.mce-inline-toolbar-grp,.wp-customizer div.mce-tooltip{z-index:500100!important}.wp-customizer .ui-autocomplete.wplink-autocomplete{z-index:500110}.wp-customizer #wp-link-backdrop{z-index:500100}.wp-customizer #wp-link-wrap{z-index:500105}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets .widget-action{display:none}.ios #available-widgets{transition:left 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f6f7f7;border-bottom-color:#c3c4c7;color:#2271b1;border-left:4px solid #2271b1}#customize-controls summary.widget-title{font-size:1em}#available-widgets summary.widget-title{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#646970}#customize-preview{transition:all .2s}body.adding-widget #available-widgets{left:0;visibility:visible}body.adding-widget .wp-full-overlay-main{left:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative;list-style:none;padding:10px 0}#available-widgets summary::-webkit-details-marker{display:none}#available-widgets .widget-title:before{content:"\f132";position:inline;vertical-align:sub;margin-right:20px;color:#2c3338;font:normal 20px/1 dashicons;text-align:center;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=like] .widget-title:before,#available-widgets [class*=super] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=chat] .widget-title:before,#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=calendar] .widget-title:before,#available-widgets [class*=event] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=tube] .widget-title:before,#available-widgets [class*=video] .widget-title:before{content:"\f126"}#available-widgets [class*=audio] .widget-title:before,#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before{content:"\f127"}#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before,#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=user] .widget-title:before{content:"\f110"}#available-widgets [class*=cart] .widget-title:before,#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=firewall] .widget-title:before,#available-widgets [class*=secur] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=poll] .widget-title:before,#available-widgets [class*=stat] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=subscribe] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget_form{margin-bottom:0}.widget-top{box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-top .widget-action{padding:8px 10px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 15px 11px 42px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file +.wp-full-overlay-sidebar{overflow:visible}.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label{display:none}.control-section.control-section-sidebar .accordion-section-content.ui-sortable{overflow:visible}.customize-control-widget_form .widget-top{background:#fff;transition:opacity .5s}.customize-control .widget-action{color:#72777c}.customize-control .widget-action:focus,.customize-control .widget-top:hover .widget-action{color:#23282d}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;left:299px;top:25%;border:1px solid #e5e5e5;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#e3e3e3}.widget-inside{padding:1px 10px 10px 10px;border-top:none;line-height:16px}.customize-control-widget_form.expanded .widget-action .toggle-indicator:before{content:"\f142"}.customize-control-widget_form.wide-widget-control .widget-action .toggle-indicator:before{content:"\f139"}.customize-control-widget_form.wide-widget-control.expanded .widget-action .toggle-indicator:before{content:"\f141"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title,.widget-top{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}#widget-customizer-control-templates{display:none}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#fafafa}.move-widget:before{content:"\f504"}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #ddd;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 15px 15px 42px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;left:10px;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #eee}#customize-theme-controls .widget-area-select .selected{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.4);background:#00a0d2}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:right;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-customizer div.mce-inline-toolbar-grp,.wp-customizer div.mce-tooltip{z-index:500100!important}.wp-customizer .ui-autocomplete.wplink-autocomplete{z-index:500110}.wp-customizer #wp-link-backdrop{z-index:500100}.wp-customizer #wp-link-wrap{z-index:500105}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}.ios #available-widgets{transition:left 0s}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#f3f3f5;border-bottom-color:#ccc;color:#0073aa;border-left:4px solid #0073aa}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#72777c}#customize-preview{transition:all .2s}body.adding-widget #available-widgets{left:0;visibility:visible}body.adding-widget .wp-full-overlay-main{left:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{content:"\f132";position:absolute;top:-3px;right:100%;margin-right:20px;width:20px;height:20px;color:#32373c;font:normal 20px/1 dashicons;text-align:center;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=like] .widget-title:before,#available-widgets [class*=super] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=chat] .widget-title:before,#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=calendar] .widget-title:before,#available-widgets [class*=event] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=tube] .widget-title:before,#available-widgets [class*=video] .widget-title:before{content:"\f126"}#available-widgets [class*=audio] .widget-title:before,#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before{content:"\f127"}#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before,#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=user] .widget-title:before{content:"\f110"}#available-widgets [class*=cart] .widget-title:before,#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=firewall] .widget-title:before,#available-widgets [class*=secur] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=poll] .widget-title:before,#available-widgets [class*=stat] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=subscribe] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget_form{margin-bottom:0}.widget-top{box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-top .widget-action{padding:8px 10px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 15px 11px 42px}#customize-theme-controls .widget-area-select li:before{top:8px}} \ No newline at end of file diff --git a/wp-admin/css/dashboard-rtl.css b/wp-admin/css/dashboard-rtl.css index 095e86f..cf497c0 100644 --- a/wp-admin/css/dashboard-rtl.css +++ b/wp-admin/css/dashboard-rtl.css @@ -38,6 +38,24 @@ border: none !important; } +.ie8 #wpbody-content #dashboard-widgets .postbox-container { + width: 49.5%; +} + +.ie8 #wpbody-content #dashboard-widgets #postbox-container-2, +.ie8 #wpbody-content #dashboard-widgets #postbox-container-3, +.ie8 #wpbody-content #dashboard-widgets #postbox-container-4 { + float: left; + width: 50.5%; +} + +.ie8 #dashboard-widgets #postbox-container-3 .empty-container, +.ie8 #dashboard-widgets #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; +} + #dashboard-widgets-wrap { overflow: hidden; margin: 0 -8px; @@ -48,41 +66,10 @@ } #dashboard-widgets .meta-box-sortables { - display: flow-root; /* avoid margin collapsing between parent and first/last child elements */ - /* Required min-height to make the jQuery UI Sortable drop zone work. */ + margin: 0 8px; min-height: 100px; - margin: 0 8px 20px; -} - -#dashboard-widgets .postbox-container .empty-container { - outline: 3px dashed #c3c4c7; - height: 250px; -} - -/* Only highlight drop zones when dragging and only in the 2 columns layout. */ -.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { - outline: 3px dashed #646970; - /* Prevent margin on the child from collapsing with margin on the parent. */ - display: flow-root; } -#dashboard-widgets .postbox-container .empty-container:after { - content: attr(data-emptystring); - margin: auto; - position: absolute; - top: 50%; - right: 0; - left: 0; - transform: translateY( -50% ); - padding: 0 2em; - text-align: center; - color: #646970; - font-size: 16px; - line-height: 1.5; - display: none; -} - - /* @todo: this was originally in this section, but likely belongs elsewhere */ #the-comment-list td.comment p.comment-author { margin-top: 0; @@ -110,101 +97,53 @@ max-width: 100%; } -/* Screen meta exception for when the "Dashboard" heading is missing or located below the Welcome Panel. */ -.index-php #screen-meta-links { - margin: 0 0 8px 20px; -} - /* Welcome Panel */ .welcome-panel { position: relative; overflow: auto; margin: 16px 0; - background-color: #273fcc; - font-size: 14px; - line-height: 1.3; - clear: both; + padding: 23px 10px 0; + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; + font-size: 13px; + line-height: 2.1em; } .welcome-panel h2 { margin: 0; - font-size: 48px; - font-weight: 600; - line-height: 1.25; + font-size: 21px; + font-weight: 400; + line-height: 1.2; } .welcome-panel h3 { - margin: 0; - font-size: 20px; - font-weight: 400; - line-height: 1.4; + margin: 0.7em 0 0; + font-size: 16px; } .welcome-panel p { - font-size: inherit; - line-height: inherit; + color: #72777c; } -.welcome-panel-header { - --about-header-bg-width: 780px; - - position: relative; - color: #fff; -} - -.welcome-panel-header-image { - position: absolute !important; - top: 0; - left: 0; - bottom: 0; - right: 0; - z-index: 0 !important; - overflow: hidden; -} - -.welcome-panel-header-image svg { - display: block; - margin: auto; - width: var(--about-header-bg-width); - height: auto; - transform: scale(0.75); - transform-origin: center top; -} - -.welcome-panel-header * { - color: inherit; - position: relative; - z-index: 1; -} - -.welcome-panel-header a:focus, -.welcome-panel-header a:hover { - color: inherit; +.welcome-panel a { text-decoration: none; } -.welcome-panel-header a:focus, -.welcome-panel .welcome-panel-close:focus { - outline-color: currentColor; - outline-offset: 1px; - box-shadow: none; -} - -.welcome-panel-header p { - margin: 0.5em 0 0; - font-size: 20px; - line-height: 1.4; +.welcome-panel .welcome-panel-tagline { + font-size: 110%; + margin: 0; } .welcome-panel .welcome-panel-close { position: absolute; + z-index: 10; top: 10px; left: 10px; - padding: 10px 24px 10px 15px; + padding: 10px 21px 10px 15px; font-size: 13px; line-height: 1.23076923; /* Chrome rounding, needs to be 16px equivalent */ text-decoration: none; - z-index: 1; /* Raise above the version image. */ } .welcome-panel .welcome-panel-close:before { @@ -212,23 +151,8 @@ top: 8px; right: 0; transition: all .1s ease-in-out; - content: '\f335'; - font-size: 24px; - color: #fff; -} - -.welcome-panel .welcome-panel-close { - color: #fff; -} - -.welcome-panel .welcome-panel-close:hover, -.welcome-panel .welcome-panel-close:focus, -.welcome-panel .welcome-panel-close:hover::before, -.welcome-panel .welcome-panel-close:focus::before { - color: #fff972; } -/* @deprecated 5.9.0 -- Button removed from panel. */ .wp-core-ui .welcome-panel .button.button-hero { margin: 15px 0 3px 13px; padding: 12px 36px; @@ -238,107 +162,64 @@ } .welcome-panel-content { - min-height: 400px; - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.welcome-panel-header { - box-sizing: border-box; - margin-right: auto; - margin-left: auto; + margin: 0 13px; max-width: 1500px; - width: 100%; - padding: 48px 48px 80px 0; } .welcome-panel .welcome-panel-column-container { - box-sizing: border-box; - width: 100%; clear: both; - display: grid; - z-index: 1; - padding: 48px; - grid-template-columns: repeat(3, 1fr); - gap: 32px; - align-self: flex-end; - background: #fff; -} - -[class*="welcome-panel-icon"] { - height: 60px; - width: 60px; - background-position: center; - background-size: 24px 24px; - background-repeat: no-repeat; - border-radius: 100%; + position: relative; } -.welcome-panel-column > svg { - margin-top: 4px; +.welcome-panel .welcome-panel-column { + width: 32%; + min-width: 200px; + float: right; } -.welcome-panel-column { - display: grid; - grid-template-columns: min-content 1fr; - gap: 24px; +.ie8 .welcome-panel .welcome-panel-column { + min-width: 230px; } -.welcome-panel-icon-pages { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E"); +.welcome-panel .welcome-panel-column:first-child { + width: 36%; } -.welcome-panel-icon-layout { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E"); +.welcome-panel-column p.hide-if-no-customize { + margin-top: 10px; } -.welcome-panel-icon-styles { - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E"); +.welcome-panel-column p { + margin-top: 7px; + color: #444; } -/* @deprecated 5.9.0 -- Section removed from welcome panel. */ .welcome-panel .welcome-widgets-menus { - line-height: 1.14285714; + line-height: 16px; } -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column ul { margin: 0.8em 0 1em 1em; } -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ -.welcome-panel li { - font-size: 14px; -} - -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ -.welcome-panel li a { - text-decoration: none; -} - -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column li { - line-height: 1.14285714; + line-height: 16px; list-style-type: none; padding: 0 0 8px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-icon { background: transparent !important; } /* Welcome Panel and Right Now common Icons style */ -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-icon:before, #dashboard_right_now li a:before, -#dashboard_right_now li span:before, -#dashboard_right_now .search-engines-info:before { - color: #646970; +#dashboard_right_now li span:before { + color: #82878c; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0 0 0 10px; position: relative; @@ -350,56 +231,32 @@ /* Welcome Panel specific Icons styles */ -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-write-blog:before, .welcome-panel .welcome-edit-page:before { content: "\f119"; top: -3px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-add-page:before { content: "\f132"; top: -1px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ -.welcome-panel .welcome-setup-home:before { - content: "\f102"; - top: -1px; -} - -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-view-site:before { content: "\f115"; top: -2px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-widgets-menus:before { content: "\f116"; top: -2px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ -.welcome-panel .welcome-widgets:before { - content: "\f538"; - top: -2px; -} - -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ -.welcome-panel .welcome-menus:before { - content: "\f163"; - top: -2px; -} - -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-comments:before { content: "\f117"; top: -1px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-learn-more:before { content: "\f118"; top: -1px; @@ -407,7 +264,6 @@ /* Right Now specific Icons styles */ -#dashboard_right_now .search-engines-info:before, #dashboard_right_now li a:before, #dashboard_right_now li > span:before { /* get only the first level span to exclude screen-reader-text in mu-storage */ content: "\f159"; /* generic icon for items added by CPTs ? */ @@ -440,11 +296,16 @@ content: "\f153"; } -#dashboard_right_now .search-engines-info:before { - content: "\f348"; -} +/* Dashboard ClassicPress News */ -/* Dashboard ClassicPress news */ +#dashboard_primary .classicpress-news-inline-notice { + border-bottom: 1px solid #eee; + border-right: 4px solid #00a0d2; + margin: 0 0 8px 0; + padding: 8px 12px; + background-color: #fafafa; + color: #72777c; +} #dashboard_primary .inside { margin: 0; @@ -471,13 +332,13 @@ body #dashboard-widgets .postbox form .submit { } .rssSummary { - color: #646970; + color: #72777c; margin-top: 4px; } #dashboard_primary .rss-widget { font-size: 13px; - padding: 0 12px; + padding: 0 12px 0; } #dashboard_primary .rss-widget:last-child { @@ -491,7 +352,7 @@ body #dashboard-widgets .postbox form .submit { #dashboard_primary .rss-widget span, #dashboard_primary .rss-widget span.rss-date { - color: #646970; + color: #72777c; } #dashboard_primary .rss-widget span.rss-date { @@ -503,44 +364,6 @@ body #dashboard-widgets .postbox form .submit { margin: 0; } -.classicpress-news-inline-notice { - background-color: #f6f7f7; - padding: 12px; - margin-bottom: 10px; - border-bottom: 1px solid #f0f0f1; -} - -.classicpress-news-inline-notice a { - text-decoration: none; -} - -.classicpress-news { - border-bottom: 1px solid #f0f0f1; -} - -.classicpress-news-footer { - padding: 12px; -} - -.classicpress-news-footer ul { - display: flex; - line-height: 1; - margin: 0; - align-items: center; - justify-content: flex-start; - gap: 1rem; -} - -.classicpress-news-footer ul li { - margin: 0; -} - -.classicpress-news-footer ul li a { - display: flex; - align-items: center; - gap: 0.3rem; -} - /* Dashboard right now */ #dashboard_right_now ul { @@ -575,10 +398,6 @@ body #dashboard-widgets .postbox form .submit { margin-right: 5px; } -#dashboard_right_now p.search-engines-info { - margin: 1em 0; -} - .mu-storage { overflow: hidden; } @@ -593,14 +412,14 @@ body #dashboard-widgets .postbox form .submit { /* Dashboard right now - Colors */ #dashboard_right_now .sub { - color: #50575e; - background: #f6f7f7; - border-top: 1px solid #f0f0f1; - padding: 10px 12px 6px; + color: #555d66; + background: #f5f5f5; + border-top: 1px solid #eee; + padding: 10px 12px 6px 12px; } #dashboard_right_now .sub h3 { - color: #50575e; + color: #555; } #dashboard_right_now .sub p { @@ -609,7 +428,7 @@ body #dashboard-widgets .postbox form .submit { #dashboard_right_now .warning a:before, #dashboard_right_now .warning span:before { - color: #d63638; + color: #d54e21; } /* Dashboard Quick Draft */ @@ -621,7 +440,7 @@ body #dashboard-widgets .postbox form .submit { #dashboard_quick_press div.updated { margin-bottom: 10px; - border: 1px solid #f0f0f1; + border: 1px solid #eee; border-width: 1px 0 1px 1px; } @@ -629,15 +448,23 @@ body #dashboard-widgets .postbox form .submit { margin: 12px; } -#dashboard_quick_press .drafts { +#dashboard_quick_press .drafts, +#dashboard_quick_press .easy-blogging { padding: 10px 0 0; } /* Dashboard Quick Draft - Form styling */ -#dashboard_quick_press label { - display: inline-block; - margin-bottom: 4px; +input#save-post { + float: right; +} + +form.initial-form.quickpress-open label.prompt { + font-style: normal; +} + +form.initial-form.quickpress-open input#title { + height: auto; } #dashboard_quick_press input, @@ -646,6 +473,10 @@ body #dashboard-widgets .postbox form .submit { margin: 0; } +#dashboard_quick_press textarea { + resize: vertical; +} + #dashboard-widgets .postbox form .submit { margin: -39px 0; float: left; @@ -655,18 +486,46 @@ body #dashboard-widgets .postbox form .submit { margin-top: 12px; } +#title-wrap #title-prompt-text, +.textarea-wrap #content-prompt-text { + color: #72777c; +} + +#title-wrap #title-prompt-text { + font-size: 1.1em; + padding: 7px 8px; +} + +.input-text-wrap, +.textarea-wrap { + position: relative; +} + +.input-text-wrap .prompt, +.textarea-wrap .prompt { + position: absolute; +} + +.textarea-wrap #content-prompt-text { + font-size: 1.1em; + padding: 7px 8px; +} + +.textarea-wrap textarea#content { + margin: 0 0 8px; + padding: 6px 7px; +} + #quick-press textarea#content { min-height: 90px; max-height: 1300px; - margin: 0 0 8px; - padding: 6px 7px; resize: none; } /* Dashboard Quick Draft - Drafts list */ .js #dashboard_quick_press .drafts { - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; } #dashboard_quick_press .drafts abbr { @@ -690,7 +549,7 @@ body #dashboard-widgets .postbox form .submit { margin-bottom: 1em; } #dashboard_quick_press .drafts li time { - color: #646970; + color: #72777c; } #dashboard_quick_press .drafts p { @@ -716,7 +575,7 @@ body #dashboard-widgets .postbox form .submit { padding: 0; font-size: 14px; font-weight: 400; - color: #1d2327; + color: #23282d; } #dashboard_quick_press .drafts h2 { @@ -748,25 +607,43 @@ body #dashboard-widgets .postbox form .submit { #dashboard_activity .no-activity { overflow: hidden; - padding: 12px 0; + padding: 0 0 12px; text-align: center; } #dashboard_activity .no-activity p { - color: #646970; + color: #72777c; font-size: 16px; } +#dashboard_activity .no-activity .smiley { + margin-top: 0; +} + +#dashboard_activity .no-activity .smiley:before { + content: "\f328"; + font: normal 120px/1 dashicons; + speak: none; + display: block; + margin: 0 0 0 5px; + padding: 0; + text-indent: 0; + text-align: center; + position: relative; + -webkit-font-smoothing: antialiased; + text-decoration: none !important; +} + #dashboard_activity .subsubsub { float: none; - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; margin: 0 -12px; padding: 8px 12px 4px; } #dashboard_activity .subsubsub a .count, #dashboard_activity .subsubsub a.current .count { - color: #646970; /* white background on the dashboard but #f0f0f1 on list tables */ + color: #72777c; /* white background on the dashboard but #f1f1f1 on list tables */ } #future-posts ul, @@ -785,11 +662,11 @@ body #dashboard-widgets .postbox form .submit { display: inline-block; margin-left: 5px; min-width: 150px; - color: #646970; + color: #72777c; } .activity-block { - border-bottom: 1px solid #f0f0f1; + border-bottom: 1px solid #eee; margin: 0 -12px; padding: 8px 12px 4px; } @@ -799,7 +676,7 @@ body #dashboard-widgets .postbox form .submit { } .activity-block .subsubsub li { - color: #dcdcde; + color: #ddd; } /* Dashboard activity widget - Comments */ @@ -813,7 +690,7 @@ body #dashboard-widgets .postbox form .submit { } #activity-widget #the-comment-list .comment-item { - background: #f6f7f7; + background: #fafafa; padding: 12px; position: relative; } @@ -823,7 +700,7 @@ body #dashboard-widgets .postbox form .submit { top: 12px; } -#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar { +#activity-widget #the-comment-list .dashboard-comment-wrap { padding-right: 63px; } @@ -832,15 +709,15 @@ body #dashboard-widgets .postbox form .submit { } #activity-widget #the-comment-list .comment-item p.row-actions { - margin: 4px 0 0; + margin: 4px 0 0 0; } #activity-widget #the-comment-list .comment-item:first-child { - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eeeeee; } #activity-widget #the-comment-list .unapproved { - background-color: #fcf9e8; + background-color: #fef7f1; } #activity-widget #the-comment-list .unapproved:before { @@ -850,7 +727,7 @@ body #dashboard-widgets .postbox form .submit { right: 0; top: 0; bottom: 0; - background: #d63638; + background: #d54e21; width: 4px; } @@ -898,9 +775,8 @@ body #dashboard-widgets .postbox form .submit { min-width: 0; } -#dashboard-widgets li a, -#dashboard-widgets .button-link, -.community-events-footer a { +#dashboard-widgets a, +#dashboard-widgets .button-link { text-decoration: none; } @@ -950,9 +826,9 @@ body #dashboard-widgets .postbox form .submit { } #latest-comments #the-comment-list .comment-meta { - line-height: 1.5; + line-height: 1.5em; margin: 0; - color: #646970; + color: #666; } #latest-comments #the-comment-list .comment-meta cite { @@ -973,6 +849,24 @@ body #dashboard-widgets .postbox form .submit { font-size: 13px; } +/* QuickDraft */ + +#title-wrap label, +#description-wrap label { + cursor: text; +} + +#title-wrap #title { + padding: 2px 6px; + font-size: 1.3em; + outline: none; +} + +#title-wrap #title-prompt-text { + font-size: 1.1em; + padding: 5px 8px; +} + /* Feeds */ .rss-widget ul { margin: 0; @@ -983,16 +877,16 @@ body #dashboard-widgets .postbox form .submit { a.rsswidget { font-size: 13px; font-weight: 600; - line-height: 1.4; + line-height: 1.4em; } .rss-widget ul li { - line-height: 1.5; + line-height: 1.5em; margin-bottom: 12px; } .rss-widget span.rss-date { - color: #646970; + color: #72777c; font-size: 13px; margin-right: 3px; } @@ -1023,23 +917,33 @@ a.rsswidget { } #dashboard_browser_nag p.browser-update-nag.has-browser-icon { - padding-left: 128px; + padding-left: 125px; } #dashboard_browser_nag .browser-icon { - margin-top: -32px; + margin-top: -35px; +} + +#dashboard_browser_nag.postbox.browser-insecure { + background-color: #ac1b1b; + border-color: #ac1b1b; } #dashboard_browser_nag.postbox { - background-color: #b32d2e; + background-color: #e29808; background-image: none; - border-color: #b32d2e; + border-color: #edc048; color: #fff; box-shadow: none; } +#dashboard_browser_nag.postbox.browser-insecure h2 { + border-bottom-color: #cd5a5a; + color: #fff; +} + #dashboard_browser_nag.postbox h2 { - border-bottom-color: transparent; + border-bottom-color: #f6e2ac; background: transparent none; color: #fff; box-shadow: none; @@ -1049,10 +953,6 @@ a.rsswidget { color: #fff; } -#dashboard_browser_nag.postbox .postbox-header { - border-color: transparent; -} - #dashboard_browser_nag h2.hndle { border: none; font-weight: 600; @@ -1070,66 +970,132 @@ a.rsswidget { font-size: 16px; } -/* PHP Nag */ -#dashboard_php_nag .dashicons-warning { - color: #dba617; - padding-left: 6px; +/* --------------------------------------------------------- + Dashboard Petitions Widget +------------------------------------------------------------*/ +#dashboard_petitions .postbox .inside { + margin: 0; + padding: 0; } -#dashboard_php_nag.php-no-security-updates .dashicons-warning, -#dashboard_php_nag.php-version-lower-than-future-minimum .dashicons-warning { - color: #d63638; +#dashboard_petitions .sub { + background: #f5f5f5; + padding: 10px 12px 6px; } -#dashboard_php_nag h2 { - display: inline-block; +/* Link to the petitions website */ +.cp_petitions_link { + margin: 1rem 0; } -#dashboard_php_nag p { - margin: 12px 0; +.petitions-tabs { + float: right; + width: 100%; + margin: 0; + list-style-type: none; + border-bottom: 1px solid #e7e7e7; + margin-top: 16px; } -#dashboard_php_nag .button .dashicons-external { - line-height: 25px; +.petitions-tabs > li { + float: right; + margin-bottom: -1px; } -.bigger-bolder-text { - font-weight: 600; +.petitions-tabs > li > a { + margin-left: 2px; + line-height: 1.5; + padding: 10px; + border: 1px solid transparent; + float: right; + text-decoration: none; +} + +.petitions-tabs > li > a:hover { + background-color: #f2f2f2; +} + +.petitions-tabs > li.active > a, +.petitions-tabs > li.active > a:hover, +.petitions-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #f2f2f2; + border-color: #f2f2f2; +} + +.petitions-content { + display: table; + width: 100%; +} + +.petitions-content > .petitions-pane { + float: right; + width: 100%; + display: none; +} + +.petitions-content > .petitions-pane.active { + display: block; +} + +/* Petitions list */ +table.cp_petitions { + width: 100%; + padding: 0; + border-spacing: 0; +} +table.cp_petitions thead { + background-color: #f7f7f7; +} + +table.cp_petitions tbody tr:nth-child(even) { + background: #f7f7f7; +} + +table.cp_petitions .votes-count { font-size: 14px; } -/* =Media Queries --------------------------------------------------------------- */ +table.cp_petitions .petition { + text-align: right; + font-weight: normal; +} -@media only screen and (min-width: 1600px) { - .welcome-panel .welcome-panel-column-container { - display: flex; - justify-content: center; - } +table.cp_petitions thead { + font-weight: 700; +} - .welcome-panel-column { - width: 100%; - max-width: 460px; - } +table.cp_petitions td { + padding: 8px; +} + +table.cp_petitions td:nth-child(1) { + text-align: center; +} + +table.cp_petitions span.planned { + /* display: inline; */ + background: #89288f; /* 61ce70 is the classic green but a pain to read */ + color: #fff; + padding: 2px 4px; +} + +table.cp_petitions span.started { + /* display: inline; */ + background: #1da21d; + color: #fff; + padding: 2px 4px; } +/* =Media Queries +-------------------------------------------------------------- */ + /* one column on the dash */ @media only screen and (max-width: 799px) { #wpbody-content #dashboard-widgets .postbox-container { width: 100%; } - - #dashboard-widgets .meta-box-sortables { - min-height: 0; - } - - .is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { - min-height: 100px; - } - - #dashboard-widgets .meta-box-sortables.empty-container { - margin-bottom: 0; - } } /* two columns on the dash, but keep the setting if one is selected */ @@ -1147,10 +1113,9 @@ a.rsswidget { #dashboard-widgets #postbox-container-3 .empty-container, #dashboard-widgets #postbox-container-4 .empty-container { - outline: none; + border: 0 none; height: 0; min-height: 0; - margin-bottom: 0; } #dashboard-widgets #postbox-container-3 .empty-container:after, @@ -1162,11 +1127,10 @@ a.rsswidget { width: 100%; } - #wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container { - outline: none; + #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container { + border: 0 none; height: 0; min-height: 0; - margin-bottom: 0; } /* show the radio buttons for column prefs only for one or two columns */ @@ -1180,7 +1144,7 @@ a.rsswidget { display: none; } - #dashboard-widgets .postbox-container .empty-container:after { + .metabox-holder .postbox-container .empty-container:after { display: block; } } @@ -1201,65 +1165,48 @@ a.rsswidget { } #dashboard-widgets #postbox-container-4 .empty-container { - outline: none; + border: 0 none; height: 0; min-height: 0; - margin-bottom: 0; } #dashboard-widgets #postbox-container-4 .empty-container:after { display: none; } - #dashboard-widgets .postbox-container .empty-container:after { + .metabox-holder .postbox-container .empty-container:after { display: block; } } -/* Always show the "Drag boxes here" CSS generated content on large screens. */ -@media only screen and (min-width: 1801px) { - #dashboard-widgets .postbox-container .empty-container:after { +@media screen and (max-width: 870px) { + .welcome-panel .welcome-panel-column, + .welcome-panel .welcome-panel-column:first-child { display: block; + float: none; + width: 100%; } -} -@media screen and (max-width: 870px) { - /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column li { display: inline-block; margin-left: 13px; } - /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column ul { margin: 0.4em 0 0; } - } -@media screen and (max-width: 1180px) and (min-width: 783px) { - .welcome-panel-column { - grid-template-columns: 1fr; - } - - [class*="welcome-panel-icon"], - .welcome-panel-column > svg { - display: none; +@media screen and ( max-width: 782px ) { + #dashboard_recent_comments #the-comment-list .comment-item .avatar { + height: 30px; + width: 30px; + margin: 4px 0 5px 10px; } } -@media screen and (max-width: 782px) { - .welcome-panel .welcome-panel-column-container { - grid-template-columns: 1fr; - box-sizing: border-box; - padding: 32px; - width: 100%; - } - - .welcome-panel .welcome-panel-column-content { - max-width: 520px; - } - +/* Smartphone */ +@media screen and (max-width: 600px) { /* Keep the close icon from overlapping the Welcome text. */ .welcome-panel .welcome-panel-close { overflow: hidden; @@ -1272,102 +1219,10 @@ a.rsswidget { left: 5px; } - .welcome-panel .welcome-panel-close::before { + /* Make the close icon larger for tappability. */ + .welcome-panel .welcome-panel-close:before { + font-size: 20px; top: 5px; right: -35px; } - - #dashboard-widgets h2 { - padding: 12px; - } - - #dashboard_recent_comments #the-comment-list .comment-item .avatar { - height: 30px; - width: 30px; - margin: 4px 0 5px 10px; - } - - .community-events-toggle-location { - height: 38px; - vertical-align: baseline; - } - - .community-events-form .regular-text { - height: 32px; - } - - #community-events-submit { - margin-bottom: 0; - /* Override .wp-core-ui .button */ - vertical-align: top; - } - - .community-events-form label, - #dashboard-widgets .community-events-cancel.button-link { - /* Same properties as the submit button for cross-browsers alignment. */ - font-size: 14px; - line-height: normal; - height: auto; - padding: 6px 0; - border: 1px solid transparent; - } - - .community-events .spinner { - margin-top: 7px; - } -} - -/* Smartphone */ -@media screen and (max-width: 600px) { - .welcome-panel-header { - padding: 32px 32px 64px; - } - - .welcome-panel-header-image { - display: none; - } -} - -@media screen and (max-width: 480px) { - .welcome-panel-column { - gap: 16px; - } -} - -@media screen and (max-width: 360px) { - .welcome-panel-column { - grid-template-columns: 1fr; - } - - [class*="welcome-panel-icon"], - .welcome-panel-column > svg { - display: none; - } -} - -@media screen and (min-width: 355px) { - .community-events .event-info { - display: table-row; - float: right; - max-width: 59%; - } - - .event-icon, - .event-icon[aria-hidden="true"] { - display: table-cell; - } - - .event-info-inner { - display: table-cell; - } - - .community-events .event-date-time { - float: left; - max-width: 39%; - } - - .community-events .event-date, - .community-events .event-time { - text-align: left; - } } diff --git a/wp-admin/css/dashboard-rtl.min.css b/wp-admin/css/dashboard-rtl.min.css index 2dde9ae..e6db0e2 100644 --- a/wp-admin/css/dashboard-rtl.min.css +++ b/wp-admin/css/dashboard-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:left;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:left}#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{display:flow-root;min-height:100px;margin:0 8px 20px}#dashboard-widgets .postbox-container .empty-container{outline:3px dashed #c3c4c7;height:250px}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{outline:3px dashed #646970;display:flow-root}#dashboard-widgets .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:50%;right:0;left:0;transform:translateY(-50%);padding:0 2em;text-align:center;color:#646970;font-size:16px;line-height:1.5;display:none}#the-comment-list td.comment p.comment-author{margin-top:0;margin-right:0}#the-comment-list p.comment-author img{float:right;margin-left: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}#the-comment-list td.comment img{max-width:100%}.index-php #screen-meta-links{margin:0 0 8px 20px}.welcome-panel{position:relative;overflow:auto;margin:16px 0;background-color:#273fcc;font-size:14px;line-height:1.3;clear:both}.welcome-panel h2{margin:0;font-size:48px;font-weight:600;line-height:1.25}.welcome-panel h3{margin:0;font-size:20px;font-weight:400;line-height:1.4}.welcome-panel p{font-size:inherit;line-height:inherit}.welcome-panel-header{--about-header-bg-width:780px;position:relative;color:#fff}.welcome-panel-header-image{position:absolute!important;top:0;left:0;bottom:0;right:0;z-index:0!important;overflow:hidden}.welcome-panel-header-image svg{display:block;margin:auto;width:var(--about-header-bg-width);height:auto;transform:scale(.75);transform-origin:center top}.welcome-panel-header *{color:inherit;position:relative;z-index:1}.welcome-panel-header a:focus,.welcome-panel-header a:hover{color:inherit;text-decoration:none}.welcome-panel .welcome-panel-close:focus,.welcome-panel-header a:focus{outline-color:currentColor;outline-offset:1px;box-shadow:none}.welcome-panel-header p{margin:.5em 0 0;font-size:20px;line-height:1.4}.welcome-panel .welcome-panel-close{position:absolute;top:10px;left:10px;padding:10px 24px 10px 15px;font-size:13px;line-height:1.23076923;text-decoration:none;z-index:1}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;right:0;transition:all .1s ease-in-out;content:'\f335';font-size:24px;color:#fff}.welcome-panel .welcome-panel-close{color:#fff}.welcome-panel .welcome-panel-close:focus,.welcome-panel .welcome-panel-close:focus::before,.welcome-panel .welcome-panel-close:hover,.welcome-panel .welcome-panel-close:hover::before{color:#fff972}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px 13px;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{min-height:400px;display:flex;flex-direction:column;justify-content:space-between}.welcome-panel-header{box-sizing:border-box;margin-right:auto;margin-left:auto;max-width:1500px;width:100%;padding:48px 48px 80px 0}.welcome-panel .welcome-panel-column-container{box-sizing:border-box;width:100%;clear:both;display:grid;z-index:1;padding:48px;grid-template-columns:repeat(3,1fr);gap:32px;align-self:flex-end;background:#fff}[class*=welcome-panel-icon]{height:60px;width:60px;background-position:center;background-size:24px 24px;background-repeat:no-repeat;border-radius:100%}.welcome-panel-column>svg{margin-top:4px}.welcome-panel-column{display:grid;grid-template-columns:min-content 1fr;gap:24px}.welcome-panel-icon-pages{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E")}.welcome-panel-icon-layout{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E")}.welcome-panel-icon-styles{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E")}.welcome-panel .welcome-widgets-menus{line-height:1.14285714}.welcome-panel .welcome-panel-column ul{margin:.8em 0 1em 1em}.welcome-panel li{font-size:14px}.welcome-panel li a{text-decoration:none}.welcome-panel .welcome-panel-column li{line-height:1.14285714;list-style-type:none;padding:0 0 8px}.welcome-panel .welcome-icon{background:0 0!important}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li span:before,.welcome-panel .welcome-icon:before{color:#646970;font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 0 0 10px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132";top:-1px}.welcome-panel .welcome-setup-home:before{content:"\f102";top:-1px}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-widgets:before{content:"\f538";top:-2px}.welcome-panel .welcome-menus:before{content:"\f163";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li>span:before{content:"\f159";padding:0 0 0 5px}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_right_now .search-engines-info:before{content:"\f348"}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .widget-loading{padding:12px 12px 0;margin-bottom:1em!important}#dashboard_primary .inside .notice{margin:0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#646970;margin-top:4px}#dashboard_primary .rss-widget{font-size:13px;padding:0 12px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#646970}#dashboard_primary .rss-widget span.rss-date{margin-right:12px}#dashboard_primary .rss-widget ul li{padding:4px 0;margin:0}.classicpress-news-inline-notice{background-color:#f6f7f7;padding:12px;margin-bottom:10px;border-bottom:1px solid #f0f0f1}.classicpress-news-inline-notice a{text-decoration:none}.classicpress-news{border-bottom:1px solid #f0f0f1}.classicpress-news-footer{padding:12px}.classicpress-news-footer ul{display:flex;line-height:1;margin:0;align-items:center;justify-content:flex-start;gap:1rem}.classicpress-news-footer ul li{margin:0}.classicpress-news-footer ul li a{display:flex;align-items:center;gap:.3rem}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:right;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:left;position:relative;top:-5px;margin-right:5px}#dashboard_right_now p.search-engines-info{margin:1em 0}.mu-storage{overflow:hidden}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now .sub{color:#50575e;background:#f6f7f7;border-top:1px solid #f0f0f1;padding:10px 12px 6px}#dashboard_right_now .sub h3{color:#50575e}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d63638}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #f0f0f1;border-width:1px 0 1px 1px}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts{padding:10px 0 0}#dashboard_quick_press label{display:inline-block;margin-bottom:4px}#dashboard_quick_press input,#dashboard_quick_press textarea{box-sizing:border-box;margin:0}#dashboard-widgets .postbox form .submit{margin:-39px 0;float:left}#description-wrap{margin-top:12px}#quick-press textarea#content{min-height:90px;max-height:1300px;margin:0 0 8px;padding:6px 7px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #f0f0f1}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:left;margin:0 0 0 12px}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts li time{color:#646970}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title{word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 0 0 5px}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#1d2327}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-right:0;margin-left:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-right:5px;vertical-align:middle;position:relative;top:-1px;margin-left:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:12px 0;text-align:center}#dashboard_activity .no-activity p{color:#646970;font-size:16px}#dashboard_activity .subsubsub{float:none;border-top:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}#dashboard_activity .subsubsub a .count,#dashboard_activity .subsubsub a.current .count{color:#646970}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-left:5px;min-width:150px;color:#646970}.activity-block{border-bottom:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#dcdcde}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-right:12px}#activity-widget #the-comment-list .comment-item{background:#f6f7f7;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:12px}#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar{padding-right:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #f0f0f1}#activity-widget #the-comment-list .unapproved{background-color:#fcf9e8}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;right:0;top:0;bottom:0;background:#d63638;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.postbox .button-link .edit-box{display:none}.edit-box{opacity:0}.edit-box:focus,.hndle:hover .edit-box{opacity:1}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets .button-link,#dashboard-widgets li a,.community-events-footer a{text-decoration:none}#dashboard-widgets h2 a{text-decoration:underline}#dashboard-widgets .hndle .postbox-title-action{float:left;line-height:1.2}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{min-height:50px;margin:0;padding:12px}#latest-comments #the-comment-list .pingback{padding-right:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5;margin:0;color:#646970}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;font-weight:600;line-height:1.4}.rss-widget ul li{line-height:1.5;margin-bottom:12px}.rss-widget span.rss-date{color:#646970;font-size:13px;margin-right:3px}.rss-widget cite{display:block;text-align:left;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}.dashboard-comment-wrap{word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-left:128px}#dashboard_browser_nag .browser-icon{margin-top:-32px}#dashboard_browser_nag.postbox{background-color:#b32d2e;background-image:none;border-color:#b32d2e;color:#fff;box-shadow:none}#dashboard_browser_nag.postbox h2{border-bottom-color:transparent;background:transparent none;color:#fff;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.postbox .postbox-header{border-color:transparent}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}#dashboard_php_nag .dashicons-warning{color:#dba617;padding-left:6px}#dashboard_php_nag.php-no-security-updates .dashicons-warning,#dashboard_php_nag.php-version-lower-than-future-minimum .dashicons-warning{color:#d63638}#dashboard_php_nag h2{display:inline-block}#dashboard_php_nag p{margin:12px 0}#dashboard_php_nag .button .dashicons-external{line-height:25px}.bigger-bolder-text{font-weight:600;font-size:14px}@media only screen and (min-width:1600px){.welcome-panel .welcome-panel-column-container{display:flex;justify-content:center}.welcome-panel-column{width:100%;max-width:460px}}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#dashboard-widgets .meta-box-sortables{min-height:0}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{min-height:100px}#dashboard-widgets .meta-box-sortables.empty-container{margin-bottom:0}}@media only screen and (min-width:800px) and (max-width:1499px){#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:left;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-3 .empty-container:after,#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left}#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1801px){#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column li{display:inline-block;margin-left:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:1180px) and (min-width:783px){.welcome-panel-column{grid-template-columns:1fr}.welcome-panel-column>svg,[class*=welcome-panel-icon]{display:none}}@media screen and (max-width:782px){.welcome-panel .welcome-panel-column-container{grid-template-columns:1fr;box-sizing:border-box;padding:32px;width:100%}.welcome-panel .welcome-panel-column-content{max-width:520px}.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;left:5px}.welcome-panel .welcome-panel-close::before{top:5px;right:-35px}#dashboard-widgets h2{padding:12px}#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 0 5px 10px}.community-events-toggle-location{height:38px;vertical-align:baseline}.community-events-form .regular-text{height:32px}#community-events-submit{margin-bottom:0;vertical-align:top}#dashboard-widgets .community-events-cancel.button-link,.community-events-form label{font-size:14px;line-height:normal;height:auto;padding:6px 0;border:1px solid transparent}.community-events .spinner{margin-top:7px}}@media screen and (max-width:600px){.welcome-panel-header{padding:32px 32px 64px}.welcome-panel-header-image{display:none}}@media screen and (max-width:480px){.welcome-panel-column{gap:16px}}@media screen and (max-width:360px){.welcome-panel-column{grid-template-columns:1fr}.welcome-panel-column>svg,[class*=welcome-panel-icon]{display:none}}@media screen and (min-width:355px){.community-events .event-info{display:table-row;float:right;max-width:59%}.event-icon,.event-icon[aria-hidden=true]{display:table-cell}.event-info-inner{display:table-cell}.community-events .event-date-time{float:left;max-width:39%}.community-events .event-date,.community-events .event-time{text-align:left}} \ No newline at end of file +#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:left;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:left}#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}.ie8 #wpbody-content #dashboard-widgets .postbox-container{width:49.5%}.ie8 #wpbody-content #dashboard-widgets #postbox-container-2,.ie8 #wpbody-content #dashboard-widgets #postbox-container-3,.ie8 #wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}.ie8 #dashboard-widgets #postbox-container-3 .empty-container,.ie8 #dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{margin:0 8px;min-height:100px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-right:0}#the-comment-list p.comment-author img{float:right;margin-left: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}#the-comment-list td.comment img{max-width:100%}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}.welcome-panel h2{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h3{margin:.7em 0 0;font-size:16px}.welcome-panel p{color:#72777c}.welcome-panel a{text-decoration:none}.welcome-panel .welcome-panel-tagline{font-size:110%;margin:0}.welcome-panel .welcome-panel-close{position:absolute;z-index:10;top:10px;left:10px;padding:10px 21px 10px 15px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;right:0;transition:all .1s ease-in-out}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px 13px;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{margin:0 13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;position:relative}.welcome-panel .welcome-panel-column{width:32%;min-width:200px;float:right}.ie8 .welcome-panel .welcome-panel-column{min-width:230px}.welcome-panel .welcome-panel-column:first-child{width:36%}.welcome-panel-column p.hide-if-no-customize{margin-top:10px}.welcome-panel-column p{margin-top:7px;color:#444}.welcome-panel .welcome-widgets-menus{line-height:16px}.welcome-panel .welcome-panel-column ul{margin:.8em 0 1em 1em}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none;padding:0 0 8px}.welcome-panel .welcome-icon{background:0 0!important}#dashboard_right_now li a:before,#dashboard_right_now li span:before,.welcome-panel .welcome-icon:before{color:#82878c;font:normal 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 10px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132";top:-1px}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}#dashboard_right_now li a:before,#dashboard_right_now li>span:before{content:"\f159";padding:0 0 0 5px}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_primary .classicpress-news-inline-notice{border-bottom:1px solid #eee;border-right:4px solid #00a0d2;margin:0 0 8px 0;padding:8px 12px;background-color:#fafafa;color:#72777c}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .widget-loading{padding:12px 12px 0;margin-bottom:1em!important}#dashboard_primary .inside .notice{margin:0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#72777c;margin-top:4px}#dashboard_primary .rss-widget{font-size:13px;padding:0 12px 0}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#72777c}#dashboard_primary .rss-widget span.rss-date{margin-right:12px}#dashboard_primary .rss-widget ul li{padding:4px 0;margin:0}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:right;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:left;position:relative;top:-5px;margin-right:5px}.mu-storage{overflow:hidden}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now .sub{color:#555d66;background:#f5f5f5;border-top:1px solid #eee;padding:10px 12px 6px 12px}#dashboard_right_now .sub h3{color:#555}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d54e21}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #eee;border-width:1px 0 1px 1px}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts,#dashboard_quick_press .easy-blogging{padding:10px 0 0}input#save-post{float:right}form.initial-form.quickpress-open label.prompt{font-style:normal}form.initial-form.quickpress-open input#title{height:auto}#dashboard_quick_press input,#dashboard_quick_press textarea{box-sizing:border-box;margin:0}#dashboard_quick_press textarea{resize:vertical}#dashboard-widgets .postbox form .submit{margin:-39px 0;float:left}#description-wrap{margin-top:12px}#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#72777c}#title-wrap #title-prompt-text{font-size:1.1em;padding:7px 8px}.input-text-wrap,.textarea-wrap{position:relative}.input-text-wrap .prompt,.textarea-wrap .prompt{position:absolute}.textarea-wrap #content-prompt-text{font-size:1.1em;padding:7px 8px}.textarea-wrap textarea#content{margin:0 0 8px;padding:6px 7px}#quick-press textarea#content{min-height:90px;max-height:1300px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #eee}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:left;margin:0 0 0 12px}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts li time{color:#72777c}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title{word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 0 0 5px}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#23282d}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-right:0;margin-left:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-right:5px;vertical-align:middle;position:relative;top:-1px;margin-left:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 0 12px;text-align:center}#dashboard_activity .no-activity p{color:#72777c;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:"\f328";font:normal 120px/1 dashicons;speak:none;display:block;margin:0 0 0 5px;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_activity .subsubsub{float:none;border-top:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}#dashboard_activity .subsubsub a .count,#dashboard_activity .subsubsub a.current .count{color:#72777c}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-left:5px;min-width:150px;color:#72777c}.activity-block{border-bottom:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#ddd}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-right:12px}#activity-widget #the-comment-list .comment-item{background:#fafafa;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:12px}#activity-widget #the-comment-list .dashboard-comment-wrap{padding-right:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #eee}#activity-widget #the-comment-list .unapproved{background-color:#fef7f1}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;right:0;top:0;bottom:0;background:#d54e21;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.postbox .button-link .edit-box{display:none}.edit-box{opacity:0}.edit-box:focus,.hndle:hover .edit-box{opacity:1}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets .button-link,#dashboard-widgets a{text-decoration:none}#dashboard-widgets h2 a{text-decoration:underline}#dashboard-widgets .hndle .postbox-title-action{float:left;line-height:1.2}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{min-height:50px;margin:0;padding:12px}#latest-comments #the-comment-list .pingback{padding-right:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5em;margin:0;color:#666}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}#description-wrap label,#title-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;outline:0}#title-wrap #title-prompt-text{font-size:1.1em;padding:5px 8px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;font-weight:600;line-height:1.4em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#72777c;font-size:13px;margin-right:3px}.rss-widget cite{display:block;text-align:left;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}.dashboard-comment-wrap{word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-left: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;color:#fff;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h2{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h2{border-bottom-color:#f6e2ac;background:transparent none;color:#fff;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}#dashboard_petitions .postbox .inside{margin:0;padding:0}#dashboard_petitions .sub{background:#f5f5f5;padding:10px 12px 6px}.cp_petitions_link{margin:1rem 0}.petitions-tabs{float:right;width:100%;margin:0;list-style-type:none;border-bottom:1px solid #e7e7e7;margin-top:16px}.petitions-tabs>li{float:right;margin-bottom:-1px}.petitions-tabs>li>a{margin-left:2px;line-height:1.5;padding:10px;border:1px solid transparent;float:right;text-decoration:none}.petitions-tabs>li>a:hover{background-color:#f2f2f2}.petitions-tabs>li.active>a,.petitions-tabs>li.active>a:focus,.petitions-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#f2f2f2;border-color:#f2f2f2}.petitions-content{display:table;width:100%}.petitions-content>.petitions-pane{float:right;width:100%;display:none}.petitions-content>.petitions-pane.active{display:block}table.cp_petitions{width:100%;padding:0;border-spacing:0}table.cp_petitions thead{background-color:#f7f7f7}table.cp_petitions tbody tr:nth-child(even){background:#f7f7f7}table.cp_petitions .votes-count{font-size:14px}table.cp_petitions .petition{text-align:right;font-weight:400}table.cp_petitions thead{font-weight:700}table.cp_petitions td{padding:8px}table.cp_petitions td:nth-child(1){text-align:center}table.cp_petitions span.planned{background:#89288f;color:#fff;padding:2px 4px}table.cp_petitions span.started{background:#1da21d;color:#fff;padding:2px 4px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}}@media only screen and (min-width:800px) and (max-width:1499px){#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:left;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#dashboard-widgets #postbox-container-3 .empty-container:after,#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#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 .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}.metabox-holder .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left}#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}.metabox-holder .postbox-container .empty-container:after{display:block}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column,.welcome-panel .welcome-panel-column:first-child{display:block;float:none;width:100%}.welcome-panel .welcome-panel-column li{display:inline-block;margin-left:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:782px){#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 0 5px 10px}}@media screen and (max-width:600px){.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;left:5px}.welcome-panel .welcome-panel-close:before{font-size:20px;top:5px;right:-35px}} \ No newline at end of file diff --git a/wp-admin/css/dashboard.css b/wp-admin/css/dashboard.css index 5d40b31..a985941 100644 --- a/wp-admin/css/dashboard.css +++ b/wp-admin/css/dashboard.css @@ -38,6 +38,24 @@ border: none !important; } +.ie8 #wpbody-content #dashboard-widgets .postbox-container { + width: 49.5%; +} + +.ie8 #wpbody-content #dashboard-widgets #postbox-container-2, +.ie8 #wpbody-content #dashboard-widgets #postbox-container-3, +.ie8 #wpbody-content #dashboard-widgets #postbox-container-4 { + float: right; + width: 50.5%; +} + +.ie8 #dashboard-widgets #postbox-container-3 .empty-container, +.ie8 #dashboard-widgets #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; +} + #dashboard-widgets-wrap { overflow: hidden; margin: 0 -8px; @@ -48,41 +66,10 @@ } #dashboard-widgets .meta-box-sortables { - display: flow-root; /* avoid margin collapsing between parent and first/last child elements */ - /* Required min-height to make the jQuery UI Sortable drop zone work. */ + margin: 0 8px; min-height: 100px; - margin: 0 8px 20px; -} - -#dashboard-widgets .postbox-container .empty-container { - outline: 3px dashed #c3c4c7; - height: 250px; -} - -/* Only highlight drop zones when dragging and only in the 2 columns layout. */ -.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { - outline: 3px dashed #646970; - /* Prevent margin on the child from collapsing with margin on the parent. */ - display: flow-root; } -#dashboard-widgets .postbox-container .empty-container:after { - content: attr(data-emptystring); - margin: auto; - position: absolute; - top: 50%; - left: 0; - right: 0; - transform: translateY( -50% ); - padding: 0 2em; - text-align: center; - color: #646970; - font-size: 16px; - line-height: 1.5; - display: none; -} - - /* @todo: this was originally in this section, but likely belongs elsewhere */ #the-comment-list td.comment p.comment-author { margin-top: 0; @@ -110,101 +97,53 @@ max-width: 100%; } -/* Screen meta exception for when the "Dashboard" heading is missing or located below the Welcome Panel. */ -.index-php #screen-meta-links { - margin: 0 20px 8px 0; -} - /* Welcome Panel */ .welcome-panel { position: relative; overflow: auto; margin: 16px 0; - background-color: #273fcc; - font-size: 14px; - line-height: 1.3; - clear: both; + padding: 23px 10px 0; + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); + background: #fff; + font-size: 13px; + line-height: 2.1em; } .welcome-panel h2 { margin: 0; - font-size: 48px; - font-weight: 600; - line-height: 1.25; + font-size: 21px; + font-weight: 400; + line-height: 1.2; } .welcome-panel h3 { - margin: 0; - font-size: 20px; - font-weight: 400; - line-height: 1.4; + margin: 0.7em 0 0; + font-size: 16px; } .welcome-panel p { - font-size: inherit; - line-height: inherit; + color: #72777c; } -.welcome-panel-header { - --about-header-bg-width: 780px; - - position: relative; - color: #fff; -} - -.welcome-panel-header-image { - position: absolute !important; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 0 !important; - overflow: hidden; -} - -.welcome-panel-header-image svg { - display: block; - margin: auto; - width: var(--about-header-bg-width); - height: auto; - transform: scale(0.75); - transform-origin: center top; -} - -.welcome-panel-header * { - color: inherit; - position: relative; - z-index: 1; -} - -.welcome-panel-header a:focus, -.welcome-panel-header a:hover { - color: inherit; +.welcome-panel a { text-decoration: none; } -.welcome-panel-header a:focus, -.welcome-panel .welcome-panel-close:focus { - outline-color: currentColor; - outline-offset: 1px; - box-shadow: none; -} - -.welcome-panel-header p { - margin: 0.5em 0 0; - font-size: 20px; - line-height: 1.4; +.welcome-panel .welcome-panel-tagline { + font-size: 110%; + margin: 0; } .welcome-panel .welcome-panel-close { position: absolute; + z-index: 10; top: 10px; right: 10px; - padding: 10px 15px 10px 24px; + padding: 10px 15px 10px 21px; font-size: 13px; line-height: 1.23076923; /* Chrome rounding, needs to be 16px equivalent */ text-decoration: none; - z-index: 1; /* Raise above the version image. */ } .welcome-panel .welcome-panel-close:before { @@ -212,23 +151,8 @@ top: 8px; left: 0; transition: all .1s ease-in-out; - content: '\f335'; - font-size: 24px; - color: #fff; -} - -.welcome-panel .welcome-panel-close { - color: #fff; -} - -.welcome-panel .welcome-panel-close:hover, -.welcome-panel .welcome-panel-close:focus, -.welcome-panel .welcome-panel-close:hover::before, -.welcome-panel .welcome-panel-close:focus::before { - color: #fff972; } -/* @deprecated 5.9.0 -- Button removed from panel. */ .wp-core-ui .welcome-panel .button.button-hero { margin: 15px 13px 3px 0; padding: 12px 36px; @@ -238,107 +162,64 @@ } .welcome-panel-content { - min-height: 400px; - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.welcome-panel-header { - box-sizing: border-box; - margin-left: auto; - margin-right: auto; + margin: 0 13px; max-width: 1500px; - width: 100%; - padding: 48px 0 80px 48px; } .welcome-panel .welcome-panel-column-container { - box-sizing: border-box; - width: 100%; clear: both; - display: grid; - z-index: 1; - padding: 48px; - grid-template-columns: repeat(3, 1fr); - gap: 32px; - align-self: flex-end; - background: #fff; -} - -[class*="welcome-panel-icon"] { - height: 60px; - width: 60px; - background-position: center; - background-size: 24px 24px; - background-repeat: no-repeat; - border-radius: 100%; + position: relative; } -.welcome-panel-column > svg { - margin-top: 4px; +.welcome-panel .welcome-panel-column { + width: 32%; + min-width: 200px; + float: left; } -.welcome-panel-column { - display: grid; - grid-template-columns: min-content 1fr; - gap: 24px; +.ie8 .welcome-panel .welcome-panel-column { + min-width: 230px; } -.welcome-panel-icon-pages { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E"); +.welcome-panel .welcome-panel-column:first-child { + width: 36%; } -.welcome-panel-icon-layout { - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E"); +.welcome-panel-column p.hide-if-no-customize { + margin-top: 10px; } -.welcome-panel-icon-styles { - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E"); +.welcome-panel-column p { + margin-top: 7px; + color: #444; } -/* @deprecated 5.9.0 -- Section removed from welcome panel. */ .welcome-panel .welcome-widgets-menus { - line-height: 1.14285714; + line-height: 16px; } -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column ul { margin: 0.8em 1em 1em 0; } -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ -.welcome-panel li { - font-size: 14px; -} - -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ -.welcome-panel li a { - text-decoration: none; -} - -/* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column li { - line-height: 1.14285714; + line-height: 16px; list-style-type: none; padding: 0 0 8px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-icon { background: transparent !important; } /* Welcome Panel and Right Now common Icons style */ -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-icon:before, #dashboard_right_now li a:before, -#dashboard_right_now li span:before, -#dashboard_right_now .search-engines-info:before { - color: #646970; +#dashboard_right_now li span:before { + color: #82878c; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0 10px 0 0; position: relative; @@ -350,56 +231,32 @@ /* Welcome Panel specific Icons styles */ -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-write-blog:before, .welcome-panel .welcome-edit-page:before { content: "\f119"; top: -3px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-add-page:before { content: "\f132"; top: -1px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ -.welcome-panel .welcome-setup-home:before { - content: "\f102"; - top: -1px; -} - -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-view-site:before { content: "\f115"; top: -2px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-widgets-menus:before { content: "\f116"; top: -2px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ -.welcome-panel .welcome-widgets:before { - content: "\f538"; - top: -2px; -} - -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ -.welcome-panel .welcome-menus:before { - content: "\f163"; - top: -2px; -} - -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-comments:before { content: "\f117"; top: -1px; } -/* @deprecated 5.9.0 -- Icons removed from welcome panel. */ .welcome-panel .welcome-learn-more:before { content: "\f118"; top: -1px; @@ -407,7 +264,6 @@ /* Right Now specific Icons styles */ -#dashboard_right_now .search-engines-info:before, #dashboard_right_now li a:before, #dashboard_right_now li > span:before { /* get only the first level span to exclude screen-reader-text in mu-storage */ content: "\f159"; /* generic icon for items added by CPTs ? */ @@ -440,11 +296,16 @@ content: "\f153"; } -#dashboard_right_now .search-engines-info:before { - content: "\f348"; -} +/* Dashboard ClassicPress News */ -/* Dashboard ClassicPress news */ +#dashboard_primary .classicpress-news-inline-notice { + border-bottom: 1px solid #eee; + border-left: 4px solid #00a0d2; + margin: 0 0 8px 0; + padding: 8px 12px; + background-color: #fafafa; + color: #72777c; +} #dashboard_primary .inside { margin: 0; @@ -471,13 +332,13 @@ body #dashboard-widgets .postbox form .submit { } .rssSummary { - color: #646970; + color: #72777c; margin-top: 4px; } #dashboard_primary .rss-widget { font-size: 13px; - padding: 0 12px; + padding: 0 12px 0; } #dashboard_primary .rss-widget:last-child { @@ -491,7 +352,7 @@ body #dashboard-widgets .postbox form .submit { #dashboard_primary .rss-widget span, #dashboard_primary .rss-widget span.rss-date { - color: #646970; + color: #72777c; } #dashboard_primary .rss-widget span.rss-date { @@ -503,44 +364,6 @@ body #dashboard-widgets .postbox form .submit { margin: 0; } -.classicpress-news-inline-notice { - background-color: #f6f7f7; - padding: 12px; - margin-bottom: 10px; - border-bottom: 1px solid #f0f0f1; -} - -.classicpress-news-inline-notice a { - text-decoration: none; -} - -.classicpress-news { - border-bottom: 1px solid #f0f0f1; -} - -.classicpress-news-footer { - padding: 12px; -} - -.classicpress-news-footer ul { - display: flex; - line-height: 1; - margin: 0; - align-items: center; - justify-content: flex-start; - gap: 1rem; -} - -.classicpress-news-footer ul li { - margin: 0; -} - -.classicpress-news-footer ul li a { - display: flex; - align-items: center; - gap: 0.3rem; -} - /* Dashboard right now */ #dashboard_right_now ul { @@ -575,10 +398,6 @@ body #dashboard-widgets .postbox form .submit { margin-left: 5px; } -#dashboard_right_now p.search-engines-info { - margin: 1em 0; -} - .mu-storage { overflow: hidden; } @@ -593,14 +412,14 @@ body #dashboard-widgets .postbox form .submit { /* Dashboard right now - Colors */ #dashboard_right_now .sub { - color: #50575e; - background: #f6f7f7; - border-top: 1px solid #f0f0f1; - padding: 10px 12px 6px; + color: #555d66; + background: #f5f5f5; + border-top: 1px solid #eee; + padding: 10px 12px 6px 12px; } #dashboard_right_now .sub h3 { - color: #50575e; + color: #555; } #dashboard_right_now .sub p { @@ -609,7 +428,7 @@ body #dashboard-widgets .postbox form .submit { #dashboard_right_now .warning a:before, #dashboard_right_now .warning span:before { - color: #d63638; + color: #d54e21; } /* Dashboard Quick Draft */ @@ -621,7 +440,7 @@ body #dashboard-widgets .postbox form .submit { #dashboard_quick_press div.updated { margin-bottom: 10px; - border: 1px solid #f0f0f1; + border: 1px solid #eee; border-width: 1px 1px 1px 0; } @@ -629,15 +448,23 @@ body #dashboard-widgets .postbox form .submit { margin: 12px; } -#dashboard_quick_press .drafts { +#dashboard_quick_press .drafts, +#dashboard_quick_press .easy-blogging { padding: 10px 0 0; } /* Dashboard Quick Draft - Form styling */ -#dashboard_quick_press label { - display: inline-block; - margin-bottom: 4px; +input#save-post { + float: left; +} + +form.initial-form.quickpress-open label.prompt { + font-style: normal; +} + +form.initial-form.quickpress-open input#title { + height: auto; } #dashboard_quick_press input, @@ -646,6 +473,10 @@ body #dashboard-widgets .postbox form .submit { margin: 0; } +#dashboard_quick_press textarea { + resize: vertical; +} + #dashboard-widgets .postbox form .submit { margin: -39px 0; float: right; @@ -655,18 +486,46 @@ body #dashboard-widgets .postbox form .submit { margin-top: 12px; } +#title-wrap #title-prompt-text, +.textarea-wrap #content-prompt-text { + color: #72777c; +} + +#title-wrap #title-prompt-text { + font-size: 1.1em; + padding: 7px 8px; +} + +.input-text-wrap, +.textarea-wrap { + position: relative; +} + +.input-text-wrap .prompt, +.textarea-wrap .prompt { + position: absolute; +} + +.textarea-wrap #content-prompt-text { + font-size: 1.1em; + padding: 7px 8px; +} + +.textarea-wrap textarea#content { + margin: 0 0 8px; + padding: 6px 7px; +} + #quick-press textarea#content { min-height: 90px; max-height: 1300px; - margin: 0 0 8px; - padding: 6px 7px; resize: none; } /* Dashboard Quick Draft - Drafts list */ .js #dashboard_quick_press .drafts { - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; } #dashboard_quick_press .drafts abbr { @@ -690,7 +549,7 @@ body #dashboard-widgets .postbox form .submit { margin-bottom: 1em; } #dashboard_quick_press .drafts li time { - color: #646970; + color: #72777c; } #dashboard_quick_press .drafts p { @@ -716,7 +575,7 @@ body #dashboard-widgets .postbox form .submit { padding: 0; font-size: 14px; font-weight: 400; - color: #1d2327; + color: #23282d; } #dashboard_quick_press .drafts h2 { @@ -748,25 +607,43 @@ body #dashboard-widgets .postbox form .submit { #dashboard_activity .no-activity { overflow: hidden; - padding: 12px 0; + padding: 0 0 12px; text-align: center; } #dashboard_activity .no-activity p { - color: #646970; + color: #72777c; font-size: 16px; } +#dashboard_activity .no-activity .smiley { + margin-top: 0; +} + +#dashboard_activity .no-activity .smiley:before { + content: "\f328"; + font: normal 120px/1 dashicons; + speak: none; + display: block; + margin: 0 5px 0 0; + padding: 0; + text-indent: 0; + text-align: center; + position: relative; + -webkit-font-smoothing: antialiased; + text-decoration: none !important; +} + #dashboard_activity .subsubsub { float: none; - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; margin: 0 -12px; padding: 8px 12px 4px; } #dashboard_activity .subsubsub a .count, #dashboard_activity .subsubsub a.current .count { - color: #646970; /* white background on the dashboard but #f0f0f1 on list tables */ + color: #72777c; /* white background on the dashboard but #f1f1f1 on list tables */ } #future-posts ul, @@ -785,11 +662,11 @@ body #dashboard-widgets .postbox form .submit { display: inline-block; margin-right: 5px; min-width: 150px; - color: #646970; + color: #72777c; } .activity-block { - border-bottom: 1px solid #f0f0f1; + border-bottom: 1px solid #eee; margin: 0 -12px; padding: 8px 12px 4px; } @@ -799,7 +676,7 @@ body #dashboard-widgets .postbox form .submit { } .activity-block .subsubsub li { - color: #dcdcde; + color: #ddd; } /* Dashboard activity widget - Comments */ @@ -813,7 +690,7 @@ body #dashboard-widgets .postbox form .submit { } #activity-widget #the-comment-list .comment-item { - background: #f6f7f7; + background: #fafafa; padding: 12px; position: relative; } @@ -823,7 +700,7 @@ body #dashboard-widgets .postbox form .submit { top: 12px; } -#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar { +#activity-widget #the-comment-list .dashboard-comment-wrap { padding-left: 63px; } @@ -832,15 +709,15 @@ body #dashboard-widgets .postbox form .submit { } #activity-widget #the-comment-list .comment-item p.row-actions { - margin: 4px 0 0; + margin: 4px 0 0 0; } #activity-widget #the-comment-list .comment-item:first-child { - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eeeeee; } #activity-widget #the-comment-list .unapproved { - background-color: #fcf9e8; + background-color: #fef7f1; } #activity-widget #the-comment-list .unapproved:before { @@ -850,7 +727,7 @@ body #dashboard-widgets .postbox form .submit { left: 0; top: 0; bottom: 0; - background: #d63638; + background: #d54e21; width: 4px; } @@ -898,9 +775,8 @@ body #dashboard-widgets .postbox form .submit { min-width: 0; } -#dashboard-widgets li a, -#dashboard-widgets .button-link, -.community-events-footer a { +#dashboard-widgets a, +#dashboard-widgets .button-link { text-decoration: none; } @@ -950,9 +826,9 @@ body #dashboard-widgets .postbox form .submit { } #latest-comments #the-comment-list .comment-meta { - line-height: 1.5; + line-height: 1.5em; margin: 0; - color: #646970; + color: #666; } #latest-comments #the-comment-list .comment-meta cite { @@ -973,6 +849,24 @@ body #dashboard-widgets .postbox form .submit { font-size: 13px; } +/* QuickDraft */ + +#title-wrap label, +#description-wrap label { + cursor: text; +} + +#title-wrap #title { + padding: 2px 6px; + font-size: 1.3em; + outline: none; +} + +#title-wrap #title-prompt-text { + font-size: 1.1em; + padding: 5px 8px; +} + /* Feeds */ .rss-widget ul { margin: 0; @@ -983,16 +877,16 @@ body #dashboard-widgets .postbox form .submit { a.rsswidget { font-size: 13px; font-weight: 600; - line-height: 1.4; + line-height: 1.4em; } .rss-widget ul li { - line-height: 1.5; + line-height: 1.5em; margin-bottom: 12px; } .rss-widget span.rss-date { - color: #646970; + color: #72777c; font-size: 13px; margin-left: 3px; } @@ -1023,23 +917,33 @@ a.rsswidget { } #dashboard_browser_nag p.browser-update-nag.has-browser-icon { - padding-right: 128px; + padding-right: 125px; } #dashboard_browser_nag .browser-icon { - margin-top: -32px; + margin-top: -35px; +} + +#dashboard_browser_nag.postbox.browser-insecure { + background-color: #ac1b1b; + border-color: #ac1b1b; } #dashboard_browser_nag.postbox { - background-color: #b32d2e; + background-color: #e29808; background-image: none; - border-color: #b32d2e; + border-color: #edc048; color: #fff; box-shadow: none; } +#dashboard_browser_nag.postbox.browser-insecure h2 { + border-bottom-color: #cd5a5a; + color: #fff; +} + #dashboard_browser_nag.postbox h2 { - border-bottom-color: transparent; + border-bottom-color: #f6e2ac; background: transparent none; color: #fff; box-shadow: none; @@ -1049,10 +953,6 @@ a.rsswidget { color: #fff; } -#dashboard_browser_nag.postbox .postbox-header { - border-color: transparent; -} - #dashboard_browser_nag h2.hndle { border: none; font-weight: 600; @@ -1070,66 +970,132 @@ a.rsswidget { font-size: 16px; } -/* PHP Nag */ -#dashboard_php_nag .dashicons-warning { - color: #dba617; - padding-right: 6px; +/* --------------------------------------------------------- + Dashboard Petitions Widget +------------------------------------------------------------*/ +#dashboard_petitions .postbox .inside { + margin: 0; + padding: 0; } -#dashboard_php_nag.php-no-security-updates .dashicons-warning, -#dashboard_php_nag.php-version-lower-than-future-minimum .dashicons-warning { - color: #d63638; +#dashboard_petitions .sub { + background: #f5f5f5; + padding: 10px 12px 6px; } -#dashboard_php_nag h2 { - display: inline-block; +/* Link to the petitions website */ +.cp_petitions_link { + margin: 1rem 0; } -#dashboard_php_nag p { - margin: 12px 0; +.petitions-tabs { + float: left; + width: 100%; + margin: 0; + list-style-type: none; + border-bottom: 1px solid #e7e7e7; + margin-top: 16px; } -#dashboard_php_nag .button .dashicons-external { - line-height: 25px; +.petitions-tabs > li { + float: left; + margin-bottom: -1px; } -.bigger-bolder-text { - font-weight: 600; +.petitions-tabs > li > a { + margin-right: 2px; + line-height: 1.5; + padding: 10px; + border: 1px solid transparent; + float: left; + text-decoration: none; +} + +.petitions-tabs > li > a:hover { + background-color: #f2f2f2; +} + +.petitions-tabs > li.active > a, +.petitions-tabs > li.active > a:hover, +.petitions-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #f2f2f2; + border-color: #f2f2f2; +} + +.petitions-content { + display: table; + width: 100%; +} + +.petitions-content > .petitions-pane { + float: left; + width: 100%; + display: none; +} + +.petitions-content > .petitions-pane.active { + display: block; +} + +/* Petitions list */ +table.cp_petitions { + width: 100%; + padding: 0; + border-spacing: 0; +} +table.cp_petitions thead { + background-color: #f7f7f7; +} + +table.cp_petitions tbody tr:nth-child(even) { + background: #f7f7f7; +} + +table.cp_petitions .votes-count { font-size: 14px; } -/* =Media Queries --------------------------------------------------------------- */ +table.cp_petitions .petition { + text-align: left; + font-weight: normal; +} -@media only screen and (min-width: 1600px) { - .welcome-panel .welcome-panel-column-container { - display: flex; - justify-content: center; - } +table.cp_petitions thead { + font-weight: 700; +} - .welcome-panel-column { - width: 100%; - max-width: 460px; - } +table.cp_petitions td { + padding: 8px; +} + +table.cp_petitions td:nth-child(1) { + text-align: center; +} + +table.cp_petitions span.planned { + /* display: inline; */ + background: #89288f; /* 61ce70 is the classic green but a pain to read */ + color: #fff; + padding: 2px 4px; +} + +table.cp_petitions span.started { + /* display: inline; */ + background: #1da21d; + color: #fff; + padding: 2px 4px; } +/* =Media Queries +-------------------------------------------------------------- */ + /* one column on the dash */ @media only screen and (max-width: 799px) { #wpbody-content #dashboard-widgets .postbox-container { width: 100%; } - - #dashboard-widgets .meta-box-sortables { - min-height: 0; - } - - .is-dragging-metaboxes #dashboard-widgets .meta-box-sortables { - min-height: 100px; - } - - #dashboard-widgets .meta-box-sortables.empty-container { - margin-bottom: 0; - } } /* two columns on the dash, but keep the setting if one is selected */ @@ -1147,10 +1113,9 @@ a.rsswidget { #dashboard-widgets #postbox-container-3 .empty-container, #dashboard-widgets #postbox-container-4 .empty-container { - outline: none; + border: 0 none; height: 0; min-height: 0; - margin-bottom: 0; } #dashboard-widgets #postbox-container-3 .empty-container:after, @@ -1162,11 +1127,10 @@ a.rsswidget { width: 100%; } - #wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container { - outline: none; + #wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container { + border: 0 none; height: 0; min-height: 0; - margin-bottom: 0; } /* show the radio buttons for column prefs only for one or two columns */ @@ -1180,7 +1144,7 @@ a.rsswidget { display: none; } - #dashboard-widgets .postbox-container .empty-container:after { + .metabox-holder .postbox-container .empty-container:after { display: block; } } @@ -1201,65 +1165,48 @@ a.rsswidget { } #dashboard-widgets #postbox-container-4 .empty-container { - outline: none; + border: 0 none; height: 0; min-height: 0; - margin-bottom: 0; } #dashboard-widgets #postbox-container-4 .empty-container:after { display: none; } - #dashboard-widgets .postbox-container .empty-container:after { + .metabox-holder .postbox-container .empty-container:after { display: block; } } -/* Always show the "Drag boxes here" CSS generated content on large screens. */ -@media only screen and (min-width: 1801px) { - #dashboard-widgets .postbox-container .empty-container:after { +@media screen and (max-width: 870px) { + .welcome-panel .welcome-panel-column, + .welcome-panel .welcome-panel-column:first-child { display: block; + float: none; + width: 100%; } -} -@media screen and (max-width: 870px) { - /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column li { display: inline-block; margin-right: 13px; } - /* @deprecated 5.9.0 -- Lists removed from welcome panel. */ .welcome-panel .welcome-panel-column ul { margin: 0.4em 0 0; } - } -@media screen and (max-width: 1180px) and (min-width: 783px) { - .welcome-panel-column { - grid-template-columns: 1fr; - } - - [class*="welcome-panel-icon"], - .welcome-panel-column > svg { - display: none; +@media screen and ( max-width: 782px ) { + #dashboard_recent_comments #the-comment-list .comment-item .avatar { + height: 30px; + width: 30px; + margin: 4px 10px 5px 0; } } -@media screen and (max-width: 782px) { - .welcome-panel .welcome-panel-column-container { - grid-template-columns: 1fr; - box-sizing: border-box; - padding: 32px; - width: 100%; - } - - .welcome-panel .welcome-panel-column-content { - max-width: 520px; - } - +/* Smartphone */ +@media screen and (max-width: 600px) { /* Keep the close icon from overlapping the Welcome text. */ .welcome-panel .welcome-panel-close { overflow: hidden; @@ -1272,102 +1219,10 @@ a.rsswidget { right: 5px; } - .welcome-panel .welcome-panel-close::before { + /* Make the close icon larger for tappability. */ + .welcome-panel .welcome-panel-close:before { + font-size: 20px; top: 5px; left: -35px; } - - #dashboard-widgets h2 { - padding: 12px; - } - - #dashboard_recent_comments #the-comment-list .comment-item .avatar { - height: 30px; - width: 30px; - margin: 4px 10px 5px 0; - } - - .community-events-toggle-location { - height: 38px; - vertical-align: baseline; - } - - .community-events-form .regular-text { - height: 32px; - } - - #community-events-submit { - margin-bottom: 0; - /* Override .wp-core-ui .button */ - vertical-align: top; - } - - .community-events-form label, - #dashboard-widgets .community-events-cancel.button-link { - /* Same properties as the submit button for cross-browsers alignment. */ - font-size: 14px; - line-height: normal; - height: auto; - padding: 6px 0; - border: 1px solid transparent; - } - - .community-events .spinner { - margin-top: 7px; - } -} - -/* Smartphone */ -@media screen and (max-width: 600px) { - .welcome-panel-header { - padding: 32px 32px 64px; - } - - .welcome-panel-header-image { - display: none; - } -} - -@media screen and (max-width: 480px) { - .welcome-panel-column { - gap: 16px; - } -} - -@media screen and (max-width: 360px) { - .welcome-panel-column { - grid-template-columns: 1fr; - } - - [class*="welcome-panel-icon"], - .welcome-panel-column > svg { - display: none; - } -} - -@media screen and (min-width: 355px) { - .community-events .event-info { - display: table-row; - float: left; - max-width: 59%; - } - - .event-icon, - .event-icon[aria-hidden="true"] { - display: table-cell; - } - - .event-info-inner { - display: table-cell; - } - - .community-events .event-date-time { - float: right; - max-width: 39%; - } - - .community-events .event-date, - .community-events .event-time { - text-align: right; - } } diff --git a/wp-admin/css/dashboard.min.css b/wp-admin/css/dashboard.min.css index 70b6f27..c832ba6 100644 --- a/wp-admin/css/dashboard.min.css +++ b/wp-admin/css/dashboard.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:right}#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{display:flow-root;min-height:100px;margin:0 8px 20px}#dashboard-widgets .postbox-container .empty-container{outline:3px dashed #c3c4c7;height:250px}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{outline:3px dashed #646970;display:flow-root}#dashboard-widgets .postbox-container .empty-container:after{content:attr(data-emptystring);margin:auto;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);padding:0 2em;text-align:center;color:#646970;font-size:16px;line-height:1.5;display:none}#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}#the-comment-list td.comment img{max-width:100%}.index-php #screen-meta-links{margin:0 20px 8px 0}.welcome-panel{position:relative;overflow:auto;margin:16px 0;background-color:#273fcc;font-size:14px;line-height:1.3;clear:both}.welcome-panel h2{margin:0;font-size:48px;font-weight:600;line-height:1.25}.welcome-panel h3{margin:0;font-size:20px;font-weight:400;line-height:1.4}.welcome-panel p{font-size:inherit;line-height:inherit}.welcome-panel-header{--about-header-bg-width:780px;position:relative;color:#fff}.welcome-panel-header-image{position:absolute!important;top:0;right:0;bottom:0;left:0;z-index:0!important;overflow:hidden}.welcome-panel-header-image svg{display:block;margin:auto;width:var(--about-header-bg-width);height:auto;transform:scale(.75);transform-origin:center top}.welcome-panel-header *{color:inherit;position:relative;z-index:1}.welcome-panel-header a:focus,.welcome-panel-header a:hover{color:inherit;text-decoration:none}.welcome-panel .welcome-panel-close:focus,.welcome-panel-header a:focus{outline-color:currentColor;outline-offset:1px;box-shadow:none}.welcome-panel-header p{margin:.5em 0 0;font-size:20px;line-height:1.4}.welcome-panel .welcome-panel-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 24px;font-size:13px;line-height:1.23076923;text-decoration:none;z-index:1}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;left:0;transition:all .1s ease-in-out;content:'\f335';font-size:24px;color:#fff}.welcome-panel .welcome-panel-close{color:#fff}.welcome-panel .welcome-panel-close:focus,.welcome-panel .welcome-panel-close:focus::before,.welcome-panel .welcome-panel-close:hover,.welcome-panel .welcome-panel-close:hover::before{color:#fff972}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 13px 3px 0;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{min-height:400px;display:flex;flex-direction:column;justify-content:space-between}.welcome-panel-header{box-sizing:border-box;margin-left:auto;margin-right:auto;max-width:1500px;width:100%;padding:48px 0 80px 48px}.welcome-panel .welcome-panel-column-container{box-sizing:border-box;width:100%;clear:both;display:grid;z-index:1;padding:48px;grid-template-columns:repeat(3,1fr);gap:32px;align-self:flex-end;background:#fff}[class*=welcome-panel-icon]{height:60px;width:60px;background-position:center;background-size:24px 24px;background-repeat:no-repeat;border-radius:100%}.welcome-panel-column>svg{margin-top:4px}.welcome-panel-column{display:grid;grid-template-columns:min-content 1fr;gap:24px}.welcome-panel-icon-pages{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M7 13.8h6v-1.5H7v1.5zM18 16V4c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2zM5.5 16V4c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5zM7 10.5h8V9H7v1.5zm0-3.3h8V5.8H7v1.4zM20.2 6v13c0 .7-.6 1.2-1.2 1.2H8v1.5h11c1.5 0 2.7-1.2 2.7-2.8V6h-1.5z' /%3E%3C/svg%3E")}.welcome-panel-icon-layout{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z' /%3E%3C/svg%3E")}.welcome-panel-icon-styles{background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M12 4c-4.4 0-8 3.6-8 8v.1c0 4.1 3.2 7.5 7.2 7.9h.8c4.4 0 8-3.6 8-8s-3.6-8-8-8zm0 15V5c3.9 0 7 3.1 7 7s-3.1 7-7 7z' /%3E%3C/svg%3E")}.welcome-panel .welcome-widgets-menus{line-height:1.14285714}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel li{font-size:14px}.welcome-panel li a{text-decoration:none}.welcome-panel .welcome-panel-column li{line-height:1.14285714;list-style-type:none;padding:0 0 8px}.welcome-panel .welcome-icon{background:0 0!important}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li span:before,.welcome-panel .welcome-icon:before{color:#646970;font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0 10px 0 0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132";top:-1px}.welcome-panel .welcome-setup-home:before{content:"\f102";top:-1px}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-widgets:before{content:"\f538";top:-2px}.welcome-panel .welcome-menus:before{content:"\f163";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}#dashboard_right_now .search-engines-info:before,#dashboard_right_now li a:before,#dashboard_right_now li>span:before{content:"\f159";padding:0 5px 0 0}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_right_now .search-engines-info:before{content:"\f348"}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .widget-loading{padding:12px 12px 0;margin-bottom:1em!important}#dashboard_primary .inside .notice{margin:0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#646970;margin-top:4px}#dashboard_primary .rss-widget{font-size:13px;padding:0 12px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#646970}#dashboard_primary .rss-widget span.rss-date{margin-left:12px}#dashboard_primary .rss-widget ul li{padding:4px 0;margin:0}.classicpress-news-inline-notice{background-color:#f6f7f7;padding:12px;margin-bottom:10px;border-bottom:1px solid #f0f0f1}.classicpress-news-inline-notice a{text-decoration:none}.classicpress-news{border-bottom:1px solid #f0f0f1}.classicpress-news-footer{padding:12px}.classicpress-news-footer ul{display:flex;line-height:1;margin:0;align-items:center;justify-content:flex-start;gap:1rem}.classicpress-news-footer ul li{margin:0}.classicpress-news-footer ul li a{display:flex;align-items:center;gap:.3rem}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:left;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:right;position:relative;top:-5px;margin-left:5px}#dashboard_right_now p.search-engines-info{margin:1em 0}.mu-storage{overflow:hidden}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now .sub{color:#50575e;background:#f6f7f7;border-top:1px solid #f0f0f1;padding:10px 12px 6px}#dashboard_right_now .sub h3{color:#50575e}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d63638}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #f0f0f1;border-width:1px 1px 1px 0}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts{padding:10px 0 0}#dashboard_quick_press label{display:inline-block;margin-bottom:4px}#dashboard_quick_press input,#dashboard_quick_press textarea{box-sizing:border-box;margin:0}#dashboard-widgets .postbox form .submit{margin:-39px 0;float:right}#description-wrap{margin-top:12px}#quick-press textarea#content{min-height:90px;max-height:1300px;margin:0 0 8px;padding:6px 7px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #f0f0f1}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:right;margin:0 12px 0 0}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts li time{color:#646970}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title{word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 5px 0 0}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#1d2327}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-left:0;margin-right:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-left:5px;vertical-align:middle;position:relative;top:-1px;margin-right:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:12px 0;text-align:center}#dashboard_activity .no-activity p{color:#646970;font-size:16px}#dashboard_activity .subsubsub{float:none;border-top:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}#dashboard_activity .subsubsub a .count,#dashboard_activity .subsubsub a.current .count{color:#646970}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-right:5px;min-width:150px;color:#646970}.activity-block{border-bottom:1px solid #f0f0f1;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#dcdcde}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-left:12px}#activity-widget #the-comment-list .comment-item{background:#f6f7f7;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:12px}#activity-widget #the-comment-list .dashboard-comment-wrap.has-avatar{padding-left:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #f0f0f1}#activity-widget #the-comment-list .unapproved{background-color:#fcf9e8}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;background:#d63638;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.postbox .button-link .edit-box{display:none}.edit-box{opacity:0}.edit-box:focus,.hndle:hover .edit-box{opacity:1}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets .button-link,#dashboard-widgets li a,.community-events-footer a{text-decoration:none}#dashboard-widgets h2 a{text-decoration:underline}#dashboard-widgets .hndle .postbox-title-action{float:right;line-height:1.2}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{min-height:50px;margin:0;padding:12px}#latest-comments #the-comment-list .pingback{padding-left:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5;margin:0;color:#646970}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;font-weight:600;line-height:1.4}.rss-widget ul li{line-height:1.5;margin-bottom:12px}.rss-widget span.rss-date{color:#646970;font-size:13px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}.dashboard-comment-wrap{word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{text-decoration:underline}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:128px}#dashboard_browser_nag .browser-icon{margin-top:-32px}#dashboard_browser_nag.postbox{background-color:#b32d2e;background-image:none;border-color:#b32d2e;color:#fff;box-shadow:none}#dashboard_browser_nag.postbox h2{border-bottom-color:transparent;background:transparent none;color:#fff;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag.postbox .postbox-header{border-color:transparent}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}#dashboard_php_nag .dashicons-warning{color:#dba617;padding-right:6px}#dashboard_php_nag.php-no-security-updates .dashicons-warning,#dashboard_php_nag.php-version-lower-than-future-minimum .dashicons-warning{color:#d63638}#dashboard_php_nag h2{display:inline-block}#dashboard_php_nag p{margin:12px 0}#dashboard_php_nag .button .dashicons-external{line-height:25px}.bigger-bolder-text{font-weight:600;font-size:14px}@media only screen and (min-width:1600px){.welcome-panel .welcome-panel-column-container{display:flex;justify-content:center}.welcome-panel-column{width:100%;max-width:460px}}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}#dashboard-widgets .meta-box-sortables{min-height:0}.is-dragging-metaboxes #dashboard-widgets .meta-box-sortables{min-height:100px}#dashboard-widgets .meta-box-sortables.empty-container{margin-bottom:0}}@media only screen and (min-width:800px) and (max-width:1499px){#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 #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-3 .empty-container:after,#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody #dashboard-widgets .metabox-holder.columns-1 .postbox-container .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right}#dashboard-widgets #postbox-container-4 .empty-container{outline:0;height:0;min-height:0;margin-bottom:0}#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1801px){#dashboard-widgets .postbox-container .empty-container:after{display:block}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column li{display:inline-block;margin-right:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:1180px) and (min-width:783px){.welcome-panel-column{grid-template-columns:1fr}.welcome-panel-column>svg,[class*=welcome-panel-icon]{display:none}}@media screen and (max-width:782px){.welcome-panel .welcome-panel-column-container{grid-template-columns:1fr;box-sizing:border-box;padding:32px;width:100%}.welcome-panel .welcome-panel-column-content{max-width:520px}.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;right:5px}.welcome-panel .welcome-panel-close::before{top:5px;left:-35px}#dashboard-widgets h2{padding:12px}#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 10px 5px 0}.community-events-toggle-location{height:38px;vertical-align:baseline}.community-events-form .regular-text{height:32px}#community-events-submit{margin-bottom:0;vertical-align:top}#dashboard-widgets .community-events-cancel.button-link,.community-events-form label{font-size:14px;line-height:normal;height:auto;padding:6px 0;border:1px solid transparent}.community-events .spinner{margin-top:7px}}@media screen and (max-width:600px){.welcome-panel-header{padding:32px 32px 64px}.welcome-panel-header-image{display:none}}@media screen and (max-width:480px){.welcome-panel-column{gap:16px}}@media screen and (max-width:360px){.welcome-panel-column{grid-template-columns:1fr}.welcome-panel-column>svg,[class*=welcome-panel-icon]{display:none}}@media screen and (min-width:355px){.community-events .event-info{display:table-row;float:left;max-width:59%}.event-icon,.event-icon[aria-hidden=true]{display:table-cell}.event-info-inner{display:table-cell}.community-events .event-date-time{float:right;max-width:39%}.community-events .event-date,.community-events .event-time{text-align:right}} \ No newline at end of file +#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:right}#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}.ie8 #wpbody-content #dashboard-widgets .postbox-container{width:49.5%}.ie8 #wpbody-content #dashboard-widgets #postbox-container-2,.ie8 #wpbody-content #dashboard-widgets #postbox-container-3,.ie8 #wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}.ie8 #dashboard-widgets #postbox-container-3 .empty-container,.ie8 #dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{margin:0 8px;min-height:100px}#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}#the-comment-list td.comment img{max-width:100%}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}.welcome-panel h2{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h3{margin:.7em 0 0;font-size:16px}.welcome-panel p{color:#72777c}.welcome-panel a{text-decoration:none}.welcome-panel .welcome-panel-tagline{font-size:110%;margin:0}.welcome-panel .welcome-panel-close{position:absolute;z-index:10;top:10px;right:10px;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;left:0;transition:all .1s ease-in-out}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 13px 3px 0;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{margin:0 13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;position:relative}.welcome-panel .welcome-panel-column{width:32%;min-width:200px;float:left}.ie8 .welcome-panel .welcome-panel-column{min-width:230px}.welcome-panel .welcome-panel-column:first-child{width:36%}.welcome-panel-column p.hide-if-no-customize{margin-top:10px}.welcome-panel-column p{margin-top:7px;color:#444}.welcome-panel .welcome-widgets-menus{line-height:16px}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none;padding:0 0 8px}.welcome-panel .welcome-icon{background:0 0!important}#dashboard_right_now li a:before,#dashboard_right_now li span:before,.welcome-panel .welcome-icon:before{color:#82878c;font:normal 20px/1 dashicons;speak:none;display:inline-block;padding:0 10px 0 0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132";top:-1px}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}#dashboard_right_now li a:before,#dashboard_right_now li>span:before{content:"\f159";padding:0 5px 0 0}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_primary .classicpress-news-inline-notice{border-bottom:1px solid #eee;border-left:4px solid #00a0d2;margin:0 0 8px 0;padding:8px 12px;background-color:#fafafa;color:#72777c}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .widget-loading{padding:12px 12px 0;margin-bottom:1em!important}#dashboard_primary .inside .notice{margin:0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#72777c;margin-top:4px}#dashboard_primary .rss-widget{font-size:13px;padding:0 12px 0}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#72777c}#dashboard_primary .rss-widget span.rss-date{margin-left:12px}#dashboard_primary .rss-widget ul li{padding:4px 0;margin:0}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:left;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:right;position:relative;top:-5px;margin-left:5px}.mu-storage{overflow:hidden}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now .sub{color:#555d66;background:#f5f5f5;border-top:1px solid #eee;padding:10px 12px 6px 12px}#dashboard_right_now .sub h3{color:#555}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d54e21}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #eee;border-width:1px 1px 1px 0}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts,#dashboard_quick_press .easy-blogging{padding:10px 0 0}input#save-post{float:left}form.initial-form.quickpress-open label.prompt{font-style:normal}form.initial-form.quickpress-open input#title{height:auto}#dashboard_quick_press input,#dashboard_quick_press textarea{box-sizing:border-box;margin:0}#dashboard_quick_press textarea{resize:vertical}#dashboard-widgets .postbox form .submit{margin:-39px 0;float:right}#description-wrap{margin-top:12px}#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#72777c}#title-wrap #title-prompt-text{font-size:1.1em;padding:7px 8px}.input-text-wrap,.textarea-wrap{position:relative}.input-text-wrap .prompt,.textarea-wrap .prompt{position:absolute}.textarea-wrap #content-prompt-text{font-size:1.1em;padding:7px 8px}.textarea-wrap textarea#content{margin:0 0 8px;padding:6px 7px}#quick-press textarea#content{min-height:90px;max-height:1300px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #eee}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:right;margin:0 12px 0 0}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts li time{color:#72777c}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title{word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 5px 0 0}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#23282d}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-left:0;margin-right:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-left:5px;vertical-align:middle;position:relative;top:-1px;margin-right:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 0 12px;text-align:center}#dashboard_activity .no-activity p{color:#72777c;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:"\f328";font:normal 120px/1 dashicons;speak:none;display:block;margin:0 5px 0 0;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_activity .subsubsub{float:none;border-top:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}#dashboard_activity .subsubsub a .count,#dashboard_activity .subsubsub a.current .count{color:#72777c}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-right:5px;min-width:150px;color:#72777c}.activity-block{border-bottom:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#ddd}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-left:12px}#activity-widget #the-comment-list .comment-item{background:#fafafa;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:12px}#activity-widget #the-comment-list .dashboard-comment-wrap{padding-left:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #eee}#activity-widget #the-comment-list .unapproved{background-color:#fef7f1}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;background:#d54e21;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.postbox .button-link .edit-box{display:none}.edit-box{opacity:0}.edit-box:focus,.hndle:hover .edit-box{opacity:1}#dashboard-widgets form .input-text-wrap input{width:100%}#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets .button-link,#dashboard-widgets a{text-decoration:none}#dashboard-widgets h2 a{text-decoration:underline}#dashboard-widgets .hndle .postbox-title-action{float:right;line-height:1.2}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{min-height:50px;margin:0;padding:12px}#latest-comments #the-comment-list .pingback{padding-left:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5em;margin:0;color:#666}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}#description-wrap label,#title-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;outline:0}#title-wrap #title-prompt-text{font-size:1.1em;padding:5px 8px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:13px;font-weight:600;line-height:1.4em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#72777c;font-size:13px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}.dashboard-comment-wrap{word-wrap:break-word}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#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;color:#fff;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h2{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h2{border-bottom-color:#f6e2ac;background:transparent none;color:#fff;box-shadow:none}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}#dashboard_petitions .postbox .inside{margin:0;padding:0}#dashboard_petitions .sub{background:#f5f5f5;padding:10px 12px 6px}.cp_petitions_link{margin:1rem 0}.petitions-tabs{float:left;width:100%;margin:0;list-style-type:none;border-bottom:1px solid #e7e7e7;margin-top:16px}.petitions-tabs>li{float:left;margin-bottom:-1px}.petitions-tabs>li>a{margin-right:2px;line-height:1.5;padding:10px;border:1px solid transparent;float:left;text-decoration:none}.petitions-tabs>li>a:hover{background-color:#f2f2f2}.petitions-tabs>li.active>a,.petitions-tabs>li.active>a:focus,.petitions-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#f2f2f2;border-color:#f2f2f2}.petitions-content{display:table;width:100%}.petitions-content>.petitions-pane{float:left;width:100%;display:none}.petitions-content>.petitions-pane.active{display:block}table.cp_petitions{width:100%;padding:0;border-spacing:0}table.cp_petitions thead{background-color:#f7f7f7}table.cp_petitions tbody tr:nth-child(even){background:#f7f7f7}table.cp_petitions .votes-count{font-size:14px}table.cp_petitions .petition{text-align:left;font-weight:400}table.cp_petitions thead{font-weight:700}table.cp_petitions td{padding:8px}table.cp_petitions td:nth-child(1){text-align:center}table.cp_petitions span.planned{background:#89288f;color:#fff;padding:2px 4px}table.cp_petitions span.started{background:#1da21d;color:#fff;padding:2px 4px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}}@media only screen and (min-width:800px) and (max-width:1499px){#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 #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#dashboard-widgets #postbox-container-3 .empty-container:after,#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}#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 .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}.metabox-holder .postbox-container .empty-container:after{display:block}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right}#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}#dashboard-widgets #postbox-container-4 .empty-container:after{display:none}.metabox-holder .postbox-container .empty-container:after{display:block}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column,.welcome-panel .welcome-panel-column:first-child{display:block;float:none;width:100%}.welcome-panel .welcome-panel-column li{display:inline-block;margin-right:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:782px){#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 10px 5px 0}}@media screen and (max-width:600px){.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;right:5px}.welcome-panel .welcome-panel-close:before{font-size:20px;top:5px;left:-35px}} \ No newline at end of file diff --git a/wp-admin/css/deprecated-media-rtl.css b/wp-admin/css/deprecated-media-rtl.css index c6e1e3c..8e44fed 100644 --- a/wp-admin/css/deprecated-media-rtl.css +++ b/wp-admin/css/deprecated-media-rtl.css @@ -5,8 +5,8 @@ div#media-upload-header { padding: 5px 5px 0; font-weight: 600; position: relative; - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f9f9f9; } #sidemenu { @@ -27,9 +27,9 @@ div#media-upload-header { display: block; float: right; line-height: 28px; - border-top: 1px solid #f6f7f7; - border-bottom: 1px solid #dcdcde; - background-color: #f6f7f7; + border-top: 1px solid #f9f9f9; + border-bottom: 1px solid #ddd; + background-color: #f9f9f9; text-decoration: none; transition: none; } @@ -48,9 +48,9 @@ div#media-upload-header { font-weight: 400; padding-right: 6px; padding-left: 6px; - border: 1px solid #dcdcde; - border-bottom-color: #f0f0f1; - background-color: #f0f0f1; + border: 1px solid #ddd; + border-bottom-color: #f1f1f1; + background-color: #f1f1f1; color: #000; } @@ -61,7 +61,7 @@ div#media-upload-header { } #media-upload .slidetoggle { - border-top-color: #dcdcde; + border-top-color: #ddd; } #media-upload input[type="radio"] { @@ -70,7 +70,7 @@ div#media-upload-header { .media-upload-form label.form-help, td.help { - color: #646970; + color: #72777c; } form { @@ -100,7 +100,7 @@ th { width: 100%; border: none; text-align: justify; - margin: 0 0 1em; + margin: 0 0 1em 0; padding: 0; } @@ -218,8 +218,8 @@ span.required { #media-upload .tablenav-pages a { min-width: 17px; - border: 1px solid #c3c4c7; - background: #f6f7f7; + border: 1px solid #ccc; + background: #f7f7f7; } #filter .tablenav select { @@ -242,7 +242,7 @@ span.required { } .menu_order_input { - border: 1px solid #dcdcde; + border: 1px solid #ddd; font-size: 10px; padding: 1px; width: 23px; @@ -250,7 +250,7 @@ span.required { .ui-sortable-helper { background-color: #fff; - border: 1px solid #a7aaad; + border: 1px solid #a0a5aa; opacity: 0.6; filter: alpha(opacity=60); } @@ -291,15 +291,15 @@ span.required { clear: both; padding: 0 0 3px; font-size: 1.6em; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } -h3.media-title { +h3.media-title { font-size: 1.6em; } -h4.media-sub-title { - border-bottom: 1px solid #dcdcde; +h4.media-sub-title { + border-bottom: 1px solid #ddd; font-size: 1.3em; margin: 12px; padding: 0 0 3px; @@ -310,7 +310,7 @@ h3.media-title, h4.media-sub-title { font-family: Georgia,"Times New Roman",Times,serif; font-weight: 400; - color: #50575e; + color: #5A5A5A; } #gallery-settings .describe td { @@ -343,7 +343,7 @@ h4.media-sub-title { #gallery-settings label, #gallery-settings legend { font-size: 13px; - color: #3c434a; + color: #444; margin-left: 15px; } @@ -352,7 +352,7 @@ h4.media-sub-title { } #gallery-settings p.ml-submit { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #gallery-settings select#columns { diff --git a/wp-admin/css/deprecated-media-rtl.min.css b/wp-admin/css/deprecated-media-rtl.min.css index 51ed354..aa5ab8a 100644 --- a/wp-admin/css/deprecated-media-rtl.min.css +++ b/wp-admin/css/deprecated-media-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:600;position:relative;border-bottom:1px solid #dcdcde;background:#f6f7f7}#sidemenu{overflow:hidden;float:none;position:relative;right:0;bottom:-1px;margin:0 5px;padding-right:10px;list-style:none;font-size:12px;font-weight:400}#sidemenu a{padding:0 7px;display:block;float:right;line-height:28px;border-top:1px solid #f6f7f7;border-bottom:1px solid #dcdcde;background-color:#f6f7f7;text-decoration:none;transition:none}#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:400;padding-right:6px;padding-left:6px;border:1px solid #dcdcde;border-bottom-color:#f0f0f1;background-color:#f0f0f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#dcdcde}#media-upload input[type=radio]{padding:0}.media-upload-form label.form-help,td.help{color:#646970}form{margin:1em}#search-filter{text-align:left}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:400}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:none;text-align:justify;margin:0 0 1em;padding:0}.image-align-none-label{background:url(../images/align-none.png) no-repeat center right}.image-align-left-label{background:url(../images/align-left.png) no-repeat center right}.image-align-center-label{background:url(../images/align-center.png) no-repeat center right}.image-align-right-label{background:url(../images/align-right.png) no-repeat center right}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#gallery-form .progress,#library-form .progress,.describe.startclosed,.describe.startopen,.insert-gallery{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,span.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 label.help,#media-upload p.help{font-family:sans-serif;font-style:italic;font-weight:400}#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}#media-upload .tablenav-pages .current,#media-upload .tablenav-pages a{display:inline-block;padding:4px 5px 6px;font-size:16px;line-height:1;text-align:center;text-decoration:none}#media-upload .tablenav-pages a{min-width:17px;border:1px solid #c3c4c7;background:#f6f7f7}#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:left;font-size:11px;margin:8px 10px 0}.menu_order_input{border:1px solid #dcdcde;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #a7aaad;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-upload .widefat{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 0 5px 5px}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #dcdcde}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dcdcde;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:400;color:#50575e}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:right}#gallery-settings .describe{padding:5px;width:100%;clear:both;cursor:default;background:#fff}#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:#3c434a;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#gallery-settings p.ml-submit{border-top:1px solid #dcdcde}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 0 -8px 25px;text-align:left;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-right:5px}#sort-buttons span{margin-left:25px}p.media-types{margin:0;padding:1em}p.media-types-required-info{padding-top:0}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.image-align-none-label{background-image:url(../images/align-none-2x.png?ver=20120916);background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);background-size:22px 15px}} \ No newline at end of file +div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:600;position:relative;border-bottom:1px solid #ddd;background:#f9f9f9}#sidemenu{overflow:hidden;float:none;position:relative;right:0;bottom:-1px;margin:0 5px;padding-right:10px;list-style:none;font-size:12px;font-weight:400}#sidemenu a{padding:0 7px;display:block;float:right;line-height:28px;border-top:1px solid #f9f9f9;border-bottom:1px solid #ddd;background-color:#f9f9f9;text-decoration:none;transition:none}#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:400;padding-right:6px;padding-left:6px;border:1px solid #ddd;border-bottom-color:#f1f1f1;background-color:#f1f1f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#ddd}#media-upload input[type=radio]{padding:0}.media-upload-form label.form-help,td.help{color:#72777c}form{margin:1em}#search-filter{text-align:left}th{position:relative}.media-upload-form label.form-help,td.help{font-family:sans-serif;font-style:italic;font-weight:400}.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 right}.image-align-left-label{background:url(../images/align-left.png) no-repeat center right}.image-align-center-label{background:url(../images/align-center.png) no-repeat center right}.image-align-right-label{background:url(../images/align-right.png) no-repeat center right}tr.image-size td{width:460px}tr.image-size div.image-size-item{margin:0 0 5px}#gallery-form .progress,#library-form .progress,.describe.startclosed,.describe.startopen,.insert-gallery{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,span.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 label.help,#media-upload p.help{font-family:sans-serif;font-style:italic;font-weight:400}#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}#media-upload .tablenav-pages .current,#media-upload .tablenav-pages a{display:inline-block;padding:4px 5px 6px;font-size:16px;line-height:1;text-align:center;text-decoration:none}#media-upload .tablenav-pages a{min-width:17px;border:1px solid #ccc;background:#f7f7f7}#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:left;font-size:11px;margin:8px 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 #a0a5aa;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-upload .widefat{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 0 5px 5px}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #ddd}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #ddd;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:400;color:#5a5a5a}#gallery-settings .describe td{vertical-align:middle;height:3em}#gallery-settings .describe th.label{padding-top:.5em;text-align:right}#gallery-settings .describe{padding:5px;width:100%;clear:both;cursor:default;background:#fff}#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:#444;margin-left:15px}#gallery-settings .align .field label{margin:0 3px 0 1em}#gallery-settings p.ml-submit{border-top:1px solid #ddd}#gallery-settings select#columns{width:6em}#sort-buttons{font-size:.8em;margin:3px 0 -8px 25px;text-align:left;max-width:625px}#sort-buttons a{text-decoration:none}#sort-buttons #asc,#sort-buttons #showall{padding-right:5px}#sort-buttons span{margin-left:25px}p.media-types{margin:0;padding:1em}p.media-types-required-info{padding-top:0}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.image-align-none-label{background-image:url(../images/align-none-2x.png?ver=20120916);background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);background-size:22px 15px}} \ No newline at end of file diff --git a/wp-admin/css/deprecated-media.css b/wp-admin/css/deprecated-media.css index 359fc59..259d151 100644 --- a/wp-admin/css/deprecated-media.css +++ b/wp-admin/css/deprecated-media.css @@ -5,8 +5,8 @@ div#media-upload-header { padding: 5px 5px 0; font-weight: 600; position: relative; - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f9f9f9; } #sidemenu { @@ -27,9 +27,9 @@ div#media-upload-header { display: block; float: left; line-height: 28px; - border-top: 1px solid #f6f7f7; - border-bottom: 1px solid #dcdcde; - background-color: #f6f7f7; + border-top: 1px solid #f9f9f9; + border-bottom: 1px solid #ddd; + background-color: #f9f9f9; text-decoration: none; transition: none; } @@ -48,9 +48,9 @@ div#media-upload-header { font-weight: 400; padding-left: 6px; padding-right: 6px; - border: 1px solid #dcdcde; - border-bottom-color: #f0f0f1; - background-color: #f0f0f1; + border: 1px solid #ddd; + border-bottom-color: #f1f1f1; + background-color: #f1f1f1; color: #000; } @@ -61,7 +61,7 @@ div#media-upload-header { } #media-upload .slidetoggle { - border-top-color: #dcdcde; + border-top-color: #ddd; } #media-upload input[type="radio"] { @@ -70,7 +70,7 @@ div#media-upload-header { .media-upload-form label.form-help, td.help { - color: #646970; + color: #72777c; } form { @@ -100,7 +100,7 @@ th { width: 100%; border: none; text-align: justify; - margin: 0 0 1em; + margin: 0 0 1em 0; padding: 0; } @@ -218,8 +218,8 @@ span.required { #media-upload .tablenav-pages a { min-width: 17px; - border: 1px solid #c3c4c7; - background: #f6f7f7; + border: 1px solid #ccc; + background: #f7f7f7; } #filter .tablenav select { @@ -242,7 +242,7 @@ span.required { } .menu_order_input { - border: 1px solid #dcdcde; + border: 1px solid #ddd; font-size: 10px; padding: 1px; width: 23px; @@ -250,7 +250,7 @@ span.required { .ui-sortable-helper { background-color: #fff; - border: 1px solid #a7aaad; + border: 1px solid #a0a5aa; opacity: 0.6; filter: alpha(opacity=60); } @@ -291,15 +291,15 @@ span.required { clear: both; padding: 0 0 3px; font-size: 1.6em; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } -h3.media-title { +h3.media-title { font-size: 1.6em; } -h4.media-sub-title { - border-bottom: 1px solid #dcdcde; +h4.media-sub-title { + border-bottom: 1px solid #ddd; font-size: 1.3em; margin: 12px; padding: 0 0 3px; @@ -310,7 +310,7 @@ h3.media-title, h4.media-sub-title { font-family: Georgia,"Times New Roman",Times,serif; font-weight: 400; - color: #50575e; + color: #5A5A5A; } #gallery-settings .describe td { @@ -343,7 +343,7 @@ h4.media-sub-title { #gallery-settings label, #gallery-settings legend { font-size: 13px; - color: #3c434a; + color: #444; margin-right: 15px; } @@ -352,7 +352,7 @@ h4.media-sub-title { } #gallery-settings p.ml-submit { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } #gallery-settings select#columns { diff --git a/wp-admin/css/deprecated-media.min.css b/wp-admin/css/deprecated-media.min.css index 2b23629..adec832 100644 --- a/wp-admin/css/deprecated-media.min.css +++ b/wp-admin/css/deprecated-media.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:600;position:relative;border-bottom:1px solid #dcdcde;background:#f6f7f7}#sidemenu{overflow:hidden;float:none;position:relative;left:0;bottom:-1px;margin:0 5px;padding-left:10px;list-style:none;font-size:12px;font-weight:400}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top:1px solid #f6f7f7;border-bottom:1px solid #dcdcde;background-color:#f6f7f7;text-decoration:none;transition:none}#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:400;padding-left:6px;padding-right:6px;border:1px solid #dcdcde;border-bottom-color:#f0f0f1;background-color:#f0f0f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#dcdcde}#media-upload input[type=radio]{padding:0}.media-upload-form label.form-help,td.help{color:#646970}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:400}.media-upload-form p.help{margin:0;padding:0}.media-upload-form fieldset{width:100%;border:none;text-align:justify;margin:0 0 1em;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}#gallery-form .progress,#library-form .progress,.describe.startclosed,.describe.startopen,.insert-gallery{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,span.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 label.help,#media-upload p.help{font-family:sans-serif;font-style:italic;font-weight:400}#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}#media-upload .tablenav-pages .current,#media-upload .tablenav-pages a{display:inline-block;padding:4px 5px 6px;font-size:16px;line-height:1;text-align:center;text-decoration:none}#media-upload .tablenav-pages a{min-width:17px;border:1px solid #c3c4c7;background:#f6f7f7}#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:8px 10px 0}.menu_order_input{border:1px solid #dcdcde;font-size:10px;padding:1px;width:23px}.ui-sortable-helper{background-color:#fff;border:1px solid #a7aaad;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-upload .widefat{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 #dcdcde}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #dcdcde;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:400;color:#50575e}#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:100%;clear:both;cursor:default;background:#fff}#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:#3c434a;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #dcdcde}#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:0;padding:1em}p.media-types-required-info{padding-top:0}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.image-align-none-label{background-image:url(../images/align-none-2x.png?ver=20120916);background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);background-size:22px 15px}} \ No newline at end of file +div#media-upload-header{margin:0;padding:5px 5px 0;font-weight:600;position:relative;border-bottom:1px solid #ddd;background:#f9f9f9}#sidemenu{overflow:hidden;float:none;position:relative;left:0;bottom:-1px;margin:0 5px;padding-left:10px;list-style:none;font-size:12px;font-weight:400}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top:1px solid #f9f9f9;border-bottom:1px solid #ddd;background-color:#f9f9f9;text-decoration:none;transition:none}#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:400;padding-left:6px;padding-right:6px;border:1px solid #ddd;border-bottom-color:#f1f1f1;background-color:#f1f1f1;color:#000}#media-upload:after{content:"";display:table;clear:both}#media-upload .slidetoggle{border-top-color:#ddd}#media-upload input[type=radio]{padding:0}.media-upload-form label.form-help,td.help{color:#72777c}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:400}.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}#gallery-form .progress,#library-form .progress,.describe.startclosed,.describe.startopen,.insert-gallery{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,span.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 label.help,#media-upload p.help{font-family:sans-serif;font-style:italic;font-weight:400}#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}#media-upload .tablenav-pages .current,#media-upload .tablenav-pages a{display:inline-block;padding:4px 5px 6px;font-size:16px;line-height:1;text-align:center;text-decoration:none}#media-upload .tablenav-pages a{min-width:17px;border:1px solid #ccc;background:#f7f7f7}#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:8px 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 #a0a5aa;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-upload .widefat{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 #ddd}h3.media-title{font-size:1.6em}h4.media-sub-title{border-bottom:1px solid #ddd;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:400;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:100%;clear:both;cursor:default;background:#fff}#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:#444;margin-right:15px}#gallery-settings .align .field label{margin:0 1em 0 3px}#gallery-settings p.ml-submit{border-top:1px solid #ddd}#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:0;padding:1em}p.media-types-required-info{padding-top:0}tr.not-image{display:none}table.not-image tr.not-image{display:table-row}table.not-image tr.image-only{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.image-align-none-label{background-image:url(../images/align-none-2x.png?ver=20120916);background-size:21px 15px}.image-align-left-label{background-image:url(../images/align-left-2x.png?ver=20120916);background-size:22px 15px}.image-align-center-label{background-image:url(../images/align-center-2x.png?ver=20120916);background-size:21px 15px}.image-align-right-label{background-image:url(../images/align-right-2x.png?ver=20120916);background-size:22px 15px}} \ No newline at end of file diff --git a/wp-admin/css/edit-rtl.css b/wp-admin/css/edit-rtl.css index a3cba56..8242572 100644 --- a/wp-admin/css/edit-rtl.css +++ b/wp-admin/css/edit-rtl.css @@ -68,16 +68,15 @@ } #titlediv #title-prompt-text { - color: #646970; + color: #72777c; position: absolute; font-size: 1.7em; - padding: 10px; - pointer-events: none; + padding: 11px 10px; } input#link_description, input#link_url { - width: 100%; + width: 98%; } #pending { @@ -90,17 +89,11 @@ input#link_url { #edit-slug-box, #comment-link-box { - line-height: 1.84615384; - min-height: 25px; + line-height: 24px; + min-height: 25px; /* Yes, line-height + 1 */ margin-top: 5px; padding: 0 10px; - color: #646970; -} - -#sample-permalink { - display: inline-block; - max-width: 100%; - word-wrap: break-word; + color: #666; } #edit-slug-box .cancel { @@ -152,33 +145,16 @@ body.post-new-php .submitbox .submitdelete { margin-top: 3px; } -body.post-type-wp_navigation div#minor-publishing, -body.post-type-wp_navigation .inline-edit-status { - display: none; -} - /* Post Screen */ - -/* Only highlight drop zones when dragging and only in the 2 columns layout. */ -.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables { - outline: 3px dashed #646970; - /* Prevent margin on the child from collapsing with margin on the parent. */ - display: flow-root; - /* - * This min-height is meant to limit jumpiness while dragging. It's equivalent - * to the minimum height of the sortable-placeholder which is given by the height - * of a collapsed post box (36px + 1px top and bottom borders) + the placeholder - * bottom margin (20px) + 2 additional pixels to compensate browsers rounding. - */ - min-height: 60px; - margin-bottom: 20px; +#post-body #normal-sortables { + min-height: 50px; } .postbox { position: relative; min-width: 255px; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); background: #fff; } @@ -191,7 +167,7 @@ body.post-type-wp_navigation .inline-edit-status { border: 0 none; float: left; padding: 0 12px; - margin: 0; + margin:0; } .category-add input[type="text"], @@ -210,7 +186,7 @@ ul.category-tabs li, #side-sortables .add-menu-item-tabs li, .wp-tab-bar li { display: inline; - line-height: 1.35; + line-height: 1.35em; } .no-js .category-tabs li.hide-if-no-js { @@ -229,7 +205,7 @@ ul.category-tabs li, .wp-tab-bar .wp-tab-active a, #post-body ul.category-tabs li.tabs a, #post-body ul.add-menu-item-tabs li.tabs a { - color: #2c3338; + color: #32373c; } .category-tabs { @@ -238,7 +214,7 @@ ul.category-tabs li, /* Back-compat for pre-4.4 */ #category-adder h4 { - margin: 0; + margin: 0; } .taxonomy-add-new { @@ -281,9 +257,9 @@ ul.add-menu-item-tabs li { ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs, .wp-tab-active { - border: 1px solid #dcdcde; - border-bottom-color: #fff; - background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: #fdfdfd; + background-color: #fdfdfd; } ul.category-tabs li, @@ -302,7 +278,7 @@ ul.wp-tab-bar li { height: auto; width: auto; vertical-align: top; - background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-image: linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4); background-position: 100% 0, 10px 10px; background-size: 20px 20px; } @@ -333,10 +309,10 @@ form#tags-filter { #post-status-info { width: 100%; border-spacing: 0; - border: 1px solid #c3c4c7; + border: 1px solid #e5e5e5; border-top: none; - background-color: #f6f7f7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background-color: #f7f7f7; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); z-index: 999; } @@ -374,6 +350,7 @@ form#tags-filter { } #wp-word-count { + display: block; padding: 2px 10px; } @@ -383,7 +360,7 @@ form#tags-filter { .wp-editor-expand #wp-content-editor-tools { z-index: 1000; - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #e5e5e5; } .wp-editor-expand #wp-content-editor-container { @@ -400,7 +377,7 @@ form#tags-filter { } .wp-editor-expand #post-status-info { - border-top: 1px solid #c3c4c7; + border-top: 1px solid #e5e5e5; } .wp-editor-expand div.mce-toolbar-grp { @@ -432,7 +409,7 @@ form#tags-filter { /* End TinyMCE native fullscreen mode override */ #wp-content-editor-tools { - background-color: #f0f0f1; + background-color: #f1f1f1; padding-top: 20px; } @@ -441,15 +418,16 @@ form#tags-filter { } #timestampdiv select { + height: 21px; + line-height: 14px; + padding: 0; vertical-align: top; font-size: 12px; - line-height: 2.33333333; /* 28px */ } #aa, #jj, #hh, #mn { - padding: 6px 1px; + padding: 1px; font-size: 12px; - line-height: 1.16666666; /* 14px */ } #jj, #hh, #mn { @@ -461,7 +439,7 @@ form#tags-filter { } .curtime #timestamp { - padding: 2px 0 1px; + padding: 2px 0 1px 0; display: inline !important; height: auto !important; } @@ -469,24 +447,17 @@ form#tags-filter { #post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, -#post-body .misc-pub-uploadedby:before, -#post-body .misc-pub-uploadedto:before, #post-body .misc-pub-revisions:before, -#post-body .misc-pub-response-to:before, -#post-body .misc-pub-comment-status:before { - color: #8c8f94; +span.wp-media-buttons-icon:before { + color: #82878c; } #post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, -#post-body .misc-pub-uploadedby:before, -#post-body .misc-pub-uploadedto:before, -#post-body .misc-pub-revisions:before, -#post-body .misc-pub-response-to:before, -#post-body .misc-pub-comment-status:before { +#post-body .misc-pub-revisions:before { font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; margin-right: -1px; padding-left: 3px; @@ -495,8 +466,7 @@ form#tags-filter { -moz-osx-font-smoothing: grayscale; } -#post-body .misc-pub-post-status:before, -#post-body .misc-pub-comment-status:before { +#post-body .misc-pub-post-status:before { content: "\f173"; } @@ -510,29 +480,13 @@ form#tags-filter { top: -1px; } -#post-body .misc-pub-uploadedby:before { - content: "\f110"; - position: relative; - top: -1px; -} - -#post-body .misc-pub-uploadedto:before { - content: "\f318"; - position: relative; - top: -1px; -} - #post-body .misc-pub-revisions:before { content: "\f321"; } -#post-body .misc-pub-response-to:before { - content: "\f101"; -} - #timestampdiv { padding-top: 5px; - line-height: 1.76923076; + line-height: 23px; } #timestampdiv p { @@ -540,7 +494,8 @@ form#tags-filter { } #timestampdiv input { - text-align: center; + border-width: 1px; + border-style: solid; } .notification-dialog { @@ -551,7 +506,7 @@ form#tags-filter { width: 450px; margin-right: -225px; background: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); line-height: 1.5; z-index: 1000005; overflow-y: auto; @@ -624,7 +579,7 @@ form#tags-filter { float: right; margin-left: 25px; font-size: 13px; - line-height: 1.8; + line-height: 1.8em; cursor: default; max-width: 100%; overflow: hidden; @@ -643,32 +598,17 @@ form#tags-filter { text-indent: 0; } -#poststuff summary { +#poststuff h3.hndle, /* Back-compat for pre-4.4 */ +#poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */ +#poststuff h2 { font-size: 14px; - padding: 2px 12px; + padding: 8px 12px; margin: 0; line-height: 1.4; } -#poststuff .stuffbox h2 { - padding: 8px 10px; -} - -#poststuff .stuffbox > h2 { - border-bottom: 1px solid #f0f0f1; -} - #poststuff .inside { - margin: 6px 0 0; -} - -.link-php #poststuff .inside, -.link-add-php #poststuff .inside { - margin-top: 12px; -} - -#poststuff .stuffbox .inside { - margin: 0; + margin: 6px 0 0 0; } #poststuff .inside #parent_id, @@ -676,6 +616,11 @@ form#tags-filter { max-width: 100%; } +.ie8 #poststuff .inside #parent_id, +.ie8 #poststuff .inside #page_template { + width: 250px; +} + .post-attributes-label-wrapper { margin-bottom: 0.5em; } @@ -685,9 +630,8 @@ form#tags-filter { font-weight: 600; } -#post-visibility-select, -#comment-status-radio { - line-height: 1.5; +#post-visibility-select { + line-height: 1.5em; margin-top: 3px; } @@ -699,366 +643,103 @@ form#tags-filter { #post-body-content, .edit-form-section { - margin-bottom: 20px; -} - -.wp_attachment_details .attachment-content-description { - margin-top: 0.5385em; - display: inline-block; - min-height: 1.6923em; -} - -/** -* Privacy Settings section -* -* Note: This section includes selectors from -* Site Health where duplicate styling is used. -*/ - -/* General */ -.privacy-settings #wpcontent, -.privacy-settings.auto-fold #wpcontent, -.site-health #wpcontent, -.site-health.auto-fold #wpcontent { - padding-right: 0; -} - -/* Better position for the WordPress admin notices. */ -.privacy-settings .notice, -.site-health .notice { - margin: 25px 22px 15px 20px; -} - -.privacy-settings .notice ~ .notice, -.site-health .notice ~ .notice { - margin-top: 5px; -} - -/* Emulates .wrap h1 styling */ -.privacy-settings-header h1, -.health-check-header h1 { - display: inline-block; - font-weight: 600; - margin: 0 0.8rem 1rem; - font-size: 23px; - padding: 9px 0 4px; - line-height: 1.3; -} - -/* Header */ -.privacy-settings-header, -.health-check-header { - text-align: center; - margin: 0 0 1rem; - background: #fff; - border-bottom: 1px solid #dcdcde; -} - -.privacy-settings-title-section, -.health-check-title-section { - display: flex; - align-items: center; - justify-content: center; - clear: both; - padding-top: 8px; -} - -.privacy-settings-tabs-wrapper { - /* IE 11 */ - display: -ms-inline-grid; - -ms-grid-columns: 1fr 1fr; - vertical-align: top; - /* modern browsers */ - display: inline-grid; - grid-template-columns: 1fr 1fr; + margin-bottom: 20px; } -.privacy-settings-tab { - display: block; /* IE 11 */ - text-decoration: none; - color: inherit; - padding: 0.5rem 1rem 1rem; - margin: 0 1rem; - transition: box-shadow 0.5s ease-in-out; -} - -.privacy-settings-tab:nth-child(1), -.health-check-tab:nth-child(1) { - -ms-grid-column: 1; /* IE 11 */ -} - -.privacy-settings-tab:nth-child(2), -.health-check-tab:nth-child(2) { - -ms-grid-column: 2; /* IE 11 */ -} - -.privacy-settings-tab:focus, -.health-check-tab:focus { - color: #1d2327; - outline: 1px solid #787c82; - box-shadow: none; -} - -.privacy-settings-tab.active, -.health-check-tab.active { - box-shadow: inset 0 -3px #3582c4; - font-weight: 600; -} - -/* Body */ -.privacy-settings-body, -.health-check-body { - max-width: 800px; - margin: 0 auto; -} - -.tools-privacy-policy-page th { - min-width: 230px; +/* Suggested text for privacy policy */ +.wp-privacy-policy-guide { + max-width: 1000px; } -.hr-separator { - margin-top: 20px; - margin-bottom: 15px; +.privacy-text-box { + width: calc(100% - 260px); } -/* Accordions */ -.privacy-settings-accordion, -.health-check-accordion { - border: 1px solid #c3c4c7; +.privacy-text-box-toc { + float: left; + width: 250px; + background-color: #fff; } -.privacy-settings-accordion-heading, -.health-check-accordion-heading { +.privacy-text-box-toc p { margin: 0; - border-top: 1px solid #c3c4c7; - font-size: inherit; - line-height: inherit; - font-weight: 600; - color: inherit; -} - -.privacy-settings-accordion-heading:first-child, -.health-check-accordion-heading:first-child { - border-top: none; + padding: 0.7em 1em; + border-bottom: 1px solid #eee; } -.privacy-settings-accordion-trigger, -.health-check-accordion-trigger { - background: #fff; - border: 0; - color: #2c3338; - cursor: pointer; - display: flex; - font-weight: 400; - margin: 0; - padding: 1em 1.5em 1em 3.5em; - min-height: 46px; - position: relative; - text-align: right; - width: 100%; - align-items: center; - justify-content: space-between; - -webkit-user-select: auto; - -moz-user-select: auto; - user-select: auto; +.privacy-text-box-toc ol { + margin-right: 2em; } -.privacy-settings-accordion-trigger:hover, -.privacy-settings-accordion-trigger:active, -.health-check-accordion-trigger:hover, -.health-check-accordion-trigger:active { - background: #f6f7f7; +.wp-privacy-policy-guide h3 { + font-size: 1.2em; + margin: 1em 0 0.5em; } -.privacy-settings-accordion-trigger:focus, -.health-check-accordion-trigger:focus { - color: #1d2327; - border: none; - box-shadow: none; - outline-offset: -1px; - outline: 2px solid #2271b1; - background-color: #f6f7f7; +.privacy-text-section .privacy-text-copy { + float: left; } -.privacy-settings-accordion-trigger .title, -.health-check-accordion-trigger .title { - pointer-events: none; - font-weight: 600; - flex-grow: 1; +.privacy-text-section { + position: relative; + border-top: 1px solid #e3e3e3; } -.privacy-settings-accordion-trigger .icon, -.privacy-settings-view-read .icon, -.health-check-accordion-trigger .icon, -.site-health-view-passed .icon { - border: solid #50575e; - border-width: 0 0 2px 2px; - height: 0.5rem; - pointer-events: none; - position: absolute; - left: 1.5em; - top: 50%; - transform: translateY(-70%) rotate(-45deg); - width: 0.5rem; +.privacy-text-box-head, +.privacy-text-section.text-removed { + padding-bottom: 12px; } -.privacy-settings-accordion-trigger .badge, -.health-check-accordion-trigger .badge { - padding: 0.1rem 0.5rem 0.15rem; - color: #2c3338; +.text-removed .policy-text { + font-style: italic; + color: #666; font-weight: 600; } -.privacy-settings-accordion-trigger .badge { - margin-right: 0.5rem; -} - -.privacy-settings-accordion-trigger .badge.blue, -.health-check-accordion-trigger .badge.blue { - border: 1px solid #72aee6; -} - -.privacy-settings-accordion-trigger .badge.orange, -.health-check-accordion-trigger .badge.orange { - border: 1px solid #dba617; -} - -.privacy-settings-accordion-trigger .badge.red, -.health-check-accordion-trigger .badge.red { - border: 1px solid #e65054; -} - -.privacy-settings-accordion-trigger .badge.green, -.health-check-accordion-trigger .badge.green { - border: 1px solid #00ba37; -} - -.privacy-settings-accordion-trigger .badge.purple, -.health-check-accordion-trigger .badge.purple { - border: 1px solid #2271b1; -} - -.privacy-settings-accordion-trigger .badge.gray, -.health-check-accordion-trigger .badge.gray { - border: 1px solid #c3c4c7; -} - -.privacy-settings-accordion-trigger[aria-expanded="true"] .icon, -.privacy-settings-view-passed[aria-expanded="true"] .icon, -.health-check-accordion-trigger[aria-expanded="true"] .icon, -.site-health-view-passed[aria-expanded="true"] .icon { - transform: translateY(-30%) rotate(135deg) -} - -.privacy-settings-accordion-panel, -.health-check-accordion-panel { - margin: 0; - padding: 1em 1.5em; - background: #fff; -} - -.privacy-settings-accordion-panel[hidden], -.health-check-accordion-panel[hidden] { - display: none; -} - -.privacy-settings-accordion-panel a .dashicons, -.health-check-accordion-panel a .dashicons { - text-decoration: none; +.privacy-text-actions { + height: 32px; + line-height: 32px; + padding-bottom: 6px; } -.privacy-settings-accordion-actions { - text-align: left; - display: block; +.wp-privacy-policy-guide .policy-text h2 { + margin: 1.2em 0 1em; + padding: 0; } -.privacy-settings-accordion-actions .success { - display: none; - color: #008a20; - padding-left: 1em; - padding-top: 6px; +.suggested-policy-content { + font-style: italic; } -.privacy-settings-accordion-actions .success.visible { - display: inline-block; -} - -/* Suggested text for privacy policy */ -.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help, /* For back-compat, see #49282 */ -.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial, -.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy { - display: none; +.privacy-text-section a.return-to-top { + float: left; + margin-left: -250px; + margin-top: 6px; } -.privacy-settings-accordion-panel strong.wp-policy-help, /* For back-compat, see #49282 */ -.privacy-settings-accordion-panel strong.privacy-policy-tutorial { - display: block; - margin: 0 0 1em; +.hide-privacy-policy-tutorial .privacy-policy-tutorial { + visibility: hidden; } -.privacy-text-copy span { - pointer-events: none; +.wp-suggested-text p { + font-style: italic; } -.privacy-settings-accordion-panel .wp-suggested-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), -.privacy-settings-accordion-panel .wp-suggested-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), -.privacy-settings-accordion-panel > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), -.privacy-settings-accordion-panel div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p) { - margin: 0; - padding: 1em; - border-right: 2px solid #787c82; -} - -/* Media queries */ -@media screen and (max-width: 782px) { - - .privacy-settings-body, - .health-check-body { - margin: 0 12px; - width: auto; - } - - .privacy-settings .notice, - .site-health .notice { - margin: 5px 10px 15px; - } - - .privacy-settings .update-nag, - .site-health .update-nag { - margin-left: 10px; - margin-right: 10px; - } - - input#create-page { - margin-top: 10px; - } - - .wp-core-ui button.privacy-text-copy { - white-space: normal; - line-height: 1.8; - } +.wp-suggested-text p.privacy-policy-tutorial { + font-style: normal; } -@media only screen and (max-width: 1004px) { - - .privacy-settings-body, - .health-check-body { - margin: 0 22px; - width: auto; - } +.notice.wp-pp-notice { + margin: 15px 0 3px; } -/** -* End Privacy Settings section -*/ - /*------------------------------------------------------------------------------ 11.1 - Custom Fields ------------------------------------------------------------------------------*/ #postcustomstuff thead th { padding: 5px 8px 8px; - background-color: #f0f0f1; + background-color: #f1f1f1; } #postcustom #postcustomstuff .submit { @@ -1085,9 +766,9 @@ form#tags-filter { #postcustomstuff table { margin: 0; width: 100%; - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-spacing: 0; - background-color: #f6f7f7; + background-color: #f9f9f9; } #postcustomstuff tr { @@ -1173,29 +854,42 @@ form#tags-filter { 11.4 - Post formats ------------------------------------------------------------------------------*/ -.post-format-icon::before { +.post-state-format { + overflow: hidden; display: inline-block; vertical-align: middle; height: 20px; width: 20px; + margin-left: 5px; margin-top: -4px; - margin-left: 7px; - color: #dcdcde; - font: normal 20px/1 dashicons; - speak: never; +} + +.post-state-format:before { + display: block; + height: 20px; + width: 20px; + font: normal 20px/1 dashicons !important; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } +.post-state-format:before, +.post-format-icon:before { + color: #ddd; + transition: all .1s ease-in-out; +} + +a.post-state-format:hover:before, a.post-format-icon:hover:before { - color: #135e96; + color: #00a0d2; } #post-formats-select { - line-height: 2; + line-height: 2em; } -#post-formats-select .post-format-icon::before { +#post-formats-select .post-format-icon:before { top: 5px; } @@ -1204,47 +898,77 @@ input.post-format { } label.post-format-icon { - margin-right: 0; - padding: 2px 0; + margin-right: 0px; + padding: 2px 0px 2px 0; } -.post-format-icon.post-format-standard::before { +.post-format-icon:before { + position: relative; + display: inline-block; + margin-left: 7px; + font: normal 20px/1 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.post-state-format.post-format-standard:before, +.post-format-icon.post-format-standard:before, +a.post-state-format.format-standard:before { content: "\f109"; } -.post-format-icon.post-format-image::before { +.post-state-format.post-format-image:before, +.post-format-icon.post-format-image:before, +a.post-state-format.format-image:before { content: "\f128"; } -.post-format-icon.post-format-gallery::before { +.post-state-format.post-format-gallery:before, +.post-format-icon.post-format-gallery:before, +a.post-state-format.format-gallery:before { content: "\f161"; } -.post-format-icon.post-format-audio::before { +.post-state-format.post-format-audio:before, +.post-format-icon.post-format-audio:before, +a.post-state-format.format-audio:before { content: "\f127"; } -.post-format-icon.post-format-video::before { +.post-state-format.post-format-video:before, +.post-format-icon.post-format-video:before, +a.post-state-format.format-video:before { content: "\f126"; } -.post-format-icon.post-format-chat::before { +.post-state-format.post-format-chat:before, +.post-format-icon.post-format-chat:before, +a.post-state-format.format-chat:before { content: "\f125"; } -.post-format-icon.post-format-status::before { +.post-state-format.post-format-status:before, +.post-format-icon.post-format-status:before, +a.post-state-format.format-status:before { content: "\f130"; } -.post-format-icon.post-format-aside::before { +.post-state-format.post-format-aside:before, +.post-format-icon.post-format-aside:before, +a.post-state-format.format-aside:before { content: "\f123"; } -.post-format-icon.post-format-quote::before { +.post-state-format.post-format-quote:before, +.post-format-icon.post-format-quote:before, +a.post-state-format.format-quote:before { content: "\f122"; } -.post-format-icon.post-format-link::before { +.post-state-format.post-format-link:before, +.post-format-icon.post-format-link:before, +a.post-state-format.format-link:before { content: "\f103"; } @@ -1274,20 +998,20 @@ label.post-format-icon { max-height: 200px; overflow: auto; padding: 0 0.9em; - border: solid 1px #dcdcde; - background-color: #fff; + border: solid 1px #ddd; + background-color: #fdfdfd; } div.tabs-panel-active { - display: block; + display:block; } div.tabs-panel-inactive { - display: none; + display:none; } div.tabs-panel-active:focus { - box-shadow: inset 0 0 0 1px #4f94d4, inset 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: inset 0 0 0 1px #5b9dd9, inset 0 0 2px 1px rgba(30, 140, 190, 0.8); outline: 0 none; } @@ -1305,7 +1029,7 @@ ul.export-filters, ul.categorychecklist li { margin: 0; padding: 0; - line-height: 1.69230769; + line-height: 22px; word-wrap: break-word; } @@ -1335,15 +1059,10 @@ ul.categorychecklist li { width: 95%; } -.form-field select, -.form-field p { - max-width: 95%; -} - p.description, .form-wrap p { margin: 2px 0 5px; - color: #646970; + color: #666; } p.help, @@ -1351,10 +1070,7 @@ p.description, span.description, .form-wrap p { font-size: 13px; -} - -p.description code { - font-style: normal; + font-style: italic; } .form-wrap .form-field { @@ -1362,6 +1078,10 @@ p.description code { padding: 0; } +.form-wrap .form-field #parent { + max-width: 100%; +} + .col-wrap h2 { margin: 12px 0; font-size: 1.1em; @@ -1379,12 +1099,8 @@ p.description code { 13.0 - Tags ------------------------------------------------------------------------------*/ -#poststuff .tagsdiv .ajaxtag { - margin-top: 1em; -} - #poststuff .tagsdiv .howto { - margin: 1em 0 6px; + margin: 0 0 6px 0; } .ajaxtag .newtag { @@ -1428,14 +1144,6 @@ p.popular-tags a { margin: 2px 0 12px; } -#poststuff .inside .the-tagcloud { - margin: 5px 0 10px; - padding: 8px; - border: 1px solid #dcdcde; - line-height: 1.2; - word-spacing: 3px; -} - .the-tagcloud ul { margin: 0; } @@ -1444,7 +1152,7 @@ p.popular-tags a { display: inline-block; } -/* Back-compat styles from deprecated jQuery.suggest, see ticket #40260. */ +/* Suggest.js autocomplete, no more used by core. */ .ac_results { display: none; margin: -1px 0 0; @@ -1452,7 +1160,7 @@ p.popular-tags a { list-style: none; position: absolute; z-index: 10000; - border: 1px solid #4f94d4; + border: 1px solid #5b9dd9; background-color: #fff; } @@ -1469,7 +1177,7 @@ p.popular-tags a { .ac_results .ac_over, .ac_over .ac_match { - background-color: #2271b1; + background-color: #0073aa; color: #fff; cursor: pointer; } @@ -1478,17 +1186,15 @@ p.popular-tags a { text-decoration: underline; } -#addtag .spinner { - float: none; - vertical-align: top; -} - #edittag { max-width: 800px; } .edit-tag-actions { margin-top: 20px; + overflow: hidden; + padding: 10px; + margin-left: 10px; } /* Comments */ @@ -1508,10 +1214,10 @@ p.popular-tags a { } .comment-ays .comment-content a[href]:after { - content: "(" attr( href ) ")"; + content: '(' attr( href ) ')'; display: inline-block; padding: 0 4px; - color: #646970; + color: #72777C; font-size: 13px; word-break: break-all; } @@ -1521,7 +1227,7 @@ p.popular-tags a { } .comment-ays .comment-content p.edit-comment a[href]:after { - content: ""; + content: ''; padding: 0; } @@ -1532,7 +1238,7 @@ p.popular-tags a { .trash-undo-inside, .spam-undo-inside { margin: 1px 0 1px 8px; - line-height: 1.23076923; + line-height: 16px; } .spam-undo-inside .avatar, @@ -1545,15 +1251,6 @@ p.popular-tags a { .stuffbox .editcomment { clear: none; - margin-top: 0; -} - -#namediv.stuffbox .editcomment input { - width: 100%; -} - -#namediv.stuffbox .editcomment.form-table td { - padding: 10px; } #comment-status-radio p { @@ -1605,10 +1302,12 @@ table.links-table { /* DFW 2 -------------------------------------------------------------- */ +#wp-content-wrap .mce-wp-dfw, #qt_content_dfw { display: none; } +.wp-editor-expand #wp-content-wrap .mce-wp-dfw, .wp-editor-expand #qt_content_dfw { display: inline-block; } @@ -1698,49 +1397,6 @@ table.links-table { } } -/* - * The edit attachment screen auto-switches to one column layout when the - * viewport is smaller than 1200 pixels. - */ -@media only screen and (max-width: 1200px) { - .post-type-attachment #poststuff { - min-width: 0; - } - - .post-type-attachment #wpbody-content #poststuff #post-body { - margin: 0; - } - - .post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1 { - margin-left: 0; - width: 100%; - } - - .post-type-attachment #poststuff #postbox-container-1 .empty-container, - .post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty { - outline: none; - height: 0; - min-height: 0; - } - - .post-type-attachment #poststuff #post-body.columns-2 #side-sortables { - min-height: 0; - width: auto; - } - - .is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables { - outline: none; - min-height: 0; - margin-bottom: 0; - } - - /* hide the radio buttons for column prefs */ - .post-type-attachment .screen-layout, - .post-type-attachment .columns-prefs { - display: none; - } -} - /* one column on the post write/edit screen */ @media only screen and (max-width: 850px) { #poststuff { @@ -1758,6 +1414,7 @@ table.links-table { #poststuff #postbox-container-1 .empty-container, #poststuff #postbox-container-1 #side-sortables:empty { + border: 0 none; height: 0; min-height: 0; } @@ -1767,15 +1424,6 @@ table.links-table { width: auto; } - /* Increase min-height while dragging for the #side-sortables and any potential sortables area with custom ID. */ - .is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container, - .is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty, - .is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables, - .is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables { - height: auto; - min-height: 60px; - } - /* hide the radio buttons for column prefs */ .screen-layout, .columns-prefs { @@ -1783,7 +1431,7 @@ table.links-table { } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-core-ui .edit-tag-actions .button-primary { margin-bottom: 0; } @@ -1793,11 +1441,7 @@ table.links-table { } #titlediv #title-prompt-text { - padding: 10px; - } - - #poststuff .stuffbox .inside { - padding: 0 0 4px 2px; + padding: 10px 10px; } #poststuff h3.hndle, /* Back-compat for pre-4.4 */ @@ -1806,10 +1450,6 @@ table.links-table { padding: 12px; } - #namediv.stuffbox .editcomment.form-table td { - padding: 5px 10px; - } - .post-format-options { padding-left: 0; } @@ -1930,7 +1570,10 @@ table.links-table { } .wp_themeSkin .mceSplitButton td a.mceAction { - padding: 6px 6px 6px 3px; + padding-top: 6px; + padding-bottom: 6px; + padding-right: 6px; + padding-left: 3px; } .wp_themeSkin .mceSplitButton td a.mceOpen, @@ -1950,7 +1593,7 @@ table.links-table { button.wp-switch-editor { font-size: 16px; - line-height: 1; + line-height: 1em; margin: 7px 7px 0 0; padding: 8px 12px; } @@ -1976,12 +1619,17 @@ table.links-table { } .misc-pub-section { - padding: 20px 10px; + padding: 20px 10px 20px; + } + + .misc-pub-section > a { + float: left; + font-size: 16px; } #delete-action, #publishing-action { - line-height: 3.61538461; + line-height: 47px; } #publishing-action .spinner { @@ -2008,24 +1656,19 @@ table.links-table { .links-table td { padding: 10px 0; } - - .edit-term-notes { - display: none; - } - + .privacy-text-box { width: auto; } - + .privacy-text-box-toc { float: none; width: auto; height: 100%; - display: flex; - flex-direction: column; } - .privacy-text-section .return-to-top { - margin: 2em 0 0; + .privacy-text-section a.return-to-top { + float: none; + margin: 0; } } diff --git a/wp-admin/css/edit-rtl.min.css b/wp-admin/css/edit-rtl.min.css index 8996ab3..1a8f2e0 100644 --- a/wp-admin/css/edit-rtl.min.css +++ b/wp-admin/css/edit-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-left:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:right}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:right;margin:0 0 0 5px}#titlediv{position:relative}#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%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#646970;position:absolute;font-size:1.7em;padding:10px;pointer-events:none}input#link_description,input#link_url{width:100%}#pending{background:100% none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:1.84615384;min-height:25px;margin-top:5px;padding:0 10px;color:#646970}#sample-permalink{display:inline-block;max-width:100%;word-wrap:break-word}#edit-slug-box .cancel{margin-left:10px;padding:0;font-size:11px}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:24px;margin:0;width:16em}.postarea h3 label{float:right}body.post-new-php .submitbox .submitdelete{display:none}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-left:4px;padding:6px}#post-status-select{margin-top:3px}body.post-type-wp_navigation .inline-edit-status,body.post-type-wp_navigation div#minor-publishing{display:none}.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables{outline:3px dashed #646970;display:flow-root;min-height:60px;margin-bottom:20px}.postbox{position:relative;min-width:255px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:left;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#2c3338}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0 none}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:solid 1px transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dcdcde;border-bottom-color:#fff;background-color:#fff}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}form#tags-filter{position:relative}.ui-tabs-hide,.wp-hidden-children .wp-hidden-child{display:none}#post-body .tagsdiv #newtag{margin-left:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #c3c4c7;border-top:none;background-color:#f6f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:left}#editorcontent #post-status-info{border:none}#content-resize-handle{background:transparent url(../images/resize.gif) no-repeat scroll left bottom;width:12px;cursor:row-resize}.rtl #content-resize-handle{background-image:url(../images/resize-rtl.gif);background-position:left bottom}.wp-editor-expand #content-resize-handle{display:none}#postdivrich #content{resize:none}#wp-word-count{padding:2px 10px}#wp-content-editor-container{position:relative}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #c3c4c7}.wp-editor-expand #wp-content-editor-container{box-shadow:none;margin-top:-1px}.wp-editor-expand #wp-content-editor-container{border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #c3c4c7}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw{display:none}.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f0f0f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{vertical-align:top;font-size:12px;line-height:2.33333333}#aa,#hh,#jj,#mn{padding:6px 1px;font-size:12px;line-height:1.16666666}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{color:#8c8f94}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{font:normal 20px/1 dashicons;speak:never;display:inline-block;margin-right:-1px;padding-left:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-uploadedby:before{content:"\f110";position:relative;top:-1px}#post-body .misc-pub-uploadedto:before{content:"\f318";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#post-body .misc-pub-response-to:before{content:"\f101"}#timestampdiv{padding-top:5px;line-height:1.76923076}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{text-align:center}.notification-dialog{position:fixed;top:30%;max-height:70%;right:50%;width:450px;margin-right:-225px;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#file-editor-warning .button,#post-lock-dialog .post-locked-message a.button{margin-left:10px}#post-lock-dialog .post-locked-avatar{float:right;margin:0 0 20px 20px}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:right;margin-left:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-right:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist strong{margin-right:-8px;position:absolute}.tagchecklist>li{float:right;margin-left:25px;font-size:13px;line-height:1.8;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 -19px 0 0;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff summary{font-size:14px;padding:2px 12px;margin:0;line-height:1.4}#poststuff .stuffbox h2{padding:8px 10px}#poststuff .stuffbox>h2{border-bottom:1px solid #f0f0f1}#poststuff .inside{margin:6px 0 0}.link-add-php #poststuff .inside,.link-php #poststuff .inside{margin-top:12px}#poststuff .stuffbox .inside{margin:0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#comment-status-radio,#post-visibility-select{line-height:1.5;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}.wp_attachment_details .attachment-content-description{margin-top:.5385em;display:inline-block;min-height:1.6923em}.privacy-settings #wpcontent,.privacy-settings.auto-fold #wpcontent,.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-right:0}.privacy-settings .notice,.site-health .notice{margin:25px 22px 15px 20px}.privacy-settings .notice~.notice,.site-health .notice~.notice{margin-top:5px}.health-check-header h1,.privacy-settings-header h1{display:inline-block;font-weight:600;margin:0 .8rem 1rem;font-size:23px;padding:9px 0 4px;line-height:1.3}.health-check-header,.privacy-settings-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #dcdcde}.health-check-title-section,.privacy-settings-title-section{display:flex;align-items:center;justify-content:center;clear:both;padding-top:8px}.privacy-settings-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr}.privacy-settings-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:first-child,.privacy-settings-tab:first-child{-ms-grid-column:1}.health-check-tab:nth-child(2),.privacy-settings-tab:nth-child(2){-ms-grid-column:2}.health-check-tab:focus,.privacy-settings-tab:focus{color:#1d2327;outline:1px solid #787c82;box-shadow:none}.health-check-tab.active,.privacy-settings-tab.active{box-shadow:inset 0 -3px #3582c4;font-weight:600}.health-check-body,.privacy-settings-body{max-width:800px;margin:0 auto}.tools-privacy-policy-page th{min-width:230px}.hr-separator{margin-top:20px;margin-bottom:15px}.health-check-accordion,.privacy-settings-accordion{border:1px solid #c3c4c7}.health-check-accordion-heading,.privacy-settings-accordion-heading{margin:0;border-top:1px solid #c3c4c7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child,.privacy-settings-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger,.privacy-settings-accordion-trigger{background:#fff;border:0;color:#2c3338;cursor:pointer;display:flex;font-weight:400;margin:0;padding:1em 1.5em 1em 3.5em;min-height:46px;position:relative;text-align:right;width:100%;align-items:center;justify-content:space-between;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover,.privacy-settings-accordion-trigger:active,.privacy-settings-accordion-trigger:hover{background:#f6f7f7}.health-check-accordion-trigger:focus,.privacy-settings-accordion-trigger:focus{color:#1d2327;border:none;box-shadow:none;outline-offset:-1px;outline:2px solid #2271b1;background-color:#f6f7f7}.health-check-accordion-trigger .title,.privacy-settings-accordion-trigger .title{pointer-events:none;font-weight:600;flex-grow:1}.health-check-accordion-trigger .icon,.privacy-settings-accordion-trigger .icon,.privacy-settings-view-read .icon,.site-health-view-passed .icon{border:solid #50575e;border-width:0 0 2px 2px;height:.5rem;pointer-events:none;position:absolute;left:1.5em;top:50%;transform:translateY(-70%) rotate(-45deg);width:.5rem}.health-check-accordion-trigger .badge,.privacy-settings-accordion-trigger .badge{padding:.1rem .5rem .15rem;color:#2c3338;font-weight:600}.privacy-settings-accordion-trigger .badge{margin-right:.5rem}.health-check-accordion-trigger .badge.blue,.privacy-settings-accordion-trigger .badge.blue{border:1px solid #72aee6}.health-check-accordion-trigger .badge.orange,.privacy-settings-accordion-trigger .badge.orange{border:1px solid #dba617}.health-check-accordion-trigger .badge.red,.privacy-settings-accordion-trigger .badge.red{border:1px solid #e65054}.health-check-accordion-trigger .badge.green,.privacy-settings-accordion-trigger .badge.green{border:1px solid #00ba37}.health-check-accordion-trigger .badge.purple,.privacy-settings-accordion-trigger .badge.purple{border:1px solid #2271b1}.health-check-accordion-trigger .badge.gray,.privacy-settings-accordion-trigger .badge.gray{border:1px solid #c3c4c7}.health-check-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-view-passed[aria-expanded=true] .icon,.site-health-view-passed[aria-expanded=true] .icon{transform:translateY(-30%) rotate(135deg)}.health-check-accordion-panel,.privacy-settings-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden],.privacy-settings-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons,.privacy-settings-accordion-panel a .dashicons{text-decoration:none}.privacy-settings-accordion-actions{text-align:left;display:block}.privacy-settings-accordion-actions .success{display:none;color:#008a20;padding-left:1em;padding-top:6px}.privacy-settings-accordion-actions .success.visible{display:inline-block}.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help{display:none}.privacy-settings-accordion-panel strong.privacy-policy-tutorial,.privacy-settings-accordion-panel strong.wp-policy-help{display:block;margin:0 0 1em}.privacy-text-copy span{pointer-events:none}.privacy-settings-accordion-panel .wp-suggested-text div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p),.privacy-settings-accordion-panel .wp-suggested-text>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p),.privacy-settings-accordion-panel div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p),.privacy-settings-accordion-panel>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p){margin:0;padding:1em;border-right:2px solid #787c82}@media screen and (max-width:782px){.health-check-body,.privacy-settings-body{margin:0 12px;width:auto}.privacy-settings .notice,.site-health .notice{margin:5px 10px 15px}.privacy-settings .update-nag,.site-health .update-nag{margin-left:10px;margin-right:10px}input#create-page{margin-top:10px}.wp-core-ui button.privacy-text-copy{white-space:normal;line-height:1.8}}@media only screen and (max-width:1004px){.health-check-body,.privacy-settings-body{margin:0 22px;width:auto}}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f0f0f1}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dcdcde;border-spacing:0;background-color:#f6f7f7}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-left:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:right;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-format-icon::before{display:inline-block;vertical-align:middle;height:20px;width:20px;margin-top:-4px;margin-left:7px;color:#dcdcde;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a.post-format-icon:hover:before{color:#135e96}#post-formats-select{line-height:2}#post-formats-select .post-format-icon::before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-right:0;padding:2px 0}.post-format-icon.post-format-standard::before{content:"\f109"}.post-format-icon.post-format-image::before{content:"\f128"}.post-format-icon.post-format-gallery::before{content:"\f161"}.post-format-icon.post-format-audio::before{content:"\f127"}.post-format-icon.post-format-video::before{content:"\f126"}.post-format-icon.post-format-chat::before{content:"\f125"}.post-format-icon.post-format-status::before{content:"\f130"}.post-format-icon.post-format-aside::before{content:"\f123"}.post-format-icon.post-format-quote::before{content:"\f122"}.post-format-icon.post-format-link::before{content:"\f103"}.category-adder{margin-right:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:solid 1px #dcdcde;background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}div.tabs-panel-active:focus{box-shadow:inset 0 0 0 1px #4f94d4,inset 0 0 2px 1px rgba(79,148,212,.8);outline:0 none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-right:18px}ul.categorychecklist li{margin:0;padding:0;line-height:1.69230769;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px 0}.form-field input[type=email],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=url],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-field p,.form-field select{max-width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#646970}.form-wrap p,p.description,p.help,span.description{font-size:13px}p.description code{font-style:normal}.form-wrap .form-field{margin:1em 0;padding:0}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .ajaxtag{margin-top:1em}#poststuff .tagsdiv .howto{margin:1em 0 6px}.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{border:none;line-height:2em;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 h2{margin:2px 0 12px}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #dcdcde;line-height:1.2;word-spacing:3px}.the-tagcloud ul{margin:0}.the-tagcloud ul li{display:inline-block}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:right}.ac_over .ac_match,.ac_results .ac_over{background-color:#2271b1;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}#addtag .spinner{float:none;vertical-align:top}#edittag{max-width:800px}.edit-tag-actions{margin-top:20px}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:initial;margin-right:2em}.comment-ays .comment-content a[href]:after{content:"(" attr(href) ")";display:inline-block;padding:0 4px;color:#646970;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:"";padding:0}.comment-ays-submit .button-cancel{margin-right:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 0 1px 8px;line-height:1.23076923}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-left:8px;vertical-align:middle}.stuffbox .editcomment{clear:none;margin-top:0}#namediv.stuffbox .editcomment input{width:100%}#namediv.stuffbox .editcomment.form-table td{padding:10px}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 0 5px 3px;vertical-align:middle}#comment-status-radio label{padding:5px 0}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:right;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td,.links-table th{padding:5px 0}.links-table td label{margin-left:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}#qt_content_dfw{display:none}.wp-editor-expand #qt_content_dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .page-title-action,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;transition-duration:.6s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .page-title-action,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;transition-duration:.2s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transition-duration:.6s;transition-property:transform;transition-timing-function:ease-in-out}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transform:translateX(100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{transform:translateX(0);transition-duration:.2s;transition-property:transform;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-2x.gif) no-repeat scroll left bottom;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:1200px){.post-type-attachment #poststuff{min-width:0}.post-type-attachment #wpbody-content #poststuff #post-body{margin:0}.post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}.post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty,.post-type-attachment #poststuff #postbox-container-1 .empty-container{outline:0;height:0;min-height:0}.post-type-attachment #poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables{outline:0;min-height:0;margin-bottom:0}.post-type-attachment .columns-prefs,.post-type-attachment .screen-layout{display:none}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables,.is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables,.is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty,.is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container{height:auto;min-height:60px}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){.wp-core-ui .edit-tag-actions .button-primary{margin-bottom:0}#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff .stuffbox .inside{padding:0 0 4px 2px}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}#namediv.stuffbox .editcomment.form-table td{padding:5px 10px}.post-format-options{padding-left:0}.post-format-options a{margin-left:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-left:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist li{margin-bottom:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto;margin-bottom:15px}.tagchecklist{margin:25px 10px}.tagchecklist>li{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:right!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-right:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 6px 6px 3px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1;margin:7px 7px 0 0;padding:8px 12px}#wp-content-media-buttons a{font-size:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-right:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}#delete-action,#publishing-action{line-height:3.61538461}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}.edit-term-notes{display:none}.privacy-text-box{width:auto}.privacy-text-box-toc{float:none;width:auto;height:100%;display:flex;flex-direction:column}.privacy-text-section .return-to-top{margin:2em 0 0}} \ No newline at end of file +#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-left:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:right}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:right;margin:0 0 0 5px}#titlediv{position:relative}#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%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#72777c;position:absolute;font-size:1.7em;padding:11px 10px}input#link_description,input#link_url{width:98%}#pending{background:100% none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-left:10px;padding:0;font-size:11px}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:24px;margin:0;width:16em}.postarea h3 label{float:right}body.post-new-php .submitbox .submitdelete{display:none}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-left:4px;padding:6px}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:left;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0 none}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:solid 1px transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #ddd;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:100% 0,10px 10px;background-size:20px 20px}form#tags-filter{position:relative}.ui-tabs-hide,.wp-hidden-children .wp-hidden-child{display:none}#post-body .tagsdiv #newtag{margin-left:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #e5e5e5;border-top:none;background-color:#f7f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:left}#editorcontent #post-status-info{border:none}#content-resize-handle{background:transparent url(../images/resize.gif) no-repeat scroll left bottom;width:12px;cursor:row-resize}.rtl #content-resize-handle{background-image:url(../images/resize-rtl.gif);background-position:left bottom}.wp-editor-expand #content-resize-handle{display:none}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#wp-content-editor-container{position:relative}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{box-shadow:none;margin-top:-1px}.wp-editor-expand #wp-content-editor-container{border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #e5e5e5}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw{display:none}.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f1f1f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{height:21px;line-height:14px;padding:0;vertical-align:top;font-size:12px}#aa,#hh,#jj,#mn{padding:1px;font-size:12px}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px 0;display:inline!important;height:auto!important}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:normal 20px/1 dashicons;speak:none;display:inline-block;margin-right:-1px;padding-left:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;right:50%;width:450px;margin-right:-225px;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#file-editor-warning .button,#post-lock-dialog .post-locked-message a.button{margin-left:10px}#post-lock-dialog .post-locked-avatar{float:right;margin:0 0 20px 20px}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:right;margin-left:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-right:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist strong{margin-right:-8px;position:absolute}.tagchecklist>li{float:right;margin-left:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 -19px 0 0;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#post-visibility-select{line-height:1.5em;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}.wp-privacy-policy-guide{max-width:1000px}.privacy-text-box{width:calc(100% - 260px)}.privacy-text-box-toc{float:left;width:250px;background-color:#fff}.privacy-text-box-toc p{margin:0;padding:.7em 1em;border-bottom:1px solid #eee}.privacy-text-box-toc ol{margin-right:2em}.wp-privacy-policy-guide h3{font-size:1.2em;margin:1em 0 .5em}.privacy-text-section .privacy-text-copy{float:left}.privacy-text-section{position:relative;border-top:1px solid #e3e3e3}.privacy-text-box-head,.privacy-text-section.text-removed{padding-bottom:12px}.text-removed .policy-text{font-style:italic;color:#666;font-weight:600}.privacy-text-actions{height:32px;line-height:32px;padding-bottom:6px}.wp-privacy-policy-guide .policy-text h2{margin:1.2em 0 1em;padding:0}.suggested-policy-content{font-style:italic}.privacy-text-section a.return-to-top{float:left;margin-left:-250px;margin-top:6px}.hide-privacy-policy-tutorial .privacy-policy-tutorial{visibility:hidden}.wp-suggested-text p{font-style:italic}.wp-suggested-text p.privacy-policy-tutorial{font-style:normal}.notice.wp-pp-notice{margin:15px 0 3px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #ddd;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-left:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:right;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-left:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font:normal 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before,.post-state-format:before{color:#ddd;transition:all .1s ease-in-out}a.post-format-icon:hover:before,a.post-state-format:hover:before{color:#00a0d2}#post-formats-select{line-height:2em}#post-formats-select .post-format-icon:before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-right:0;padding:2px 0 2px 0}.post-format-icon:before{position:relative;display:inline-block;margin-left:7px;font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon.post-format-standard:before,.post-state-format.post-format-standard:before,a.post-state-format.format-standard:before{content:"\f109"}.post-format-icon.post-format-image:before,.post-state-format.post-format-image:before,a.post-state-format.format-image:before{content:"\f128"}.post-format-icon.post-format-gallery:before,.post-state-format.post-format-gallery:before,a.post-state-format.format-gallery:before{content:"\f161"}.post-format-icon.post-format-audio:before,.post-state-format.post-format-audio:before,a.post-state-format.format-audio:before{content:"\f127"}.post-format-icon.post-format-video:before,.post-state-format.post-format-video:before,a.post-state-format.format-video:before{content:"\f126"}.post-format-icon.post-format-chat:before,.post-state-format.post-format-chat:before,a.post-state-format.format-chat:before{content:"\f125"}.post-format-icon.post-format-status:before,.post-state-format.post-format-status:before,a.post-state-format.format-status:before{content:"\f130"}.post-format-icon.post-format-aside:before,.post-state-format.post-format-aside:before,a.post-state-format.format-aside:before{content:"\f123"}.post-format-icon.post-format-quote:before,.post-state-format.post-format-quote:before,a.post-state-format.format-quote:before{content:"\f122"}.post-format-icon.post-format-link:before,.post-state-format.post-format-link:before,a.post-state-format.format-link:before{content:"\f103"}.category-adder{margin-right:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:solid 1px #ddd;background-color:#fdfdfd}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}div.tabs-panel-active:focus{box-shadow:inset 0 0 0 1px #5b9dd9,inset 0 0 2px 1px rgba(30,140,190,.8);outline:0 none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-right:18px}ul.categorychecklist li{margin:0;padding:0;line-height:22px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px 0}.form-field input[type=email],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=url],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:1em 0;padding:0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .howto{margin:0 0 6px 0}.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{border:none;line-height:2em;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 h2{margin:2px 0 12px}.the-tagcloud ul{margin:0}.the-tagcloud ul li{display:inline-block}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:right}.ac_over .ac_match,.ac_results .ac_over{background-color:#0073aa;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}#edittag{max-width:800px}.edit-tag-actions{margin-top:20px;overflow:hidden;padding:10px;margin-left:10px}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:initial;margin-right:2em}.comment-ays .comment-content a[href]:after{content:'(' attr(href) ')';display:inline-block;padding:0 4px;color:#72777c;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:'';padding:0}.comment-ays-submit .button-cancel{margin-right:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 0 1px 8px;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-left:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 0 5px 3px;vertical-align:middle}#comment-status-radio label{padding:5px 0}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:right;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td,.links-table th{padding:5px 0}.links-table td label{margin-left:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw{display:none}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .page-title-action,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;transition-duration:.6s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .page-title-action,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;transition-duration:.2s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transition-duration:.6s;transition-property:transform;transition-timing-function:ease-in-out}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transform:translateX(100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{transform:translateX(0);transition-duration:.2s;transition-property:transform;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-2x.gif) no-repeat scroll left bottom;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){.wp-core-ui .edit-tag-actions .button-primary{margin-bottom:0}#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px 10px}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-left:0}.post-format-options a{margin-left:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-left:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist li{margin-bottom:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto;margin-bottom:15px}.tagchecklist{margin:25px 10px}.tagchecklist>li{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:right!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-right:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding-top:6px;padding-bottom:6px;padding-right:6px;padding-left:3px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1em;margin:7px 7px 0 0;padding:8px 12px}#wp-content-media-buttons a{font-size:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-right:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px 20px}.misc-pub-section>a{float:left;font-size:16px}#delete-action,#publishing-action{line-height:47px}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}.privacy-text-box{width:auto}.privacy-text-box-toc{float:none;width:auto;height:100%}.privacy-text-section a.return-to-top{float:none;margin:0}} \ No newline at end of file diff --git a/wp-admin/css/edit.css b/wp-admin/css/edit.css index aa98c40..7d3d08a 100644 --- a/wp-admin/css/edit.css +++ b/wp-admin/css/edit.css @@ -68,16 +68,15 @@ } #titlediv #title-prompt-text { - color: #646970; + color: #72777c; position: absolute; font-size: 1.7em; - padding: 10px; - pointer-events: none; + padding: 11px 10px; } input#link_description, input#link_url { - width: 100%; + width: 98%; } #pending { @@ -90,17 +89,11 @@ input#link_url { #edit-slug-box, #comment-link-box { - line-height: 1.84615384; - min-height: 25px; + line-height: 24px; + min-height: 25px; /* Yes, line-height + 1 */ margin-top: 5px; padding: 0 10px; - color: #646970; -} - -#sample-permalink { - display: inline-block; - max-width: 100%; - word-wrap: break-word; + color: #666; } #edit-slug-box .cancel { @@ -152,33 +145,16 @@ body.post-new-php .submitbox .submitdelete { margin-top: 3px; } -body.post-type-wp_navigation div#minor-publishing, -body.post-type-wp_navigation .inline-edit-status { - display: none; -} - /* Post Screen */ - -/* Only highlight drop zones when dragging and only in the 2 columns layout. */ -.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables { - outline: 3px dashed #646970; - /* Prevent margin on the child from collapsing with margin on the parent. */ - display: flow-root; - /* - * This min-height is meant to limit jumpiness while dragging. It's equivalent - * to the minimum height of the sortable-placeholder which is given by the height - * of a collapsed post box (36px + 1px top and bottom borders) + the placeholder - * bottom margin (20px) + 2 additional pixels to compensate browsers rounding. - */ - min-height: 60px; - margin-bottom: 20px; +#post-body #normal-sortables { + min-height: 50px; } .postbox { position: relative; min-width: 255px; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); background: #fff; } @@ -191,7 +167,7 @@ body.post-type-wp_navigation .inline-edit-status { border: 0 none; float: right; padding: 0 12px; - margin: 0; + margin:0; } .category-add input[type="text"], @@ -210,7 +186,7 @@ ul.category-tabs li, #side-sortables .add-menu-item-tabs li, .wp-tab-bar li { display: inline; - line-height: 1.35; + line-height: 1.35em; } .no-js .category-tabs li.hide-if-no-js { @@ -229,7 +205,7 @@ ul.category-tabs li, .wp-tab-bar .wp-tab-active a, #post-body ul.category-tabs li.tabs a, #post-body ul.add-menu-item-tabs li.tabs a { - color: #2c3338; + color: #32373c; } .category-tabs { @@ -238,7 +214,7 @@ ul.category-tabs li, /* Back-compat for pre-4.4 */ #category-adder h4 { - margin: 0; + margin: 0; } .taxonomy-add-new { @@ -281,9 +257,9 @@ ul.add-menu-item-tabs li { ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs, .wp-tab-active { - border: 1px solid #dcdcde; - border-bottom-color: #fff; - background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: #fdfdfd; + background-color: #fdfdfd; } ul.category-tabs li, @@ -302,7 +278,7 @@ ul.wp-tab-bar li { height: auto; width: auto; vertical-align: top; - background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-image: linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4); background-position: 0 0, 10px 10px; background-size: 20px 20px; } @@ -333,10 +309,10 @@ form#tags-filter { #post-status-info { width: 100%; border-spacing: 0; - border: 1px solid #c3c4c7; + border: 1px solid #e5e5e5; border-top: none; - background-color: #f6f7f7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + background-color: #f7f7f7; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); z-index: 999; } @@ -374,6 +350,7 @@ form#tags-filter { } #wp-word-count { + display: block; padding: 2px 10px; } @@ -383,7 +360,7 @@ form#tags-filter { .wp-editor-expand #wp-content-editor-tools { z-index: 1000; - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #e5e5e5; } .wp-editor-expand #wp-content-editor-container { @@ -400,7 +377,7 @@ form#tags-filter { } .wp-editor-expand #post-status-info { - border-top: 1px solid #c3c4c7; + border-top: 1px solid #e5e5e5; } .wp-editor-expand div.mce-toolbar-grp { @@ -432,7 +409,7 @@ form#tags-filter { /* End TinyMCE native fullscreen mode override */ #wp-content-editor-tools { - background-color: #f0f0f1; + background-color: #f1f1f1; padding-top: 20px; } @@ -441,15 +418,16 @@ form#tags-filter { } #timestampdiv select { + height: 21px; + line-height: 14px; + padding: 0; vertical-align: top; font-size: 12px; - line-height: 2.33333333; /* 28px */ } #aa, #jj, #hh, #mn { - padding: 6px 1px; + padding: 1px; font-size: 12px; - line-height: 1.16666666; /* 14px */ } #jj, #hh, #mn { @@ -461,7 +439,7 @@ form#tags-filter { } .curtime #timestamp { - padding: 2px 0 1px; + padding: 2px 0 1px 0; display: inline !important; height: auto !important; } @@ -469,24 +447,17 @@ form#tags-filter { #post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, -#post-body .misc-pub-uploadedby:before, -#post-body .misc-pub-uploadedto:before, #post-body .misc-pub-revisions:before, -#post-body .misc-pub-response-to:before, -#post-body .misc-pub-comment-status:before { - color: #8c8f94; +span.wp-media-buttons-icon:before { + color: #82878c; } #post-body .misc-pub-post-status:before, #post-body #visibility:before, .curtime #timestamp:before, -#post-body .misc-pub-uploadedby:before, -#post-body .misc-pub-uploadedto:before, -#post-body .misc-pub-revisions:before, -#post-body .misc-pub-response-to:before, -#post-body .misc-pub-comment-status:before { +#post-body .misc-pub-revisions:before { font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; margin-left: -1px; padding-right: 3px; @@ -495,8 +466,7 @@ form#tags-filter { -moz-osx-font-smoothing: grayscale; } -#post-body .misc-pub-post-status:before, -#post-body .misc-pub-comment-status:before { +#post-body .misc-pub-post-status:before { content: "\f173"; } @@ -510,29 +480,13 @@ form#tags-filter { top: -1px; } -#post-body .misc-pub-uploadedby:before { - content: "\f110"; - position: relative; - top: -1px; -} - -#post-body .misc-pub-uploadedto:before { - content: "\f318"; - position: relative; - top: -1px; -} - #post-body .misc-pub-revisions:before { content: "\f321"; } -#post-body .misc-pub-response-to:before { - content: "\f101"; -} - #timestampdiv { padding-top: 5px; - line-height: 1.76923076; + line-height: 23px; } #timestampdiv p { @@ -540,7 +494,8 @@ form#tags-filter { } #timestampdiv input { - text-align: center; + border-width: 1px; + border-style: solid; } .notification-dialog { @@ -551,7 +506,7 @@ form#tags-filter { width: 450px; margin-left: -225px; background: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); line-height: 1.5; z-index: 1000005; overflow-y: auto; @@ -624,7 +579,7 @@ form#tags-filter { float: left; margin-right: 25px; font-size: 13px; - line-height: 1.8; + line-height: 1.8em; cursor: default; max-width: 100%; overflow: hidden; @@ -643,32 +598,17 @@ form#tags-filter { text-indent: 0; } -#poststuff summary { +#poststuff h3.hndle, /* Back-compat for pre-4.4 */ +#poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */ +#poststuff h2 { font-size: 14px; - padding: 2px 12px; + padding: 8px 12px; margin: 0; line-height: 1.4; } -#poststuff .stuffbox h2 { - padding: 8px 10px; -} - -#poststuff .stuffbox > h2 { - border-bottom: 1px solid #f0f0f1; -} - #poststuff .inside { - margin: 6px 0 0; -} - -.link-php #poststuff .inside, -.link-add-php #poststuff .inside { - margin-top: 12px; -} - -#poststuff .stuffbox .inside { - margin: 0; + margin: 6px 0 0 0; } #poststuff .inside #parent_id, @@ -676,6 +616,11 @@ form#tags-filter { max-width: 100%; } +.ie8 #poststuff .inside #parent_id, +.ie8 #poststuff .inside #page_template { + width: 250px; +} + .post-attributes-label-wrapper { margin-bottom: 0.5em; } @@ -685,9 +630,8 @@ form#tags-filter { font-weight: 600; } -#post-visibility-select, -#comment-status-radio { - line-height: 1.5; +#post-visibility-select { + line-height: 1.5em; margin-top: 3px; } @@ -699,366 +643,103 @@ form#tags-filter { #post-body-content, .edit-form-section { - margin-bottom: 20px; -} - -.wp_attachment_details .attachment-content-description { - margin-top: 0.5385em; - display: inline-block; - min-height: 1.6923em; -} - -/** -* Privacy Settings section -* -* Note: This section includes selectors from -* Site Health where duplicate styling is used. -*/ - -/* General */ -.privacy-settings #wpcontent, -.privacy-settings.auto-fold #wpcontent, -.site-health #wpcontent, -.site-health.auto-fold #wpcontent { - padding-left: 0; -} - -/* Better position for the WordPress admin notices. */ -.privacy-settings .notice, -.site-health .notice { - margin: 25px 20px 15px 22px; -} - -.privacy-settings .notice ~ .notice, -.site-health .notice ~ .notice { - margin-top: 5px; -} - -/* Emulates .wrap h1 styling */ -.privacy-settings-header h1, -.health-check-header h1 { - display: inline-block; - font-weight: 600; - margin: 0 0.8rem 1rem; - font-size: 23px; - padding: 9px 0 4px; - line-height: 1.3; -} - -/* Header */ -.privacy-settings-header, -.health-check-header { - text-align: center; - margin: 0 0 1rem; - background: #fff; - border-bottom: 1px solid #dcdcde; -} - -.privacy-settings-title-section, -.health-check-title-section { - display: flex; - align-items: center; - justify-content: center; - clear: both; - padding-top: 8px; -} - -.privacy-settings-tabs-wrapper { - /* IE 11 */ - display: -ms-inline-grid; - -ms-grid-columns: 1fr 1fr; - vertical-align: top; - /* modern browsers */ - display: inline-grid; - grid-template-columns: 1fr 1fr; + margin-bottom: 20px; } -.privacy-settings-tab { - display: block; /* IE 11 */ - text-decoration: none; - color: inherit; - padding: 0.5rem 1rem 1rem; - margin: 0 1rem; - transition: box-shadow 0.5s ease-in-out; -} - -.privacy-settings-tab:nth-child(1), -.health-check-tab:nth-child(1) { - -ms-grid-column: 1; /* IE 11 */ -} - -.privacy-settings-tab:nth-child(2), -.health-check-tab:nth-child(2) { - -ms-grid-column: 2; /* IE 11 */ -} - -.privacy-settings-tab:focus, -.health-check-tab:focus { - color: #1d2327; - outline: 1px solid #787c82; - box-shadow: none; -} - -.privacy-settings-tab.active, -.health-check-tab.active { - box-shadow: inset 0 -3px #3582c4; - font-weight: 600; -} - -/* Body */ -.privacy-settings-body, -.health-check-body { - max-width: 800px; - margin: 0 auto; -} - -.tools-privacy-policy-page th { - min-width: 230px; +/* Suggested text for privacy policy */ +.wp-privacy-policy-guide { + max-width: 1000px; } -.hr-separator { - margin-top: 20px; - margin-bottom: 15px; +.privacy-text-box { + width: calc(100% - 260px); } -/* Accordions */ -.privacy-settings-accordion, -.health-check-accordion { - border: 1px solid #c3c4c7; +.privacy-text-box-toc { + float: right; + width: 250px; + background-color: #fff; } -.privacy-settings-accordion-heading, -.health-check-accordion-heading { +.privacy-text-box-toc p { margin: 0; - border-top: 1px solid #c3c4c7; - font-size: inherit; - line-height: inherit; - font-weight: 600; - color: inherit; -} - -.privacy-settings-accordion-heading:first-child, -.health-check-accordion-heading:first-child { - border-top: none; + padding: 0.7em 1em; + border-bottom: 1px solid #eee; } -.privacy-settings-accordion-trigger, -.health-check-accordion-trigger { - background: #fff; - border: 0; - color: #2c3338; - cursor: pointer; - display: flex; - font-weight: 400; - margin: 0; - padding: 1em 3.5em 1em 1.5em; - min-height: 46px; - position: relative; - text-align: left; - width: 100%; - align-items: center; - justify-content: space-between; - -webkit-user-select: auto; - -moz-user-select: auto; - user-select: auto; +.privacy-text-box-toc ol { + margin-left: 2em; } -.privacy-settings-accordion-trigger:hover, -.privacy-settings-accordion-trigger:active, -.health-check-accordion-trigger:hover, -.health-check-accordion-trigger:active { - background: #f6f7f7; +.wp-privacy-policy-guide h3 { + font-size: 1.2em; + margin: 1em 0 0.5em; } -.privacy-settings-accordion-trigger:focus, -.health-check-accordion-trigger:focus { - color: #1d2327; - border: none; - box-shadow: none; - outline-offset: -1px; - outline: 2px solid #2271b1; - background-color: #f6f7f7; +.privacy-text-section .privacy-text-copy { + float: right; } -.privacy-settings-accordion-trigger .title, -.health-check-accordion-trigger .title { - pointer-events: none; - font-weight: 600; - flex-grow: 1; +.privacy-text-section { + position: relative; + border-top: 1px solid #e3e3e3; } -.privacy-settings-accordion-trigger .icon, -.privacy-settings-view-read .icon, -.health-check-accordion-trigger .icon, -.site-health-view-passed .icon { - border: solid #50575e; - border-width: 0 2px 2px 0; - height: 0.5rem; - pointer-events: none; - position: absolute; - right: 1.5em; - top: 50%; - transform: translateY(-70%) rotate(45deg); - width: 0.5rem; +.privacy-text-box-head, +.privacy-text-section.text-removed { + padding-bottom: 12px; } -.privacy-settings-accordion-trigger .badge, -.health-check-accordion-trigger .badge { - padding: 0.1rem 0.5rem 0.15rem; - color: #2c3338; +.text-removed .policy-text { + font-style: italic; + color: #666; font-weight: 600; } -.privacy-settings-accordion-trigger .badge { - margin-left: 0.5rem; -} - -.privacy-settings-accordion-trigger .badge.blue, -.health-check-accordion-trigger .badge.blue { - border: 1px solid #72aee6; -} - -.privacy-settings-accordion-trigger .badge.orange, -.health-check-accordion-trigger .badge.orange { - border: 1px solid #dba617; -} - -.privacy-settings-accordion-trigger .badge.red, -.health-check-accordion-trigger .badge.red { - border: 1px solid #e65054; -} - -.privacy-settings-accordion-trigger .badge.green, -.health-check-accordion-trigger .badge.green { - border: 1px solid #00ba37; -} - -.privacy-settings-accordion-trigger .badge.purple, -.health-check-accordion-trigger .badge.purple { - border: 1px solid #2271b1; -} - -.privacy-settings-accordion-trigger .badge.gray, -.health-check-accordion-trigger .badge.gray { - border: 1px solid #c3c4c7; -} - -.privacy-settings-accordion-trigger[aria-expanded="true"] .icon, -.privacy-settings-view-passed[aria-expanded="true"] .icon, -.health-check-accordion-trigger[aria-expanded="true"] .icon, -.site-health-view-passed[aria-expanded="true"] .icon { - transform: translateY(-30%) rotate(-135deg) -} - -.privacy-settings-accordion-panel, -.health-check-accordion-panel { - margin: 0; - padding: 1em 1.5em; - background: #fff; -} - -.privacy-settings-accordion-panel[hidden], -.health-check-accordion-panel[hidden] { - display: none; -} - -.privacy-settings-accordion-panel a .dashicons, -.health-check-accordion-panel a .dashicons { - text-decoration: none; +.privacy-text-actions { + height: 32px; + line-height: 32px; + padding-bottom: 6px; } -.privacy-settings-accordion-actions { - text-align: right; - display: block; +.wp-privacy-policy-guide .policy-text h2 { + margin: 1.2em 0 1em; + padding: 0; } -.privacy-settings-accordion-actions .success { - display: none; - color: #008a20; - padding-right: 1em; - padding-top: 6px; +.suggested-policy-content { + font-style: italic; } -.privacy-settings-accordion-actions .success.visible { - display: inline-block; -} - -/* Suggested text for privacy policy */ -.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help, /* For back-compat, see #49282 */ -.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial, -.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy { - display: none; +.privacy-text-section a.return-to-top { + float: right; + margin-right: -250px; + margin-top: 6px; } -.privacy-settings-accordion-panel strong.wp-policy-help, /* For back-compat, see #49282 */ -.privacy-settings-accordion-panel strong.privacy-policy-tutorial { - display: block; - margin: 0 0 1em; +.hide-privacy-policy-tutorial .privacy-policy-tutorial { + visibility: hidden; } -.privacy-text-copy span { - pointer-events: none; +.wp-suggested-text p { + font-style: italic; } -.privacy-settings-accordion-panel .wp-suggested-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), -.privacy-settings-accordion-panel .wp-suggested-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), -.privacy-settings-accordion-panel > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p), -.privacy-settings-accordion-panel div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p) { - margin: 0; - padding: 1em; - border-left: 2px solid #787c82; -} - -/* Media queries */ -@media screen and (max-width: 782px) { - - .privacy-settings-body, - .health-check-body { - margin: 0 12px; - width: auto; - } - - .privacy-settings .notice, - .site-health .notice { - margin: 5px 10px 15px; - } - - .privacy-settings .update-nag, - .site-health .update-nag { - margin-right: 10px; - margin-left: 10px; - } - - input#create-page { - margin-top: 10px; - } - - .wp-core-ui button.privacy-text-copy { - white-space: normal; - line-height: 1.8; - } +.wp-suggested-text p.privacy-policy-tutorial { + font-style: normal; } -@media only screen and (max-width: 1004px) { - - .privacy-settings-body, - .health-check-body { - margin: 0 22px; - width: auto; - } +.notice.wp-pp-notice { + margin: 15px 0 3px; } -/** -* End Privacy Settings section -*/ - /*------------------------------------------------------------------------------ 11.1 - Custom Fields ------------------------------------------------------------------------------*/ #postcustomstuff thead th { padding: 5px 8px 8px; - background-color: #f0f0f1; + background-color: #f1f1f1; } #postcustom #postcustomstuff .submit { @@ -1085,9 +766,9 @@ form#tags-filter { #postcustomstuff table { margin: 0; width: 100%; - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-spacing: 0; - background-color: #f6f7f7; + background-color: #f9f9f9; } #postcustomstuff tr { @@ -1173,29 +854,42 @@ form#tags-filter { 11.4 - Post formats ------------------------------------------------------------------------------*/ -.post-format-icon::before { +.post-state-format { + overflow: hidden; display: inline-block; vertical-align: middle; height: 20px; width: 20px; + margin-right: 5px; margin-top: -4px; - margin-right: 7px; - color: #dcdcde; - font: normal 20px/1 dashicons; - speak: never; +} + +.post-state-format:before { + display: block; + height: 20px; + width: 20px; + font: normal 20px/1 dashicons !important; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } +.post-state-format:before, +.post-format-icon:before { + color: #ddd; + transition: all .1s ease-in-out; +} + +a.post-state-format:hover:before, a.post-format-icon:hover:before { - color: #135e96; + color: #00a0d2; } #post-formats-select { - line-height: 2; + line-height: 2em; } -#post-formats-select .post-format-icon::before { +#post-formats-select .post-format-icon:before { top: 5px; } @@ -1204,47 +898,77 @@ input.post-format { } label.post-format-icon { - margin-left: 0; - padding: 2px 0; + margin-left: 0px; + padding: 2px 0 2px 0px; } -.post-format-icon.post-format-standard::before { +.post-format-icon:before { + position: relative; + display: inline-block; + margin-right: 7px; + font: normal 20px/1 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.post-state-format.post-format-standard:before, +.post-format-icon.post-format-standard:before, +a.post-state-format.format-standard:before { content: "\f109"; } -.post-format-icon.post-format-image::before { +.post-state-format.post-format-image:before, +.post-format-icon.post-format-image:before, +a.post-state-format.format-image:before { content: "\f128"; } -.post-format-icon.post-format-gallery::before { +.post-state-format.post-format-gallery:before, +.post-format-icon.post-format-gallery:before, +a.post-state-format.format-gallery:before { content: "\f161"; } -.post-format-icon.post-format-audio::before { +.post-state-format.post-format-audio:before, +.post-format-icon.post-format-audio:before, +a.post-state-format.format-audio:before { content: "\f127"; } -.post-format-icon.post-format-video::before { +.post-state-format.post-format-video:before, +.post-format-icon.post-format-video:before, +a.post-state-format.format-video:before { content: "\f126"; } -.post-format-icon.post-format-chat::before { +.post-state-format.post-format-chat:before, +.post-format-icon.post-format-chat:before, +a.post-state-format.format-chat:before { content: "\f125"; } -.post-format-icon.post-format-status::before { +.post-state-format.post-format-status:before, +.post-format-icon.post-format-status:before, +a.post-state-format.format-status:before { content: "\f130"; } -.post-format-icon.post-format-aside::before { +.post-state-format.post-format-aside:before, +.post-format-icon.post-format-aside:before, +a.post-state-format.format-aside:before { content: "\f123"; } -.post-format-icon.post-format-quote::before { +.post-state-format.post-format-quote:before, +.post-format-icon.post-format-quote:before, +a.post-state-format.format-quote:before { content: "\f122"; } -.post-format-icon.post-format-link::before { +.post-state-format.post-format-link:before, +.post-format-icon.post-format-link:before, +a.post-state-format.format-link:before { content: "\f103"; } @@ -1274,20 +998,20 @@ label.post-format-icon { max-height: 200px; overflow: auto; padding: 0 0.9em; - border: solid 1px #dcdcde; - background-color: #fff; + border: solid 1px #ddd; + background-color: #fdfdfd; } div.tabs-panel-active { - display: block; + display:block; } div.tabs-panel-inactive { - display: none; + display:none; } div.tabs-panel-active:focus { - box-shadow: inset 0 0 0 1px #4f94d4, inset 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: inset 0 0 0 1px #5b9dd9, inset 0 0 2px 1px rgba(30, 140, 190, 0.8); outline: 0 none; } @@ -1305,7 +1029,7 @@ ul.export-filters, ul.categorychecklist li { margin: 0; padding: 0; - line-height: 1.69230769; + line-height: 22px; word-wrap: break-word; } @@ -1335,15 +1059,10 @@ ul.categorychecklist li { width: 95%; } -.form-field select, -.form-field p { - max-width: 95%; -} - p.description, .form-wrap p { margin: 2px 0 5px; - color: #646970; + color: #666; } p.help, @@ -1351,10 +1070,7 @@ p.description, span.description, .form-wrap p { font-size: 13px; -} - -p.description code { - font-style: normal; + font-style: italic; } .form-wrap .form-field { @@ -1362,6 +1078,10 @@ p.description code { padding: 0; } +.form-wrap .form-field #parent { + max-width: 100%; +} + .col-wrap h2 { margin: 12px 0; font-size: 1.1em; @@ -1379,12 +1099,8 @@ p.description code { 13.0 - Tags ------------------------------------------------------------------------------*/ -#poststuff .tagsdiv .ajaxtag { - margin-top: 1em; -} - #poststuff .tagsdiv .howto { - margin: 1em 0 6px; + margin: 0 0 6px 0; } .ajaxtag .newtag { @@ -1428,14 +1144,6 @@ p.popular-tags a { margin: 2px 0 12px; } -#poststuff .inside .the-tagcloud { - margin: 5px 0 10px; - padding: 8px; - border: 1px solid #dcdcde; - line-height: 1.2; - word-spacing: 3px; -} - .the-tagcloud ul { margin: 0; } @@ -1444,7 +1152,7 @@ p.popular-tags a { display: inline-block; } -/* Back-compat styles from deprecated jQuery.suggest, see ticket #40260. */ +/* Suggest.js autocomplete, no more used by core. */ .ac_results { display: none; margin: -1px 0 0; @@ -1452,7 +1160,7 @@ p.popular-tags a { list-style: none; position: absolute; z-index: 10000; - border: 1px solid #4f94d4; + border: 1px solid #5b9dd9; background-color: #fff; } @@ -1469,7 +1177,7 @@ p.popular-tags a { .ac_results .ac_over, .ac_over .ac_match { - background-color: #2271b1; + background-color: #0073aa; color: #fff; cursor: pointer; } @@ -1478,17 +1186,15 @@ p.popular-tags a { text-decoration: underline; } -#addtag .spinner { - float: none; - vertical-align: top; -} - #edittag { max-width: 800px; } .edit-tag-actions { margin-top: 20px; + overflow: hidden; + padding: 10px; + margin-right: 10px; } /* Comments */ @@ -1508,10 +1214,10 @@ p.popular-tags a { } .comment-ays .comment-content a[href]:after { - content: "(" attr( href ) ")"; + content: '(' attr( href ) ')'; display: inline-block; padding: 0 4px; - color: #646970; + color: #72777C; font-size: 13px; word-break: break-all; } @@ -1521,7 +1227,7 @@ p.popular-tags a { } .comment-ays .comment-content p.edit-comment a[href]:after { - content: ""; + content: ''; padding: 0; } @@ -1532,7 +1238,7 @@ p.popular-tags a { .trash-undo-inside, .spam-undo-inside { margin: 1px 8px 1px 0; - line-height: 1.23076923; + line-height: 16px; } .spam-undo-inside .avatar, @@ -1545,15 +1251,6 @@ p.popular-tags a { .stuffbox .editcomment { clear: none; - margin-top: 0; -} - -#namediv.stuffbox .editcomment input { - width: 100%; -} - -#namediv.stuffbox .editcomment.form-table td { - padding: 10px; } #comment-status-radio p { @@ -1605,10 +1302,12 @@ table.links-table { /* DFW 2 -------------------------------------------------------------- */ +#wp-content-wrap .mce-wp-dfw, #qt_content_dfw { display: none; } +.wp-editor-expand #wp-content-wrap .mce-wp-dfw, .wp-editor-expand #qt_content_dfw { display: inline-block; } @@ -1698,49 +1397,6 @@ table.links-table { } } -/* - * The edit attachment screen auto-switches to one column layout when the - * viewport is smaller than 1200 pixels. - */ -@media only screen and (max-width: 1200px) { - .post-type-attachment #poststuff { - min-width: 0; - } - - .post-type-attachment #wpbody-content #poststuff #post-body { - margin: 0; - } - - .post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1 { - margin-right: 0; - width: 100%; - } - - .post-type-attachment #poststuff #postbox-container-1 .empty-container, - .post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty { - outline: none; - height: 0; - min-height: 0; - } - - .post-type-attachment #poststuff #post-body.columns-2 #side-sortables { - min-height: 0; - width: auto; - } - - .is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables { - outline: none; - min-height: 0; - margin-bottom: 0; - } - - /* hide the radio buttons for column prefs */ - .post-type-attachment .screen-layout, - .post-type-attachment .columns-prefs { - display: none; - } -} - /* one column on the post write/edit screen */ @media only screen and (max-width: 850px) { #poststuff { @@ -1758,6 +1414,7 @@ table.links-table { #poststuff #postbox-container-1 .empty-container, #poststuff #postbox-container-1 #side-sortables:empty { + border: 0 none; height: 0; min-height: 0; } @@ -1767,15 +1424,6 @@ table.links-table { width: auto; } - /* Increase min-height while dragging for the #side-sortables and any potential sortables area with custom ID. */ - .is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container, - .is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty, - .is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables, - .is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables { - height: auto; - min-height: 60px; - } - /* hide the radio buttons for column prefs */ .screen-layout, .columns-prefs { @@ -1783,7 +1431,7 @@ table.links-table { } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-core-ui .edit-tag-actions .button-primary { margin-bottom: 0; } @@ -1793,11 +1441,7 @@ table.links-table { } #titlediv #title-prompt-text { - padding: 10px; - } - - #poststuff .stuffbox .inside { - padding: 0 2px 4px 0; + padding: 10px 10px; } #poststuff h3.hndle, /* Back-compat for pre-4.4 */ @@ -1806,10 +1450,6 @@ table.links-table { padding: 12px; } - #namediv.stuffbox .editcomment.form-table td { - padding: 5px 10px; - } - .post-format-options { padding-right: 0; } @@ -1930,7 +1570,10 @@ table.links-table { } .wp_themeSkin .mceSplitButton td a.mceAction { - padding: 6px 3px 6px 6px; + padding-top: 6px; + padding-bottom: 6px; + padding-left: 6px; + padding-right: 3px; } .wp_themeSkin .mceSplitButton td a.mceOpen, @@ -1950,7 +1593,7 @@ table.links-table { button.wp-switch-editor { font-size: 16px; - line-height: 1; + line-height: 1em; margin: 7px 0 0 7px; padding: 8px 12px; } @@ -1976,12 +1619,17 @@ table.links-table { } .misc-pub-section { - padding: 20px 10px; + padding: 20px 10px 20px; + } + + .misc-pub-section > a { + float: right; + font-size: 16px; } #delete-action, #publishing-action { - line-height: 3.61538461; + line-height: 47px; } #publishing-action .spinner { @@ -2008,24 +1656,19 @@ table.links-table { .links-table td { padding: 10px 0; } - - .edit-term-notes { - display: none; - } - + .privacy-text-box { width: auto; } - + .privacy-text-box-toc { float: none; width: auto; height: 100%; - display: flex; - flex-direction: column; } - .privacy-text-section .return-to-top { - margin: 2em 0 0; + .privacy-text-section a.return-to-top { + float: none; + margin: 0; } } diff --git a/wp-admin/css/edit.min.css b/wp-admin/css/edit.min.css index e312c0c..3ab6759 100644 --- a/wp-admin/css/edit.min.css +++ b/wp-admin/css/edit.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:left}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:left;margin:0 5px 0 0}#titlediv{position:relative}#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%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#646970;position:absolute;font-size:1.7em;padding:10px;pointer-events:none}input#link_description,input#link_url{width:100%}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:1.84615384;min-height:25px;margin-top:5px;padding:0 10px;color:#646970}#sample-permalink{display:inline-block;max-width:100%;word-wrap:break-word}#edit-slug-box .cancel{margin-right:10px;padding:0;font-size:11px}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:24px;margin:0;width:16em}.postarea h3 label{float:left}body.post-new-php .submitbox .submitdelete{display:none}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}#post-status-select{margin-top:3px}body.post-type-wp_navigation .inline-edit-status,body.post-type-wp_navigation div#minor-publishing{display:none}.is-dragging-metaboxes .metabox-holder .postbox-container .meta-box-sortables{outline:3px dashed #646970;display:flow-root;min-height:60px;margin-bottom:20px}.postbox{position:relative;min-width:255px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#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;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#2c3338}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0 none}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:solid 1px transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dcdcde;border-bottom-color:#fff;background-color:#fff}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}form#tags-filter{position:relative}.ui-tabs-hide,.wp-hidden-children .wp-hidden-child{display:none}#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{width:100%;border-spacing:0;border:1px solid #c3c4c7;border-top:none;background-color:#f6f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:right}#editorcontent #post-status-info{border:none}#content-resize-handle{background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:row-resize}.rtl #content-resize-handle{background-image:url(../images/resize-rtl.gif);background-position:left bottom}.wp-editor-expand #content-resize-handle{display:none}#postdivrich #content{resize:none}#wp-word-count{padding:2px 10px}#wp-content-editor-container{position:relative}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #c3c4c7}.wp-editor-expand #wp-content-editor-container{box-shadow:none;margin-top:-1px}.wp-editor-expand #wp-content-editor-container{border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #c3c4c7}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw{display:none}.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f0f0f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{vertical-align:top;font-size:12px;line-height:2.33333333}#aa,#hh,#jj,#mn{padding:6px 1px;font-size:12px;line-height:1.16666666}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{color:#8c8f94}#post-body #visibility:before,#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-response-to:before,#post-body .misc-pub-revisions:before,#post-body .misc-pub-uploadedby:before,#post-body .misc-pub-uploadedto:before,.curtime #timestamp:before{font:normal 20px/1 dashicons;speak:never;display:inline-block;margin-left:-1px;padding-right:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-comment-status:before,#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-uploadedby:before{content:"\f110";position:relative;top:-1px}#post-body .misc-pub-uploadedto:before{content:"\f318";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#post-body .misc-pub-response-to:before{content:"\f101"}#timestampdiv{padding-top:5px;line-height:1.76923076}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{text-align:center}.notification-dialog{position:fixed;top:30%;max-height:70%;left:50%;width:450px;margin-left:-225px;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#file-editor-warning .button,#post-lock-dialog .post-locked-message a.button{margin-right:10px}#post-lock-dialog .post-locked-avatar{float:left;margin:0 20px 20px 0}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:left;margin-right:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist>li{float:left;margin-right:25px;font-size:13px;line-height:1.8;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 0 0 -19px;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff summary{font-size:14px;padding:2px 12px;margin:0;line-height:1.4}#poststuff .stuffbox h2{padding:8px 10px}#poststuff .stuffbox>h2{border-bottom:1px solid #f0f0f1}#poststuff .inside{margin:6px 0 0}.link-add-php #poststuff .inside,.link-php #poststuff .inside{margin-top:12px}#poststuff .stuffbox .inside{margin:0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#comment-status-radio,#post-visibility-select{line-height:1.5;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}.wp_attachment_details .attachment-content-description{margin-top:.5385em;display:inline-block;min-height:1.6923em}.privacy-settings #wpcontent,.privacy-settings.auto-fold #wpcontent,.site-health #wpcontent,.site-health.auto-fold #wpcontent{padding-left:0}.privacy-settings .notice,.site-health .notice{margin:25px 20px 15px 22px}.privacy-settings .notice~.notice,.site-health .notice~.notice{margin-top:5px}.health-check-header h1,.privacy-settings-header h1{display:inline-block;font-weight:600;margin:0 .8rem 1rem;font-size:23px;padding:9px 0 4px;line-height:1.3}.health-check-header,.privacy-settings-header{text-align:center;margin:0 0 1rem;background:#fff;border-bottom:1px solid #dcdcde}.health-check-title-section,.privacy-settings-title-section{display:flex;align-items:center;justify-content:center;clear:both;padding-top:8px}.privacy-settings-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr}.privacy-settings-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-tab:first-child,.privacy-settings-tab:first-child{-ms-grid-column:1}.health-check-tab:nth-child(2),.privacy-settings-tab:nth-child(2){-ms-grid-column:2}.health-check-tab:focus,.privacy-settings-tab:focus{color:#1d2327;outline:1px solid #787c82;box-shadow:none}.health-check-tab.active,.privacy-settings-tab.active{box-shadow:inset 0 -3px #3582c4;font-weight:600}.health-check-body,.privacy-settings-body{max-width:800px;margin:0 auto}.tools-privacy-policy-page th{min-width:230px}.hr-separator{margin-top:20px;margin-bottom:15px}.health-check-accordion,.privacy-settings-accordion{border:1px solid #c3c4c7}.health-check-accordion-heading,.privacy-settings-accordion-heading{margin:0;border-top:1px solid #c3c4c7;font-size:inherit;line-height:inherit;font-weight:600;color:inherit}.health-check-accordion-heading:first-child,.privacy-settings-accordion-heading:first-child{border-top:none}.health-check-accordion-trigger,.privacy-settings-accordion-trigger{background:#fff;border:0;color:#2c3338;cursor:pointer;display:flex;font-weight:400;margin:0;padding:1em 3.5em 1em 1.5em;min-height:46px;position:relative;text-align:left;width:100%;align-items:center;justify-content:space-between;-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.health-check-accordion-trigger:active,.health-check-accordion-trigger:hover,.privacy-settings-accordion-trigger:active,.privacy-settings-accordion-trigger:hover{background:#f6f7f7}.health-check-accordion-trigger:focus,.privacy-settings-accordion-trigger:focus{color:#1d2327;border:none;box-shadow:none;outline-offset:-1px;outline:2px solid #2271b1;background-color:#f6f7f7}.health-check-accordion-trigger .title,.privacy-settings-accordion-trigger .title{pointer-events:none;font-weight:600;flex-grow:1}.health-check-accordion-trigger .icon,.privacy-settings-accordion-trigger .icon,.privacy-settings-view-read .icon,.site-health-view-passed .icon{border:solid #50575e;border-width:0 2px 2px 0;height:.5rem;pointer-events:none;position:absolute;right:1.5em;top:50%;transform:translateY(-70%) rotate(45deg);width:.5rem}.health-check-accordion-trigger .badge,.privacy-settings-accordion-trigger .badge{padding:.1rem .5rem .15rem;color:#2c3338;font-weight:600}.privacy-settings-accordion-trigger .badge{margin-left:.5rem}.health-check-accordion-trigger .badge.blue,.privacy-settings-accordion-trigger .badge.blue{border:1px solid #72aee6}.health-check-accordion-trigger .badge.orange,.privacy-settings-accordion-trigger .badge.orange{border:1px solid #dba617}.health-check-accordion-trigger .badge.red,.privacy-settings-accordion-trigger .badge.red{border:1px solid #e65054}.health-check-accordion-trigger .badge.green,.privacy-settings-accordion-trigger .badge.green{border:1px solid #00ba37}.health-check-accordion-trigger .badge.purple,.privacy-settings-accordion-trigger .badge.purple{border:1px solid #2271b1}.health-check-accordion-trigger .badge.gray,.privacy-settings-accordion-trigger .badge.gray{border:1px solid #c3c4c7}.health-check-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-accordion-trigger[aria-expanded=true] .icon,.privacy-settings-view-passed[aria-expanded=true] .icon,.site-health-view-passed[aria-expanded=true] .icon{transform:translateY(-30%) rotate(-135deg)}.health-check-accordion-panel,.privacy-settings-accordion-panel{margin:0;padding:1em 1.5em;background:#fff}.health-check-accordion-panel[hidden],.privacy-settings-accordion-panel[hidden]{display:none}.health-check-accordion-panel a .dashicons,.privacy-settings-accordion-panel a .dashicons{text-decoration:none}.privacy-settings-accordion-actions{text-align:right;display:block}.privacy-settings-accordion-actions .success{display:none;color:#008a20;padding-right:1em;padding-top:6px}.privacy-settings-accordion-actions .success.visible{display:inline-block}.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-policy-tutorial,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .privacy-text-copy,.privacy-settings-accordion-panel.hide-privacy-policy-tutorial .wp-policy-help{display:none}.privacy-settings-accordion-panel strong.privacy-policy-tutorial,.privacy-settings-accordion-panel strong.wp-policy-help{display:block;margin:0 0 1em}.privacy-text-copy span{pointer-events:none}.privacy-settings-accordion-panel .wp-suggested-text div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p),.privacy-settings-accordion-panel .wp-suggested-text>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p),.privacy-settings-accordion-panel div>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p),.privacy-settings-accordion-panel>:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help):not(.privacy-text-copy):not(span.success):not(.notice p){margin:0;padding:1em;border-left:2px solid #787c82}@media screen and (max-width:782px){.health-check-body,.privacy-settings-body{margin:0 12px;width:auto}.privacy-settings .notice,.site-health .notice{margin:5px 10px 15px}.privacy-settings .update-nag,.site-health .update-nag{margin-right:10px;margin-left:10px}input#create-page{margin-top:10px}.wp-core-ui button.privacy-text-copy{white-space:normal;line-height:1.8}}@media only screen and (max-width:1004px){.health-check-body,.privacy-settings-body{margin:0 22px;width:auto}}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f0f0f1}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dcdcde;border-spacing:0;background-color:#f6f7f7}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-format-icon::before{display:inline-block;vertical-align:middle;height:20px;width:20px;margin-top:-4px;margin-right:7px;color:#dcdcde;font:normal 20px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a.post-format-icon:hover:before{color:#135e96}#post-formats-select{line-height:2}#post-formats-select .post-format-icon::before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-left:0;padding:2px 0}.post-format-icon.post-format-standard::before{content:"\f109"}.post-format-icon.post-format-image::before{content:"\f128"}.post-format-icon.post-format-gallery::before{content:"\f161"}.post-format-icon.post-format-audio::before{content:"\f127"}.post-format-icon.post-format-video::before{content:"\f126"}.post-format-icon.post-format-chat::before{content:"\f125"}.post-format-icon.post-format-status::before{content:"\f130"}.post-format-icon.post-format-aside::before{content:"\f123"}.post-format-icon.post-format-quote::before{content:"\f122"}.post-format-icon.post-format-link::before{content:"\f103"}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:solid 1px #dcdcde;background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}div.tabs-panel-active:focus{box-shadow:inset 0 0 0 1px #4f94d4,inset 0 0 2px 1px rgba(79,148,212,.8);outline:0 none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:1.69230769;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px 0}.form-field input[type=email],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=url],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-field p,.form-field select{max-width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#646970}.form-wrap p,p.description,p.help,span.description{font-size:13px}p.description code{font-style:normal}.form-wrap .form-field{margin:1em 0;padding:0}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .ajaxtag{margin-top:1em}#poststuff .tagsdiv .howto{margin:1em 0 6px}.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{border:none;line-height:2em;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 h2{margin:2px 0 12px}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #dcdcde;line-height:1.2;word-spacing:3px}.the-tagcloud ul{margin:0}.the-tagcloud ul li{display:inline-block}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:left}.ac_over .ac_match,.ac_results .ac_over{background-color:#2271b1;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}#addtag .spinner{float:none;vertical-align:top}#edittag{max-width:800px}.edit-tag-actions{margin-top:20px}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:initial;margin-left:2em}.comment-ays .comment-content a[href]:after{content:"(" attr(href) ")";display:inline-block;padding:0 4px;color:#646970;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:"";padding:0}.comment-ays-submit .button-cancel{margin-left:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 8px 1px 0;line-height:1.23076923}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none;margin-top:0}#namediv.stuffbox .editcomment input{width:100%}#namediv.stuffbox .editcomment.form-table td{padding:10px}#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}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td,.links-table th{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}#qt_content_dfw{display:none}.wp-editor-expand #qt_content_dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .page-title-action,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;transition-duration:.6s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .page-title-action,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;transition-duration:.2s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transition-duration:.6s;transition-property:transform;transition-timing-function:ease-in-out}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transform:translateX(-100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{transform:translateX(0);transition-duration:.2s;transition-property:transform;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-2x.gif) no-repeat scroll right bottom;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:1200px){.post-type-attachment #poststuff{min-width:0}.post-type-attachment #wpbody-content #poststuff #post-body{margin:0}.post-type-attachment #wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}.post-type-attachment #poststuff #postbox-container-1 #side-sortables:empty,.post-type-attachment #poststuff #postbox-container-1 .empty-container{outline:0;height:0;min-height:0}.post-type-attachment #poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes.post-type-attachment #post-body .meta-box-sortables{outline:0;min-height:0;margin-bottom:0}.post-type-attachment .columns-prefs,.post-type-attachment .screen-layout{display:none}}@media only screen and (max-width:850px){#poststuff{min-width:0}#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 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.is-dragging-metaboxes #poststuff #post-body.columns-2 #side-sortables,.is-dragging-metaboxes #poststuff #post-body.columns-2 .meta-box-sortables,.is-dragging-metaboxes #poststuff #postbox-container-1 #side-sortables:empty,.is-dragging-metaboxes #poststuff #postbox-container-1 .empty-container{height:auto;min-height:60px}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){.wp-core-ui .edit-tag-actions .button-primary{margin-bottom:0}#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff .stuffbox .inside{padding:0 2px 4px 0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}#namediv.stuffbox .editcomment.form-table td{padding:5px 10px}.post-format-options{padding-right:0}.post-format-options a{margin-right:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-right:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist li{margin-bottom:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto;margin-bottom:15px}.tagchecklist{margin:25px 10px}.tagchecklist>li{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:left!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-left:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 3px 6px 6px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1;margin:7px 0 0 7px;padding:8px 12px}#wp-content-media-buttons a{font-size:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-left:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}#delete-action,#publishing-action{line-height:3.61538461}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}.edit-term-notes{display:none}.privacy-text-box{width:auto}.privacy-text-box-toc{float:none;width:auto;height:100%;display:flex;flex-direction:column}.privacy-text-section .return-to-top{margin:2em 0 0}} \ No newline at end of file +#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:left}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:left;margin:0 5px 0 0}#titlediv{position:relative}#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%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#72777c;position:absolute;font-size:1.7em;padding:11px 10px}input#link_description,input#link_url{width:98%}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-right:10px;padding:0;font-size:11px}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:600}#editable-post-name input{font-size:13px;font-weight:400;height:24px;margin:0;width:16em}.postarea h3 label{float:left}body.post-new-php .submitbox .submitdelete{display:none}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{position:relative;min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#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;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0 none}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:solid 1px transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #ddd;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 6px}#set-post-thumbnail{display:inline-block;max-width:100%}#postimagediv .inside img{max-width:100%;height:auto;width:auto;vertical-align:top;background-image:linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:0 0,10px 10px;background-size:20px 20px}form#tags-filter{position:relative}.ui-tabs-hide,.wp-hidden-children .wp-hidden-child{display:none}#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{width:100%;border-spacing:0;border:1px solid #e5e5e5;border-top:none;background-color:#f7f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:right}#editorcontent #post-status-info{border:none}#content-resize-handle{background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:row-resize}.rtl #content-resize-handle{background-image:url(../images/resize-rtl.gif);background-position:left bottom}.wp-editor-expand #content-resize-handle{display:none}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#wp-content-editor-container{position:relative}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{box-shadow:none;margin-top:-1px}.wp-editor-expand #wp-content-editor-container{border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #e5e5e5}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw{display:none}.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f1f1f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{height:21px;line-height:14px;padding:0;vertical-align:top;font-size:12px}#aa,#hh,#jj,#mn{padding:1px;font-size:12px}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px 0;display:inline!important;height:auto!important}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-post-status:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:normal 20px/1 dashicons;speak:none;display:inline-block;margin-left:-1px;padding-right:3px;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#post-body .misc-pub-post-status:before{content:"\f173"}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";position:relative;top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;left:50%;width:450px;margin-left:-225px;background:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#file-editor-warning .button,#post-lock-dialog .post-locked-message a.button{margin-right:10px}#post-lock-dialog .post-locked-avatar{float:left;margin:0 20px 20px 0}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:left;margin-right:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist>li{float:left;margin-right:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;overflow:hidden;text-overflow:ellipsis}.tagchecklist .ntdelbutton{position:absolute;width:24px;height:24px;border:none;margin:0 0 0 -19px;padding:0;background:0 0;cursor:pointer;text-indent:0}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}.post-attributes-label-wrapper{margin-bottom:.5em}.post-attributes-label{vertical-align:baseline;font-weight:600}#post-visibility-select{line-height:1.5em;margin-top:3px}#linksubmitdiv .inside,#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}.wp-privacy-policy-guide{max-width:1000px}.privacy-text-box{width:calc(100% - 260px)}.privacy-text-box-toc{float:right;width:250px;background-color:#fff}.privacy-text-box-toc p{margin:0;padding:.7em 1em;border-bottom:1px solid #eee}.privacy-text-box-toc ol{margin-left:2em}.wp-privacy-policy-guide h3{font-size:1.2em;margin:1em 0 .5em}.privacy-text-section .privacy-text-copy{float:right}.privacy-text-section{position:relative;border-top:1px solid #e3e3e3}.privacy-text-box-head,.privacy-text-section.text-removed{padding-bottom:12px}.text-removed .policy-text{font-style:italic;color:#666;font-weight:600}.privacy-text-actions{height:32px;line-height:32px;padding-bottom:6px}.wp-privacy-policy-guide .policy-text h2{margin:1.2em 0 1em;padding:0}.suggested-policy-content{font-style:italic}.privacy-text-section a.return-to-top{float:right;margin-right:-250px;margin-top:6px}.hide-privacy-policy-tutorial .privacy-policy-tutorial{visibility:hidden}.wp-suggested-text p{font-style:italic}.wp-suggested-text p.privacy-policy-tutorial{font-style:normal}.notice.wp-pp-notice{margin:15px 0 3px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #ddd;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-right:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font:normal 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before,.post-state-format:before{color:#ddd;transition:all .1s ease-in-out}a.post-format-icon:hover:before,a.post-state-format:hover:before{color:#00a0d2}#post-formats-select{line-height:2em}#post-formats-select .post-format-icon:before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-left:0;padding:2px 0 2px 0}.post-format-icon:before{position:relative;display:inline-block;margin-right:7px;font:normal 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon.post-format-standard:before,.post-state-format.post-format-standard:before,a.post-state-format.format-standard:before{content:"\f109"}.post-format-icon.post-format-image:before,.post-state-format.post-format-image:before,a.post-state-format.format-image:before{content:"\f128"}.post-format-icon.post-format-gallery:before,.post-state-format.post-format-gallery:before,a.post-state-format.format-gallery:before{content:"\f161"}.post-format-icon.post-format-audio:before,.post-state-format.post-format-audio:before,a.post-state-format.format-audio:before{content:"\f127"}.post-format-icon.post-format-video:before,.post-state-format.post-format-video:before,a.post-state-format.format-video:before{content:"\f126"}.post-format-icon.post-format-chat:before,.post-state-format.post-format-chat:before,a.post-state-format.format-chat:before{content:"\f125"}.post-format-icon.post-format-status:before,.post-state-format.post-format-status:before,a.post-state-format.format-status:before{content:"\f130"}.post-format-icon.post-format-aside:before,.post-state-format.post-format-aside:before,a.post-state-format.format-aside:before{content:"\f123"}.post-format-icon.post-format-quote:before,.post-state-format.post-format-quote:before,a.post-state-format.format-quote:before{content:"\f122"}.post-format-icon.post-format-link:before,.post-state-format.post-format-link:before,a.post-state-format.format-link:before{content:"\f103"}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:solid 1px #ddd;background-color:#fdfdfd}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}div.tabs-panel-active:focus{box-shadow:inset 0 0 0 1px #5b9dd9,inset 0 0 2px 1px rgba(30,140,190,.8);outline:0 none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:22px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px 0}.form-field input[type=email],.form-field input[type=number],.form-field input[type=password],.form-field input[type=search],.form-field input[type=tel],.form-field input[type=text],.form-field input[type=url],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:1em 0;padding:0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}.edit-term-notes{margin-top:2em}#poststuff .tagsdiv .howto{margin:0 0 6px 0}.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{border:none;line-height:2em;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 h2{margin:2px 0 12px}.the-tagcloud ul{margin:0}.the-tagcloud ul li{display:inline-block}.ac_results{display:none;margin:-1px 0 0;padding:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{margin:0;padding:5px 10px;white-space:nowrap;text-align:left}.ac_over .ac_match,.ac_results .ac_over{background-color:#0073aa;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}#edittag{max-width:800px}.edit-tag-actions{margin-top:20px;overflow:hidden;padding:10px;margin-right:10px}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}.comment-ays .comment-content ul{list-style:initial;margin-left:2em}.comment-ays .comment-content a[href]:after{content:'(' attr(href) ')';display:inline-block;padding:0 4px;color:#72777c;font-size:13px;word-break:break-all}.comment-ays .comment-content p.edit-comment{margin-top:10px}.comment-ays .comment-content p.edit-comment a[href]:after{content:'';padding:0}.comment-ays-submit .button-cancel{margin-left:1em}.spam-undo-inside,.trash-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}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td,.links-table th{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}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw{display:none}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .page-title-action,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;transition-duration:.6s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .page-title-action,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;transition-duration:.2s;transition-property:opacity;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transition-duration:.6s;transition-property:transform;transition-timing-function:ease-in-out}.focus-on #adminmenuback,.focus-on #adminmenuwrap{transform:translateX(-100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{transform:translateX(0);transition-duration:.2s;transition-property:transform;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:transparent url(../images/resize-2x.gif) no-repeat scroll right bottom;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background-image:url(../images/resize-rtl-2x.gif);background-position:left bottom}}@media only screen and (max-width:850px){#poststuff{min-width:0}#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 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0 none;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){.wp-core-ui .edit-tag-actions .button-primary{margin-bottom:0}#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px 10px}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-right:0}.post-format-options a{margin-right:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-right:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist li{margin-bottom:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto;margin-bottom:15px}.tagchecklist{margin:25px 10px}.tagchecklist>li{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:left!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-left:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding-top:6px;padding-bottom:6px;padding-left:6px;padding-right:3px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1em;margin:7px 0 0 7px;padding:8px 12px}#wp-content-media-buttons a{font-size:14px;padding:6px 10px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-left:-2px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px 20px}.misc-pub-section>a{float:right;font-size:16px}#delete-action,#publishing-action{line-height:47px}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}.privacy-text-box{width:auto}.privacy-text-box-toc{float:none;width:auto;height:100%}.privacy-text-section a.return-to-top{float:none;margin:0}} \ No newline at end of file diff --git a/wp-admin/css/forms-rtl.css b/wp-admin/css/forms-rtl.css index 55aadcc..4f64d11 100644 --- a/wp-admin/css/forms-rtl.css +++ b/wp-admin/css/forms-rtl.css @@ -1,42 +1,12 @@ /* Include margin and padding in the width calculation of input and textarea. */ input, -select, -textarea, -button { - box-sizing: border-box; - font-family: inherit; - font-size: inherit; - font-weight: inherit; -} - -textarea, -input { - font-size: 14px; -} - textarea { - overflow: auto; - padding: 2px 6px; - /* inherits font size 14px */ - line-height: 1.42857143; /* 20px */ - resize: vertical; -} - -label { - cursor: pointer; -} - -input, -select { - margin: 0 1px; -} - -textarea.code { - padding: 4px 6px 1px; + box-sizing: border-box; } input[type="text"], input[type="password"], +input[type="checkbox"], input[type="color"], input[type="date"], input[type="datetime"], @@ -45,42 +15,20 @@ input[type="email"], input[type="month"], input[type="number"], input[type="search"], +input[type="radio"], input[type="tel"], +input[type="text"], input[type="time"], input[type="url"], input[type="week"], select, textarea { - box-shadow: 0 0 0 transparent; - border-radius: 4px; - border: 1px solid #8c8f94; + border: 1px solid #ddd; + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 ); background-color: #fff; - color: #2c3338; -} - -input[type="text"], -input[type="password"], -input[type="date"], -input[type="datetime"], -input[type="datetime-local"], -input[type="email"], -input[type="month"], -input[type="number"], -input[type="search"], -input[type="tel"], -input[type="time"], -input[type="url"], -input[type="week"] { - padding: 0 8px; - /* inherits font size 14px */ - line-height: 2; /* 28px */ - /* Only necessary for IE11 */ - min-height: 30px; -} - -::-webkit-datetime-edit { - /* inherits font size 14px */ - line-height: 1.85714286; /* 26px */ + color: #32373c; + outline: none; + transition: 0.05s border-color ease-in-out; } input[type="text"]:focus, @@ -94,6 +42,7 @@ input[type="month"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, +input[type="text"]:focus, input[type="time"]:focus, input[type="url"]:focus, input[type="week"]:focus, @@ -101,10 +50,8 @@ input[type="checkbox"]:focus, input[type="radio"]:focus, select:focus, textarea:focus { - border-color: #2271b1; - box-shadow: 0 0 0 1px #2271b1; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); } /* rtl:ignore */ @@ -113,36 +60,41 @@ input[type="url"] { direction: ltr; } +/* Vertically align the number selector with the input. */ +input[type="number"] { + height: 28px; + line-height: 1; +} + input[type="checkbox"], input[type="radio"] { - border: 1px solid #8c8f94; - border-radius: 4px; + border: 1px solid #b4b9be; background: #fff; - color: #50575e; + color: #555; clear: none; cursor: pointer; display: inline-block; line-height: 0; - height: 1rem; - margin: -0.25rem 0 0 0.25rem; + height: 16px; + margin: -4px 0 0 4px; outline: 0; padding: 0 !important; text-align: center; vertical-align: middle; - width: 1rem; - min-width: 1rem; + width: 16px; + min-width: 16px; -webkit-appearance: none; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.1 ); transition: .05s border-color ease-in-out; } input[type="radio"]:checked + label:before { - color: #8c8f94; + color: #82878c; } .wp-core-ui input[type="reset"]:hover, .wp-core-ui input[type="reset"]:active { - color: #135e96; + color: #00a0d2; } td > input[type="checkbox"], @@ -161,39 +113,38 @@ td > input[type="checkbox"], input[type="radio"] { border-radius: 50%; - margin-left: 0.25rem; - /* 10px not sure if still necessary, comes from the MP6 redesign in r26072 */ - line-height: 0.71428571; + margin-left: 4px; + line-height: 10px; } -input[type="checkbox"]:checked::before, -input[type="radio"]:checked::before { +input[type="checkbox"]:checked:before, +input[type="radio"]:checked:before { float: right; display: inline-block; vertical-align: middle; - width: 1rem; - speak: never; + width: 16px; + font: normal 21px/1 dashicons; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -input[type="checkbox"]:checked::before { - /* Use the "Yes" SVG Dashicon */ - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E"); - margin: -0.1875rem -0.25rem 0 0; - height: 1.3125rem; - width: 1.3125rem; -} - -input[type="radio"]:checked::before { - content: ""; - border-radius: 50%; - width: 0.5rem; /* 8px */ - height: 0.5rem; /* 8px */ - margin: 0.1875rem; /* 3px */ - background-color: #3582c4; - /* 16px not sure if still necessary, comes from the MP6 redesign in r26072 */ - line-height: 1.14285714; +input[type="checkbox"]:checked:before { + content: "\f147"; + margin: -3px -4px 0 0; + color: #1e8cbe; +} + +input[type="radio"]:checked:before { + content: "\2022"; + text-indent: -9999px; + border-radius: 50px; + font-size: 24px; + width: 6px; + height: 6px; + margin: 4px; + line-height: 16px; + background-color: #1e8cbe; } @-moz-document url-prefix() { @@ -213,64 +164,107 @@ input[type="search"]::-webkit-search-decoration { display: none; } +.ie8 input[type="password"] { + font-family: sans-serif; +} + +textarea, +input, +select, +button { + font-family: inherit; + font-size: inherit; + font-weight: inherit; +} + +textarea, +input, +select { + font-size: 14px; + padding: 3px 5px; + border-radius: 0; /* Reset mobile webkit's default element styling */ +} + +textarea { + overflow: auto; + padding: 2px 6px; + line-height: 1.4; + resize: vertical; +} + .wp-admin input[type="file"] { padding: 3px 0; cursor: pointer; } +label { + cursor: pointer; +} + +input, +select { + margin: 1px; + padding: 3px 5px; +} + +input.code { + padding-top: 6px; +} + +textarea.code { + line-height: 1.4; + padding: 4px 6px 1px 6px; +} + input.readonly, input[readonly], textarea.readonly, textarea[readonly] { - background-color: #f0f0f1; + background-color: #eee; } ::-webkit-input-placeholder { - color: #646970; + color: #72777c; } ::-moz-placeholder { - color: #646970; - opacity: 1; + color: #72777c; + opacity: 1; } :-ms-input-placeholder { - color: #646970; + color: #72777c; } -.form-invalid .form-required, -.form-invalid .form-required:focus, -.form-invalid.form-required input, -.form-invalid.form-required input:focus, -.form-invalid.form-required select, -.form-invalid.form-required select:focus { - border-color: #d63638 !important; - box-shadow: 0 0 2px rgba(214, 54, 56, 0.8); +.form-invalid input, .form-invalid input:focus, +.form-invalid select, .form-invalid select:focus { + border-color: #dc3232 !important; + box-shadow: 0 0 2px rgba( 204, 0, 0, 0.8 ); } .form-table .form-required.form-invalid td:after { content: "\f534"; font: normal 20px/1 dashicons; - color: #d63638; + color: #dc3232; margin-right: -25px; vertical-align: middle; } /* Adjust error indicator for password layout */ .form-table .form-required.user-pass1-wrap.form-invalid td:after { - content: ""; + content: ''; } .form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after { - content: "\f534"; + content: '\f534'; font: normal 20px/1 dashicons; - color: #d63638; + color: #dc3232; margin: 0 -29px 0 6px; vertical-align: middle; } .form-input-tip { - color: #646970; + color: #666; } input:disabled, @@ -279,10 +273,10 @@ select:disabled, select.disabled, textarea:disabled, textarea.disabled { - background: rgba(255, 255, 255, 0.5); - border-color: rgba(220, 220, 222, 0.75); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.04); - color: rgba(44, 51, 56, 0.5); + background: rgba( 255, 255, 255, 0.5 ); + border-color: rgba( 222, 222, 222, 0.75 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.04 ); + color: rgba( 51, 51, 51, 0.5 ); } input[type="file"]:disabled, @@ -309,87 +303,15 @@ input[type="radio"].disabled:checked:before { 2.0 - Forms ------------------------------------------------------------------------------*/ -/* Select styles are based on the default button in buttons.css */ -.wp-core-ui select { - font-size: 14px; - line-height: 2; /* 28px */ - color: #2c3338; - border-color: #8c8f94; - box-shadow: none; - border-radius: 3px; - padding: 0 8px 0 24px; - min-height: 30px; - max-width: 25rem; - -webkit-appearance: none; - /* The SVG is arrow-down-alt2 from Dashicons. */ - background: #fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat left 5px top 55%; - background-size: 16px 16px; - cursor: pointer; - vertical-align: middle; -} - -.wp-core-ui select:hover { - color: #2271b1; -} -.wp-core-ui select:focus { - border-color: #2271b1; - color: #0a4b78; - box-shadow: 0 0 0 1px #2271b1; -} - -.wp-core-ui select:active { - border-color: #8c8f94; - box-shadow: none; -} - -.wp-core-ui select.disabled, -.wp-core-ui select:disabled { - color: #a7aaad; - border-color: #dcdcde; - background-color: #f6f7f7; - /* The SVG is arrow-down-alt2 from Dashicons. */ - background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E'); - box-shadow: none; - text-shadow: 0 1px 0 #fff; - cursor: default; - transform: none; -} - -/* Reset Firefox inner outline that appears on :focus. */ -/* This ruleset overrides the color change on :focus thus needs to be after select:focus. */ -.wp-core-ui select:-moz-focusring { - color: transparent; - text-shadow: 0 0 0 #0a4b78; -} - -/* Remove background focus style from IE11 while keeping focus style available on option elements. */ -.wp-core-ui select::-ms-value { - background: transparent; - color: #50575e; -} - -.wp-core-ui select:hover::-ms-value { - color: #2271b1; -} - -.wp-core-ui select:focus::-ms-value { - color: #0a4b78; -} - -.wp-core-ui select.disabled::-ms-value, -.wp-core-ui select:disabled::-ms-value { - color: #a7aaad; -} - -/* Hide the native down arrow for select element on IE. */ -.wp-core-ui select::-ms-expand { - display: none; +.wp-admin select { + padding: 2px; + line-height: 28px; + height: 28px; + vertical-align: middle; } .wp-admin .button-cancel { - display: inline-block; - min-height: 28px; padding: 0 5px; line-height: 2; } @@ -398,18 +320,8 @@ input[type="radio"].disabled:checked:before { max-width: 100%; } -.meta-box-sortables input { - vertical-align: middle; -} - -.misc-pub-post-status select { - margin-top: 0; -} - -.wp-core-ui select[multiple] { +.wp-admin select[multiple] { height: auto; - padding-left: 8px; - background: #fff; } .submit { @@ -465,16 +377,11 @@ textarea.large-text { input.small-text { width: 50px; - padding: 0 6px; -} - -label input.small-text { - margin-top: -4px; + padding: 1px 6px; } input[type="number"].small-text { width: 65px; - padding-left: 0; } input.tiny-text { @@ -483,16 +390,22 @@ input.tiny-text { input[type="number"].tiny-text { width: 45px; - padding-left: 0; } #doaction, #doaction2, #post-query-submit { - margin: 0 0 0 8px; + margin: 1px 0 0 8px; +} + +.tablenav #changeit, +.tablenav #delete_all, +.tablenav #clear-recent-list, +.wp-filter #delete_all { + margin-top: 1px; } -/* @since 5.7.0 secondary bulk action controls require JS. */ +/* @since WP-5.7.0 secondary bulk action controls require JS. */ .no-js label[for="bulk-action-selector-bottom"], .no-js select#bulk-action-selector-bottom, .no-js input#doaction2, @@ -505,25 +418,24 @@ input[type="number"].tiny-text { .tablenav .actions select { float: right; margin-left: 6px; - max-width: 12.5rem; + max-width: 200px; +} + +.ie8 .tablenav .actions select { + width: 155px; +} + +.ie8 .tablenav .actions select#cat { + width: 200px; } #timezone_string option { margin-right: 1em; } -.wp-hide-pw > .dashicons, -.wp-cancel-pw > .dashicons { +button.wp-hide-pw > .dashicons { position: relative; top: 3px; - width: 1.25rem; - height: 1.25rem; - top: 0.25rem; - font-size: 20px; -} - -.wp-cancel-pw .dashicons-no { - display: none; } label, @@ -545,23 +457,15 @@ fieldset label, margin: 0 0 1em; } -.wp-generate-pw { - margin-top: 1em; -} - -.wp-pwd { - margin-top: 1em; -} - #misc-publishing-actions label { vertical-align: baseline; } #pass-strength-result { - background-color: #f0f0f1; - border: 1px solid #dcdcde; - color: #1d2327; - margin: -1px 1px 5px; + background-color: #eee; + border: 1px solid #ddd; + color: #23282d; + margin: -2px 1px 5px 5px; padding: 3px 5px; text-align: center; width: 25em; @@ -570,80 +474,65 @@ fieldset label, } #pass-strength-result.short { - background-color: #ffabaf; - border-color: #e65054; + background-color: #f1adad; + border-color: #e35b5b; opacity: 1; } #pass-strength-result.bad { - background-color: #facfd2; - border-color: #f86368; + background-color: #fbc5a9; + border-color: #f78b53; opacity: 1; } #pass-strength-result.good { - background-color: #f5e6ab; - border-color: #f0c33c; + background-color: #ffe399; + border-color: #ffc733; opacity: 1; } #pass-strength-result.strong { - background-color: #b8e6bf; - border-color: #68de7c; + background-color: #c1e1b9; + border-color: #83c373; opacity: 1; } -.password-input-wrapper input { - font-family: Consolas, Monaco, monospace; -} - #pass1.short, #pass1-text.short { - border-color: #e65054; + border-color: #e35b5b; } #pass1.bad, #pass1-text.bad { - border-color: #f86368; + border-color: #f78b53; } #pass1.good, #pass1-text.good { - border-color: #f0c33c; + border-color: #ffc733; } #pass1.strong, #pass1-text.strong { - border-color: #68de7c; + border-color: #83c373; } .pw-weak { - display: none; + display:none; } .indicator-hint { padding-top: 8px; } -.wp-pwd [type="text"], -.wp-pwd [type="password"] { - margin-bottom: 0; - /* Same height as the buttons */ - min-height: 30px; -} - -/* Hide the Edge "reveal password" native button */ -.wp-pwd input::-ms-reveal { - display: none; -} - #pass1-text, .show-password #pass1 { display: none; } -#pass1-text::-ms-clear { - display: none; +.show-password #pass1-text +{ + display: inline-block; } -.show-password #pass1-text { - display: inline-block; +.form-table span.description.important { + font-size: 12px; } p.search-box { @@ -659,12 +548,18 @@ p.search-box { .tablenav .search-plugins input[name="s"], .tagsdiv .newtag { float: right; + height: 28px; margin: 0 0 0 4px; } .js.plugins-php .search-box .wp-filter-search { margin: 0; width: 280px; + font-size: 16px; + font-weight: 300; + line-height: 1.5; + padding: 3px 5px; + height: 32px; } input[type="text"].ui-autocomplete-loading, @@ -689,8 +584,8 @@ ul#add-to-blog-users { list-style: none; position: absolute; z-index: 10000; - border: 1px solid #4f94d4; - box-shadow: 0 1px 2px rgba(79, 148, 212, 0.8); + border: 1px solid #5b9dd9; + box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); background-color: #fff; } @@ -704,16 +599,13 @@ ul#add-to-blog-users { /* Colors for the wplink toolbar autocomplete. */ .ui-autocomplete .ui-state-focus { - background-color: #dcdcde; + background-color: #ddd; } /* Colors for the tags autocomplete. */ -.wp-tags-autocomplete .ui-state-focus, -.wp-tags-autocomplete [aria-selected="true"] { - background-color: #2271b1; +.wp-tags-autocomplete .ui-state-focus { + background-color: #0073aa; color: #fff; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; } /*------------------------------------------------------------------------------ @@ -743,7 +635,7 @@ ul#add-to-blog-users { .form-table th, .form-wrap label { - color: #1d2327; + color: #23282d; font-weight: 400; text-shadow: none; vertical-align: baseline; @@ -776,27 +668,17 @@ ul#add-to-blog-users { .form-table p.timezone-info { margin: 1em 0; - display: flex; - flex-direction: column; -} - -#local-time { - margin-top: 0.5em; } .form-table td fieldset label { - margin: 0.35em 0 0.5em !important; + margin: 0.25em 0 0.5em !important; display: inline-block; } -.form-table td fieldset p label { - margin-top: 0 !important; -} - .form-table td fieldset label, .form-table td fieldset p, .form-table td fieldset li { - line-height: 1.4; + line-height: 1.4em; } .form-table input.tog, @@ -856,7 +738,7 @@ table.form-table td .updated p { .color-option:hover, .color-option.selected { - background: #dcdcde; + background: #ddd; } .color-palette { @@ -874,38 +756,6 @@ table.form-table td .updated p { cursor: pointer; } -.create-application-password .form-field { - max-width: 25em; -} - -.create-application-password label { - font-weight: 600; -} - -.create-application-password p.submit { - margin-bottom: 0; - padding-bottom: 0; - display: block; -} - -#application-passwords-section .notice { - margin-top: 20px; - margin-bottom: 0; - word-wrap: break-word; -} - -.application-password-display input.code { - width: 19em; -} - -.auth-app-card.card { - max-width: 768px; -} - -.authorize-application-php .form-wrap p { - display: block; -} - /*------------------------------------------------------------------------------ 19.0 - Tools ------------------------------------------------------------------------------*/ @@ -937,10 +787,9 @@ table.form-table td .updated p { padding: 0.7em 2em 1em; min-width: 255px; max-width: 520px; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); background: #fff; - box-sizing: border-box; } /* Press this styles */ @@ -972,10 +821,10 @@ table.form-table td .updated p { display: inline-block; position: relative; cursor: move; - color: #2c3338; - background: #dcdcde; + color: #32373c; + background: #e5e5e5; border-radius: 5px; - border: 1px solid #c3c4c7; + border: 1px solid #b4b9be; font-style: normal; line-height: 16px; font-size: 14px; @@ -1006,12 +855,12 @@ table.form-table td .updated p { .pressthis-bookmarklet span { display: inline-block; - margin: 0; - padding: 0 9px 8px 12px; + margin: 0px 0 0; + padding: 0px 9px 8px 12px; } .pressthis-bookmarklet span:before { - color: #787c82; + color: #72777c; font: normal 20px/1 dashicons; content: "\f157"; position: relative; @@ -1037,7 +886,7 @@ table.form-table td .updated p { .pressthis-js-toggle .dashicons { margin: 5px 7px 6px 8px; - color: #50575e; + color: #555d66; } /*------------------------------------------------------------------------------ @@ -1060,7 +909,6 @@ table.form-table td .updated p { .options-general-php input.small-text { width: 56px; - margin: -2px 0; } .options-general-php .spinner { @@ -1069,9 +917,7 @@ table.form-table td .updated p { } .settings-php .language-install-spinner, -.options-general-php .language-install-spinner, -.user-edit-php .language-install-spinner, -.profile-php .language-install-spinner { +.options-general-php .language-install-spinner { display: inline-block; float: none; margin: -3px 5px 0; @@ -1097,40 +943,9 @@ table.form-table td .updated p { font-style: italic; } -.form-table.permalink-structure .available-structure-tags { - margin-top: 8px; -} - -.form-table.permalink-structure .available-structure-tags ul { - display: flex; - flex-wrap: wrap; - margin: 8px 0 0; -} - .form-table.permalink-structure .available-structure-tags li { - margin: 6px 0 0 5px; -} - -.form-table.permalink-structure .available-structure-tags li:last-child { - margin-left: 0; -} - -.form-table.permalink-structure .structure-selection .row { - margin-bottom: 16px; -} - -.form-table.permalink-structure .structure-selection .row > div { - max-width: calc(100% - 24px); - display: inline-flex; - flex-direction: column; -} - -.form-table.permalink-structure .structure-selection .row label { - font-weight: 600; -} - -.form-table.permalink-structure .structure-selection .row p { - margin-top: 0; + float: right; + margin-left: 5px; } /*------------------------------------------------------------------------------ @@ -1163,12 +978,7 @@ table.form-table td .updated p { #search-users, #search-sites { - max-width: 60%; -} - -.configuration-rules-label { - font-weight: 600; - margin-bottom: 4px; + max-width: 100%; } /*------------------------------------------------------------------------------ @@ -1191,8 +1001,8 @@ table.form-table td .updated p { } #request-filesystem-credentials-title { - font-size: 1.3em; - margin: 1em 0; + font-size: 1.3em; + margin: 1em 0; } .request-filesystem-credentials-form legend { @@ -1271,7 +1081,7 @@ table.form-table td .updated p { } .request-filesystem-credentials-dialog .ftp-password em { - color: #8c8f94; + color: #888; } .request-filesystem-credentials-dialog label { @@ -1289,7 +1099,7 @@ table.form-table td .updated p { } .request-filesystem-credentials-form .notice { - margin: 0 0 20px; + margin: 0 0 20px 0; clear: both; } @@ -1300,12 +1110,9 @@ table.form-table td .updated p { margin-bottom: 1.3em; } -.tools-privacy-policy-page input.button { - margin: 0 6px 0 1px; -} - +.tools-privacy-policy-page input.button, .tools-privacy-policy-page select { - margin: 0 6px 0.5em 1px; + margin-right: 6px; } .tools-privacy-edit { @@ -1313,7 +1120,7 @@ table.form-table td .updated p { } .tools-privacy-policy-page span { - line-height: 2; + line-height: 2em; } .privacy_requests .column-email { @@ -1332,15 +1139,7 @@ table.form-table td .updated p { .privacy_requests tbody th { border-right: 4px solid #fff; background: #fff; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); -} - -.privacy_requests .row-actions { - color: #787c82; -} - -.privacy_requests .row-actions.processing { - position: static; + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .privacy_requests tbody .has-request-results th { @@ -1353,7 +1152,7 @@ table.form-table td .updated p { .privacy_requests tbody td { background: #fff; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .privacy_requests tbody .has-request-results td { @@ -1361,20 +1160,23 @@ table.form-table td .updated p { } .privacy_requests .next_steps .button { - word-wrap: break-word; - white-space: normal; + height: auto; + line-height: 1.5; + padding: 4px 10px; + word-break: break-all; + white-space: unset; } .privacy_requests .status-request-confirmed th, .privacy_requests .status-request-confirmed td { - background-color: #fff; - border-right-color: #72aee6; + background-color: #f7fcfe; + border-right-color: #00a0d2; } .privacy_requests .status-request-failed th, .privacy_requests .status-request-failed td { - background-color: #f6f7f7; - border-right-color: #d63638; + background-color: #fef7f1; + border-right-color: #d64d21; } .privacy_requests .export_personal_data_failed a { @@ -1382,18 +1184,18 @@ table.form-table td .updated p { } .status-label { - font-weight: 600; + font-weight: bold; } .status-label.status-request-pending { - font-weight: 400; + font-weight: normal; font-style: italic; - color: #646970; + color: #6c7781; } .status-label.status-request-failed { - color: #d63638; - font-weight: 600; + color: #aa0000; + font-weight: bold; } .wp-privacy-request-form { @@ -1404,7 +1206,15 @@ table.form-table td .updated p { margin: 1.5em 0; } +.wp-privacy-request-form label { + font-weight: bold; + line-height: 1.5; + padding-bottom: .5em; + display: block; +} + .wp-privacy-request-form input { + line-height: 1.5; margin: 0; } @@ -1412,20 +1222,20 @@ table.form-table td .updated p { display: inline-block; font: normal 20px/1 dashicons; margin: 3px -2px 0 5px; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; vertical-align: top; } .email-personal-data--sending::before { - color: #d63638; + color: #f56e28; content: "\f463"; animation: rotation 2s infinite linear; } .email-personal-data--sent::before { - color: #68de7c; + color: #79ba49; content: "\f147"; } @@ -1433,33 +1243,28 @@ table.form-table td .updated p { /* =Media Queries -------------------------------------------------------------- */ -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { /* Input Elements */ textarea { -webkit-appearance: none; } input[type="text"], - input[type="password"], - input[type="date"], - input[type="datetime"], - input[type="datetime-local"], input[type="email"], - input[type="month"], - input[type="number"], input[type="search"], - input[type="tel"], - input[type="time"], - input[type="url"], - input[type="week"] { + input[type="password"], + input[type="number"] { -webkit-appearance: none; - padding: 3px 10px; - /* Only necessary for IE11 */ - min-height: 40px; + padding: 6px 10px; } - ::-webkit-datetime-edit { - line-height: 1.875; /* 30px */ + input[type="number"] { + height: 40px; + } + + input.code { + padding-bottom: 5px; + padding-top: 10px; } input[type="checkbox"], @@ -1467,6 +1272,7 @@ table.form-table td .updated p { .widefat thead td input[type="checkbox"], .widefat tfoot td input[type="checkbox"] { -webkit-appearance: none; + padding: 10px; } .widefat th input[type="checkbox"], @@ -1479,47 +1285,41 @@ table.form-table td .updated p { .widefat th input[type="checkbox"]:before, .widefat thead td input[type="checkbox"]:before, .widefat tfoot td input[type="checkbox"]:before { - width: 1.875rem; - height: 1.875rem; - margin: -0.1875rem -0.3125rem; + font: normal 30px/1 dashicons; + margin: -3px -5px; } input[type="radio"], input[type="checkbox"] { - height: 1.5625rem; - width: 1.5625rem; + height: 25px; + width: 25px; } .wp-admin p input[type="checkbox"], .wp-admin p input[type="radio"] { - margin-top: -0.1875rem; + margin-top: -3px; } input[type="radio"]:checked:before { vertical-align: middle; - width: 0.5625rem; - height: 0.5625rem; - margin: 0.4375rem; - line-height: 0.76190476; + width: 9px; + height: 9px; + margin: 7px; + line-height: 16px; } .wp-upload-form input[type="submit"] { margin-top: 10px; } - .wp-core-ui select, - .wp-admin .form-table select { - min-height: 40px; + #wpbody select { + height: 36px; font-size: 16px; - line-height: 1.625; /* 26px */ - padding: 5px 8px 5px 24px; } .wp-admin .button-cancel { - margin-bottom: 0; - padding: 2px 0; + padding: 0; font-size: 14px; - vertical-align: middle; } #adduser .form-field input, @@ -1569,6 +1369,9 @@ table.form-table td .updated p { .form-table span.description, #profile-page .form-table textarea { width: 100%; + font-size: 16px; + line-height: 1.5; + padding: 7px 10px; display: block; max-width: none; box-sizing: border-box; @@ -1579,6 +1382,10 @@ table.form-table td .updated p { margin: -30px 0 0 3px; } + #wpbody .form-table td select { + height: 40px; + } + input[type="text"].small-text, input[type="search"].small-text, input[type="password"].small-text, @@ -1592,10 +1399,6 @@ table.form-table td .updated p { margin: 0 3px; } - .form-table .regular-text ~ input[type="text"].small-text { - margin-top: 5px; - } - #pass-strength-result { width: 100%; box-sizing: border-box; @@ -1612,10 +1415,12 @@ table.form-table td .updated p { } p.search-box input[name="s"] { + height: auto; float: none; width: 100%; margin-bottom: 10px; vertical-align: middle; + -webkit-appearance: none; } p.search-box input[type="submit"] { @@ -1625,35 +1430,31 @@ table.form-table td .updated p { .form-table span.description { display: inline; padding: 4px 0 0; - line-height: 1.4; + line-height: 1.4em; font-size: 14px; } .form-table th { - padding: 10px 0 0; + padding-top: 10px; + padding-bottom: 0; border-bottom: 0; } .form-table td { margin-bottom: 0; - padding: 4px 0 6px; + padding-bottom: 6px; + padding-top: 4px; + padding-right: 0; } .form-table.permalink-structure td code { - display: inline-block; - } - - .form-table.permalink-structure .structure-selection { - margin-top: 8px; - } - - .form-table.permalink-structure .structure-selection .row > div { - max-width: calc(100% - 36px); - width: 100%; + margin-right: 32px; } .form-table.permalink-structure td input[type="text"] { + margin-right: 32px; margin-top: 4px; + width: 96%; } .form-table input.regular-text { @@ -1664,12 +1465,15 @@ table.form-table td .updated p { font-size: 14px; } - .background-position-control .button-group > label { - font-size: 0; + .form-table fieldset label { + display: block; } - .form-table fieldset label { + #utc-time, + #local-time { display: block; + float: none; + margin-top: 0.5em; } .form-field #domain { @@ -1681,65 +1485,33 @@ table.form-table td .updated p { position: relative; } - /* Needs higher specificity than normal input type text and password. */ - #profile-page .form-table #pass1 { - padding-left: 90px; + .wp-pwd [type="text"], + .wp-pwd [type="password"] { + padding-left: 40px; } .wp-pwd button.button { background: transparent; - border: 1px solid transparent; + border: none; box-shadow: none; line-height: 2; margin: 0; - padding: 5px 9px; + padding: 5px 10px; position: absolute; left: 0; top: 0; - width: 2.375rem; - height: 2.375rem; - min-width: 40px; - min-height: 40px; - } - - .wp-pwd button.wp-hide-pw { - left: 2.5rem; - } - - body.user-new-php .wp-pwd button.wp-hide-pw { - left: 0; } .wp-pwd button.button:hover, - .wp-pwd button.button:focus { - background: transparent; - } - + .wp-pwd button.button:focus, .wp-pwd button.button:active { background: transparent; - box-shadow: none; - transform: none; } .wp-pwd .button .text { display: none; } - .wp-pwd [type="text"], - .wp-pwd [type="password"] { - line-height: 2; - padding-left: 5rem; - } - - body.user-new-php .wp-pwd [type="text"], - body.user-new-php .wp-pwd [type="password"] { - padding-left: 2.5rem; - } - - .wp-cancel-pw .dashicons-no { - display: inline-block; - } - .options-general-php input[type="text"].small-text { max-width: 6.25em; margin: 0; @@ -1747,21 +1519,21 @@ table.form-table td .updated p { /* Privacy Policy settings screen */ .tools-privacy-policy-page form.wp-create-privacy-page { - margin-bottom: 1em; + margin-bottom: 1em; } - .tools-privacy-policy-page input#set-page, + .tools-privacy-policy-page input#set-page, .tools-privacy-policy-page select { margin: 10px 0 0; } .tools-privacy-policy-page .wp-create-privacy-page span { - display: block; - margin-bottom: 1em; + display: block; + margin-bottom: 1em; } .tools-privacy-policy-page .wp-create-privacy-page .button { - margin-right: 0; + margin-right: 0; } .wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column) { @@ -1772,16 +1544,6 @@ table.form-table td .updated p { .wp-list-table.privacy_requests.widefat thead td input { margin-right: 5px; } - - .wp-privacy-request-form-field input[type="text"] { - width: 100%; - margin-bottom: 10px; - vertical-align: middle; - } - - .regular-text { - max-width: 100%; - } } @media only screen and (max-width: 768px) { @@ -1794,12 +1556,18 @@ table.form-table td .updated p { } .form-wrap .form-field { - padding: 0; + padding:0; + } + + /* users */ + #profile-page .form-table textarea { + max-width: 400px; + width: auto; } } @media only screen and (max-height: 480px), screen and (max-width: 450px) { - /* Request Credentials / File Editor Warning */ + /* Request Credentials / File Editor Warning */ .request-filesystem-credentials-dialog .notification-dialog, .file-editor-warning .notification-dialog { width: 100%; diff --git a/wp-admin/css/forms-rtl.min.css b/wp-admin/css/forms-rtl.min.css index 4ce2a92..a8b94af 100644 --- a/wp-admin/css/forms-rtl.min.css +++ b/wp-admin/css/forms-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -button,input,select,textarea{box-sizing:border-box;font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea{font-size:14px}textarea{overflow:auto;padding:2px 6px;line-height:1.42857143;resize:vertical}label{cursor:pointer}input,select{margin:0 1px}textarea.code{padding:4px 6px 1px}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #8c8f94;background-color:#fff;color:#2c3338}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{padding:0 8px;line-height:2;min-height:30px}::-webkit-datetime-edit{line-height:1.85714286}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}input[type=email],input[type=url]{direction:ltr}input[type=checkbox],input[type=radio]{border:1px solid #8c8f94;border-radius:4px;background:#fff;color:#50575e;clear:none;cursor:pointer;display:inline-block;line-height:0;height:1rem;margin:-.25rem 0 0 .25rem;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:1rem;min-width:1rem;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#8c8f94}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#135e96}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-left:.25rem;line-height:.71428571}input[type=checkbox]:checked::before,input[type=radio]:checked::before{float:right;display:inline-block;vertical-align:middle;width:1rem;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E");margin:-.1875rem -.25rem 0 0;height:1.3125rem;width:1.3125rem}input[type=radio]:checked::before{content:"";border-radius:50%;width:.5rem;height:.5rem;margin:.1875rem;background-color:#3582c4;line-height:1.14285714}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#f0f0f1}::-webkit-input-placeholder{color:#646970}::-moz-placeholder{color:#646970;opacity:1}:-ms-input-placeholder{color:#646970}.form-invalid .form-required,.form-invalid .form-required:focus,.form-invalid.form-required input,.form-invalid.form-required input:focus,.form-invalid.form-required select,.form-invalid.form-required select:focus{border-color:#d63638!important;box-shadow:0 0 2px rgba(214,54,56,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:""}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#646970}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(220,220,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(44,51,56,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-core-ui select{font-size:14px;line-height:2;color:#2c3338;border-color:#8c8f94;box-shadow:none;border-radius:3px;padding:0 8px 0 24px;min-height:30px;max-width:25rem;-webkit-appearance:none;background:#fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat left 5px top 55%;background-size:16px 16px;cursor:pointer;vertical-align:middle}.wp-core-ui select:hover{color:#2271b1}.wp-core-ui select:focus{border-color:#2271b1;color:#0a4b78;box-shadow:0 0 0 1px #2271b1}.wp-core-ui select:active{border-color:#8c8f94;box-shadow:none}.wp-core-ui select.disabled,.wp-core-ui select:disabled{color:#a7aaad;border-color:#dcdcde;background-color:#f6f7f7;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E');box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.wp-core-ui select:-moz-focusring{color:transparent;text-shadow:0 0 0 #0a4b78}.wp-core-ui select::-ms-value{background:0 0;color:#50575e}.wp-core-ui select:hover::-ms-value{color:#2271b1}.wp-core-ui select:focus::-ms-value{color:#0a4b78}.wp-core-ui select.disabled::-ms-value,.wp-core-ui select:disabled::-ms-value{color:#a7aaad}.wp-core-ui select::-ms-expand{display:none}.wp-admin .button-cancel{display:inline-block;min-height:28px;padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.meta-box-sortables input{vertical-align:middle}.misc-pub-post-status select{margin-top:0}.wp-core-ui select[multiple]{height:auto;padding-left:8px;background:#fff}.submit{padding:1.5em 0;margin:5px 0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:right;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:0 6px}label input.small-text{margin-top:-4px}input[type=number].small-text{width:65px;padding-left:0}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px;padding-left:0}#doaction,#doaction2,#post-query-submit{margin:0 0 0 8px}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:right;margin-left:6px;max-width:12.5rem}#timezone_string option{margin-right:1em}.wp-cancel-pw>.dashicons,.wp-hide-pw>.dashicons{position:relative;top:3px;width:1.25rem;height:1.25rem;top:.25rem;font-size:20px}.wp-cancel-pw .dashicons-no{display:none}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}.wp-generate-pw{margin-top:1em}.wp-pwd{margin-top:1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#f0f0f1;border:1px solid #dcdcde;color:#1d2327;margin:-1px 1px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#ffabaf;border-color:#e65054;opacity:1}#pass-strength-result.bad{background-color:#facfd2;border-color:#f86368;opacity:1}#pass-strength-result.good{background-color:#f5e6ab;border-color:#f0c33c;opacity:1}#pass-strength-result.strong{background-color:#b8e6bf;border-color:#68de7c;opacity:1}.password-input-wrapper input{font-family:Consolas,Monaco,monospace}#pass1-text.short,#pass1.short{border-color:#e65054}#pass1-text.bad,#pass1.bad{border-color:#f86368}#pass1-text.good,#pass1.good{border-color:#f0c33c}#pass1-text.strong,#pass1.strong{border-color:#68de7c}.pw-weak{display:none}.indicator-hint{padding-top:8px}.wp-pwd [type=password],.wp-pwd [type=text]{margin-bottom:0;min-height:30px}.wp-pwd input::-ms-reveal{display:none}#pass1-text,.show-password #pass1{display:none}#pass1-text::-ms-clear{display:none}.show-password #pass1-text{display:inline-block}p.search-box{float:left;margin:0}.network-admin.themes-php p.search-box{clear:right}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;margin:0 0 0 4px}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;box-shadow:0 1px 2px rgba(79,148,212,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:right;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#dcdcde}.wp-tags-autocomplete .ui-state-focus,.wp-tags-autocomplete [aria-selected=true]{background-color:#2271b1;color:#fff;outline:2px solid transparent}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#1d2327;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 0 20px 10px;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0;display:flex;flex-direction:column}#local-time{margin-top:.5em}.form-table td fieldset label{margin:.35em 0 .5em!important;display:inline-block}.form-table td fieldset p label{margin-top:0!important}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#dcdcde}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.create-application-password .form-field{max-width:25em}.create-application-password label{font-weight:600}.create-application-password p.submit{margin-bottom:0;padding-bottom:0;display:block}#application-passwords-section .notice{margin-top:20px;margin-bottom:0;word-wrap:break-word}.application-password-display input.code{width:19em}.auth-app-card.card{max-width:768px}.authorize-application-php .form-wrap p{display:block}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;box-sizing:border-box}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#2c3338;background:#dcdcde;border-radius:5px;border:1px solid #c3c4c7;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;transform:skew(-20deg) rotate(-6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(-20deg) rotate(-9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-bookmarklet span:before{color:#787c82;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#50575e}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px;margin:-2px 0}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.profile-php .language-install-spinner,.settings-php .language-install-spinner,.user-edit-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.options-general-php #login_custom_image-description{margin-bottom:6px}.options-general-php #login_custom_image-img{max-width:120px;max-height:120px}.options-general-php .wrap .login_custom_image-notice{margin:3px 24px 3px 0;padding:3px 6px;cursor:default;color:#666;font-style:italic}.form-table.permalink-structure .available-structure-tags{margin-top:8px}.form-table.permalink-structure .available-structure-tags ul{display:flex;flex-wrap:wrap;margin:8px 0 0}.form-table.permalink-structure .available-structure-tags li{margin:6px 0 0 5px}.form-table.permalink-structure .available-structure-tags li:last-child{margin-left:0}.form-table.permalink-structure .structure-selection .row{margin-bottom:16px}.form-table.permalink-structure .structure-selection .row>div{max-width:calc(100% - 24px);display:inline-flex;flex-direction:column}.form-table.permalink-structure .structure-selection .row label{font-weight:600}.form-table.permalink-structure .structure-selection .row p{margin-top:0}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:60%}.configuration-rules-label{font-weight:600;margin-bottom:4px}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#8c8f94}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button{margin:0 6px 0 1px}.tools-privacy-policy-page select{margin:0 6px .5em 1px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-right:4px solid #fff}.privacy_requests tbody th{border-right:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests .row-actions{color:#787c82}.privacy_requests .row-actions.processing{position:static}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{word-wrap:break-word;white-space:normal}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#fff;border-right-color:#72aee6}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#f6f7f7;border-right-color:#d63638}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:600}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#646970}.status-label.status-request-failed{color:#d63638;font-weight:600}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form input{margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px -2px 0 5px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#d63638;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#68de7c;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:3px 10px;min-height:40px}::-webkit-datetime-edit{line-height:1.875}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{width:1.875rem;height:1.875rem;margin:-.1875rem -.3125rem}input[type=checkbox],input[type=radio]{height:1.5625rem;width:1.5625rem}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-.1875rem}input[type=radio]:checked:before{vertical-align:middle;width:.5625rem;height:.5625rem;margin:.4375rem;line-height:.76190476}.wp-upload-form input[type=submit]{margin-top:10px}.wp-admin .form-table select,.wp-core-ui select{min-height:40px;font-size:16px;line-height:1.625;padding:5px 8px 5px 24px}.wp-admin .button-cancel{margin-bottom:0;padding:2px 0;font-size:14px;vertical-align:middle}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}.form-table .regular-text~input[type=text].small-text{margin-top:5px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{float:none;width:100%;margin-bottom:10px;vertical-align:middle}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4;font-size:14px}.form-table th{padding:10px 0 0;border-bottom:0}.form-table td{margin-bottom:0;padding:4px 0 6px}.form-table.permalink-structure td code{display:inline-block}.form-table.permalink-structure .structure-selection{margin-top:8px}.form-table.permalink-structure .structure-selection .row>div{max-width:calc(100% - 36px);width:100%}.form-table.permalink-structure td input[type=text]{margin-top:4px}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.background-position-control .button-group>label{font-size:0}.form-table fieldset label{display:block}.form-field #domain{max-width:none}.wp-pwd{position:relative}#profile-page .form-table #pass1{padding-left:90px}.wp-pwd button.button{background:0 0;border:1px solid transparent;box-shadow:none;line-height:2;margin:0;padding:5px 9px;position:absolute;left:0;top:0;width:2.375rem;height:2.375rem;min-width:40px;min-height:40px}.wp-pwd button.wp-hide-pw{left:2.5rem}body.user-new-php .wp-pwd button.wp-hide-pw{left:0}.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd button.button:active{background:0 0;box-shadow:none;transform:none}.wp-pwd .button .text{display:none}.wp-pwd [type=password],.wp-pwd [type=text]{line-height:2;padding-left:5rem}body.user-new-php .wp-pwd [type=password],body.user-new-php .wp-pwd [type=text]{padding-left:2.5rem}.wp-cancel-pw .dashicons-no{display:inline-block}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-right:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-right:5px}.wp-privacy-request-form-field input[type=text]{width:100%;margin-bottom:10px;vertical-align:middle}.regular-text{max-width:100%}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(-359deg)}} \ No newline at end of file +input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;transition:50ms border-color ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:1}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-left:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:right;display:inline-block;vertical-align:middle;width:16px;font:normal 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px -4px 0 0;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;padding:3px 5px;border-radius:0}textarea{overflow:auto;padding:2px 6px;line-height:1.4;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px 6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#dc3232;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:normal 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:right;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.pw-weak{display:none}.indicator-hint{padding-top:8px}#pass1-text,.show-password #pass1{display:none}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:left;margin:0}.network-admin.themes-php p.search-box{clear:right}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;height:28px;margin:0 0 0 4px}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:right;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 0 20px 10px;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;transform:skew(-20deg) rotate(-6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(-20deg) rotate(-9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0 0 0;padding:0 9px 8px 12px}.pressthis-bookmarklet span:before{color:#72777c;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.options-general-php #login_custom_image-description{margin-bottom:6px}.options-general-php #login_custom_image-img{max-width:120px;max-height:120px}.options-general-php .wrap .login_custom_image-notice{margin:3px 24px 3px 0;padding:3px 6px;cursor:default;color:#666;font-style:italic}.form-table.permalink-structure .available-structure-tags li{float:right;margin-left:5px}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px 0;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button,.tools-privacy-policy-page select{margin-right:6px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2em}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-right:4px solid #fff}.privacy_requests tbody th{border-right:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{height:auto;line-height:1.5;padding:4px 10px;word-break:break-all;white-space:unset}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#f7fcfe;border-right-color:#00a0d2}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#fef7f1;border-right-color:#d64d21}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:700}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#6c7781}.status-label.status-request-failed{color:#a00;font-weight:700}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form label{font-weight:700;line-height:1.5;padding-bottom:.5em;display:block}.wp-privacy-request-form input{line-height:1.5;margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px -2px 0 5px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#f56e28;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#79ba49;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-right:0}.form-table.permalink-structure td code{margin-right:32px}.form-table.permalink-structure td input[type=text]{margin-right:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=password],.wp-pwd [type=text]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;left:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-right:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-right:5px}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(-359deg)}} \ No newline at end of file diff --git a/wp-admin/css/forms.css b/wp-admin/css/forms.css index 78c393b..269477c 100644 --- a/wp-admin/css/forms.css +++ b/wp-admin/css/forms.css @@ -1,42 +1,12 @@ /* Include margin and padding in the width calculation of input and textarea. */ input, -select, -textarea, -button { - box-sizing: border-box; - font-family: inherit; - font-size: inherit; - font-weight: inherit; -} - -textarea, -input { - font-size: 14px; -} - textarea { - overflow: auto; - padding: 2px 6px; - /* inherits font size 14px */ - line-height: 1.42857143; /* 20px */ - resize: vertical; -} - -label { - cursor: pointer; -} - -input, -select { - margin: 0 1px; -} - -textarea.code { - padding: 4px 6px 1px; + box-sizing: border-box; } input[type="text"], input[type="password"], +input[type="checkbox"], input[type="color"], input[type="date"], input[type="datetime"], @@ -45,42 +15,20 @@ input[type="email"], input[type="month"], input[type="number"], input[type="search"], +input[type="radio"], input[type="tel"], +input[type="text"], input[type="time"], input[type="url"], input[type="week"], select, textarea { - box-shadow: 0 0 0 transparent; - border-radius: 4px; - border: 1px solid #8c8f94; + border: 1px solid #ddd; + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.07 ); background-color: #fff; - color: #2c3338; -} - -input[type="text"], -input[type="password"], -input[type="date"], -input[type="datetime"], -input[type="datetime-local"], -input[type="email"], -input[type="month"], -input[type="number"], -input[type="search"], -input[type="tel"], -input[type="time"], -input[type="url"], -input[type="week"] { - padding: 0 8px; - /* inherits font size 14px */ - line-height: 2; /* 28px */ - /* Only necessary for IE11 */ - min-height: 30px; -} - -::-webkit-datetime-edit { - /* inherits font size 14px */ - line-height: 1.85714286; /* 26px */ + color: #32373c; + outline: none; + transition: 0.05s border-color ease-in-out; } input[type="text"]:focus, @@ -94,6 +42,7 @@ input[type="month"]:focus, input[type="number"]:focus, input[type="search"]:focus, input[type="tel"]:focus, +input[type="text"]:focus, input[type="time"]:focus, input[type="url"]:focus, input[type="week"]:focus, @@ -101,10 +50,8 @@ input[type="checkbox"]:focus, input[type="radio"]:focus, select:focus, textarea:focus { - border-color: #2271b1; - box-shadow: 0 0 0 1px #2271b1; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); } /* rtl:ignore */ @@ -113,36 +60,41 @@ input[type="url"] { direction: ltr; } +/* Vertically align the number selector with the input. */ +input[type="number"] { + height: 28px; + line-height: 1; +} + input[type="checkbox"], input[type="radio"] { - border: 1px solid #8c8f94; - border-radius: 4px; + border: 1px solid #b4b9be; background: #fff; - color: #50575e; + color: #555; clear: none; cursor: pointer; display: inline-block; line-height: 0; - height: 1rem; - margin: -0.25rem 0.25rem 0 0; + height: 16px; + margin: -4px 4px 0 0; outline: 0; padding: 0 !important; text-align: center; vertical-align: middle; - width: 1rem; - min-width: 1rem; + width: 16px; + min-width: 16px; -webkit-appearance: none; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.1 ); transition: .05s border-color ease-in-out; } input[type="radio"]:checked + label:before { - color: #8c8f94; + color: #82878c; } .wp-core-ui input[type="reset"]:hover, .wp-core-ui input[type="reset"]:active { - color: #135e96; + color: #00a0d2; } td > input[type="checkbox"], @@ -161,39 +113,38 @@ td > input[type="checkbox"], input[type="radio"] { border-radius: 50%; - margin-right: 0.25rem; - /* 10px not sure if still necessary, comes from the MP6 redesign in r26072 */ - line-height: 0.71428571; + margin-right: 4px; + line-height: 10px; } -input[type="checkbox"]:checked::before, -input[type="radio"]:checked::before { +input[type="checkbox"]:checked:before, +input[type="radio"]:checked:before { float: left; display: inline-block; vertical-align: middle; - width: 1rem; - speak: never; + width: 16px; + font: normal 21px/1 dashicons; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -input[type="checkbox"]:checked::before { - /* Use the "Yes" SVG Dashicon */ - content: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E"); - margin: -0.1875rem 0 0 -0.25rem; - height: 1.3125rem; - width: 1.3125rem; -} - -input[type="radio"]:checked::before { - content: ""; - border-radius: 50%; - width: 0.5rem; /* 8px */ - height: 0.5rem; /* 8px */ - margin: 0.1875rem; /* 3px */ - background-color: #3582c4; - /* 16px not sure if still necessary, comes from the MP6 redesign in r26072 */ - line-height: 1.14285714; +input[type="checkbox"]:checked:before { + content: "\f147"; + margin: -3px 0 0 -4px; + color: #1e8cbe; +} + +input[type="radio"]:checked:before { + content: "\2022"; + text-indent: -9999px; + border-radius: 50px; + font-size: 24px; + width: 6px; + height: 6px; + margin: 4px; + line-height: 16px; + background-color: #1e8cbe; } @-moz-document url-prefix() { @@ -213,64 +164,107 @@ input[type="search"]::-webkit-search-decoration { display: none; } +.ie8 input[type="password"] { + font-family: sans-serif; +} + +textarea, +input, +select, +button { + font-family: inherit; + font-size: inherit; + font-weight: inherit; +} + +textarea, +input, +select { + font-size: 14px; + padding: 3px 5px; + border-radius: 0; /* Reset mobile webkit's default element styling */ +} + +textarea { + overflow: auto; + padding: 2px 6px; + line-height: 1.4; + resize: vertical; +} + .wp-admin input[type="file"] { padding: 3px 0; cursor: pointer; } +label { + cursor: pointer; +} + +input, +select { + margin: 1px; + padding: 3px 5px; +} + +input.code { + padding-top: 6px; +} + +textarea.code { + line-height: 1.4; + padding: 4px 6px 1px 6px; +} + input.readonly, input[readonly], textarea.readonly, textarea[readonly] { - background-color: #f0f0f1; + background-color: #eee; } ::-webkit-input-placeholder { - color: #646970; + color: #72777c; } ::-moz-placeholder { - color: #646970; - opacity: 1; + color: #72777c; + opacity: 1; } :-ms-input-placeholder { - color: #646970; + color: #72777c; } -.form-invalid .form-required, -.form-invalid .form-required:focus, -.form-invalid.form-required input, -.form-invalid.form-required input:focus, -.form-invalid.form-required select, -.form-invalid.form-required select:focus { - border-color: #d63638 !important; - box-shadow: 0 0 2px rgba(214, 54, 56, 0.8); +.form-invalid input, .form-invalid input:focus, +.form-invalid select, .form-invalid select:focus { + border-color: #dc3232 !important; + box-shadow: 0 0 2px rgba( 204, 0, 0, 0.8 ); } .form-table .form-required.form-invalid td:after { content: "\f534"; font: normal 20px/1 dashicons; - color: #d63638; + color: #dc3232; margin-left: -25px; vertical-align: middle; } /* Adjust error indicator for password layout */ .form-table .form-required.user-pass1-wrap.form-invalid td:after { - content: ""; + content: ''; } .form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after { - content: "\f534"; + content: '\f534'; font: normal 20px/1 dashicons; - color: #d63638; + color: #dc3232; margin: 0 6px 0 -29px; vertical-align: middle; } .form-input-tip { - color: #646970; + color: #666; } input:disabled, @@ -279,10 +273,10 @@ select:disabled, select.disabled, textarea:disabled, textarea.disabled { - background: rgba(255, 255, 255, 0.5); - border-color: rgba(220, 220, 222, 0.75); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.04); - color: rgba(44, 51, 56, 0.5); + background: rgba( 255, 255, 255, 0.5 ); + border-color: rgba( 222, 222, 222, 0.75 ); + box-shadow: inset 0 1px 2px rgba( 0, 0, 0, 0.04 ); + color: rgba( 51, 51, 51, 0.5 ); } input[type="file"]:disabled, @@ -309,87 +303,15 @@ input[type="radio"].disabled:checked:before { 2.0 - Forms ------------------------------------------------------------------------------*/ -/* Select styles are based on the default button in buttons.css */ -.wp-core-ui select { - font-size: 14px; - line-height: 2; /* 28px */ - color: #2c3338; - border-color: #8c8f94; - box-shadow: none; - border-radius: 3px; - padding: 0 24px 0 8px; - min-height: 30px; - max-width: 25rem; - -webkit-appearance: none; - /* The SVG is arrow-down-alt2 from Dashicons. */ - background: #fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat right 5px top 55%; - background-size: 16px 16px; - cursor: pointer; - vertical-align: middle; -} - -.wp-core-ui select:hover { - color: #2271b1; -} -.wp-core-ui select:focus { - border-color: #2271b1; - color: #0a4b78; - box-shadow: 0 0 0 1px #2271b1; -} - -.wp-core-ui select:active { - border-color: #8c8f94; - box-shadow: none; -} - -.wp-core-ui select.disabled, -.wp-core-ui select:disabled { - color: #a7aaad; - border-color: #dcdcde; - background-color: #f6f7f7; - /* The SVG is arrow-down-alt2 from Dashicons. */ - background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E'); - box-shadow: none; - text-shadow: 0 1px 0 #fff; - cursor: default; - transform: none; -} - -/* Reset Firefox inner outline that appears on :focus. */ -/* This ruleset overrides the color change on :focus thus needs to be after select:focus. */ -.wp-core-ui select:-moz-focusring { - color: transparent; - text-shadow: 0 0 0 #0a4b78; -} - -/* Remove background focus style from IE11 while keeping focus style available on option elements. */ -.wp-core-ui select::-ms-value { - background: transparent; - color: #50575e; -} - -.wp-core-ui select:hover::-ms-value { - color: #2271b1; -} - -.wp-core-ui select:focus::-ms-value { - color: #0a4b78; -} - -.wp-core-ui select.disabled::-ms-value, -.wp-core-ui select:disabled::-ms-value { - color: #a7aaad; -} - -/* Hide the native down arrow for select element on IE. */ -.wp-core-ui select::-ms-expand { - display: none; +.wp-admin select { + padding: 2px; + line-height: 28px; + height: 28px; + vertical-align: middle; } .wp-admin .button-cancel { - display: inline-block; - min-height: 28px; padding: 0 5px; line-height: 2; } @@ -398,18 +320,8 @@ input[type="radio"].disabled:checked:before { max-width: 100%; } -.meta-box-sortables input { - vertical-align: middle; -} - -.misc-pub-post-status select { - margin-top: 0; -} - -.wp-core-ui select[multiple] { +.wp-admin select[multiple] { height: auto; - padding-right: 8px; - background: #fff; } .submit { @@ -465,16 +377,11 @@ textarea.large-text { input.small-text { width: 50px; - padding: 0 6px; -} - -label input.small-text { - margin-top: -4px; + padding: 1px 6px; } input[type="number"].small-text { width: 65px; - padding-right: 0; } input.tiny-text { @@ -483,16 +390,22 @@ input.tiny-text { input[type="number"].tiny-text { width: 45px; - padding-right: 0; } #doaction, #doaction2, #post-query-submit { - margin: 0 8px 0 0; + margin: 1px 8px 0 0; +} + +.tablenav #changeit, +.tablenav #delete_all, +.tablenav #clear-recent-list, +.wp-filter #delete_all { + margin-top: 1px; } -/* @since 5.7.0 secondary bulk action controls require JS. */ +/* @since WP-5.7.0 secondary bulk action controls require JS. */ .no-js label[for="bulk-action-selector-bottom"], .no-js select#bulk-action-selector-bottom, .no-js input#doaction2, @@ -505,25 +418,24 @@ input[type="number"].tiny-text { .tablenav .actions select { float: left; margin-right: 6px; - max-width: 12.5rem; + max-width: 200px; +} + +.ie8 .tablenav .actions select { + width: 155px; +} + +.ie8 .tablenav .actions select#cat { + width: 200px; } #timezone_string option { margin-left: 1em; } -.wp-hide-pw > .dashicons, -.wp-cancel-pw > .dashicons { +button.wp-hide-pw > .dashicons { position: relative; top: 3px; - width: 1.25rem; - height: 1.25rem; - top: 0.25rem; - font-size: 20px; -} - -.wp-cancel-pw .dashicons-no { - display: none; } label, @@ -545,23 +457,15 @@ fieldset label, margin: 0 0 1em; } -.wp-generate-pw { - margin-top: 1em; -} - -.wp-pwd { - margin-top: 1em; -} - #misc-publishing-actions label { vertical-align: baseline; } #pass-strength-result { - background-color: #f0f0f1; - border: 1px solid #dcdcde; - color: #1d2327; - margin: -1px 1px 5px; + background-color: #eee; + border: 1px solid #ddd; + color: #23282d; + margin: -2px 5px 5px 1px; padding: 3px 5px; text-align: center; width: 25em; @@ -570,80 +474,65 @@ fieldset label, } #pass-strength-result.short { - background-color: #ffabaf; - border-color: #e65054; + background-color: #f1adad; + border-color: #e35b5b; opacity: 1; } #pass-strength-result.bad { - background-color: #facfd2; - border-color: #f86368; + background-color: #fbc5a9; + border-color: #f78b53; opacity: 1; } #pass-strength-result.good { - background-color: #f5e6ab; - border-color: #f0c33c; + background-color: #ffe399; + border-color: #ffc733; opacity: 1; } #pass-strength-result.strong { - background-color: #b8e6bf; - border-color: #68de7c; + background-color: #c1e1b9; + border-color: #83c373; opacity: 1; } -.password-input-wrapper input { - font-family: Consolas, Monaco, monospace; -} - #pass1.short, #pass1-text.short { - border-color: #e65054; + border-color: #e35b5b; } #pass1.bad, #pass1-text.bad { - border-color: #f86368; + border-color: #f78b53; } #pass1.good, #pass1-text.good { - border-color: #f0c33c; + border-color: #ffc733; } #pass1.strong, #pass1-text.strong { - border-color: #68de7c; + border-color: #83c373; } .pw-weak { - display: none; + display:none; } .indicator-hint { padding-top: 8px; } -.wp-pwd [type="text"], -.wp-pwd [type="password"] { - margin-bottom: 0; - /* Same height as the buttons */ - min-height: 30px; -} - -/* Hide the Edge "reveal password" native button */ -.wp-pwd input::-ms-reveal { - display: none; -} - #pass1-text, .show-password #pass1 { display: none; } -#pass1-text::-ms-clear { - display: none; +.show-password #pass1-text +{ + display: inline-block; } -.show-password #pass1-text { - display: inline-block; +.form-table span.description.important { + font-size: 12px; } p.search-box { @@ -659,12 +548,18 @@ p.search-box { .tablenav .search-plugins input[name="s"], .tagsdiv .newtag { float: left; + height: 28px; margin: 0 4px 0 0; } .js.plugins-php .search-box .wp-filter-search { margin: 0; width: 280px; + font-size: 16px; + font-weight: 300; + line-height: 1.5; + padding: 3px 5px; + height: 32px; } input[type="text"].ui-autocomplete-loading, @@ -689,8 +584,8 @@ ul#add-to-blog-users { list-style: none; position: absolute; z-index: 10000; - border: 1px solid #4f94d4; - box-shadow: 0 1px 2px rgba(79, 148, 212, 0.8); + border: 1px solid #5b9dd9; + box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); background-color: #fff; } @@ -704,16 +599,13 @@ ul#add-to-blog-users { /* Colors for the wplink toolbar autocomplete. */ .ui-autocomplete .ui-state-focus { - background-color: #dcdcde; + background-color: #ddd; } /* Colors for the tags autocomplete. */ -.wp-tags-autocomplete .ui-state-focus, -.wp-tags-autocomplete [aria-selected="true"] { - background-color: #2271b1; +.wp-tags-autocomplete .ui-state-focus { + background-color: #0073aa; color: #fff; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; } /*------------------------------------------------------------------------------ @@ -743,7 +635,7 @@ ul#add-to-blog-users { .form-table th, .form-wrap label { - color: #1d2327; + color: #23282d; font-weight: 400; text-shadow: none; vertical-align: baseline; @@ -776,27 +668,17 @@ ul#add-to-blog-users { .form-table p.timezone-info { margin: 1em 0; - display: flex; - flex-direction: column; -} - -#local-time { - margin-top: 0.5em; } .form-table td fieldset label { - margin: 0.35em 0 0.5em !important; + margin: 0.25em 0 0.5em !important; display: inline-block; } -.form-table td fieldset p label { - margin-top: 0 !important; -} - .form-table td fieldset label, .form-table td fieldset p, .form-table td fieldset li { - line-height: 1.4; + line-height: 1.4em; } .form-table input.tog, @@ -856,7 +738,7 @@ table.form-table td .updated p { .color-option:hover, .color-option.selected { - background: #dcdcde; + background: #ddd; } .color-palette { @@ -874,38 +756,6 @@ table.form-table td .updated p { cursor: pointer; } -.create-application-password .form-field { - max-width: 25em; -} - -.create-application-password label { - font-weight: 600; -} - -.create-application-password p.submit { - margin-bottom: 0; - padding-bottom: 0; - display: block; -} - -#application-passwords-section .notice { - margin-top: 20px; - margin-bottom: 0; - word-wrap: break-word; -} - -.application-password-display input.code { - width: 19em; -} - -.auth-app-card.card { - max-width: 768px; -} - -.authorize-application-php .form-wrap p { - display: block; -} - /*------------------------------------------------------------------------------ 19.0 - Tools ------------------------------------------------------------------------------*/ @@ -937,10 +787,9 @@ table.form-table td .updated p { padding: 0.7em 2em 1em; min-width: 255px; max-width: 520px; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0,0,0,0.04); background: #fff; - box-sizing: border-box; } /* Press this styles */ @@ -972,10 +821,10 @@ table.form-table td .updated p { display: inline-block; position: relative; cursor: move; - color: #2c3338; - background: #dcdcde; + color: #32373c; + background: #e5e5e5; border-radius: 5px; - border: 1px solid #c3c4c7; + border: 1px solid #b4b9be; font-style: normal; line-height: 16px; font-size: 14px; @@ -1006,12 +855,12 @@ table.form-table td .updated p { .pressthis-bookmarklet span { display: inline-block; - margin: 0; - padding: 0 12px 8px 9px; + margin: 0px 0 0; + padding: 0px 12px 8px 9px; } .pressthis-bookmarklet span:before { - color: #787c82; + color: #72777c; font: normal 20px/1 dashicons; content: "\f157"; position: relative; @@ -1037,7 +886,7 @@ table.form-table td .updated p { .pressthis-js-toggle .dashicons { margin: 5px 8px 6px 7px; - color: #50575e; + color: #555d66; } /*------------------------------------------------------------------------------ @@ -1060,7 +909,6 @@ table.form-table td .updated p { .options-general-php input.small-text { width: 56px; - margin: -2px 0; } .options-general-php .spinner { @@ -1069,9 +917,7 @@ table.form-table td .updated p { } .settings-php .language-install-spinner, -.options-general-php .language-install-spinner, -.user-edit-php .language-install-spinner, -.profile-php .language-install-spinner { +.options-general-php .language-install-spinner { display: inline-block; float: none; margin: -3px 5px 0; @@ -1097,40 +943,9 @@ table.form-table td .updated p { font-style: italic; } -.form-table.permalink-structure .available-structure-tags { - margin-top: 8px; -} - -.form-table.permalink-structure .available-structure-tags ul { - display: flex; - flex-wrap: wrap; - margin: 8px 0 0; -} - .form-table.permalink-structure .available-structure-tags li { - margin: 6px 5px 0 0; -} - -.form-table.permalink-structure .available-structure-tags li:last-child { - margin-right: 0; -} - -.form-table.permalink-structure .structure-selection .row { - margin-bottom: 16px; -} - -.form-table.permalink-structure .structure-selection .row > div { - max-width: calc(100% - 24px); - display: inline-flex; - flex-direction: column; -} - -.form-table.permalink-structure .structure-selection .row label { - font-weight: 600; -} - -.form-table.permalink-structure .structure-selection .row p { - margin-top: 0; + float: left; + margin-right: 5px; } /*------------------------------------------------------------------------------ @@ -1163,12 +978,7 @@ table.form-table td .updated p { #search-users, #search-sites { - max-width: 60%; -} - -.configuration-rules-label { - font-weight: 600; - margin-bottom: 4px; + max-width: 100%; } /*------------------------------------------------------------------------------ @@ -1191,8 +1001,8 @@ table.form-table td .updated p { } #request-filesystem-credentials-title { - font-size: 1.3em; - margin: 1em 0; + font-size: 1.3em; + margin: 1em 0; } .request-filesystem-credentials-form legend { @@ -1271,7 +1081,7 @@ table.form-table td .updated p { } .request-filesystem-credentials-dialog .ftp-password em { - color: #8c8f94; + color: #888; } .request-filesystem-credentials-dialog label { @@ -1289,7 +1099,7 @@ table.form-table td .updated p { } .request-filesystem-credentials-form .notice { - margin: 0 0 20px; + margin: 0 0 20px 0; clear: both; } @@ -1300,12 +1110,9 @@ table.form-table td .updated p { margin-bottom: 1.3em; } -.tools-privacy-policy-page input.button { - margin: 0 1px 0 6px; -} - +.tools-privacy-policy-page input.button, .tools-privacy-policy-page select { - margin: 0 1px 0.5em 6px; + margin-left: 6px; } .tools-privacy-edit { @@ -1313,7 +1120,7 @@ table.form-table td .updated p { } .tools-privacy-policy-page span { - line-height: 2; + line-height: 2em; } .privacy_requests .column-email { @@ -1332,15 +1139,7 @@ table.form-table td .updated p { .privacy_requests tbody th { border-left: 4px solid #fff; background: #fff; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); -} - -.privacy_requests .row-actions { - color: #787c82; -} - -.privacy_requests .row-actions.processing { - position: static; + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .privacy_requests tbody .has-request-results th { @@ -1353,7 +1152,7 @@ table.form-table td .updated p { .privacy_requests tbody td { background: #fff; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .privacy_requests tbody .has-request-results td { @@ -1361,20 +1160,23 @@ table.form-table td .updated p { } .privacy_requests .next_steps .button { - word-wrap: break-word; - white-space: normal; + height: auto; + line-height: 1.5; + padding: 4px 10px; + word-break: break-all; + white-space: unset; } .privacy_requests .status-request-confirmed th, .privacy_requests .status-request-confirmed td { - background-color: #fff; - border-left-color: #72aee6; + background-color: #f7fcfe; + border-left-color: #00a0d2; } .privacy_requests .status-request-failed th, .privacy_requests .status-request-failed td { - background-color: #f6f7f7; - border-left-color: #d63638; + background-color: #fef7f1; + border-left-color: #d64d21; } .privacy_requests .export_personal_data_failed a { @@ -1382,18 +1184,18 @@ table.form-table td .updated p { } .status-label { - font-weight: 600; + font-weight: bold; } .status-label.status-request-pending { - font-weight: 400; + font-weight: normal; font-style: italic; - color: #646970; + color: #6c7781; } .status-label.status-request-failed { - color: #d63638; - font-weight: 600; + color: #aa0000; + font-weight: bold; } .wp-privacy-request-form { @@ -1404,7 +1206,15 @@ table.form-table td .updated p { margin: 1.5em 0; } +.wp-privacy-request-form label { + font-weight: bold; + line-height: 1.5; + padding-bottom: .5em; + display: block; +} + .wp-privacy-request-form input { + line-height: 1.5; margin: 0; } @@ -1412,20 +1222,20 @@ table.form-table td .updated p { display: inline-block; font: normal 20px/1 dashicons; margin: 3px 5px 0 -2px; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; vertical-align: top; } .email-personal-data--sending::before { - color: #d63638; + color: #f56e28; content: "\f463"; animation: rotation 2s infinite linear; } .email-personal-data--sent::before { - color: #68de7c; + color: #79ba49; content: "\f147"; } @@ -1433,33 +1243,28 @@ table.form-table td .updated p { /* =Media Queries -------------------------------------------------------------- */ -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { /* Input Elements */ textarea { -webkit-appearance: none; } input[type="text"], - input[type="password"], - input[type="date"], - input[type="datetime"], - input[type="datetime-local"], input[type="email"], - input[type="month"], - input[type="number"], input[type="search"], - input[type="tel"], - input[type="time"], - input[type="url"], - input[type="week"] { + input[type="password"], + input[type="number"] { -webkit-appearance: none; - padding: 3px 10px; - /* Only necessary for IE11 */ - min-height: 40px; + padding: 6px 10px; } - ::-webkit-datetime-edit { - line-height: 1.875; /* 30px */ + input[type="number"] { + height: 40px; + } + + input.code { + padding-bottom: 5px; + padding-top: 10px; } input[type="checkbox"], @@ -1467,6 +1272,7 @@ table.form-table td .updated p { .widefat thead td input[type="checkbox"], .widefat tfoot td input[type="checkbox"] { -webkit-appearance: none; + padding: 10px; } .widefat th input[type="checkbox"], @@ -1479,47 +1285,41 @@ table.form-table td .updated p { .widefat th input[type="checkbox"]:before, .widefat thead td input[type="checkbox"]:before, .widefat tfoot td input[type="checkbox"]:before { - width: 1.875rem; - height: 1.875rem; - margin: -0.1875rem -0.3125rem; + font: normal 30px/1 dashicons; + margin: -3px -5px; } input[type="radio"], input[type="checkbox"] { - height: 1.5625rem; - width: 1.5625rem; + height: 25px; + width: 25px; } .wp-admin p input[type="checkbox"], .wp-admin p input[type="radio"] { - margin-top: -0.1875rem; + margin-top: -3px; } input[type="radio"]:checked:before { vertical-align: middle; - width: 0.5625rem; - height: 0.5625rem; - margin: 0.4375rem; - line-height: 0.76190476; + width: 9px; + height: 9px; + margin: 7px; + line-height: 16px; } .wp-upload-form input[type="submit"] { margin-top: 10px; } - .wp-core-ui select, - .wp-admin .form-table select { - min-height: 40px; + #wpbody select { + height: 36px; font-size: 16px; - line-height: 1.625; /* 26px */ - padding: 5px 24px 5px 8px; } .wp-admin .button-cancel { - margin-bottom: 0; - padding: 2px 0; + padding: 0; font-size: 14px; - vertical-align: middle; } #adduser .form-field input, @@ -1569,6 +1369,9 @@ table.form-table td .updated p { .form-table span.description, #profile-page .form-table textarea { width: 100%; + font-size: 16px; + line-height: 1.5; + padding: 7px 10px; display: block; max-width: none; box-sizing: border-box; @@ -1579,6 +1382,10 @@ table.form-table td .updated p { margin: -30px 3px 0 0; } + #wpbody .form-table td select { + height: 40px; + } + input[type="text"].small-text, input[type="search"].small-text, input[type="password"].small-text, @@ -1592,10 +1399,6 @@ table.form-table td .updated p { margin: 0 3px; } - .form-table .regular-text ~ input[type="text"].small-text { - margin-top: 5px; - } - #pass-strength-result { width: 100%; box-sizing: border-box; @@ -1612,10 +1415,12 @@ table.form-table td .updated p { } p.search-box input[name="s"] { + height: auto; float: none; width: 100%; margin-bottom: 10px; vertical-align: middle; + -webkit-appearance: none; } p.search-box input[type="submit"] { @@ -1625,35 +1430,31 @@ table.form-table td .updated p { .form-table span.description { display: inline; padding: 4px 0 0; - line-height: 1.4; + line-height: 1.4em; font-size: 14px; } .form-table th { - padding: 10px 0 0; + padding-top: 10px; + padding-bottom: 0; border-bottom: 0; } .form-table td { margin-bottom: 0; - padding: 4px 0 6px; + padding-bottom: 6px; + padding-top: 4px; + padding-left: 0; } .form-table.permalink-structure td code { - display: inline-block; - } - - .form-table.permalink-structure .structure-selection { - margin-top: 8px; - } - - .form-table.permalink-structure .structure-selection .row > div { - max-width: calc(100% - 36px); - width: 100%; + margin-left: 32px; } .form-table.permalink-structure td input[type="text"] { + margin-left: 32px; margin-top: 4px; + width: 96%; } .form-table input.regular-text { @@ -1664,12 +1465,15 @@ table.form-table td .updated p { font-size: 14px; } - .background-position-control .button-group > label { - font-size: 0; + .form-table fieldset label { + display: block; } - .form-table fieldset label { + #utc-time, + #local-time { display: block; + float: none; + margin-top: 0.5em; } .form-field #domain { @@ -1681,65 +1485,33 @@ table.form-table td .updated p { position: relative; } - /* Needs higher specificity than normal input type text and password. */ - #profile-page .form-table #pass1 { - padding-right: 90px; + .wp-pwd [type="text"], + .wp-pwd [type="password"] { + padding-right: 40px; } .wp-pwd button.button { background: transparent; - border: 1px solid transparent; + border: none; box-shadow: none; line-height: 2; margin: 0; - padding: 5px 9px; + padding: 5px 10px; position: absolute; right: 0; top: 0; - width: 2.375rem; - height: 2.375rem; - min-width: 40px; - min-height: 40px; - } - - .wp-pwd button.wp-hide-pw { - right: 2.5rem; - } - - body.user-new-php .wp-pwd button.wp-hide-pw { - right: 0; } .wp-pwd button.button:hover, - .wp-pwd button.button:focus { - background: transparent; - } - + .wp-pwd button.button:focus, .wp-pwd button.button:active { background: transparent; - box-shadow: none; - transform: none; } .wp-pwd .button .text { display: none; } - .wp-pwd [type="text"], - .wp-pwd [type="password"] { - line-height: 2; - padding-right: 5rem; - } - - body.user-new-php .wp-pwd [type="text"], - body.user-new-php .wp-pwd [type="password"] { - padding-right: 2.5rem; - } - - .wp-cancel-pw .dashicons-no { - display: inline-block; - } - .options-general-php input[type="text"].small-text { max-width: 6.25em; margin: 0; @@ -1747,21 +1519,21 @@ table.form-table td .updated p { /* Privacy Policy settings screen */ .tools-privacy-policy-page form.wp-create-privacy-page { - margin-bottom: 1em; + margin-bottom: 1em; } - .tools-privacy-policy-page input#set-page, + .tools-privacy-policy-page input#set-page, .tools-privacy-policy-page select { margin: 10px 0 0; } .tools-privacy-policy-page .wp-create-privacy-page span { - display: block; - margin-bottom: 1em; + display: block; + margin-bottom: 1em; } .tools-privacy-policy-page .wp-create-privacy-page .button { - margin-left: 0; + margin-left: 0; } .wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column) { @@ -1772,16 +1544,6 @@ table.form-table td .updated p { .wp-list-table.privacy_requests.widefat thead td input { margin-left: 5px; } - - .wp-privacy-request-form-field input[type="text"] { - width: 100%; - margin-bottom: 10px; - vertical-align: middle; - } - - .regular-text { - max-width: 100%; - } } @media only screen and (max-width: 768px) { @@ -1794,12 +1556,18 @@ table.form-table td .updated p { } .form-wrap .form-field { - padding: 0; + padding:0; + } + + /* users */ + #profile-page .form-table textarea { + max-width: 400px; + width: auto; } } @media only screen and (max-height: 480px), screen and (max-width: 450px) { - /* Request Credentials / File Editor Warning */ + /* Request Credentials / File Editor Warning */ .request-filesystem-credentials-dialog .notification-dialog, .file-editor-warning .notification-dialog { width: 100%; diff --git a/wp-admin/css/forms.min.css b/wp-admin/css/forms.min.css index 3ee453d..b797d7b 100644 --- a/wp-admin/css/forms.min.css +++ b/wp-admin/css/forms.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -button,input,select,textarea{box-sizing:border-box;font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea{font-size:14px}textarea{overflow:auto;padding:2px 6px;line-height:1.42857143;resize:vertical}label{cursor:pointer}input,select{margin:0 1px}textarea.code{padding:4px 6px 1px}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #8c8f94;background-color:#fff;color:#2c3338}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{padding:0 8px;line-height:2;min-height:30px}::-webkit-datetime-edit{line-height:1.85714286}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}input[type=email],input[type=url]{direction:ltr}input[type=checkbox],input[type=radio]{border:1px solid #8c8f94;border-radius:4px;background:#fff;color:#50575e;clear:none;cursor:pointer;display:inline-block;line-height:0;height:1rem;margin:-.25rem .25rem 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:1rem;min-width:1rem;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#8c8f94}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#135e96}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-right:.25rem;line-height:.71428571}input[type=checkbox]:checked::before,input[type=radio]:checked::before{float:left;display:inline-block;vertical-align:middle;width:1rem;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked::before{content:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E");margin:-.1875rem 0 0 -.25rem;height:1.3125rem;width:1.3125rem}input[type=radio]:checked::before{content:"";border-radius:50%;width:.5rem;height:.5rem;margin:.1875rem;background-color:#3582c4;line-height:1.14285714}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#f0f0f1}::-webkit-input-placeholder{color:#646970}::-moz-placeholder{color:#646970;opacity:1}:-ms-input-placeholder{color:#646970}.form-invalid .form-required,.form-invalid .form-required:focus,.form-invalid.form-required input,.form-invalid.form-required input:focus,.form-invalid.form-required select,.form-invalid.form-required select:focus{border-color:#d63638!important;box-shadow:0 0 2px rgba(214,54,56,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:""}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:"\f534";font:normal 20px/1 dashicons;color:#d63638;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#646970}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(220,220,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(44,51,56,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-core-ui select{font-size:14px;line-height:2;color:#2c3338;border-color:#8c8f94;box-shadow:none;border-radius:3px;padding:0 24px 0 8px;min-height:30px;max-width:25rem;-webkit-appearance:none;background:#fff url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E') no-repeat right 5px top 55%;background-size:16px 16px;cursor:pointer;vertical-align:middle}.wp-core-ui select:hover{color:#2271b1}.wp-core-ui select:focus{border-color:#2271b1;color:#0a4b78;box-shadow:0 0 0 1px #2271b1}.wp-core-ui select:active{border-color:#8c8f94;box-shadow:none}.wp-core-ui select.disabled,.wp-core-ui select:disabled{color:#a7aaad;border-color:#dcdcde;background-color:#f6f7f7;background-image:url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23a0a5aa%22%2F%3E%3C%2Fsvg%3E');box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.wp-core-ui select:-moz-focusring{color:transparent;text-shadow:0 0 0 #0a4b78}.wp-core-ui select::-ms-value{background:0 0;color:#50575e}.wp-core-ui select:hover::-ms-value{color:#2271b1}.wp-core-ui select:focus::-ms-value{color:#0a4b78}.wp-core-ui select.disabled::-ms-value,.wp-core-ui select:disabled::-ms-value{color:#a7aaad}.wp-core-ui select::-ms-expand{display:none}.wp-admin .button-cancel{display:inline-block;min-height:28px;padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.meta-box-sortables input{vertical-align:middle}.misc-pub-post-status select{margin-top:0}.wp-core-ui select[multiple]{height:auto;padding-right:8px;background:#fff}.submit{padding:1.5em 0;margin:5px 0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:left;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:0 6px}label input.small-text{margin-top:-4px}input[type=number].small-text{width:65px;padding-right:0}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px;padding-right:0}#doaction,#doaction2,#post-query-submit{margin:0 8px 0 0}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:left;margin-right:6px;max-width:12.5rem}#timezone_string option{margin-left:1em}.wp-cancel-pw>.dashicons,.wp-hide-pw>.dashicons{position:relative;top:3px;width:1.25rem;height:1.25rem;top:.25rem;font-size:20px}.wp-cancel-pw .dashicons-no{display:none}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}.wp-generate-pw{margin-top:1em}.wp-pwd{margin-top:1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#f0f0f1;border:1px solid #dcdcde;color:#1d2327;margin:-1px 1px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#ffabaf;border-color:#e65054;opacity:1}#pass-strength-result.bad{background-color:#facfd2;border-color:#f86368;opacity:1}#pass-strength-result.good{background-color:#f5e6ab;border-color:#f0c33c;opacity:1}#pass-strength-result.strong{background-color:#b8e6bf;border-color:#68de7c;opacity:1}.password-input-wrapper input{font-family:Consolas,Monaco,monospace}#pass1-text.short,#pass1.short{border-color:#e65054}#pass1-text.bad,#pass1.bad{border-color:#f86368}#pass1-text.good,#pass1.good{border-color:#f0c33c}#pass1-text.strong,#pass1.strong{border-color:#68de7c}.pw-weak{display:none}.indicator-hint{padding-top:8px}.wp-pwd [type=password],.wp-pwd [type=text]{margin-bottom:0;min-height:30px}.wp-pwd input::-ms-reveal{display:none}#pass1-text,.show-password #pass1{display:none}#pass1-text::-ms-clear{display:none}.show-password #pass1-text{display:inline-block}p.search-box{float:right;margin:0}.network-admin.themes-php p.search-box{clear:left}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;margin:0 4px 0 0}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #4f94d4;box-shadow:0 1px 2px rgba(79,148,212,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:left;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#dcdcde}.wp-tags-autocomplete .ui-state-focus,.wp-tags-autocomplete [aria-selected=true]{background-color:#2271b1;color:#fff;outline:2px solid transparent}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#1d2327;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 10px 20px 0;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0;display:flex;flex-direction:column}#local-time{margin-top:.5em}.form-table td fieldset label{margin:.35em 0 .5em!important;display:inline-block}.form-table td fieldset p label{margin-top:0!important}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#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}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#dcdcde}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.create-application-password .form-field{max-width:25em}.create-application-password label{font-weight:600}.create-application-password p.submit{margin-bottom:0;padding-bottom:0;display:block}#application-passwords-section .notice{margin-top:20px;margin-bottom:0;word-wrap:break-word}.application-password-display input.code{width:19em}.auth-app-card.card{max-width:768px}.authorize-application-php .form-wrap p{display:block}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;box-sizing:border-box}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#2c3338;background:#dcdcde;border-radius:5px;border:1px solid #c3c4c7;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-bookmarklet span:before{color:#787c82;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#50575e}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px;margin:-2px 0}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.profile-php .language-install-spinner,.settings-php .language-install-spinner,.user-edit-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.options-general-php #login_custom_image-description{margin-bottom:6px}.options-general-php #login_custom_image-img{max-width:120px;max-height:120px}.options-general-php .wrap .login_custom_image-notice{margin:3px 0 3px 24px;padding:3px 6px;cursor:default;color:#666;font-style:italic}.form-table.permalink-structure .available-structure-tags{margin-top:8px}.form-table.permalink-structure .available-structure-tags ul{display:flex;flex-wrap:wrap;margin:8px 0 0}.form-table.permalink-structure .available-structure-tags li{margin:6px 5px 0 0}.form-table.permalink-structure .available-structure-tags li:last-child{margin-right:0}.form-table.permalink-structure .structure-selection .row{margin-bottom:16px}.form-table.permalink-structure .structure-selection .row>div{max-width:calc(100% - 24px);display:inline-flex;flex-direction:column}.form-table.permalink-structure .structure-selection .row label{font-weight:600}.form-table.permalink-structure .structure-selection .row p{margin-top:0}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:60%}.configuration-rules-label{font-weight:600;margin-bottom:4px}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#8c8f94}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button{margin:0 1px 0 6px}.tools-privacy-policy-page select{margin:0 1px .5em 6px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-left:4px solid #fff}.privacy_requests tbody th{border-left:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests .row-actions{color:#787c82}.privacy_requests .row-actions.processing{position:static}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{word-wrap:break-word;white-space:normal}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#fff;border-left-color:#72aee6}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#f6f7f7;border-left-color:#d63638}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:600}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#646970}.status-label.status-request-failed{color:#d63638;font-weight:600}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form input{margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px 5px 0 -2px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#d63638;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#68de7c;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:3px 10px;min-height:40px}::-webkit-datetime-edit{line-height:1.875}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{width:1.875rem;height:1.875rem;margin:-.1875rem -.3125rem}input[type=checkbox],input[type=radio]{height:1.5625rem;width:1.5625rem}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-.1875rem}input[type=radio]:checked:before{vertical-align:middle;width:.5625rem;height:.5625rem;margin:.4375rem;line-height:.76190476}.wp-upload-form input[type=submit]{margin-top:10px}.wp-admin .form-table select,.wp-core-ui select{min-height:40px;font-size:16px;line-height:1.625;padding:5px 24px 5px 8px}.wp-admin .button-cancel{margin-bottom:0;padding:2px 0;font-size:14px;vertical-align:middle}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}.form-table .regular-text~input[type=text].small-text{margin-top:5px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{float:none;width:100%;margin-bottom:10px;vertical-align:middle}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4;font-size:14px}.form-table th{padding:10px 0 0;border-bottom:0}.form-table td{margin-bottom:0;padding:4px 0 6px}.form-table.permalink-structure td code{display:inline-block}.form-table.permalink-structure .structure-selection{margin-top:8px}.form-table.permalink-structure .structure-selection .row>div{max-width:calc(100% - 36px);width:100%}.form-table.permalink-structure td input[type=text]{margin-top:4px}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.background-position-control .button-group>label{font-size:0}.form-table fieldset label{display:block}.form-field #domain{max-width:none}.wp-pwd{position:relative}#profile-page .form-table #pass1{padding-right:90px}.wp-pwd button.button{background:0 0;border:1px solid transparent;box-shadow:none;line-height:2;margin:0;padding:5px 9px;position:absolute;right:0;top:0;width:2.375rem;height:2.375rem;min-width:40px;min-height:40px}.wp-pwd button.wp-hide-pw{right:2.5rem}body.user-new-php .wp-pwd button.wp-hide-pw{right:0}.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd button.button:active{background:0 0;box-shadow:none;transform:none}.wp-pwd .button .text{display:none}.wp-pwd [type=password],.wp-pwd [type=text]{line-height:2;padding-right:5rem}body.user-new-php .wp-pwd [type=password],body.user-new-php .wp-pwd [type=text]{padding-right:2.5rem}.wp-cancel-pw .dashicons-no{display:inline-block}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-left:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-left:5px}.wp-privacy-request-form-field input[type=text]{width:100%;margin-bottom:10px;vertical-align:middle}.regular-text{max-width:100%}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(359deg)}} \ No newline at end of file +input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;transition:50ms border-color ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:1}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-right:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:left;display:inline-block;vertical-align:middle;width:16px;font:normal 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px 0 0 -4px;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;padding:3px 5px;border-radius:0}textarea{overflow:auto;padding:2px 6px;line-height:1.4;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px 6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#dc3232;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:normal 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:left;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.pw-weak{display:none}.indicator-hint{padding-top:8px}#pass1-text,.show-password #pass1{display:none}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:right;margin:0}.network-admin.themes-php p.search-box{clear:left}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:28px;margin:0 4px 0 0}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:left;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 10px 20px 0;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#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}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0 0 0;padding:0 12px 8px 9px}.pressthis-bookmarklet span:before{color:#72777c;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.options-general-php #login_custom_image-description{margin-bottom:6px}.options-general-php #login_custom_image-img{max-width:120px;max-height:120px}.options-general-php .wrap .login_custom_image-notice{margin:3px 0 3px 24px;padding:3px 6px;cursor:default;color:#666;font-style:italic}.form-table.permalink-structure .available-structure-tags li{float:left;margin-right:5px}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px 0;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button,.tools-privacy-policy-page select{margin-left:6px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2em}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-left:4px solid #fff}.privacy_requests tbody th{border-left:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{height:auto;line-height:1.5;padding:4px 10px;word-break:break-all;white-space:unset}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#f7fcfe;border-left-color:#00a0d2}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#fef7f1;border-left-color:#d64d21}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:700}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#6c7781}.status-label.status-request-failed{color:#a00;font-weight:700}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form label{font-weight:700;line-height:1.5;padding-bottom:.5em;display:block}.wp-privacy-request-form input{line-height:1.5;margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px 5px 0 -2px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#f56e28;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#79ba49;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-left:0}.form-table.permalink-structure td code{margin-left:32px}.form-table.permalink-structure td input[type=text]{margin-left:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=password],.wp-pwd [type=text]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;right:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-left:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-left:5px}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(359deg)}} \ No newline at end of file diff --git a/wp-admin/css/ie-rtl.css b/wp-admin/css/ie-rtl.css new file mode 100644 index 0000000..1e748c2 --- /dev/null +++ b/wp-admin/css/ie-rtl.css @@ -0,0 +1,770 @@ +/* Fixes for IE 7 bugs */ + +#dashboard-widgets form .input-text-wrap input, +#dashboard-widgets form .textarea-wrap textarea { + width: 99%; +} + +#dashboard-widgets form #title { + width: 98%; +} + +#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: left; + width: 50.5%; +} + +#dashboard-widgets #postbox-container-3 .empty-container, +#dashboard-widgets #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; +} + +.wp-editor-wrap .wp-editor-tools, +.wp-editor-wrap .wp-switch-editor, +.wp-editor-wrap .wp-editor-tabs, +.wp-editor-wrap .wp-editor-container { + zoom: 100%; +} + +.wp-editor-wrap .wp-editor-container textarea.wp-editor-area { + width: 97%; +} + +#post-body.columns-2 #postbox-container-1 { + padding-right: 19px; +} + +.welcome-panel .wp-badge { + position: absolute; +} + +.welcome-panel .welcome-panel-column:first-child { + width: 35%; +} + +#adminmenuback { + right: 0; + background-image: none; +} + +#adminmenuwrap { + position: static; +} + +#adminmenu { + position: relative; +} + +#adminmenu, +#adminmenu a { + cursor: pointer; +} + +#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 { + right: 110px; +} + +#adminmenu .wp-submenu ul { + margin: 0; +} + +.folded #wpcontent, +.folded #wpfooter { + margin-right: 170px; +} + +.folded #adminmenuback, +.folded #adminmenuwrap, +.folded #adminmenu, +.folded #adminmenu li.menu-top { + width: 150px; +} + +.folded #adminmenu .wp-submenu { + border-top-color: transparent; +} + +.folded #adminmenu .wp-menu-name { + display: block; +} + +.folded #adminmenu .wp-submenu.sub-open, +.folded #adminmenu .opensub .wp-submenu { + right: 110px; +} + +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + top: -1px; + position: relative; +} + +.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + background-color: transparent; +} + +#adminmenu .wp-submenu .wp-submenu-head { + border-top-color: #ddd; +} + +.folded #adminmenu .wp-submenu ul { + margin-right: 5px; +} + +#adminmenu li.menu-top { + margin-bottom: -2px; +} + +#adminmenu .wp-menu-arrow { + display: none !important; +} + +.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; +} + +#adminmenu li.wp-has-current-submenu .wp-submenu { + right: -40px; +} + +#adminmenu .wp-menu-image { + display: none !important; +} + +#adminmenu a.menu-top .wp-menu-name { + padding-right: 8px; +} + +#collapse-menu { + line-height: 23px; +} + +#wpadminbar .ab-comments-icon { + padding-top: 7px; +} + + +.theme-browser .theme { + width: 30%; + margin: 0 0 4% 3%; + cursor: auto; +} + +.theme-browser .theme:hover, +.theme-browser .theme:focus { + cursor: auto; +} + +.theme-browser .theme .theme-screenshot { + height: 180px; +} + +.theme-browser .theme .theme-actions { + position: static; + background-color: #e8e8e8; +} + +.theme-browser .theme .more-details { + display: none; +} + +.plugins td, +.plugins th { + border-top: 1px solid #ddd; +} + +table.fixed th, +table.fixed td { + border-top: 1px solid #ddd; +} + +#wpbody-content input.button, +#wpbody-content input.button-primary { + overflow: visible; +} + +#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 #ddd; +} + +#wpbody-content .postbox .hndle { + margin-bottom: -1px; +} + +.major-publishing-actions, +.wp-submenu, +.wp-submenu li, +#template, +#template div, +#editcat, +#addcat { + zoom: 100%; +} + +.wp-menu-arrow { + height: 28px; +} + +.submitbox { + margin-top: 10px; +} + +/* Inline Editor */ +#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 .submit { + zoom: 100%; +} + +.inline-edit-row fieldset label span.title { + display: block; + float: right; + width: 5em; +} + +.inline-edit-row fieldset label span.input-text-wrap { + margin-right: 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; +} +/* end Inline Editor */ + +#titlediv #title { + width: 98%; +} + +.button, +input[type="reset"], +input[type="button"], +input[type="submit"] { + padding: 0 8px; + line-height: 20px; + height: auto; +} + +.button.button-large, +input[type="reset"].button-large, +input[type="button"].button-large, +input[type="submit"].button-large { + padding: 0 10px; + line-height: 24px; + height: auto; +} + +.button.button-small, +input[type="reset"].button-small, +input[type="button"].button-small, +input[type="submit"].button-small { + padding: 0 6px; + line-height: 16px; + height: auto; +} + +a.button { + margin: 1px; + padding: 1px 9px 2px; +} + +a.button.button-large { + padding: 1px 11px 2px; +} + +a.button.button-small { + padding: 1px 7px 2px; +} + +#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-control-actions, +.tagchecklist, +#col-container, +#col-left, +#col-right, +.fileedit-sub { + display: block; + zoom: 100%; +} + +p.search-box { + position: static; + float: left; + margin: -3px 0 4px; +} + +#widget-list .widget { + display: inline; +} + +#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; +} + +#poststuff .inside #parent_id, +#poststuff .inside #page_template, +.inline-edit-row #post_parent, +.inline-edit-row select[name="page_template"] { + width: 250px; +} + +#submitdiv input, +#submitdiv select, +#submitdiv a.button { + position: relative; +} + +#bh { + margin: 7px 0 0 10px; + float: left; +} + +/* without this dashboard widgets appear in one column for some screen widths */ +div#dashboard-widgets { + padding-left: 1px; +} + +.tagchecklist > li, .tagchecklist .ntdelbutton { + display: inline-block; + display: block; +} + +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + outline: 1px solid #5b9dd9; +} + +.tablenav .button, +.nav .button { + 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; +} + +.subsubsub li { + display: inline; +} + +a.post-state-format { + text-indent: 0; + line-height: 0; + font-size: 0; +} + +table.ie-fixed { + table-layout: fixed; +} + +.widefat tr, +.widefat th, +.widefat thead td, +.widefat tfoot td { + margin-bottom: 0; + border-spacing: 0; +} + +.widefat th input, +.widefat thead td input, +.widefat tfoot td input { + margin: 0 5px 0 0; +} + +.widefat thead .check-column, +.widefat tfoot .check-column { + padding-top: 6px; +} + +.widefat tbody th.check-column, +.media.widefat tbody th.check-column { + padding: 4px 0 0; +} + +.widefat { + empty-cells: show; + border-collapse: collapse; +} + +.tablenav a.button { + 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; +} + +.inactive-sidebar .widget { + display: block; + float: right; +} + +#wpcontent .button-primary-disabled { + color: #9FD0D5; + background: #298CBA; +} + +#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; +} + +.available-theme { + display: inline; +} + +.available-theme ul { + margin: 0; +} + +.available-theme .action-links li { + padding-left: 7px; + margin-left: 7px; +} + +.about-wrap .three-col.about-updates .col-2 { + width: 15%; +} + +.about-wrap .about-password-meter input { + width: 98%; +} + +.revisions-tickmarks, +.revisions-tooltip { + display: none !important; +} + +.revisions.pinned .revisions-controls { + position: relative; +} + +input[type="password"], +.login form .input { + font-family: sans-serif; +} + +/* TinyMCE icons */ +.mce-btn i.mce-i-bold, +.mce-btn i.mce-i-italic, +.mce-btn i.mce-i-bullist, +.mce-btn i.mce-i-numlist, +.mce-btn i.mce-i-blockquote, +.mce-btn i.mce-i-alignleft, +.mce-btn i.mce-i-aligncenter, +.mce-btn i.mce-i-alignright, +.mce-btn i.mce-i-link, +.mce-btn i.mce-i-unlink, +.mce-btn i.mce-i-wp_more, +.mce-btn i.mce-i-strikethrough, +.mce-btn i.mce-i-spellchecker, +.mce-btn i.mce-i-fullscreen, +.mce-btn i.mce-i-wp_fullscreen, +.mce-btn i.mce-i-wp_adv, +.mce-btn i.mce-i-underline, +.mce-btn i.mce-i-alignjustify, +.mce-btn i.mce-i-forecolor, +.mce-btn i.mce-i-pastetext, +.mce-btn i.mce-i-pasteword, +.mce-btn i.mce-i-removeformat, +.mce-btn i.mce-i-charmap, +.mce-btn i.mce-i-outdent, +.mce-btn i.mce-i-indent, +.mce-btn i.mce-i-undo, +.mce-btn i.mce-i-redo, +.mce-btn i.mce-i-help, +.mce-btn i.mce-i-wp_help, +.mce-btn i.mce-i-wp-media-library, +.mce-btn i.mce-i-ltr, +.mce-btn i.mce-i-wp_page, +.mce-btn i.mce-i-hr, +.mce-close { + font-family: 'tinymce', Arial; + font-style: normal; + font-weight: 400; + font-variant: normal; + font-size: 16px; + margin-right: 0; + padding-left: 0; +} + +.mce-btn i.mce-i-wp_fullscreen, +.qt-fullscreen { + -ie7-icon: '\e023'; +} + +.mce-btn i.mce-i-wp_more, +.mce-btn i.mce-i-wp_page { + -ie7-icon: '\e027'; +} + +.mce-btn i.mce-i-wp_adv { + background-color: #a0a5aa; +} + +.mce-btn i.mce-i-help, +.mce-btn i.mce-i-wp_help { + -ie7-icon: '\e016'; +} + + +/* IE6 leftovers */ +* 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-right: 0; +} + +* html .stuffbox, +* html .stuffbox input, +* html .stuffbox textarea { + border: 1px solid #ddd; +} + +* html div.widget-liquid-left { + width: 99%; +} + +* html .widgets-sortables { + height: 50px; +} + +* html a#content_resize { + left: -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 #ddd; +} + +* 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-right: -80px; +} + +* html .folded #adminmenu { + margin-right: -22px; +} + +* html #wpcontent #adminmenu li.menu-top { + display: inline; + padding: 0; + margin: 0; +} + +* html #wpfooter { + margin: 0; +} + +* html #adminmenu div.wp-menu-image { + height: 29px; +} diff --git a/wp-admin/css/ie-rtl.min.css b/wp-admin/css/ie-rtl.min.css new file mode 100644 index 0000000..896a31f --- /dev/null +++ b/wp-admin/css/ie-rtl.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}#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:left;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp-editor-tabs,.wp-editor-wrap .wp-editor-tools,.wp-editor-wrap .wp-switch-editor{zoom:100%}.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-right:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column:first-child{width:35%}#adminmenuback{right:0;background-image:none}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu,#adminmenu a{cursor:pointer}#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{right:110px}#adminmenu .wp-submenu ul{margin:0}.folded #wpcontent,.folded #wpfooter{margin-right:170px}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:150px}.folded #adminmenu .wp-submenu{border-top-color:transparent}.folded #adminmenu .wp-menu-name{display:block}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{right:110px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:-1px;position:relative}.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:transparent}#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#ddd}.folded #adminmenu .wp-submenu ul{margin-right:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu .wp-menu-arrow{display:none!important}.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}#adminmenu li.wp-has-current-submenu .wp-submenu{right:-40px}#adminmenu .wp-menu-image{display:none!important}#adminmenu a.menu-top .wp-menu-name{padding-right:8px}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}.theme-browser .theme{width:30%;margin:0 0 4% 3%;cursor:auto}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:auto}.theme-browser .theme .theme-screenshot{height:180px}.theme-browser .theme .theme-actions{position:static;background-color:#e8e8e8}.theme-browser .theme .more-details{display:none}.plugins td,.plugins th{border-top:1px solid #ddd}table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary{overflow:visible}#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 #ddd}#wpbody-content .postbox .hndle{margin-bottom:-1px}#addcat,#editcat,#template,#template div,.major-publishing-actions,.wp-submenu,.wp-submenu li{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 .submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:right;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-right: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%}.button,input[type=button],input[type=reset],input[type=submit]{padding:0 8px;line-height:20px;height:auto}.button.button-large,input[type=button].button-large,input[type=reset].button-large,input[type=submit].button-large{padding:0 10px;line-height:24px;height:auto}.button.button-small,input[type=button].button-small,input[type=reset].button-small,input[type=submit].button-small{padding:0 6px;line-height:16px;height:auto}a.button{margin:1px;padding:1px 9px 2px}a.button.button-large{padding:1px 11px 2px}a.button.button-small{padding:1px 7px 2px}#screen-options-wrap{overflow:hidden}#col-container,#col-left,#col-right,#dragHelper,#editorcontainer,#post-body,#post-status-info,#postdiv,#postdivrich,#poststuff,#the-comment-list .comment-item,#titlediv,#widgets-left,#wpwrap,#wrap,.fileedit-sub,.metabox-holder,.tablenav,.tagchecklist,.widget .widget-top,.widget-control-actions,.widget-liquid-left,.widget-liquid-right,.widgets-sortables{display:block;zoom:100%}p.search-box{position:static;float:left;margin:-3px 0 4px}#widget-list .widget{display:inline}#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}#poststuff .inside #page_template,#poststuff .inside #parent_id,.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{width:250px}#submitdiv a.button,#submitdiv input,#submitdiv select{position:relative}#bh{margin:7px 0 0 10px;float:left}div#dashboard-widgets{padding-left:1px}.tagchecklist .ntdelbutton,.tagchecklist>li{display:inline-block;display:block}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{outline:1px solid #5b9dd9}.nav .button,.tablenav .button{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}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 5px 0 0}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button{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}.inactive-sidebar .widget,.widget-liquid-right .widget{position:relative}.inactive-sidebar .widget{display:block;float:right}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#the-comment-list .unapproved td,#the-comment-list .unapproved tr{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}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-left:7px;margin-left:7px}.about-wrap .three-col.about-updates .col-2{width:15%}.about-wrap .about-password-meter input{width:98%}.revisions-tickmarks,.revisions-tooltip{display:none!important}.revisions.pinned .revisions-controls{position:relative}.login form .input,input[type=password]{font-family:sans-serif}.mce-btn i.mce-i-aligncenter,.mce-btn i.mce-i-alignjustify,.mce-btn i.mce-i-alignleft,.mce-btn i.mce-i-alignright,.mce-btn i.mce-i-blockquote,.mce-btn i.mce-i-bold,.mce-btn i.mce-i-bullist,.mce-btn i.mce-i-charmap,.mce-btn i.mce-i-forecolor,.mce-btn i.mce-i-fullscreen,.mce-btn i.mce-i-help,.mce-btn i.mce-i-hr,.mce-btn i.mce-i-indent,.mce-btn i.mce-i-italic,.mce-btn i.mce-i-link,.mce-btn i.mce-i-ltr,.mce-btn i.mce-i-numlist,.mce-btn i.mce-i-outdent,.mce-btn i.mce-i-pastetext,.mce-btn i.mce-i-pasteword,.mce-btn i.mce-i-redo,.mce-btn i.mce-i-removeformat,.mce-btn i.mce-i-spellchecker,.mce-btn i.mce-i-strikethrough,.mce-btn i.mce-i-underline,.mce-btn i.mce-i-undo,.mce-btn i.mce-i-unlink,.mce-btn i.mce-i-wp-media-library,.mce-btn i.mce-i-wp_adv,.mce-btn i.mce-i-wp_fullscreen,.mce-btn i.mce-i-wp_help,.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page,.mce-close{font-family:tinymce,Arial;font-style:normal;font-weight:400;font-variant:normal;font-size:16px;margin-right:0;padding-left:0}.mce-btn i.mce-i-wp_fullscreen,.qt-fullscreen{-ie7-icon:'\e023'}.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page{-ie7-icon:'\e027'}.mce-btn i.mce-i-wp_adv{background-color:#a0a5aa}.mce-btn i.mce-i-help,.mce-btn i.mce-i-wp_help{-ie7-icon:'\e016'}* 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-right:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #ddd}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{left:-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 #ddd}* 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-right:-80px}* html .folded #adminmenu{margin-right:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #wpfooter{margin:0}* html #adminmenu div.wp-menu-image{height:29px} \ No newline at end of file diff --git a/wp-admin/css/ie.css b/wp-admin/css/ie.css new file mode 100644 index 0000000..e3dc913 --- /dev/null +++ b/wp-admin/css/ie.css @@ -0,0 +1,770 @@ +/* Fixes for IE 7 bugs */ + +#dashboard-widgets form .input-text-wrap input, +#dashboard-widgets form .textarea-wrap textarea { + width: 99%; +} + +#dashboard-widgets form #title { + width: 98%; +} + +#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 #postbox-container-3 .empty-container, +#dashboard-widgets #postbox-container-4 .empty-container { + border: 0 none; + height: 0; + min-height: 0; +} + +.wp-editor-wrap .wp-editor-tools, +.wp-editor-wrap .wp-switch-editor, +.wp-editor-wrap .wp-editor-tabs, +.wp-editor-wrap .wp-editor-container { + zoom: 100%; +} + +.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:first-child { + width: 35%; +} + +#adminmenuback { + left: 0; + background-image: none; +} + +#adminmenuwrap { + position: static; +} + +#adminmenu { + position: relative; +} + +#adminmenu, +#adminmenu a { + cursor: pointer; +} + +#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 { + left: 110px; +} + +#adminmenu .wp-submenu ul { + margin: 0; +} + +.folded #wpcontent, +.folded #wpfooter { + margin-left: 170px; +} + +.folded #adminmenuback, +.folded #adminmenuwrap, +.folded #adminmenu, +.folded #adminmenu li.menu-top { + width: 150px; +} + +.folded #adminmenu .wp-submenu { + border-top-color: transparent; +} + +.folded #adminmenu .wp-menu-name { + display: block; +} + +.folded #adminmenu .wp-submenu.sub-open, +.folded #adminmenu .opensub .wp-submenu { + left: 110px; +} + +.folded #adminmenu a.wp-has-current-submenu:focus + .wp-submenu, +.folded #adminmenu .wp-has-current-submenu .wp-submenu { + top: -1px; + position: relative; +} + +.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { + background-color: transparent; +} + +#adminmenu .wp-submenu .wp-submenu-head { + border-top-color: #ddd; +} + +.folded #adminmenu .wp-submenu ul { + margin-left: 5px; +} + +#adminmenu li.menu-top { + margin-bottom: -2px; +} + +#adminmenu .wp-menu-arrow { + display: none !important; +} + +.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; +} + +#adminmenu li.wp-has-current-submenu .wp-submenu { + left: -40px; +} + +#adminmenu .wp-menu-image { + display: none !important; +} + +#adminmenu a.menu-top .wp-menu-name { + padding-left: 8px; +} + +#collapse-menu { + line-height: 23px; +} + +#wpadminbar .ab-comments-icon { + padding-top: 7px; +} + + +.theme-browser .theme { + width: 30%; + margin: 0 3% 4% 0; + cursor: auto; +} + +.theme-browser .theme:hover, +.theme-browser .theme:focus { + cursor: auto; +} + +.theme-browser .theme .theme-screenshot { + height: 180px; +} + +.theme-browser .theme .theme-actions { + position: static; + background-color: #e8e8e8; +} + +.theme-browser .theme .more-details { + display: none; +} + +.plugins td, +.plugins th { + border-top: 1px solid #ddd; +} + +table.fixed th, +table.fixed td { + border-top: 1px solid #ddd; +} + +#wpbody-content input.button, +#wpbody-content input.button-primary { + overflow: visible; +} + +#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 #ddd; +} + +#wpbody-content .postbox .hndle { + margin-bottom: -1px; +} + +.major-publishing-actions, +.wp-submenu, +.wp-submenu li, +#template, +#template div, +#editcat, +#addcat { + zoom: 100%; +} + +.wp-menu-arrow { + height: 28px; +} + +.submitbox { + margin-top: 10px; +} + +/* Inline Editor */ +#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 .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; +} +/* end Inline Editor */ + +#titlediv #title { + width: 98%; +} + +.button, +input[type="reset"], +input[type="button"], +input[type="submit"] { + padding: 0 8px; + line-height: 20px; + height: auto; +} + +.button.button-large, +input[type="reset"].button-large, +input[type="button"].button-large, +input[type="submit"].button-large { + padding: 0 10px; + line-height: 24px; + height: auto; +} + +.button.button-small, +input[type="reset"].button-small, +input[type="button"].button-small, +input[type="submit"].button-small { + padding: 0 6px; + line-height: 16px; + height: auto; +} + +a.button { + margin: 1px; + padding: 1px 9px 2px; +} + +a.button.button-large { + padding: 1px 11px 2px; +} + +a.button.button-small { + padding: 1px 7px 2px; +} + +#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-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; +} + +#widget-list .widget { + display: inline; +} + +#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; +} + +#poststuff .inside #parent_id, +#poststuff .inside #page_template, +.inline-edit-row #post_parent, +.inline-edit-row select[name="page_template"] { + width: 250px; +} + +#submitdiv input, +#submitdiv select, +#submitdiv a.button { + position: relative; +} + +#bh { + margin: 7px 10px 0 0; + float: right; +} + +/* without this dashboard widgets appear in one column for some screen widths */ +div#dashboard-widgets { + padding-right: 1px; +} + +.tagchecklist > li, .tagchecklist .ntdelbutton { + display: inline-block; + display: block; +} + +.tagchecklist .ntdelbutton:focus .remove-tag-icon:before { + outline: 1px solid #5b9dd9; +} + +.tablenav .button, +.nav .button { + 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; +} + +.subsubsub li { + display: inline; +} + +a.post-state-format { + text-indent: 0; + line-height: 0; + font-size: 0; +} + +table.ie-fixed { + table-layout: fixed; +} + +.widefat tr, +.widefat th, +.widefat thead td, +.widefat tfoot td { + margin-bottom: 0; + border-spacing: 0; +} + +.widefat th input, +.widefat thead td input, +.widefat tfoot td input { + margin: 0 0 0 5px; +} + +.widefat thead .check-column, +.widefat tfoot .check-column { + padding-top: 6px; +} + +.widefat tbody th.check-column, +.media.widefat tbody th.check-column { + padding: 4px 0 0; +} + +.widefat { + empty-cells: show; + border-collapse: collapse; +} + +.tablenav a.button { + 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; +} + +.inactive-sidebar .widget { + display: block; + float: left; +} + +#wpcontent .button-primary-disabled { + color: #9FD0D5; + background: #298CBA; +} + +#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; +} + +.available-theme { + display: inline; +} + +.available-theme ul { + margin: 0; +} + +.available-theme .action-links li { + padding-right: 7px; + margin-right: 7px; +} + +.about-wrap .three-col.about-updates .col-2 { + width: 15%; +} + +.about-wrap .about-password-meter input { + width: 98%; +} + +.revisions-tickmarks, +.revisions-tooltip { + display: none !important; +} + +.revisions.pinned .revisions-controls { + position: relative; +} + +input[type="password"], +.login form .input { + font-family: sans-serif; +} + +/* TinyMCE icons */ +.mce-btn i.mce-i-bold, +.mce-btn i.mce-i-italic, +.mce-btn i.mce-i-bullist, +.mce-btn i.mce-i-numlist, +.mce-btn i.mce-i-blockquote, +.mce-btn i.mce-i-alignleft, +.mce-btn i.mce-i-aligncenter, +.mce-btn i.mce-i-alignright, +.mce-btn i.mce-i-link, +.mce-btn i.mce-i-unlink, +.mce-btn i.mce-i-wp_more, +.mce-btn i.mce-i-strikethrough, +.mce-btn i.mce-i-spellchecker, +.mce-btn i.mce-i-fullscreen, +.mce-btn i.mce-i-wp_fullscreen, +.mce-btn i.mce-i-wp_adv, +.mce-btn i.mce-i-underline, +.mce-btn i.mce-i-alignjustify, +.mce-btn i.mce-i-forecolor, +.mce-btn i.mce-i-pastetext, +.mce-btn i.mce-i-pasteword, +.mce-btn i.mce-i-removeformat, +.mce-btn i.mce-i-charmap, +.mce-btn i.mce-i-outdent, +.mce-btn i.mce-i-indent, +.mce-btn i.mce-i-undo, +.mce-btn i.mce-i-redo, +.mce-btn i.mce-i-help, +.mce-btn i.mce-i-wp_help, +.mce-btn i.mce-i-wp-media-library, +.mce-btn i.mce-i-ltr, +.mce-btn i.mce-i-wp_page, +.mce-btn i.mce-i-hr, +.mce-close { + font-family: 'tinymce', Arial; + font-style: normal; + font-weight: 400; + font-variant: normal; + font-size: 16px; + margin-left: 0; + padding-right: 0; +} + +.mce-btn i.mce-i-wp_fullscreen, +.qt-fullscreen { + -ie7-icon: '\e023'; +} + +.mce-btn i.mce-i-wp_more, +.mce-btn i.mce-i-wp_page { + -ie7-icon: '\e027'; +} + +.mce-btn i.mce-i-wp_adv { + background-color: #a0a5aa; +} + +.mce-btn i.mce-i-help, +.mce-btn i.mce-i-wp_help { + -ie7-icon: '\e016'; +} + + +/* IE6 leftovers */ +* 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 #ddd; +} + +* 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 #ddd; +} + +* 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 #wpfooter { + margin: 0; +} + +* html #adminmenu div.wp-menu-image { + height: 29px; +} diff --git a/wp-admin/css/ie.min.css b/wp-admin/css/ie.min.css new file mode 100644 index 0000000..b95bdee --- /dev/null +++ b/wp-admin/css/ie.min.css @@ -0,0 +1,2 @@ +/*! This file is auto-generated */ +#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}#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 #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0 none;height:0;min-height:0}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp-editor-tabs,.wp-editor-wrap .wp-editor-tools,.wp-editor-wrap .wp-switch-editor{zoom:100%}.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:first-child{width:35%}#adminmenuback{left:0;background-image:none}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu,#adminmenu a{cursor:pointer}#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{left:110px}#adminmenu .wp-submenu ul{margin:0}.folded #wpcontent,.folded #wpfooter{margin-left:170px}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:150px}.folded #adminmenu .wp-submenu{border-top-color:transparent}.folded #adminmenu .wp-menu-name{display:block}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{left:110px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:-1px;position:relative}.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:transparent}#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#ddd}.folded #adminmenu .wp-submenu ul{margin-left:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu .wp-menu-arrow{display:none!important}.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}#adminmenu li.wp-has-current-submenu .wp-submenu{left:-40px}#adminmenu .wp-menu-image{display:none!important}#adminmenu a.menu-top .wp-menu-name{padding-left:8px}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}.theme-browser .theme{width:30%;margin:0 3% 4% 0;cursor:auto}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:auto}.theme-browser .theme .theme-screenshot{height:180px}.theme-browser .theme .theme-actions{position:static;background-color:#e8e8e8}.theme-browser .theme .more-details{display:none}.plugins td,.plugins th{border-top:1px solid #ddd}table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary{overflow:visible}#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 #ddd}#wpbody-content .postbox .hndle{margin-bottom:-1px}#addcat,#editcat,#template,#template div,.major-publishing-actions,.wp-submenu,.wp-submenu li{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 .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%}.button,input[type=button],input[type=reset],input[type=submit]{padding:0 8px;line-height:20px;height:auto}.button.button-large,input[type=button].button-large,input[type=reset].button-large,input[type=submit].button-large{padding:0 10px;line-height:24px;height:auto}.button.button-small,input[type=button].button-small,input[type=reset].button-small,input[type=submit].button-small{padding:0 6px;line-height:16px;height:auto}a.button{margin:1px;padding:1px 9px 2px}a.button.button-large{padding:1px 11px 2px}a.button.button-small{padding:1px 7px 2px}#screen-options-wrap{overflow:hidden}#col-container,#col-left,#col-right,#dragHelper,#editorcontainer,#post-body,#post-status-info,#postdiv,#postdivrich,#poststuff,#the-comment-list .comment-item,#titlediv,#widgets-left,#wpwrap,#wrap,.fileedit-sub,.metabox-holder,.tablenav,.tagchecklist,.widget .widget-top,.widget-control-actions,.widget-liquid-left,.widget-liquid-right,.widgets-sortables{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#widget-list .widget{display:inline}#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}#poststuff .inside #page_template,#poststuff .inside #parent_id,.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{width:250px}#submitdiv a.button,#submitdiv input,#submitdiv select{position:relative}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist .ntdelbutton,.tagchecklist>li{display:inline-block;display:block}.tagchecklist .ntdelbutton:focus .remove-tag-icon:before{outline:1px solid #5b9dd9}.nav .button,.tablenav .button{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}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 5px}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button{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}.inactive-sidebar .widget,.widget-liquid-right .widget{position:relative}.inactive-sidebar .widget{display:block;float:left}#wpcontent .button-primary-disabled{color:#9fd0d5;background:#298cba}#the-comment-list .unapproved td,#the-comment-list .unapproved tr{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}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-right:7px;margin-right:7px}.about-wrap .three-col.about-updates .col-2{width:15%}.about-wrap .about-password-meter input{width:98%}.revisions-tickmarks,.revisions-tooltip{display:none!important}.revisions.pinned .revisions-controls{position:relative}.login form .input,input[type=password]{font-family:sans-serif}.mce-btn i.mce-i-aligncenter,.mce-btn i.mce-i-alignjustify,.mce-btn i.mce-i-alignleft,.mce-btn i.mce-i-alignright,.mce-btn i.mce-i-blockquote,.mce-btn i.mce-i-bold,.mce-btn i.mce-i-bullist,.mce-btn i.mce-i-charmap,.mce-btn i.mce-i-forecolor,.mce-btn i.mce-i-fullscreen,.mce-btn i.mce-i-help,.mce-btn i.mce-i-hr,.mce-btn i.mce-i-indent,.mce-btn i.mce-i-italic,.mce-btn i.mce-i-link,.mce-btn i.mce-i-ltr,.mce-btn i.mce-i-numlist,.mce-btn i.mce-i-outdent,.mce-btn i.mce-i-pastetext,.mce-btn i.mce-i-pasteword,.mce-btn i.mce-i-redo,.mce-btn i.mce-i-removeformat,.mce-btn i.mce-i-spellchecker,.mce-btn i.mce-i-strikethrough,.mce-btn i.mce-i-underline,.mce-btn i.mce-i-undo,.mce-btn i.mce-i-unlink,.mce-btn i.mce-i-wp-media-library,.mce-btn i.mce-i-wp_adv,.mce-btn i.mce-i-wp_fullscreen,.mce-btn i.mce-i-wp_help,.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page,.mce-close{font-family:tinymce,Arial;font-style:normal;font-weight:400;font-variant:normal;font-size:16px;margin-left:0;padding-right:0}.mce-btn i.mce-i-wp_fullscreen,.qt-fullscreen{-ie7-icon:'\e023'}.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page{-ie7-icon:'\e027'}.mce-btn i.mce-i-wp_adv{background-color:#a0a5aa}.mce-btn i.mce-i-help,.mce-btn i.mce-i-wp_help{-ie7-icon:'\e016'}* 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 #ddd}* 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 #ddd}* 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 #wpfooter{margin:0}* html #adminmenu div.wp-menu-image{height:29px} \ No newline at end of file diff --git a/wp-admin/css/install-rtl.css b/wp-admin/css/install-rtl.css index b1ce297..3f94de8 100644 --- a/wp-admin/css/install-rtl.css +++ b/wp-admin/css/install-rtl.css @@ -1,52 +1,57 @@ html { - background: #fff; - margin: 0 2rem; + background: #f1f1f1; + margin: 0 20px; } body { background: #fff; - border: 0; - color: #3c434a; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - margin: 0 auto; - padding: 4rem 0; + margin: 140px auto 25px; + padding: 20px 20px 10px 20px; max-width: 700px; -webkit-font-smoothing: subpixel-antialiased; + box-shadow: 0 1px 3px rgba(0,0,0,0.13); } a { - color: #2271b1; + color: #0073aa; } a:hover, a:active { - color: #135e96; + color: #00a0d2; } a:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 a:focus { + outline: #5b9dd9 solid 1px; } h1, h2 { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; clear: both; - color: #646970; - font-size: calc(2rem + ((1vw - 0.48rem) * -0.4167)); - padding: 0 0 7px; + color: #666; + font-size: 24px; + padding: 0; + padding-bottom: 7px; font-weight: 400; } h3 { - font-size: calc(1.5rem + ((1vw - 0.48rem) * -0.2778)); + font-size: 16px; } p, li, dd, dt { - padding-bottom: 0.5rem; - font-size: calc(1.2rem + ((1vw - 0.48rem) * -0.1389)); - line-height: 1.8; + padding-bottom: 2px; + font-size: 14px; + line-height: 1.5; } code, .code { @@ -54,11 +59,11 @@ code, .code { } ul, ol, dl { - padding: 0.5rem 2rem 0.5rem 0.5rem; + padding: 5px 22px 5px 5px; } a img { - border: 0 + border:0 } abbr { border: 0; @@ -75,26 +80,67 @@ label { cursor: pointer; } +/* for installation */ +.cp-installation .form-table tbody tr th, +.cp-installation .form-table tbody tr td { + vertical-align: top; +} +.cp-installation p { + font-size: 18px !important; + line-height: 24px; + margin: 25px 0 20px; +} +.cp-installation p.description { + line-height: normal; + font-size: 12px !important; + font-style: italic; +} +.cp-installation code { + background: #f2f2f2; + font-family: monospace; + padding:3px 5px; +} +.cp-installation a:not(.button):link, +.cp-installation a:not(.button):visited { + color: #057f99; +} +.cp-installation a:not(.button):active { + color: #034a59; +} +.cp-installation a:not(.button):hover { + color: #006b81; +} + #logo { - margin: 0 auto 25px; - padding: 0 0 25px; - width: 84px; - height: 84px; - overflow: hidden; - background-image: url(../images/cp-logo-aqua.png?ver=202303); - background-image: none, url(../images/classicpress-logo.svg?ver=202303); - background-size: 84px; + margin: 6px 0 34px 0; + padding: 0 0 7px 0; + border-bottom: none; + text-align:center +} +#logo a { + background-image: url(../images/classicpress-logo-wordmark-gradient-on-transparent-600x115.png); + background-image: none, url(../images/classicpress-logo-wordmark-gradient-on-transparent.svg); background-position: center top; background-repeat: no-repeat; - color: #3c434a; /* same as login.css */ + background-size: 100%; + width: 300px; + height: 60px; + max-width: 100%; + color: #444; /* same as login.css */ font-size: 20px; font-weight: 400; line-height: 1.3em; + margin: -130px auto 25px; + padding: 0; text-decoration: none; - text-align: center; text-indent: -9999px; outline: none; - border: 0; + overflow: hidden; + display: block; +} + +#logo a:focus { + box-shadow: none; } .step { @@ -105,10 +151,13 @@ label { padding: 0; } .language-chooser.wp-core-ui .step .button.button-large { + height: 36px; font-size: 14px; + line-height: 33px; + vertical-align: middle; } textarea { - border: 1px solid #dcdcde; + border: 1px solid #ddd; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; width: 100%; box-sizing: border-box; @@ -136,19 +185,21 @@ textarea { } .form-table code { - line-height: 1.28571428; + line-height: 18px; font-size: 14px; } .form-table p { - margin: 4px 0 0; + margin: 4px 0 0 0; font-size: 11px; } .form-table input { - line-height: 1.33333333; + line-height: 20px; font-size: 15px; padding: 3px 5px; + border: 1px solid #ddd; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); } input, @@ -159,9 +210,8 @@ submit { .form-table input[type=text], .form-table input[type=email], .form-table input[type=url], -.form-table input[type=password], -#pass-strength-result { - width: 218px; +.form-table input[type=password] { + width: 206px; } .form-table th p { @@ -190,7 +240,7 @@ submit { #error-page p { font-size: 14px; - line-height: 1.28571428; + line-height: 18px; margin: 25px 0 20px; } @@ -198,10 +248,70 @@ submit { font-family: Consolas, Monaco, monospace; } +.wp-hide-pw > .dashicons { + line-height: inherit; +} + +#pass-strength-result { + background-color: #eee; + border: 1px solid #ddd; + color: #23282d; + margin: -2px 0px 5px 5px; + padding: 3px 5px; + text-align: center; + width: 218px; + box-sizing: border-box; + opacity: 0; +} + +#pass-strength-result.short { + background-color: #f1adad; + border-color: #e35b5b; + opacity: 1; +} + +#pass-strength-result.bad { + background-color: #fbc5a9; + border-color: #f78b53; + opacity: 1; +} + +#pass-strength-result.good { + background-color: #ffe399; + border-color: #ffc733; + opacity: 1; +} + +#pass-strength-result.strong { + background-color: #c1e1b9; + border-color: #83c373; + opacity: 1; +} + +#pass1.short, #pass1-text.short { + border-color: #e35b5b; +} + +#pass1.bad, #pass1-text.bad { + border-color: #f78b53; +} + +#pass1.good, #pass1-text.good { + border-color: #ffc733; +} + +#pass1.strong, #pass1-text.strong { + border-color: #83c373; +} + +.pw-weak { + display: none; +} + .message { - border-right: 4px solid #d63638; + border-right: 4px solid #dc3232; padding: .7em .6em; - background-color: #fcf0f1; + background-color: #fbeaea; } /* rtl:ignore */ @@ -217,6 +327,20 @@ submit { direction: ltr; } +#pass1-text, +.show-password #pass1 { + display: none; +} + +.show-password #pass1-text +{ + display: inline-block; +} + +.form-table span.description.important { + font-size: 12px; +} + /* localization */ body.rtl, @@ -233,7 +357,16 @@ body.rtl, font-family: Arial, sans-serif; } -@media screen and (max-width: 782px) { +@media only screen and (max-width: 799px) { + body { + margin-top: 115px; + } + #logo a { + margin: -125px auto 30px; + } +} + +@media screen and ( max-width: 782px ) { .form-table { margin-top: 0; @@ -277,17 +410,6 @@ body.rtl, box-sizing: border-box; } - .wp-pwd #pass1 { - padding-left: 50px; - } - - .wp-pwd .button.wp-hide-pw { - left: 0; - } - - #pass-strength-result { - width: 100%; - } } body.language-chooser { @@ -298,34 +420,23 @@ body.language-chooser { padding: 8px; width: 100%; display: block; - border: 1px solid #dcdcde; - background: #fff; - color: #2c3338; + border: 1px solid #ddd; + background-color: #fff; + color: #32373c; font-size: 16px; font-family: Arial, sans-serif; font-weight: 400; } -.language-chooser select:focus { - color: #2c3338; -} - -.language-chooser select option:hover, -.language-chooser select option:focus { - color: #0a4b78; -} - -.language-chooser .step { - display: flex; - flex-direction: row-reverse; - justify-content: flex-end; - align-items: center; +.language-chooser p { + text-align: left; } .screen-reader-input, .screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; @@ -369,4 +480,4 @@ body.language-chooser { background-image: url(../images/spinner-2x.gif); } -} \ No newline at end of file +} diff --git a/wp-admin/css/install-rtl.min.css b/wp-admin/css/install-rtl.min.css index ec40ffd..7c9b988 100644 --- a/wp-admin/css/install-rtl.min.css +++ b/wp-admin/css/install-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -html{background:#fff;margin:0 2rem}body{background:#fff;border:0;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:0 auto;padding:4rem 0;max-width:700px;-webkit-font-smoothing:subpixel-antialiased}a{color:#2271b1}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}h1,h2{border-bottom:1px solid #dcdcde;clear:both;color:#646970;font-size:calc(2rem + ((1vw - .48rem) * -.4167));padding:0 0 7px;font-weight:400}h3{font-size:calc(1.5rem + ((1vw - .48rem) * -.2778))}dd,dt,li,p{padding-bottom:.5rem;font-size:calc(1.2rem + ((1vw - .48rem) * -.1389));line-height:1.8}.code,code{font-family:Consolas,Monaco,monospace}dl,ol,ul{padding:.5rem 2rem .5rem .5rem}a img{border:0}abbr{border:0;font-variant:normal}fieldset{border:0;padding:0;margin:0}label{cursor:pointer}#logo{margin:0 auto 25px;padding:0 0 25px;width:84px;height:84px;overflow:hidden;background-image:url(../images/cp-logo-aqua.png?ver=202303);background-image:none,url(../images/classicpress-logo.svg?ver=202303);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;font-size:20px;font-weight:400;line-height:1.3em;text-decoration:none;text-align:center;text-indent:-9999px;outline:0;border:0}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{font-size:14px}textarea{border:1px solid #dcdcde;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;width:100%;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 0 10px 20px;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:right;padding:10px 0 10px 20px;width:140px;vertical-align:top}.form-table code{line-height:1.28571428;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:1.33333333;font-size:15px;padding:3px 5px}input,submit{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}#pass-strength-result,.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:218px}.form-table th p{font-weight:400}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 0 16px 20px}.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:1.28571428;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.message{border-right:4px solid #d63638;padding:.7em .6em;background-color:#fcf0f1}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td input[type=url],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.wp-pwd #pass1{padding-left:50px}.wp-pwd .button.wp-hide-pw{left:0}#pass-strength-result{width:100%}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #dcdcde;background:#fff;color:#2c3338;font-size:16px;font-family:Arial,sans-serif;font-weight:400}.language-chooser select:focus{color:#2c3338}.language-chooser select option:focus,.language-chooser select option:hover{color:#0a4b78}.language-chooser .step{display:flex;flex-direction:row-reverse;justify-content:flex-end;align-items:center}.screen-reader-input,.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;vertical-align:middle;margin-left:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file +html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px 20px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}h1,h2{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px;padding:0;padding-bottom:7px;font-weight:400}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}dl,ol,ul{padding:5px 22px 5px 5px}a img{border:0}abbr{border:0;font-variant:normal}fieldset{border:0;padding:0;margin:0}label{cursor:pointer}.cp-installation .form-table tbody tr td,.cp-installation .form-table tbody tr th{vertical-align:top}.cp-installation p{font-size:18px!important;line-height:24px;margin:25px 0 20px}.cp-installation p.description{line-height:normal;font-size:12px!important;font-style:italic}.cp-installation code{background:#f2f2f2;font-family:monospace;padding:3px 5px}.cp-installation a:not(.button):link,.cp-installation a:not(.button):visited{color:#057f99}.cp-installation a:not(.button):active{color:#034a59}.cp-installation a:not(.button):hover{color:#006b81}#logo{margin:6px 0 34px 0;padding:0 0 7px 0;border-bottom:none;text-align:center}#logo a{background-image:url(../images/classicpress-logo-wordmark-gradient-on-transparent-600x115.png);background-image:none,url(../images/classicpress-logo-wordmark-gradient-on-transparent.svg);background-position:center top;background-repeat:no-repeat;background-size:100%;width:300px;height:60px;max-width:100%;color:#444;font-size:20px;font-weight:400;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;text-indent:-9999px;outline:0;overflow:hidden;display:block}#logo a:focus{box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;font-size:14px;line-height:33px;vertical-align:middle}textarea{border:1px solid #ddd;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;width:100%;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 0 10px 20px;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:right;padding:10px 0 10px 20px;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:3px 5px;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}input,submit{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table th p{font-weight:400}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 0 16px 20px}.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}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 0 5px 5px;padding:3px 5px;text-align:center;width:218px;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.pw-weak{display:none}.message{border-right:4px solid #dc3232;padding:.7em .6em;background-color:#fbeaea}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}#pass1-text,.show-password #pass1{display:none}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td input[type=url],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #ddd;background-color:#fff;color:#32373c;font-size:16px;font-family:Arial,sans-serif;font-weight:400}.language-chooser p{text-align:left}.screen-reader-input,.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;vertical-align:middle;margin-left:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file diff --git a/wp-admin/css/install.css b/wp-admin/css/install.css index 315e15b..9b7beb8 100644 --- a/wp-admin/css/install.css +++ b/wp-admin/css/install.css @@ -1,52 +1,57 @@ html { - background: #fff; - margin: 0 2rem; + background: #f1f1f1; + margin: 0 20px; } body { background: #fff; - border: 0; - color: #3c434a; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - margin: 0 auto; - padding: 4rem 0; + margin: 140px auto 25px; + padding: 20px 20px 10px 20px; max-width: 700px; -webkit-font-smoothing: subpixel-antialiased; + box-shadow: 0 1px 3px rgba(0,0,0,0.13); } a { - color: #2271b1; + color: #0073aa; } a:hover, a:active { - color: #135e96; + color: #00a0d2; } a:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 a:focus { + outline: #5b9dd9 solid 1px; } h1, h2 { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; clear: both; - color: #646970; - font-size: calc(2rem + ((1vw - 0.48rem) * -0.4167)); - padding: 0 0 7px; + color: #666; + font-size: 24px; + padding: 0; + padding-bottom: 7px; font-weight: 400; } h3 { - font-size: calc(1.5rem + ((1vw - 0.48rem) * -0.2778)); + font-size: 16px; } p, li, dd, dt { - padding-bottom: 0.5rem; - font-size: calc(1.2rem + ((1vw - 0.48rem) * -0.1389)); - line-height: 1.8; + padding-bottom: 2px; + font-size: 14px; + line-height: 1.5; } code, .code { @@ -54,11 +59,11 @@ code, .code { } ul, ol, dl { - padding: 0.5rem 0.5rem 0.5rem 2rem; + padding: 5px 5px 5px 22px; } a img { - border: 0 + border:0 } abbr { border: 0; @@ -75,26 +80,67 @@ label { cursor: pointer; } +/* for installation */ +.cp-installation .form-table tbody tr th, +.cp-installation .form-table tbody tr td { + vertical-align: top; +} +.cp-installation p { + font-size: 18px !important; + line-height: 24px; + margin: 25px 0 20px; +} +.cp-installation p.description { + line-height: normal; + font-size: 12px !important; + font-style: italic; +} +.cp-installation code { + background: #f2f2f2; + font-family: monospace; + padding:3px 5px; +} +.cp-installation a:not(.button):link, +.cp-installation a:not(.button):visited { + color: #057f99; +} +.cp-installation a:not(.button):active { + color: #034a59; +} +.cp-installation a:not(.button):hover { + color: #006b81; +} + #logo { - margin: 0 auto 25px; - padding: 0 0 25px; - width: 84px; - height: 84px; - overflow: hidden; - background-image: url(../images/cp-logo-aqua.png?ver=202303); - background-image: none, url(../images/classicpress-logo.svg?ver=202303); - background-size: 84px; + margin: 6px 0 34px 0; + padding: 0 0 7px 0; + border-bottom: none; + text-align:center +} +#logo a { + background-image: url(../images/classicpress-logo-wordmark-gradient-on-transparent-600x115.png); + background-image: none, url(../images/classicpress-logo-wordmark-gradient-on-transparent.svg); background-position: center top; background-repeat: no-repeat; - color: #3c434a; /* same as login.css */ + background-size: 100%; + width: 300px; + height: 60px; + max-width: 100%; + color: #444; /* same as login.css */ font-size: 20px; font-weight: 400; line-height: 1.3em; + margin: -130px auto 25px; + padding: 0; text-decoration: none; - text-align: center; text-indent: -9999px; outline: none; - border: 0; + overflow: hidden; + display: block; +} + +#logo a:focus { + box-shadow: none; } .step { @@ -105,10 +151,13 @@ label { padding: 0; } .language-chooser.wp-core-ui .step .button.button-large { + height: 36px; font-size: 14px; + line-height: 33px; + vertical-align: middle; } textarea { - border: 1px solid #dcdcde; + border: 1px solid #ddd; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; width: 100%; box-sizing: border-box; @@ -136,19 +185,21 @@ textarea { } .form-table code { - line-height: 1.28571428; + line-height: 18px; font-size: 14px; } .form-table p { - margin: 4px 0 0; + margin: 4px 0 0 0; font-size: 11px; } .form-table input { - line-height: 1.33333333; + line-height: 20px; font-size: 15px; padding: 3px 5px; + border: 1px solid #ddd; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); } input, @@ -159,9 +210,8 @@ submit { .form-table input[type=text], .form-table input[type=email], .form-table input[type=url], -.form-table input[type=password], -#pass-strength-result { - width: 218px; +.form-table input[type=password] { + width: 206px; } .form-table th p { @@ -190,7 +240,7 @@ submit { #error-page p { font-size: 14px; - line-height: 1.28571428; + line-height: 18px; margin: 25px 0 20px; } @@ -198,10 +248,70 @@ submit { font-family: Consolas, Monaco, monospace; } +.wp-hide-pw > .dashicons { + line-height: inherit; +} + +#pass-strength-result { + background-color: #eee; + border: 1px solid #ddd; + color: #23282d; + margin: -2px 5px 5px 0px; + padding: 3px 5px; + text-align: center; + width: 218px; + box-sizing: border-box; + opacity: 0; +} + +#pass-strength-result.short { + background-color: #f1adad; + border-color: #e35b5b; + opacity: 1; +} + +#pass-strength-result.bad { + background-color: #fbc5a9; + border-color: #f78b53; + opacity: 1; +} + +#pass-strength-result.good { + background-color: #ffe399; + border-color: #ffc733; + opacity: 1; +} + +#pass-strength-result.strong { + background-color: #c1e1b9; + border-color: #83c373; + opacity: 1; +} + +#pass1.short, #pass1-text.short { + border-color: #e35b5b; +} + +#pass1.bad, #pass1-text.bad { + border-color: #f78b53; +} + +#pass1.good, #pass1-text.good { + border-color: #ffc733; +} + +#pass1.strong, #pass1-text.strong { + border-color: #83c373; +} + +.pw-weak { + display: none; +} + .message { - border-left: 4px solid #d63638; + border-left: 4px solid #dc3232; padding: .7em .6em; - background-color: #fcf0f1; + background-color: #fbeaea; } /* rtl:ignore */ @@ -217,6 +327,20 @@ submit { direction: ltr; } +#pass1-text, +.show-password #pass1 { + display: none; +} + +.show-password #pass1-text +{ + display: inline-block; +} + +.form-table span.description.important { + font-size: 12px; +} + /* localization */ body.rtl, @@ -233,7 +357,16 @@ body.rtl, font-family: Arial, sans-serif; } -@media screen and (max-width: 782px) { +@media only screen and (max-width: 799px) { + body { + margin-top: 115px; + } + #logo a { + margin: -125px auto 30px; + } +} + +@media screen and ( max-width: 782px ) { .form-table { margin-top: 0; @@ -277,17 +410,6 @@ body.rtl, box-sizing: border-box; } - .wp-pwd #pass1 { - padding-right: 50px; - } - - .wp-pwd .button.wp-hide-pw { - right: 0; - } - - #pass-strength-result { - width: 100%; - } } body.language-chooser { @@ -298,34 +420,23 @@ body.language-chooser { padding: 8px; width: 100%; display: block; - border: 1px solid #dcdcde; - background: #fff; - color: #2c3338; + border: 1px solid #ddd; + background-color: #fff; + color: #32373c; font-size: 16px; font-family: Arial, sans-serif; font-weight: 400; } -.language-chooser select:focus { - color: #2c3338; -} - -.language-chooser select option:hover, -.language-chooser select option:focus { - color: #0a4b78; -} - -.language-chooser .step { - display: flex; - flex-direction: row-reverse; - justify-content: flex-end; - align-items: center; +.language-chooser p { + text-align: right; } .screen-reader-input, .screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; @@ -369,4 +480,4 @@ body.language-chooser { background-image: url(../images/spinner-2x.gif); } -} \ No newline at end of file +} diff --git a/wp-admin/css/install.min.css b/wp-admin/css/install.min.css index f5d108d..2394c2f 100644 --- a/wp-admin/css/install.min.css +++ b/wp-admin/css/install.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -html{background:#fff;margin:0 2rem}body{background:#fff;border:0;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:0 auto;padding:4rem 0;max-width:700px;-webkit-font-smoothing:subpixel-antialiased}a{color:#2271b1}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}h1,h2{border-bottom:1px solid #dcdcde;clear:both;color:#646970;font-size:calc(2rem + ((1vw - .48rem) * -.4167));padding:0 0 7px;font-weight:400}h3{font-size:calc(1.5rem + ((1vw - .48rem) * -.2778))}dd,dt,li,p{padding-bottom:.5rem;font-size:calc(1.2rem + ((1vw - .48rem) * -.1389));line-height:1.8}.code,code{font-family:Consolas,Monaco,monospace}dl,ol,ul{padding:.5rem .5rem .5rem 2rem}a img{border:0}abbr{border:0;font-variant:normal}fieldset{border:0;padding:0;margin:0}label{cursor:pointer}#logo{margin:0 auto 25px;padding:0 0 25px;width:84px;height:84px;overflow:hidden;background-image:url(../images/cp-logo-aqua.png?ver=202303);background-image:none,url(../images/classicpress-logo.svg?ver=202303);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;font-size:20px;font-weight:400;line-height:1.3em;text-decoration:none;text-align:center;text-indent:-9999px;outline:0;border:0}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{font-size:14px}textarea{border:1px solid #dcdcde;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;width:100%;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:left;padding:10px 20px 10px 0;width:140px;vertical-align:top}.form-table code{line-height:1.28571428;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:1.33333333;font-size:15px;padding:3px 5px}input,submit{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}#pass-strength-result,.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:218px}.form-table th p{font-weight:400}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 20px 16px 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:1.28571428;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.message{border-left:4px solid #d63638;padding:.7em .6em;background-color:#fcf0f1}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td input[type=url],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.wp-pwd #pass1{padding-right:50px}.wp-pwd .button.wp-hide-pw{right:0}#pass-strength-result{width:100%}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #dcdcde;background:#fff;color:#2c3338;font-size:16px;font-family:Arial,sans-serif;font-weight:400}.language-chooser select:focus{color:#2c3338}.language-chooser select option:focus,.language-chooser select option:hover{color:#0a4b78}.language-chooser .step{display:flex;flex-direction:row-reverse;justify-content:flex-end;align-items:center}.screen-reader-input,.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;vertical-align:middle;margin-right:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file +html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;margin:140px auto 25px;padding:20px 20px 10px 20px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}h1,h2{border-bottom:1px solid #ddd;clear:both;color:#666;font-size:24px;padding:0;padding-bottom:7px;font-weight:400}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}dl,ol,ul{padding:5px 5px 5px 22px}a img{border:0}abbr{border:0;font-variant:normal}fieldset{border:0;padding:0;margin:0}label{cursor:pointer}.cp-installation .form-table tbody tr td,.cp-installation .form-table tbody tr th{vertical-align:top}.cp-installation p{font-size:18px!important;line-height:24px;margin:25px 0 20px}.cp-installation p.description{line-height:normal;font-size:12px!important;font-style:italic}.cp-installation code{background:#f2f2f2;font-family:monospace;padding:3px 5px}.cp-installation a:not(.button):link,.cp-installation a:not(.button):visited{color:#057f99}.cp-installation a:not(.button):active{color:#034a59}.cp-installation a:not(.button):hover{color:#006b81}#logo{margin:6px 0 34px 0;padding:0 0 7px 0;border-bottom:none;text-align:center}#logo a{background-image:url(../images/classicpress-logo-wordmark-gradient-on-transparent-600x115.png);background-image:none,url(../images/classicpress-logo-wordmark-gradient-on-transparent.svg);background-position:center top;background-repeat:no-repeat;background-size:100%;width:300px;height:60px;max-width:100%;color:#444;font-size:20px;font-weight:400;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;text-indent:-9999px;outline:0;overflow:hidden;display:block}#logo a:focus{box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;font-size:14px;line-height:33px;vertical-align:middle}textarea{border:1px solid #ddd;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;width:100%;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px;padding:10px 20px 10px 0;font-size:14px;vertical-align:top}.form-table th{font-size:14px;text-align:left;padding:10px 20px 10px 0;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:3px 5px;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}input,submit{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table th p{font-weight:400}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 20px 16px 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}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 0;padding:3px 5px;text-align:center;width:218px;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.pw-weak{display:none}.message{border-left:4px solid #dc3232;padding:.7em .6em;background-color:#fbeaea}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}#pass1-text,.show-password #pass1{display:none}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td input[type=url],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #ddd;background-color:#fff;color:#32373c;font-size:16px;font-family:Arial,sans-serif;font-weight:400}.language-chooser p{text-align:right}.screen-reader-input,.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;vertical-align:middle;margin-right:15px}.button.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}} \ No newline at end of file diff --git a/wp-admin/css/list-tables-rtl.css b/wp-admin/css/list-tables-rtl.css index 2b99a3c..3be3fe2 100644 --- a/wp-admin/css/list-tables-rtl.css +++ b/wp-admin/css/list-tables-rtl.css @@ -55,13 +55,20 @@ min-width: 24px; height: 2em; border-radius: 5px; - background-color: #646970; + background-color: #72777c; color: #fff; font-size: 11px; - line-height: 1.90909090; + line-height: 21px; text-align: center; } +.ie8 .column-response .comment-count-no-comments, +.ie8 .column-response .comment-count-approved, +.ie8 .column-comments .comment-count-no-comments, +.ie8 .column-comments .comment-count-approved { + min-width: 0; +} + .column-response .post-com-count-no-comments:after, .column-response .post-com-count-approved:after, .column-comments .post-com-count-no-comments:after, @@ -71,22 +78,22 @@ margin-right: 8px; width: 0; height: 0; - border-top: 5px solid #646970; + border-top: 5px solid #72777c; border-left: 5px solid transparent; } -.column-response a.post-com-count-approved:hover .comment-count-approved, -.column-response a.post-com-count-approved:focus .comment-count-approved, -.column-comments a.post-com-count-approved:hover .comment-count-approved, -.column-comments a.post-com-count-approved:focus .comment-count-approved { - background: #2271b1; +.column-response .post-com-count-approved:hover .comment-count-approved, +.column-response .post-com-count-approved:focus .comment-count-approved, +.column-comments .post-com-count-approved:hover .comment-count-approved, +.column-comments .post-com-count-approved:focus .comment-count-approved { + background: #0073aa; } -.column-response a.post-com-count-approved:hover:after, -.column-response a.post-com-count-approved:focus:after, -.column-comments a.post-com-count-approved:hover:after, -.column-comments a.post-com-count-approved:focus:after { - border-top-color: #2271b1; +.column-response .post-com-count-approved:hover:after, +.column-response .post-com-count-approved:focus:after, +.column-comments .post-com-count-approved:hover:after, +.column-comments .post-com-count-approved:focus:after { + border-top-color: #0073aa; } /* @todo: consider to use a single rule for these counters and the admin menu counters. */ @@ -99,10 +106,10 @@ height: 17px; border: 2px solid #fff; border-radius: 11px; - background: #d63638; + background: #ca4a1f; color: #fff; font-size: 9px; - line-height: 1.88888888; + line-height: 17px; text-align: center; } @@ -116,7 +123,7 @@ .commentlist li { padding: 1em 1em .2em; margin: 0; - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #ccc; } .commentlist li li { @@ -131,7 +138,7 @@ #submitted-on, .submitted-on { - color: #50575e; + color: #555d66; } /* reply to comments */ @@ -145,19 +152,10 @@ overflow: hidden; } -#replysubmit .reply-submit-buttons { - margin-bottom: 0; -} - #replysubmit .button { margin-left: 5px; } -#replysubmit .spinner { - float: none; - margin: -4px 0 0; -} - #replyrow.inline-edit-row fieldset.comment-reply { font-size: inherit; line-height: inherit; @@ -203,8 +201,8 @@ } #replyerror { - border-color: #dcdcde; - background-color: #f6f7f7; + border-color: #ddd; + background-color: #f9f9f9; } /* @todo: is this used? */ @@ -214,16 +212,16 @@ #the-comment-list tr.undo, #the-comment-list div.undo { - background-color: #f6f7f7; + background-color: #f5f5f5; } #the-comment-list .unapproved th, #the-comment-list .unapproved td { - background-color: #fcf9e8; + background-color: #fef7f1; } #the-comment-list .unapproved th.check-column { - border-right: 4px solid #d63638; + border-right: 4px solid #d54e21; } #the-comment-list .unapproved th.check-column input { @@ -231,11 +229,11 @@ } #the-comment-list .approve a { - color: #007017; + color: #006505; } #the-comment-list .unapprove a { - color: #996800; + color: #d98500; } #the-comment-list th, @@ -245,19 +243,19 @@ #the-comment-list tr:last-child th, #the-comment-list tr:last-child td { - box-shadow: none; + box-shadow: none; } #the-comment-list tr.unapproved + tr.approved th, #the-comment-list tr.unapproved + tr.approved td { - border-top: 1px solid rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.03); } /* table vim shortcuts */ .vim-current, .vim-current th, .vim-current td { - background-color: #f0f6fc !important; + background-color: #e4f2fd !important; } th .comment-grey-bubble { @@ -268,7 +266,7 @@ th .comment-grey-bubble { th .comment-grey-bubble:before { content: "\f101"; font: normal 20px/.5 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0; top: 4px; @@ -278,7 +276,7 @@ th .comment-grey-bubble:before { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #3c434a; + color: #444; } /*------------------------------------------------------------------------------ @@ -295,6 +293,7 @@ table.fixed { } .fixed .column-posts, +.fixed .column-date, .fixed .column-parent, .fixed .column-links, .fixed .column-author, @@ -302,15 +301,6 @@ table.fixed { width: 10%; } -.fixed .column-date { - width: 14%; -} - -.column-date span[title] { - -webkit-text-decoration: dotted underline; - text-decoration: dotted underline; -} - .fixed .column-posts { width: 74px; } @@ -367,7 +357,7 @@ td.plugin-title p { table.media .column-title .media-icon { float: right; min-height: 60px; - margin: 0 0 0 9px; + margin: 0 0 0 9px; } table.media .column-title .media-icon img { @@ -384,23 +374,6 @@ table.media .column-title .filename { margin-bottom: 0.2em; } -/* Media Copy to clipboard row action */ -.media .row-actions .copy-to-clipboard-container { - display: inline; - position: relative; -} - -.media .row-actions .copy-to-clipboard-container .success { - position: absolute; - right: 50%; - transform: translate(50%, -100%); - background: #000; - color: #fff; - border-radius: 5px; - margin: 0; - padding: 2px 5px; -} - /* @todo: pick a consistent list table selector */ .wp-list-table a { transition: none; @@ -416,13 +389,17 @@ table.media .column-title .filename { width: 20%; } +#comments-form .fixed .column-date { + width: 14%; +} + #commentsdiv.postbox .inside { margin: 0; padding: 0; } #commentsdiv .inside .row-actions { - line-height: 1.38461538; + line-height:18px; } #commentsdiv .inside .column-author { @@ -451,6 +428,7 @@ table.media .column-title .filename { #commentsdiv .comments-box thead td { background: transparent; padding: 0 7px 4px; + font-style: italic; } #commentsdiv .comments-box tr:last-child td { @@ -473,19 +451,19 @@ table.media .column-title .filename { .sorting-indicator:before { content: "\f142"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0; top: -4px; right: -8px; - color: #3c434a; - line-height: 0.5; + color: #444; + line-height: 10px; position: relative; vertical-align: top; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #3c434a; + color: #444; } .column-comments .sorting-indicator:before { @@ -523,9 +501,13 @@ th.asc a:focus span.sorting-indicator:before { } .wp-list-table .toggle-row:focus:before { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 .wp-list-table .toggle-row:focus:before { + outline: #5b9dd9 solid 1px; } .wp-list-table .toggle-row:active { @@ -539,56 +521,60 @@ th.asc a:focus span.sorting-indicator:before { border-radius: 50%; display: block; padding: 1px 0 1px 2px; - color: #3c434a; /* same as table headers sort arrows */ + color: #444; /* same as table headers sort arrows */ content: "\f140"; font: normal 20px/1 dashicons; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - speak: never; + speak: none; } .wp-list-table .is-expanded .toggle-row:before { content: "\f142"; } -.locked-indicator { - display: none; +tr.wp-locked .locked-indicator { margin-right: 6px; height: 20px; width: 16px; } -.locked-indicator-icon:before { - color: #8c8f94; +tr.wp-locked .locked-indicator-icon:before { + color: #82878c; content: "\f160"; display: inline-block; font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: middle; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -.locked-info { +tr.wp-locked .check-column label, +tr.wp-locked .check-column input[type="checkbox"], +tr.wp-locked .row-actions .inline, +tr.wp-locked .row-actions .trash { display: none; +} + +tr .locked-info { + height: 0; + opacity: 0; +} + +tr.wp-locked .locked-info { margin-top: 4px; + height: auto; + opacity: 1; } .locked-text { vertical-align: top; } -.wp-locked .locked-indicator, -.wp-locked .locked-info { - display: block; -} - -tr.wp-locked .check-column label, -tr.wp-locked .check-column input[type="checkbox"], -tr.wp-locked .row-actions .inline, -tr.wp-locked .row-actions .trash { - display: none; +tr.locked-info, tr.wp-locked .locked-info { + transition: height 1s, opacity 0.5s; } .fixed .column-comments .sorting-indicator { @@ -630,8 +616,16 @@ th.asc a:focus span.sorting-indicator { visibility: visible; } +/* Bulk Actions */ +.tablenav-pages a, +.tablenav-pages-navspan { + font-weight: 600; + padding: 0 2px; +} + .tablenav-pages .current-page { margin: 0 0 0 2px; + padding-bottom: 5px; font-size: 13px; text-align: center; } @@ -644,11 +638,16 @@ th.asc a:focus span.sorting-indicator { margin-right: 2px; } +.tablenav a.button, +.tablenav a.button-secondary { + display: block; + margin: 3px 0 0 8px; +} + .tablenav { clear: both; height: 30px; margin: 6px 0 4px; - padding-top: 5px; vertical-align: middle; } @@ -658,7 +657,10 @@ th.asc a:focus span.sorting-indicator { .tablenav .tablenav-pages { float: left; - margin: 0 0 9px; + height: 28px; + margin-top: 3px; + cursor: default; + color: #555; } .tablenav .no-pages, @@ -666,30 +668,54 @@ th.asc a:focus span.sorting-indicator { display: none; } -.tablenav .tablenav-pages .button, -.tablenav .tablenav-pages .tablenav-pages-navspan { +.tablenav .tablenav-pages a, +.tablenav-pages span.current { + text-decoration: none; + padding: 3px 6px; +} + +.tablenav .tablenav-pages a, +.tablenav-pages-navspan { display: inline-block; - vertical-align: baseline; - min-width: 30px; - min-height: 30px; - margin: 0; - padding: 0 4px; + min-width: 17px; + border: 1px solid #ccc; /* same color as buttons border */ + padding: 3px 5px 7px; + background: #e5e5e5; font-size: 16px; - line-height: 1.625; /* 26px */ + line-height: 1; + font-weight: 400; text-align: center; } +.tablenav-pages-navspan { + height: 16px; + border-color: #ddd; /* same as disabled buttons */ + background: #f7f7f7; /* same as disabled buttons */ + color: #a0a5aa; /* same as disabled buttons */ +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + border-color: #5b9dd9; + color: #fff; + background: #00a0d2; + box-shadow: none; + outline: none; /* IE8 */ +} + .tablenav .displaying-num { margin-left: 7px; } .tablenav .one-page .displaying-num { display: inline-block; - margin: 5px 0; + margin-top: 5px; + margin-left: 0; } .tablenav .actions { - padding: 0 0 0 8px; + overflow: hidden; + padding: 2px 0 0 8px; } .wp-filter .actions { @@ -701,7 +727,24 @@ th.asc a:focus span.sorting-indicator { margin-left: 20px; } -/* This view-switcher is still used on multisite. */ +/* @todo: unclear if the following tablenav rules are actually used. +classes exist in paginate_links() but not seen in list table output. */ +.tablenav .dots { + border-color: transparent; +} + +.tablenav .next, +.tablenav .prev { + border-color: transparent; + color: #0073aa; +} + +.tablenav .next:hover, +.tablenav .prev:hover { + border-color: transparent; + color: #00a0d2; +} + .tablenav .view-switch { float: left; margin: 0 5px; @@ -724,15 +767,15 @@ th.asc a:focus span.sorting-indicator { width: 28px; height: 28px; text-align: center; - line-height: 1.84615384; + line-height: 24px; text-decoration: none; } .view-switch a:before { - color: #c3c4c7; + color: #b4b9be; display: inline-block; font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: middle; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -740,11 +783,11 @@ th.asc a:focus span.sorting-indicator { .view-switch a:hover:before, .view-switch a:focus:before { - color: #787c82; + color: #727272; } .view-switch a.current:before { - color: #2271b1; + color: #0073aa; } .view-switch .view-list:before { @@ -814,14 +857,14 @@ p.pagenav { } .row-actions { - color: #a7aaad; + color: #ddd; font-size: 13px; padding: 2px 0 0; position: relative; right: -9999em; } -/* ticket #34150 */ +/* https://core.trac.wordpress.org/ticket/34150 */ .rtl .row-actions a { display: inline-block; } @@ -858,35 +901,16 @@ tr:hover .row-actions, /* Layout */ #wpbody-content .inline-edit-row fieldset { + font-size: 12px; float: right; margin: 0; - padding: 0 0 0 12px; - width: 100%; - box-sizing: border-box; -} - -#wpbody-content .inline-edit-row td fieldset:last-of-type { - padding-left: 0; -} - -tr.inline-edit-row td { padding: 0; - /* Prevents the focus style on .inline-edit-wrapper from being cutted-off */ - position: relative; -} - -.inline-edit-wrapper { - display: flow-root; - padding: 0 12px; - border: 1px solid transparent; - border-radius: 4px; + width: 100%; } -.inline-edit-wrapper:focus { - border-color: #2271b1; - box-shadow: 0 0 0 1px #2271b1; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; +tr.inline-edit-row td, +#wpbody-content .inline-edit-row fieldset .inline-edit-col { + padding: 0 0.5em; } #wpbody-content .quick-edit-row-post .inline-edit-col-left { @@ -907,7 +931,7 @@ tr.inline-edit-row td { #wpbody-content .quick-edit-row-page .inline-edit-col-right, #wpbody-content .bulk-edit-row-post .inline-edit-col-right { - width: 50%; + width: 49%; } #wpbody-content .bulk-edit-row .inline-edit-col-left { @@ -933,26 +957,12 @@ tr.inline-edit-row td { } .inline-edit-row .submit { - display: flex; - flex-wrap: wrap; - align-items: center; clear: both; - margin: 0; - padding: 0.5em 0 1em; -} - -.inline-edit-save.submit .button { - margin-left: 8px; -} - -.inline-edit-save .spinner { - float: none; - margin: 0; + padding: 0.5em; + margin: 0.5em 0 0; } .inline-edit-row .notice-error { - box-sizing: border-box; - min-width: 100%; margin-top: 1em; } @@ -966,11 +976,15 @@ tr.inline-edit-row td { /* Needs higher specificity for the padding */ #the-list .inline-edit-row .inline-edit-legend { margin: 0; - padding: 0.2em 0; + padding: 0.2em 0.5em 0; line-height: 2.5; font-weight: 600; } +#the-list #bulk-edit.inline-edit-row .inline-edit-legend { + padding: 0.2em 0.5em; +} + .inline-edit-row fieldset span.title, .inline-edit-row fieldset span.checkbox-title { margin: 0; @@ -987,8 +1001,8 @@ tr.inline-edit-row td { .inline-edit-row fieldset.inline-edit-date label { display: inline-block; margin: 0; + line-height: 1.5; vertical-align: baseline; - line-height: 2; } .inline-edit-row fieldset label.inline-edit-tags { @@ -1012,6 +1026,11 @@ tr.inline-edit-row td { padding: 0; } +.inline-edit-row fieldset.inline-edit-date select { + margin: 1px; + line-height: 28px; +} + .inline-edit-row fieldset label span.input-text-wrap, .inline-edit-row fieldset .timestamp-wrap { display: block; @@ -1059,6 +1078,11 @@ tr.inline-edit-row td { text-transform: uppercase; } +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + font-style: italic; +} + /* Specific Elements */ .inline-edit-row fieldset .inline-edit-date { float: right; @@ -1066,28 +1090,48 @@ tr.inline-edit-row td { .inline-edit-row fieldset input[name=jj], .inline-edit-row fieldset input[name=hh], -.inline-edit-row fieldset input[name=mn], +.inline-edit-row fieldset input[name=mn] { + font-size: 12px; + width: 2.3em; +} + .inline-edit-row fieldset input[name=aa] { - vertical-align: middle; - text-align: center; - padding: 0 4px; + font-size: 12px; + width: 3.5em; } .inline-edit-row fieldset label input.inline-edit-password-input { width: 8em; } -#bulk-titles-list, -#bulk-titles-list li, +ul.cat-checklist { + height: 12em; + border: solid 1px #ddd; + overflow-y: scroll; + padding: 0 5px; + margin: 0; + background-color: #fff; +} + +#bulk-titles { + display: block; + height: 12em; + border: 1px solid #ddd; + 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; position: relative; /* RTL fix, #WP27629 */ } -.inline-edit-row fieldset ul.cat-checklist input { - margin-top: -1px; - margin-right: 3px; +.inline-edit-row fieldset ul.cat-checklist label, +.inline-edit-row #bulk-titles div { + font-style: normal; + font-size: 11px; } .inline-edit-row fieldset label input.inline-edit-menu-order-input { @@ -1103,52 +1147,36 @@ tr.inline-edit-row td { max-width: 80%; } -.quick-edit-row-post fieldset label.inline-edit-status { - float: right; +.ie8 .inline-edit-row #post_parent, +.ie8 .inline-edit-row select[name="page_template"] { + width: 250px; } -#bulk-titles, -ul.cat-checklist { - height: 14em; - border: 1px solid #ddd; - margin: 0 0 5px; - padding: 0.2em 5px; - overflow-y: scroll; -} - -#bulk-titles .ntdelbutton, -#bulk-titles .ntdeltitle, -.inline-edit-row fieldset ul.cat-checklist label { - display: inline-block; - margin: 0; - padding: 3px 0; - line-height: 20px; - vertical-align: top; +.quick-edit-row-post fieldset label.inline-edit-status { + float: right; } -#bulk-titles .ntdelitem { - padding-right: 23px; +#bulk-titles { + line-height: 140%; } - -#bulk-titles .ntdelbutton { - width: 26px; - height: 26px; - margin: 0 -26px 0 0; - text-align: center; - border-radius: 3px; +#bulk-titles div { + margin: 0.2em 0.3em; } -#bulk-titles .ntdelbutton:before { - display: inline-block; - vertical-align: top; +#bulk-titles div a { + cursor: pointer; + display: block; + float: right; + height: 18px; + margin: 0 -2px 0 3px; + overflow: hidden; + position: relative; + width: 20px; } -#bulk-titles .ntdelbutton:focus { - box-shadow: 0 0 0 2px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - /* Reset inherited offset from Gutenberg */ - outline-offset: 0; +#bulk-titles div a:before { + position: relative; + top: -3px; } /*------------------------------------------------------------------------------ @@ -1194,7 +1222,7 @@ ul.cat-checklist { } .plugins td.desc { - line-height: 1.5; + line-height: 1.5em; } .plugins .desc ul, @@ -1220,7 +1248,7 @@ ul.cat-checklist { .plugins .active td, .plugins .active th { - background-color: #f0f6fc; + background-color: #f7fcfe; } .plugins .update th, @@ -1235,15 +1263,15 @@ ul.cat-checklist { .plugin-install #the-list td, .upgrade .plugins td, .upgrade .plugins th { - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .plugins tr.active.plugin-update-tr + tr.inactive th, .plugins tr.active.plugin-update-tr + tr.inactive td, .plugins tr.active + tr.inactive th, .plugins tr.active + tr.inactive td { - border-top: 1px solid rgba(0, 0, 0, 0.03); - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.02), inset 0 -1px 0 #dcdcde; + border-top: 1px solid rgba(0,0,0,0.03); + box-shadow: inset 0 1px 0 rgba(0,0,0,0.02), inset 0 -1px 0 #e1e1e1; } .plugins .update td, @@ -1261,7 +1289,7 @@ ul.cat-checklist { .plugins .active th.check-column, .plugin-update-tr.active td { - border-right: 4px solid #72aee6; + border-right: 4px solid #00a0d2; } .wp-list-table.plugins .plugin-title, @@ -1270,6 +1298,11 @@ ul.cat-checklist { white-space: nowrap; } +.plugins .dashicon { + font: 16px dashicons; + vertical-align: text-bottom; +} + .plugins .plugin-title img, .plugins .plugin-title .dashicons { float: right; @@ -1280,10 +1313,10 @@ ul.cat-checklist { .plugins .plugin-title .dashicons:before { padding: 2px; - background-color: #f0f0f1; - box-shadow: inset 0 0 10px rgba(167, 170, 173, 0.15); + background-color: #eee; + box-shadow: inset 0 0 10px rgba(160,165,170,.15); font-size: 60px; - color: #c3c4c7; + color: #B4B9BE; } #update-themes-table .plugin-title img, @@ -1291,10 +1324,6 @@ ul.cat-checklist { width: 85px; } -.plugins .column-auto-updates { - width: 14.2em; -} - .plugins .inactive .plugin-title strong { font-weight: 400; } @@ -1304,11 +1333,6 @@ ul.cat-checklist { padding: 0 0 5px; } -.plugins .row-actions { - white-space: normal; - min-width: 12em; -} - .plugins .update .second, .plugins .update .row-actions, .plugins .updated .second, @@ -1323,7 +1347,7 @@ ul.cat-checklist { } .plugins .plugin-update-tr .plugin-update { - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); overflow: hidden; /* clearfix */ padding: 0; } @@ -1337,46 +1361,16 @@ ul.cat-checklist { margin: 0.5em 0; } -.plugins .plugin-description a, -.plugins .plugin-update a, -.updates-table .plugin-title a { - text-decoration: underline; -} - -.plugins tr.paused th.check-column { - border-right: 4px solid #b32d2e; -} - -.plugins tr.paused th, -.plugins tr.paused td { - background-color: #f6f7f7; -} - -.plugins tr.paused .plugin-title, -.plugins .paused .dashicons-warning { - color: #b32d2e; -} - -.plugins .paused .error-display p, -.plugins .paused .error-display code { - font-size: 90%; - color: rgba(0, 0, 0, 0.7); -} - -.plugins .resume-link { - color: #b32d2e; -} - .plugin-card .update-now:before { - color: #d63638; + color: #f56e28; content: "\f463"; display: inline-block; font: normal 20px/1 dashicons; - margin: -3px -2px 0 5px; - speak: never; + margin: 3px -2px 0 5px; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - vertical-align: middle; + vertical-align: top; } .plugin-card .updating-message:before { @@ -1394,21 +1388,10 @@ ul.cat-checklist { } .plugin-card .updated-message:before { - color: #68de7c; + color: #79ba49; content: "\f147"; } -.plugin-install-php #the-list { - display: flex; - flex-wrap: wrap; -} - -.plugin-install-php .plugin-card { - display: flex; - flex-direction: column; - justify-content: space-between; -} - .plugin-install-php h2 { clear: both; } @@ -1437,7 +1420,7 @@ ul.cat-checklist { width: 48.5%; width: calc( 50% - 8px ); background-color: #fff; - border: 1px solid #dcdcde; + border: 1px solid #ddd; box-sizing: border-box; } @@ -1450,7 +1433,7 @@ ul.cat-checklist { margin-left: 0; } -@media screen and (min-width: 1600px) and ( max-width: 2299px ) { +@media screen and ( min-width: 1600px ) { .plugin-card { width: 30%; width: calc( 33.1% - 8px ); @@ -1475,31 +1458,6 @@ ul.cat-checklist { } } -@media screen and (min-width: 2300px) { - .plugin-card { - width: 25%; - width: calc( 25% - 12px ); - } - - .plugin-card:nth-child(odd) { - clear: none; - margin-right: 8px; - } - - .plugin-card:nth-child(even) { - margin-left: 8px; - } - - .plugin-card:nth-child(4n+1) { - clear: both; - margin-right: 0; - } - - .plugin-card:nth-child(4n) { - margin-left: 0; - } -} - .plugin-card-top { position: relative; padding: 20px 20px 10px; @@ -1512,7 +1470,7 @@ div.action-links, } .plugin-card h3 { - margin: 0 0 12px 12px; + margin: 0 0 12px; font-size: 18px; line-height: 1.3; } @@ -1520,7 +1478,7 @@ div.action-links, .plugin-card .name, .plugin-card .desc { margin-right: 148px; /* icon + margin */ - margin-left: 128px; /* action links + margin */ + margin-left: 120px; /* action links */ } .plugin-card .action-links { @@ -1533,6 +1491,7 @@ div.action-links, .plugin-action-buttons { clear: left; float: left; + margin-right: 2em; margin-bottom: 1em; text-align: left; } @@ -1544,8 +1503,8 @@ div.action-links, .plugin-card-bottom { clear: both; padding: 12px 20px; - background-color: #f6f7f7; - border-top: 1px solid #dcdcde; + background-color: #fafafa; + border-top: 1px solid #ddd; overflow: hidden; } @@ -1560,7 +1519,7 @@ div.action-links, .plugin-card-update-failed .notice-error { margin: 0; padding-right: 16px; - box-shadow: 0 -1px 0 #dcdcde; + box-shadow: 0 -1px 0 #ddd; } .plugin-card-update-failed .plugin-card-bottom { @@ -1568,7 +1527,7 @@ div.action-links, } .plugin-card .column-rating { - line-height: 1.76923076; + line-height: 23px; } .plugin-card .column-rating, @@ -1594,7 +1553,7 @@ div.action-links, .plugin-card .column-compatibility span:before { font: normal 20px/.5 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0; top: 4px; @@ -1604,21 +1563,19 @@ div.action-links, -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #3c434a; + color: #444; } -.plugin-card .column-compatibility .compatibility-incompatible:before { +.plugin-card .compatibility-incompatible:before { content: "\f158"; - color: #d63638; } -.plugin-card .column-compatibility .compatibility-compatible:before { +.plugin-card .compatibility-compatible:before { content: "\f147"; - color: #007017; } .plugin-card .notice { - margin: 20px 20px 0; + margin: 20px 20px 0 20px; } .plugin-icon { @@ -1631,28 +1588,31 @@ div.action-links, } .no-plugin-results { - color: #646970; /* same as no themes and no media */ + color: #666; /* same as no themes and no media */ font-size: 18px; font-style: normal; margin: 0; padding: 100px 0 0; - width: 100%; text-align: center; } /* ms */ /* Background Color for Site Status */ .wp-list-table .site-deleted, -.wp-list-table tr.site-deleted, +.wp-list-table tr.site-deleted { + background: #ff8573; +} +.wp-list-table .site-spammed, +.wp-list-table tr.site-spammed { + background: #faafaa; +} .wp-list-table .site-archived, .wp-list-table tr.site-archived { - background: #fcf0f1; + background: #ffebe8; } -.wp-list-table .site-spammed, -.wp-list-table tr.site-spammed, .wp-list-table .site-mature, .wp-list-table tr.site-mature { - background: #fcf9e8; + background: #fecac2; } .sites.fixed .column-lastupdated, @@ -1667,7 +1627,7 @@ div.action-links, /* =Media Queries -------------------------------------------------------------- */ -@media screen and (max-width: 1100px) and (min-width: 782px), (max-width: 480px) { +@media screen and ( max-width: 1100px ) and ( min-width: 782px ), ( max-width: 480px ) { .plugin-card .action-links { position: static; margin-right: 148px; @@ -1689,10 +1649,6 @@ div.action-links, margin-left: 20px; } - .plugin-card h3 { - margin-left: 24px; - } - .plugin-card .name, .plugin-card .desc { margin-left: 0; @@ -1701,16 +1657,20 @@ div.action-links, .plugin-card .desc p:first-of-type { margin-top: 0; } + + .fixed .column-date { + width: 14%; + } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { /* WP List Table Options & Filters */ .tablenav { height: auto; } .tablenav.top { - margin: 20px 0 5px; + margin: 20px 0 5px 0; } .tablenav.bottom { @@ -1734,7 +1694,7 @@ div.action-links, .view-switch a { width: 36px; height: 36px; - line-height: 2.53846153; + line-height: 33px; } /* Pagination */ @@ -1752,6 +1712,7 @@ div.action-links, .tablenav .tablenav-pages { width: 100%; + height: auto; text-align: center; margin: 0 0 25px; } @@ -1764,17 +1725,8 @@ div.action-links, display: none; } - .tablenav.bottom .actions select { - margin-bottom: 5px; - } - - .tablenav.bottom .actions.alignleft + .actions.alignleft { - clear: right; - margin-top: 10px; - } - .tablenav.bottom .tablenav-pages.one-page { - margin-top: 15px; + margin: 15px 0 0 0; height: 0; } @@ -1782,19 +1734,19 @@ div.action-links, font-size: 16px; } - .tablenav .tablenav-pages .button, - .tablenav .tablenav-pages .tablenav-pages-navspan { - min-width: 44px; - padding: 12px 8px; + .tablenav-pages .pagination-links a, + .tablenav-pages-navspan { + padding: 9px 11px 12px; font-size: 18px; - line-height: 1; + } + + .tablenav-pages-navspan { + height: 18px; } .tablenav-pages .pagination-links .current-page { - min-width: 44px; - padding: 12px 6px; + padding: 8px 9px 9px; font-size: 16px; - line-height: 1.125; } /* WP List Table Adjustments: General */ @@ -1802,6 +1754,10 @@ div.action-links, display: none; } + .comment-count { + font-size: 14px; + } + .wp-list-table th.column-primary ~ th, .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td:not(.check-column) { display: none; @@ -1814,10 +1770,7 @@ div.action-links, /* Checkboxes need to show */ .wp-list-table tr th.check-column { display: table-cell; - } - - .wp-list-table .check-column { - width: 2.5em; + width: 35px; } .wp-list-table .column-primary .toggle-row { @@ -1827,6 +1780,7 @@ div.action-links, .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) { position: relative; clear: both; + display: block; width: auto !important; /* needs to override some columns that are more specifically targeted */ } @@ -1869,11 +1823,6 @@ div.action-links, display: block; } - /* Comment author hidden via Screen Options */ - .fixed .column-author.hidden ~ .column-comment .comment-author { - display: none; - } - #the-comment-list .is-expanded td { box-shadow: none; } @@ -1885,6 +1834,7 @@ div.action-links, /* Show comment bubble as text instead */ .post-com-count .screen-reader-text { position: static; + -webkit-clip-path: none; clip-path: none; width: auto; height: auto; @@ -1930,7 +1880,7 @@ div.action-links, border: none; border-radius: 0; background: none; - color: #b32d2e; + color: #bb2a2a; font-size: inherit; line-height: inherit; text-align: right; @@ -1938,7 +1888,7 @@ div.action-links, .column-response .post-com-count-pending:hover, .column-comments .post-com-count-pending:hover { - color: #d63638; + color: #dc3232; } .widefat thead td.check-column, @@ -1946,30 +1896,8 @@ div.action-links, padding-top: 10px; } - .row-actions { - margin-right: -8px; - margin-left: -8px; - padding-top: 4px; - } - - /* Make row actions more easy to select on mobile */ - body:not(.plugins-php) .row-actions { - display: flex; - flex-wrap: wrap; - gap: 8px; - color: transparent; - } - - .row-actions span a, - .row-actions span .button-link { - display: inline-block; - padding: 4px 8px; - line-height: 1.5; - } - - .row-actions span.approve:before, - .row-actions span.unapprove:before { - content: "| "; + .widefat * { + word-wrap: normal; } /* Quick Edit and Bulk Edit */ @@ -1984,20 +1912,6 @@ div.action-links, #wpbody-content .bulk-edit-row .inline-edit-col-bottom { float: none; width: 100%; - padding: 0; - } - - #the-list .inline-edit-row .inline-edit-legend, - .inline-edit-row span.title { - font-size: 16px; - } - - .inline-edit-row p.howto { - font-size: 14px; - } - - #wpbody-content .inline-edit-row-page .inline-edit-col-right { - margin-top: 0; } #wpbody-content .quick-edit-row fieldset .inline-edit-col label, @@ -2016,37 +1930,9 @@ div.action-links, box-sizing: border-box; } - .inline-edit-row fieldset input[name=jj], - .inline-edit-row fieldset input[name=hh], - .inline-edit-row fieldset input[name=mn], - .inline-edit-row fieldset input[name=aa] { - font-size: 16px; - line-height: 2; - padding: 3px 4px; - } - - #bulk-titles .ntdelbutton, - #bulk-titles .ntdeltitle, - .inline-edit-row fieldset ul.cat-checklist label { - padding: 6px 0; + .inline-edit-row fieldset ul.cat-checklist label, + .inline-edit-row #bulk-titles div { font-size: 16px; - line-height: 28px; - } - - #bulk-titles .ntdelitem { - padding-right: 37px; - } - - #bulk-titles .ntdelbutton { - width: 40px; - height: 40px; - margin: 0 -40px 0 0; - overflow: hidden; - } - - #bulk-titles .ntdelbutton:before { - font-size: 20px; - line-height: 28px; } .inline-edit-row fieldset label span.title, @@ -2054,6 +1940,10 @@ div.action-links, float: none; } + .inline-edit-row fieldset label.inline-edit-tags { + padding: 0 0.5em; + } + .inline-edit-row fieldset .inline-edit-col label.inline-edit-tags { padding: 0; } @@ -2063,6 +1953,16 @@ div.action-links, margin-right: 0; } + .inline-edit-row fieldset input[name=jj], + .inline-edit-row fieldset input[name=hh], + .inline-edit-row fieldset input[name=mn] { + width: 3em; + } + + .inline-edit-row fieldset input[name=aa] { + width: 4.5em; + } + .inline-edit-row .inline-edit-or { margin: 0 0 0 6px; } @@ -2083,6 +1983,14 @@ div.action-links, display: block; } + #bulk-titles div { + margin: 0.8em 0.3em; + } + + #bulk-titles div a { + height: 22px; + } + /* Updates */ #wpbody-content .updates-table .plugin-title { width: auto; @@ -2111,11 +2019,6 @@ div.action-links, padding: 10px 9px; /* reset from other list tables that have a label at this width */ } - /* Plugin description hidden via Screen Options */ - #wpbody-content .wp-list-table.plugins .desc.hidden { - display: none; - } - #wpbody-content .wp-list-table.plugins .column-description { padding-top: 2px; } @@ -2165,6 +2068,11 @@ div.action-links, display: table-cell; } + .plugins .active.update + .plugin-update-tr:before { + border-right: 4px solid #d54e21; + background-color: #fef7f1; + } + .plugins #the-list .plugin-update-tr .plugin-update { border-right: none; } @@ -2173,10 +2081,9 @@ div.action-links, margin-right: 0; } - .plugins .active.update + .plugin-update-tr:before, - .plugins .active.updated + .plugin-update-tr:before { - background-color: #f0f6fc; - border-right: 4px solid #72aee6; + .plugins .active.update + .plugin-update-tr:before { + background-color: #f7fcfe; + border-right: 4px solid #00a0d2; } .plugins .plugin-update-tr .update-message { @@ -2189,17 +2096,7 @@ div.action-links, line-height: 1.5; } - .plugins tbody th.check-column { - padding: 8px 5px 0 0; - } - - .plugins thead td.check-column, - .plugins tfoot td.check-column, - .plugins .inactive th.check-column { - padding-right: 9px; - } - - /* Add New plugins page */ + /* Add WP Plugin page */ table.plugin-install .column-name, table.plugin-install .column-version, table.plugin-install .column-rating, @@ -2226,7 +2123,7 @@ div.action-links, table.plugin-install #the-list tr { display: block; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .plugin-card { @@ -2234,30 +2131,13 @@ div.action-links, margin-left: 0; width: 100%; } - - table.media .column-title .has-media-icon ~ .row-actions { - margin-right: 0; - clear: both; - } } -@media screen and (max-width: 480px) { +@media screen and ( max-width: 480px ) { .tablenav-pages .current-page { margin: 0; } - .tablenav.bottom .displaying-num { - position: relative; - top: 0; - display: block; - text-align: left; - padding-bottom: 0.5em; - } - - .tablenav.bottom .tablenav-pages.one-page { - height: auto; - } - .tablenav-pages .tablenav-paging-text { float: right; width: 100%; diff --git a/wp-admin/css/list-tables-rtl.min.css b/wp-admin/css/list-tables-rtl.min.css index 6cc7ea1..b810822 100644 --- a/wp-admin/css/list-tables-rtl.min.css +++ b/wp-admin/css/list-tables-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;border-radius:5px;background-color:#646970;color:#fff;font-size:11px;line-height:1.90909090;text-align:center}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-right:8px;width:0;height:0;border-top:5px solid #646970;border-left:5px solid transparent}.column-comments a.post-com-count-approved:focus .comment-count-approved,.column-comments a.post-com-count-approved:hover .comment-count-approved,.column-response a.post-com-count-approved:focus .comment-count-approved,.column-response a.post-com-count-approved:hover .comment-count-approved{background:#2271b1}.column-comments a.post-com-count-approved:focus:after,.column-comments a.post-com-count-approved:hover:after,.column-response a.post-com-count-approved:focus:after,.column-response a.post-com-count-approved:hover:after{border-top-color:#2271b1}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;right:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;border-radius:11px;background:#d63638;color:#fff;font-size:9px;line-height:1.88888888;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #c3c4c7}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#50575e}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden}#replysubmit .reply-submit-buttons{margin-bottom:0}#replysubmit .button{margin-left:5px}#replysubmit .spinner{float:none;margin:-4px 0 0}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:right;padding:3px 5px 2px 0;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;box-shadow:none}#replyerror{border-color:#dcdcde;background-color:#f6f7f7}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f6f7f7}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fcf9e8}#the-comment-list .unapproved th.check-column{border-right:4px solid #d63638}#the-comment-list .unapproved th.check-column input{margin-right:4px}#the-comment-list .approve a{color:#007017}#the-comment-list .unapprove a{color:#996800}#the-comment-list td,#the-comment-list th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#f0f6fc!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-date{width:14%}.column-date span[title]{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.fixed .column-posts{width:74px}.fixed .column-posts,.fixed .column-role{-webkit-hyphens:auto;hyphens:auto}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:right}.fixed .column-comments .vers{padding-right:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:right;min-height:60px;margin:0 0 0 9px}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-right:70px}table.media .column-title .filename{margin-bottom:.2em}.media .row-actions .copy-to-clipboard-container{display:inline;position:relative}.media .row-actions .copy-to-clipboard-container .success{position:absolute;right:50%;transform:translate(50%,-100%);background:#000;color:#fff;border-radius:5px;margin:0;padding:2px 5px}.wp-list-table a{transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:1.38461538}#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 .comments-box{border:0 none}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0;top:-4px;right:-8px;color:#3c434a;line-height:.5;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.column-comments .sorting-indicator:before{top:0;right:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;left:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-list-table .toggle-row:active{box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;right:10px;border-radius:50%;display:block;padding:1px 0 1px 2px;color:#3c434a;content:"\f140";font:normal 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:never}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}.locked-indicator{display:none;margin-right:6px;height:20px;width:16px}.locked-indicator-icon:before{color:#8c8f94;content:"\f160";display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.locked-info{display:none;margin-top:4px}.locked-text{vertical-align:top}.wp-locked .locked-indicator,.wp-locked .locked-info{display:block}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:right;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages .current-page{margin:0 0 0 2px;font-size:13px;text-align:center}.tablenav .total-pages{margin-left:2px}.tablenav #table-paging{margin-right:2px}.tablenav{clear:both;height:30px;margin:6px 0 4px;padding-top:5px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:left;margin:0 0 9px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{display:inline-block;vertical-align:baseline;min-width:30px;min-height:30px;margin:0;padding:0 4px;font-size:16px;line-height:1.625;text-align:center}.tablenav .displaying-num{margin-left:7px}.tablenav .one-page .displaying-num{display:inline-block;margin:5px 0}.tablenav .actions{padding:0 0 0 8px}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-left:20px}.tablenav .view-switch{float:left;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 2px 0 8px}.media-toolbar.wp-filter .view-switch{margin:0 2px 0 12px}.view-switch a{float:right;width:28px;height:28px;text-align:center;line-height:1.84615384;text-decoration:none}.view-switch a:before{color:#c3c4c7;display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#787c82}.view-switch a.current:before{color:#2271b1}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-right:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;padding:0}#posts-filter fieldset legend{padding:0 1px .2em 0}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:right;margin-left:10px;margin-top:1px}.row-actions{color:#a7aaad;font-size:13px;padding:2px 0 0;position:relative;right:-9999em}.rtl .row-actions a{display:inline-block}.row-actions .network_active,.row-actions .network_only{color:#000}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}.row-actions-visible{padding:2px 0 0}#wpbody-content .inline-edit-row fieldset{float:right;margin:0;padding:0 0 0 12px;width:100%;box-sizing:border-box}#wpbody-content .inline-edit-row td fieldset:last-of-type{padding-left:0}tr.inline-edit-row td{padding:0;position:relative}.inline-edit-wrapper{display:flow-root;padding:0 12px;border:1px solid transparent;border-radius:4px}.inline-edit-wrapper:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}#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 .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:50%}#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:left;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row .submit{display:flex;flex-wrap:wrap;align-items:center;clear:both;margin:0;padding:.5em 0 1em}.inline-edit-save.submit .button{margin-left:8px}.inline-edit-save .spinner{float:none;margin:0}.inline-edit-row .notice-error{box-sizing:border-box;min-width:100%;margin-top:1em}.inline-edit-row .notice-error .error{margin:.5em 0;padding:2px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em 0;line-height:2.5;font-weight:600}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;vertical-align:baseline;line-height:2}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:right;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-right:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-left:.5em}.inline-edit-row .inline-edit-or{margin:.2em 0 .2em 6px;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#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-left:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{vertical-align:middle;text-align:center;padding:0 4px}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}#bulk-titles-list,#bulk-titles-list li,.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row fieldset ul.cat-checklist input{margin-top:-1px;margin-right:3px}.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%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles,ul.cat-checklist{height:14em;border:1px solid #ddd;margin:0 0 5px;padding:.2em 5px;overflow-y:scroll}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{display:inline-block;margin:0;padding:3px 0;line-height:20px;vertical-align:top}#bulk-titles .ntdelitem{padding-right:23px}#bulk-titles .ntdelbutton{width:26px;height:26px;margin:0 -26px 0 0;text-align:center;border-radius:3px}#bulk-titles .ntdelbutton:before{display:inline-block;vertical-align:top}#bulk-titles .ntdelbutton:focus{box-shadow:0 0 0 2px #3582c4;outline:2px solid transparent;outline-offset:0}.plugins tbody,.plugins tbody th.check-column{padding:8px 2px 0 0}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5}.plugins .desc ol,.plugins .desc ul{margin:0 2em 0 0}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px;padding:0}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f0f6fc}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #dcdcde}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{box-shadow:none}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #72aee6}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-left:12px;white-space:nowrap}.plugins .plugin-title .dashicons,.plugins .plugin-title img{float:right;padding:0 0 0 10px;width:64px;height:64px}.plugins .plugin-title .dashicons:before{padding:2px;background-color:#f0f0f1;box-shadow:inset 0 0 10px rgba(167,170,173,.15);font-size:60px;color:#c3c4c7}#update-themes-table .plugin-title .dashicons,#update-themes-table .plugin-title img{width:85px}.plugins .column-auto-updates{width:14.2em}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .row-actions{white-space:normal;min-width:12em}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 40px 15px 20px}.plugins .notice p{margin:.5em 0}.plugins .plugin-description a,.plugins .plugin-update a,.updates-table .plugin-title a{text-decoration:underline}.plugins tr.paused th.check-column{border-right:4px solid #b32d2e}.plugins tr.paused td,.plugins tr.paused th{background-color:#f6f7f7}.plugins .paused .dashicons-warning,.plugins tr.paused .plugin-title{color:#b32d2e}.plugins .paused .error-display code,.plugins .paused .error-display p{font-size:90%;color:rgba(0,0,0,.7)}.plugins .resume-link{color:#b32d2e}.plugin-card .update-now:before{color:#d63638;content:"\f463";display:inline-block;font:normal 20px/1 dashicons;margin:-3px -2px 0 5px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}.plugin-card .updating-message:before{content:"\f463";animation:rotation 2s infinite linear}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(-359deg)}}.plugin-card .updated-message:before{color:#68de7c;content:"\f147"}.plugin-install-php #the-list{display:flex;flex-wrap:wrap}.plugin-install-php .plugin-card{display:flex;flex-direction:column;justify-content:space-between}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:right;margin:0 8px 16px;width:48.5%;width:calc(50% - 8px);background-color:#fff;border:1px solid #dcdcde;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-right:0}.plugin-card:nth-child(2n){margin-left:0}@media screen and (min-width:1600px) and (max-width:2299px){.plugin-card{width:30%;width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-right:8px}.plugin-card:nth-child(2n){margin-left:8px}.plugin-card:nth-child(3n+1){clear:both;margin-right:0}.plugin-card:nth-child(3n){margin-left:0}}@media screen and (min-width:2300px){.plugin-card{width:25%;width:calc(25% - 12px)}.plugin-card:nth-child(odd){clear:none;margin-right:8px}.plugin-card:nth-child(2n){margin-left:8px}.plugin-card:nth-child(4n+1){clear:both;margin-right:0}.plugin-card:nth-child(4n){margin-left:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 0 12px 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-right:148px;margin-left:128px}.plugin-card .action-links{position:absolute;top:20px;left:20px;width:120px}.plugin-action-buttons{clear:left;float:left;margin-bottom:1em;text-align:left}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#f6f7f7;border-top:1px solid #dcdcde;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-right:16px;box-shadow:0 -1px 0 #dcdcde}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:1.76923076}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:right;clear:right;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:left;float:left;clear:left;width:65%;width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;right:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.plugin-card .column-compatibility .compatibility-incompatible:before{content:"\f158";color:#d63638}.plugin-card .column-compatibility .compatibility-compatible:before{content:"\f147";color:#007017}.plugin-card .notice{margin:20px 20px 0}.plugin-icon{position:absolute;top:20px;right:20px;width:128px;height:128px;margin:0 0 20px 20px}.no-plugin-results{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;width:100%;text-align:center}.wp-list-table .site-archived,.wp-list-table .site-deleted,.wp-list-table tr.site-archived,.wp-list-table tr.site-deleted{background:#fcf0f1}.wp-list-table .site-mature,.wp-list-table .site-spammed,.wp-list-table tr.site-mature,.wp-list-table tr.site-spammed{background:#fcf9e8}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-right:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:right}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-left:20px}.plugin-card h3{margin-left:24px}.plugin-card .desc,.plugin-card .name{margin-left:0}.plugin-card .desc p:first-of-type{margin-top:0}}@media screen and (max-width:782px){.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.tablenav .view-switch,.tablenav.top .actions{display:none}.view-switch a{width:36px;height:36px;line-height:2.53846153}.tablenav.top .displaying-num{display:none}.tablenav.bottom .displaying-num{position:absolute;left:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.top .tablenav-pages.one-page{display:none}.tablenav.bottom .actions select{margin-bottom:5px}.tablenav.bottom .actions.alignleft+.actions.alignleft{clear:right;margin-top:10px}.tablenav.bottom .tablenav-pages.one-page{margin-top:15px;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{min-width:44px;padding:12px 8px;font-size:18px;line-height:1}.tablenav-pages .pagination-links .current-page{min-width:44px;padding:12px 6px;font-size:16px;line-height:1.125}.form-wrap>p{display:none}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell}.wp-list-table .check-column{width:2.5em}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;width:auto!important}.wp-list-table td.column-primary{padding-left:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 35% 3px 8px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;right:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:right}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}.fixed .column-author.hidden~.column-comment .comment-author{display:none}#the-comment-list .is-expanded td{box-shadow:none}#the-comment-list .is-expanded td:last-child{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;clip-path:none;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-left:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;border-radius:0;background:0 0;color:#b32d2e;font-size:inherit;line-height:inherit;text-align:right}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#d63638}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.row-actions{margin-right:-8px;margin-left:-8px;padding-top:4px}body:not(.plugins-php) .row-actions{display:flex;flex-wrap:wrap;gap:8px;color:transparent}.row-actions span .button-link,.row-actions span a{display:inline-block;padding:4px 8px;line-height:1.5}.row-actions span.approve:before,.row-actions span.unapprove:before{content:"| "}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%;padding:0}#the-list .inline-edit-row .inline-edit-legend,.inline-edit-row span.title{font-size:16px}.inline-edit-row p.howto{font-size:14px}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:0}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;box-sizing:border-box}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:16px;line-height:2;padding:3px 4px}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{padding:6px 0;font-size:16px;line-height:28px}#bulk-titles .ntdelitem{padding-right:37px}#bulk-titles .ntdelbutton{width:40px;height:40px;margin:0 -40px 0 0;overflow:hidden}#bulk-titles .ntdelbutton:before{font-size:20px;line-height:28px}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}.inline-edit-row .inline-edit-or{margin:0 0 0 6px}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:right;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#edithead label{display:block}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .desc.hidden{display:none}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-left:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{box-shadow:none;border-top:none}.plugins #the-list tr td{border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins #the-list .plugin-update-tr .plugin-update{border-right:none}.plugin-update-tr .update-message{margin-right:0}.plugins .active.update+.plugin-update-tr:before,.plugins .active.updated+.plugin-update-tr:before{background-color:#f0f6fc;border-right:4px solid #72aee6}.plugins .plugin-update-tr .update-message{margin-right:0}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}.plugins tbody th.check-column{padding:8px 5px 0 0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:9px}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{box-shadow:none}table.plugin-install #the-list tr{display:block;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-right:0;margin-left:0;width:100%}table.media .column-title .has-media-icon~.row-actions{margin-right:0;clear:both}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav.bottom .displaying-num{position:relative;top:0;display:block;text-align:left;padding-bottom:.5em}.tablenav.bottom .tablenav-pages.one-page{height:auto}.tablenav-pages .tablenav-paging-text{float:right;width:100%;padding-top:.5em}} \ No newline at end of file +.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;border-radius:5px;background-color:#72777c;color:#fff;font-size:11px;line-height:21px;text-align:center}.ie8 .column-comments .comment-count-approved,.ie8 .column-comments .comment-count-no-comments,.ie8 .column-response .comment-count-approved,.ie8 .column-response .comment-count-no-comments{min-width:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-right:8px;width:0;height:0;border-top:5px solid #72777c;border-left:5px solid transparent}.column-comments .post-com-count-approved:focus .comment-count-approved,.column-comments .post-com-count-approved:hover .comment-count-approved,.column-response .post-com-count-approved:focus .comment-count-approved,.column-response .post-com-count-approved:hover .comment-count-approved{background:#0073aa}.column-comments .post-com-count-approved:focus:after,.column-comments .post-com-count-approved:hover:after,.column-response .post-com-count-approved:focus:after,.column-response .post-com-count-approved:hover:after{border-top-color:#0073aa}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;right:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#555d66}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden}#replysubmit .button{margin-left:5px}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:right;padding:3px 5px 2px 0;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;box-shadow:none}#replyerror{border-color:#ddd;background-color:#f9f9f9}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f5f5f5}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-right:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-right:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#e4f2fd!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:normal 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-posts,.fixed .column-role{-webkit-hyphens:auto;hyphens:auto}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:right}.fixed .column-comments .vers{padding-right:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:right;min-height:60px;margin:0 0 0 9px}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-right:70px}table.media .column-title .filename{margin-bottom:.2em}.wp-list-table a{transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;box-shadow:none}#comments-form .fixed .column-author{width:20%}#comments-form .fixed .column-date{width:14%}#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 .comments-box{border:0 none}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;right:-8px;color:#444;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;right:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;left:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .wp-list-table .toggle-row:focus:before{outline:#5b9dd9 solid 1px}.wp-list-table .toggle-row:active{box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;right:10px;border-radius:50%;display:block;padding:1px 0 1px 2px;color:#444;content:"\f140";font:normal 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}tr.wp-locked .locked-indicator{margin-right:6px;height:20px;width:16px}tr.wp-locked .locked-indicator-icon:before{color:#82878c;content:"\f160";display:inline-block;font:normal 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:4px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{transition:height 1s,opacity .5s}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:right;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 0 0 2px;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-left:2px}.tablenav #table-paging{margin-right:2px}.tablenav a.button,.tablenav a.button-secondary{display:block;margin:3px 0 0 8px}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:left;height:28px;margin-top:3px;cursor:default;color:#555}.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,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #ccc;padding:3px 5px 7px;background:#e5e5e5;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#ddd;background:#f7f7f7;color:#a0a5aa}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;box-shadow:none;outline:0}.tablenav .displaying-num{margin-left:7px}.tablenav .one-page .displaying-num{display:inline-block;margin-top:5px;margin-left:0}.tablenav .actions{overflow:hidden;padding:2px 0 0 8px}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-left:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:left;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 2px 0 8px}.media-toolbar.wp-filter .view-switch{margin:0 2px 0 12px}.view-switch a{float:right;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font:normal 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#727272}.view-switch a.current:before{color:#0073aa}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-right:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;padding:0}#posts-filter fieldset legend{padding:0 1px .2em 0}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:right;margin-left:10px;margin-top:1px}.row-actions{color:#ddd;font-size:13px;padding:2px 0 0;position:relative;right:-9999em}.rtl .row-actions a{display:inline-block}.row-actions .network_active,.row-actions .network_only{color:#000}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}.row-actions-visible{padding:2px 0 0}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:right;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#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 .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .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:left;width:69%}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row .submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row .notice-error{margin-top:1em}.inline-edit-row .notice-error .error{margin:.5em 0;padding:2px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;line-height:1.5;vertical-align:baseline}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:right;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset.inline-edit-date select{margin:1px;line-height:28px}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-right:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-left:.5em}.inline-edit-row .inline-edit-or{margin:.2em 0 .2em 6px;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#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-left:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{font-style:italic}.inline-edit-row fieldset .inline-edit-date{float:right}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.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}ul.cat-checklist{height:12em;border:solid 1px #ddd;overflow-y:scroll;padding:0 5px;margin:0;background-color:#fff}#bulk-titles{display:block;height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-style:normal;font-size:11px}.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%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name=page_template]{width:250px}.quick-edit-row-post fieldset label.inline-edit-status{float:right}#bulk-titles{line-height:140%}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;float:right;height:18px;margin:0 -2px 0 3px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 2px 0 0}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ol,.plugins .desc ul{margin:0 2em 0 0}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px;padding:0}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f7fcfe}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{box-shadow:none}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #00a0d2}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-left:12px;white-space:nowrap}.plugins .dashicon{font:16px dashicons;vertical-align:text-bottom}.plugins .plugin-title .dashicons,.plugins .plugin-title img{float:right;padding:0 0 0 10px;width:64px;height:64px}.plugins .plugin-title .dashicons:before{padding:2px;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);font-size:60px;color:#b4b9be}#update-themes-table .plugin-title .dashicons,#update-themes-table .plugin-title img{width:85px}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 40px 15px 20px}.plugins .notice p{margin:.5em 0}.plugin-card .update-now:before{color:#f56e28;content:"\f463";display:inline-block;font:normal 20px/1 dashicons;margin:3px -2px 0 5px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";animation:rotation 2s infinite linear}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(-359deg)}}.plugin-card .updated-message:before{color:#79ba49;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:right;margin:0 8px 16px;width:48.5%;width:calc(50% - 8px);background-color:#fff;border:1px solid #ddd;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-right:0}.plugin-card:nth-child(even){margin-left:0}@media screen and (min-width:1600px){.plugin-card{width:30%;width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-right:8px}.plugin-card:nth-child(even){margin-left:8px}.plugin-card:nth-child(3n+1){clear:both;margin-right:0}.plugin-card:nth-child(3n){margin-left:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-right:148px;margin-left:120px}.plugin-card .action-links{position:absolute;top:20px;left:20px;width:120px}.plugin-action-buttons{clear:left;float:left;margin-right:2em;margin-bottom:1em;text-align:left}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #ddd;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-right:16px;box-shadow:0 -1px 0 #ddd}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:right;clear:right;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:left;float:left;clear:left;width:65%;width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:normal 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;right:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.plugin-card .compatibility-incompatible:before{content:"\f158"}.plugin-card .compatibility-compatible:before{content:"\f147"}.plugin-card .notice{margin:20px 20px 0 20px}.plugin-icon{position:absolute;top:20px;right:20px;width:128px;height:128px;margin:0 0 20px 20px}.no-plugin-results{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-right:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:right}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-left:20px}.plugin-card .desc,.plugin-card .name{margin-left:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.tablenav{height:auto}.tablenav.top{margin:20px 0 5px 0}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.tablenav .view-switch,.tablenav.top .actions{display:none}.view-switch a{width:36px;height:36px;line-height:33px}.tablenav.top .displaying-num{display:none}.tablenav.bottom .displaying-num{position:absolute;left:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;height:auto;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.top .tablenav-pages.one-page{display:none}.tablenav.bottom .tablenav-pages.one-page{margin:15px 0 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 11px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.form-wrap>p{display:none}.comment-count{font-size:14px}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-left:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 35% 3px 8px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;right:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:right}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{box-shadow:none}#the-comment-list .is-expanded td:last-child{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-left:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;border-radius:0;background:0 0;color:#bb2a2a;font-size:inherit;line-height:inherit;text-align:right}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#dc3232}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 0 0 6px}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:right;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#edithead label{display:block}#bulk-titles div{margin:.8em .3em}#bulk-titles div a{height:22px}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-left:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{box-shadow:none;border-top:none}.plugins #the-list tr td{border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins .active.update+.plugin-update-tr:before{border-right:4px solid #d54e21;background-color:#fef7f1}.plugins #the-list .plugin-update-tr .plugin-update{border-right:none}.plugin-update-tr .update-message{margin-right:0}.plugins .active.update+.plugin-update-tr:before{background-color:#f7fcfe;border-right:4px solid #00a0d2}.plugins .plugin-update-tr .update-message{margin-right:0}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{box-shadow:none}table.plugin-install #the-list tr{display:block;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-right:0;margin-left:0;width:100%}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav-pages .tablenav-paging-text{float:right;width:100%;padding-top:.5em}} \ No newline at end of file diff --git a/wp-admin/css/list-tables.css b/wp-admin/css/list-tables.css index 780a454..27e2052 100644 --- a/wp-admin/css/list-tables.css +++ b/wp-admin/css/list-tables.css @@ -55,13 +55,20 @@ min-width: 24px; height: 2em; border-radius: 5px; - background-color: #646970; + background-color: #72777c; color: #fff; font-size: 11px; - line-height: 1.90909090; + line-height: 21px; text-align: center; } +.ie8 .column-response .comment-count-no-comments, +.ie8 .column-response .comment-count-approved, +.ie8 .column-comments .comment-count-no-comments, +.ie8 .column-comments .comment-count-approved { + min-width: 0; +} + .column-response .post-com-count-no-comments:after, .column-response .post-com-count-approved:after, .column-comments .post-com-count-no-comments:after, @@ -71,22 +78,22 @@ margin-left: 8px; width: 0; height: 0; - border-top: 5px solid #646970; + border-top: 5px solid #72777c; border-right: 5px solid transparent; } -.column-response a.post-com-count-approved:hover .comment-count-approved, -.column-response a.post-com-count-approved:focus .comment-count-approved, -.column-comments a.post-com-count-approved:hover .comment-count-approved, -.column-comments a.post-com-count-approved:focus .comment-count-approved { - background: #2271b1; +.column-response .post-com-count-approved:hover .comment-count-approved, +.column-response .post-com-count-approved:focus .comment-count-approved, +.column-comments .post-com-count-approved:hover .comment-count-approved, +.column-comments .post-com-count-approved:focus .comment-count-approved { + background: #0073aa; } -.column-response a.post-com-count-approved:hover:after, -.column-response a.post-com-count-approved:focus:after, -.column-comments a.post-com-count-approved:hover:after, -.column-comments a.post-com-count-approved:focus:after { - border-top-color: #2271b1; +.column-response .post-com-count-approved:hover:after, +.column-response .post-com-count-approved:focus:after, +.column-comments .post-com-count-approved:hover:after, +.column-comments .post-com-count-approved:focus:after { + border-top-color: #0073aa; } /* @todo: consider to use a single rule for these counters and the admin menu counters. */ @@ -99,10 +106,10 @@ height: 17px; border: 2px solid #fff; border-radius: 11px; - background: #d63638; + background: #ca4a1f; color: #fff; font-size: 9px; - line-height: 1.88888888; + line-height: 17px; text-align: center; } @@ -116,7 +123,7 @@ .commentlist li { padding: 1em 1em .2em; margin: 0; - border-bottom: 1px solid #c3c4c7; + border-bottom: 1px solid #ccc; } .commentlist li li { @@ -131,7 +138,7 @@ #submitted-on, .submitted-on { - color: #50575e; + color: #555d66; } /* reply to comments */ @@ -145,19 +152,10 @@ overflow: hidden; } -#replysubmit .reply-submit-buttons { - margin-bottom: 0; -} - #replysubmit .button { margin-right: 5px; } -#replysubmit .spinner { - float: none; - margin: -4px 0 0; -} - #replyrow.inline-edit-row fieldset.comment-reply { font-size: inherit; line-height: inherit; @@ -203,8 +201,8 @@ } #replyerror { - border-color: #dcdcde; - background-color: #f6f7f7; + border-color: #ddd; + background-color: #f9f9f9; } /* @todo: is this used? */ @@ -214,16 +212,16 @@ #the-comment-list tr.undo, #the-comment-list div.undo { - background-color: #f6f7f7; + background-color: #f5f5f5; } #the-comment-list .unapproved th, #the-comment-list .unapproved td { - background-color: #fcf9e8; + background-color: #fef7f1; } #the-comment-list .unapproved th.check-column { - border-left: 4px solid #d63638; + border-left: 4px solid #d54e21; } #the-comment-list .unapproved th.check-column input { @@ -231,11 +229,11 @@ } #the-comment-list .approve a { - color: #007017; + color: #006505; } #the-comment-list .unapprove a { - color: #996800; + color: #d98500; } #the-comment-list th, @@ -245,19 +243,19 @@ #the-comment-list tr:last-child th, #the-comment-list tr:last-child td { - box-shadow: none; + box-shadow: none; } #the-comment-list tr.unapproved + tr.approved th, #the-comment-list tr.unapproved + tr.approved td { - border-top: 1px solid rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.03); } /* table vim shortcuts */ .vim-current, .vim-current th, .vim-current td { - background-color: #f0f6fc !important; + background-color: #e4f2fd !important; } th .comment-grey-bubble { @@ -268,7 +266,7 @@ th .comment-grey-bubble { th .comment-grey-bubble:before { content: "\f101"; font: normal 20px/.5 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0; top: 4px; @@ -278,7 +276,7 @@ th .comment-grey-bubble:before { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #3c434a; + color: #444; } /*------------------------------------------------------------------------------ @@ -295,6 +293,7 @@ table.fixed { } .fixed .column-posts, +.fixed .column-date, .fixed .column-parent, .fixed .column-links, .fixed .column-author, @@ -302,15 +301,6 @@ table.fixed { width: 10%; } -.fixed .column-date { - width: 14%; -} - -.column-date span[title] { - -webkit-text-decoration: dotted underline; - text-decoration: dotted underline; -} - .fixed .column-posts { width: 74px; } @@ -367,7 +357,7 @@ td.plugin-title p { table.media .column-title .media-icon { float: left; min-height: 60px; - margin: 0 9px 0 0; + margin: 0 9px 0 0; } table.media .column-title .media-icon img { @@ -384,23 +374,6 @@ table.media .column-title .filename { margin-bottom: 0.2em; } -/* Media Copy to clipboard row action */ -.media .row-actions .copy-to-clipboard-container { - display: inline; - position: relative; -} - -.media .row-actions .copy-to-clipboard-container .success { - position: absolute; - left: 50%; - transform: translate(-50%, -100%); - background: #000; - color: #fff; - border-radius: 5px; - margin: 0; - padding: 2px 5px; -} - /* @todo: pick a consistent list table selector */ .wp-list-table a { transition: none; @@ -416,13 +389,17 @@ table.media .column-title .filename { width: 20%; } +#comments-form .fixed .column-date { + width: 14%; +} + #commentsdiv.postbox .inside { margin: 0; padding: 0; } #commentsdiv .inside .row-actions { - line-height: 1.38461538; + line-height:18px; } #commentsdiv .inside .column-author { @@ -451,6 +428,7 @@ table.media .column-title .filename { #commentsdiv .comments-box thead td { background: transparent; padding: 0 7px 4px; + font-style: italic; } #commentsdiv .comments-box tr:last-child td { @@ -473,19 +451,19 @@ table.media .column-title .filename { .sorting-indicator:before { content: "\f142"; font: normal 20px/1 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0; top: -4px; left: -8px; - color: #3c434a; - line-height: 0.5; + color: #444; + line-height: 10px; position: relative; vertical-align: top; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #3c434a; + color: #444; } .column-comments .sorting-indicator:before { @@ -523,9 +501,13 @@ th.asc a:focus span.sorting-indicator:before { } .wp-list-table .toggle-row:focus:before { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 .wp-list-table .toggle-row:focus:before { + outline: #5b9dd9 solid 1px; } .wp-list-table .toggle-row:active { @@ -539,56 +521,60 @@ th.asc a:focus span.sorting-indicator:before { border-radius: 50%; display: block; padding: 1px 2px 1px 0; - color: #3c434a; /* same as table headers sort arrows */ + color: #444; /* same as table headers sort arrows */ content: "\f140"; font: normal 20px/1 dashicons; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - speak: never; + speak: none; } .wp-list-table .is-expanded .toggle-row:before { content: "\f142"; } -.locked-indicator { - display: none; +tr.wp-locked .locked-indicator { margin-left: 6px; height: 20px; width: 16px; } -.locked-indicator-icon:before { - color: #8c8f94; +tr.wp-locked .locked-indicator-icon:before { + color: #82878c; content: "\f160"; display: inline-block; font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: middle; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -.locked-info { +tr.wp-locked .check-column label, +tr.wp-locked .check-column input[type="checkbox"], +tr.wp-locked .row-actions .inline, +tr.wp-locked .row-actions .trash { display: none; +} + +tr .locked-info { + height: 0; + opacity: 0; +} + +tr.wp-locked .locked-info { margin-top: 4px; + height: auto; + opacity: 1; } .locked-text { vertical-align: top; } -.wp-locked .locked-indicator, -.wp-locked .locked-info { - display: block; -} - -tr.wp-locked .check-column label, -tr.wp-locked .check-column input[type="checkbox"], -tr.wp-locked .row-actions .inline, -tr.wp-locked .row-actions .trash { - display: none; +tr.locked-info, tr.wp-locked .locked-info { + transition: height 1s, opacity 0.5s; } .fixed .column-comments .sorting-indicator { @@ -630,8 +616,16 @@ th.asc a:focus span.sorting-indicator { visibility: visible; } +/* Bulk Actions */ +.tablenav-pages a, +.tablenav-pages-navspan { + font-weight: 600; + padding: 0 2px; +} + .tablenav-pages .current-page { margin: 0 2px 0 0; + padding-bottom: 5px; font-size: 13px; text-align: center; } @@ -644,11 +638,16 @@ th.asc a:focus span.sorting-indicator { margin-left: 2px; } +.tablenav a.button, +.tablenav a.button-secondary { + display: block; + margin: 3px 8px 0 0; +} + .tablenav { clear: both; height: 30px; margin: 6px 0 4px; - padding-top: 5px; vertical-align: middle; } @@ -658,7 +657,10 @@ th.asc a:focus span.sorting-indicator { .tablenav .tablenav-pages { float: right; - margin: 0 0 9px; + height: 28px; + margin-top: 3px; + cursor: default; + color: #555; } .tablenav .no-pages, @@ -666,30 +668,54 @@ th.asc a:focus span.sorting-indicator { display: none; } -.tablenav .tablenav-pages .button, -.tablenav .tablenav-pages .tablenav-pages-navspan { +.tablenav .tablenav-pages a, +.tablenav-pages span.current { + text-decoration: none; + padding: 3px 6px; +} + +.tablenav .tablenav-pages a, +.tablenav-pages-navspan { display: inline-block; - vertical-align: baseline; - min-width: 30px; - min-height: 30px; - margin: 0; - padding: 0 4px; + min-width: 17px; + border: 1px solid #ccc; /* same color as buttons border */ + padding: 3px 5px 7px; + background: #e5e5e5; font-size: 16px; - line-height: 1.625; /* 26px */ + line-height: 1; + font-weight: 400; text-align: center; } +.tablenav-pages-navspan { + height: 16px; + border-color: #ddd; /* same as disabled buttons */ + background: #f7f7f7; /* same as disabled buttons */ + color: #a0a5aa; /* same as disabled buttons */ +} + +.tablenav .tablenav-pages a:hover, +.tablenav .tablenav-pages a:focus { + border-color: #5b9dd9; + color: #fff; + background: #00a0d2; + box-shadow: none; + outline: none; /* IE8 */ +} + .tablenav .displaying-num { margin-right: 7px; } .tablenav .one-page .displaying-num { display: inline-block; - margin: 5px 0; + margin-top: 5px; + margin-right: 0; } .tablenav .actions { - padding: 0 8px 0 0; + overflow: hidden; + padding: 2px 8px 0 0; } .wp-filter .actions { @@ -701,7 +727,24 @@ th.asc a:focus span.sorting-indicator { margin-right: 20px; } -/* This view-switcher is still used on multisite. */ +/* @todo: unclear if the following tablenav rules are actually used. +classes exist in paginate_links() but not seen in list table output. */ +.tablenav .dots { + border-color: transparent; +} + +.tablenav .next, +.tablenav .prev { + border-color: transparent; + color: #0073aa; +} + +.tablenav .next:hover, +.tablenav .prev:hover { + border-color: transparent; + color: #00a0d2; +} + .tablenav .view-switch { float: right; margin: 0 5px; @@ -724,15 +767,15 @@ th.asc a:focus span.sorting-indicator { width: 28px; height: 28px; text-align: center; - line-height: 1.84615384; + line-height: 24px; text-decoration: none; } .view-switch a:before { - color: #c3c4c7; + color: #b4b9be; display: inline-block; font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: middle; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -740,11 +783,11 @@ th.asc a:focus span.sorting-indicator { .view-switch a:hover:before, .view-switch a:focus:before { - color: #787c82; + color: #727272; } .view-switch a.current:before { - color: #2271b1; + color: #0073aa; } .view-switch .view-list:before { @@ -814,14 +857,14 @@ p.pagenav { } .row-actions { - color: #a7aaad; + color: #ddd; font-size: 13px; padding: 2px 0 0; position: relative; left: -9999em; } -/* ticket #34150 */ +/* https://core.trac.wordpress.org/ticket/34150 */ .rtl .row-actions a { display: inline-block; } @@ -858,35 +901,16 @@ tr:hover .row-actions, /* Layout */ #wpbody-content .inline-edit-row fieldset { + font-size: 12px; float: left; margin: 0; - padding: 0 12px 0 0; - width: 100%; - box-sizing: border-box; -} - -#wpbody-content .inline-edit-row td fieldset:last-of-type { - padding-right: 0; -} - -tr.inline-edit-row td { padding: 0; - /* Prevents the focus style on .inline-edit-wrapper from being cutted-off */ - position: relative; -} - -.inline-edit-wrapper { - display: flow-root; - padding: 0 12px; - border: 1px solid transparent; - border-radius: 4px; + width: 100%; } -.inline-edit-wrapper:focus { - border-color: #2271b1; - box-shadow: 0 0 0 1px #2271b1; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; +tr.inline-edit-row td, +#wpbody-content .inline-edit-row fieldset .inline-edit-col { + padding: 0 0.5em; } #wpbody-content .quick-edit-row-post .inline-edit-col-left { @@ -907,7 +931,7 @@ tr.inline-edit-row td { #wpbody-content .quick-edit-row-page .inline-edit-col-right, #wpbody-content .bulk-edit-row-post .inline-edit-col-right { - width: 50%; + width: 49%; } #wpbody-content .bulk-edit-row .inline-edit-col-left { @@ -933,26 +957,12 @@ tr.inline-edit-row td { } .inline-edit-row .submit { - display: flex; - flex-wrap: wrap; - align-items: center; clear: both; - margin: 0; - padding: 0.5em 0 1em; -} - -.inline-edit-save.submit .button { - margin-right: 8px; -} - -.inline-edit-save .spinner { - float: none; - margin: 0; + padding: 0.5em; + margin: 0.5em 0 0; } .inline-edit-row .notice-error { - box-sizing: border-box; - min-width: 100%; margin-top: 1em; } @@ -966,11 +976,15 @@ tr.inline-edit-row td { /* Needs higher specificity for the padding */ #the-list .inline-edit-row .inline-edit-legend { margin: 0; - padding: 0.2em 0; + padding: 0.2em 0.5em 0; line-height: 2.5; font-weight: 600; } +#the-list #bulk-edit.inline-edit-row .inline-edit-legend { + padding: 0.2em 0.5em; +} + .inline-edit-row fieldset span.title, .inline-edit-row fieldset span.checkbox-title { margin: 0; @@ -987,8 +1001,8 @@ tr.inline-edit-row td { .inline-edit-row fieldset.inline-edit-date label { display: inline-block; margin: 0; + line-height: 1.5; vertical-align: baseline; - line-height: 2; } .inline-edit-row fieldset label.inline-edit-tags { @@ -1012,6 +1026,11 @@ tr.inline-edit-row td { padding: 0; } +.inline-edit-row fieldset.inline-edit-date select { + margin: 1px; + line-height: 28px; +} + .inline-edit-row fieldset label span.input-text-wrap, .inline-edit-row fieldset .timestamp-wrap { display: block; @@ -1059,6 +1078,11 @@ tr.inline-edit-row td { text-transform: uppercase; } +.inline-edit-row fieldset span.title, +.inline-edit-row fieldset span.checkbox-title { + font-style: italic; +} + /* Specific Elements */ .inline-edit-row fieldset .inline-edit-date { float: left; @@ -1066,28 +1090,48 @@ tr.inline-edit-row td { .inline-edit-row fieldset input[name=jj], .inline-edit-row fieldset input[name=hh], -.inline-edit-row fieldset input[name=mn], +.inline-edit-row fieldset input[name=mn] { + font-size: 12px; + width: 2.3em; +} + .inline-edit-row fieldset input[name=aa] { - vertical-align: middle; - text-align: center; - padding: 0 4px; + font-size: 12px; + width: 3.5em; } .inline-edit-row fieldset label input.inline-edit-password-input { width: 8em; } -#bulk-titles-list, -#bulk-titles-list li, +ul.cat-checklist { + height: 12em; + border: solid 1px #ddd; + overflow-y: scroll; + padding: 0 5px; + margin: 0; + background-color: #fff; +} + +#bulk-titles { + display: block; + height: 12em; + border: 1px solid #ddd; + 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; position: relative; /* RTL fix, #WP27629 */ } -.inline-edit-row fieldset ul.cat-checklist input { - margin-top: -1px; - margin-left: 3px; +.inline-edit-row fieldset ul.cat-checklist label, +.inline-edit-row #bulk-titles div { + font-style: normal; + font-size: 11px; } .inline-edit-row fieldset label input.inline-edit-menu-order-input { @@ -1103,52 +1147,36 @@ tr.inline-edit-row td { max-width: 80%; } -.quick-edit-row-post fieldset label.inline-edit-status { - float: left; +.ie8 .inline-edit-row #post_parent, +.ie8 .inline-edit-row select[name="page_template"] { + width: 250px; } -#bulk-titles, -ul.cat-checklist { - height: 14em; - border: 1px solid #ddd; - margin: 0 0 5px; - padding: 0.2em 5px; - overflow-y: scroll; -} - -#bulk-titles .ntdelbutton, -#bulk-titles .ntdeltitle, -.inline-edit-row fieldset ul.cat-checklist label { - display: inline-block; - margin: 0; - padding: 3px 0; - line-height: 20px; - vertical-align: top; +.quick-edit-row-post fieldset label.inline-edit-status { + float: left; } -#bulk-titles .ntdelitem { - padding-left: 23px; +#bulk-titles { + line-height: 140%; } - -#bulk-titles .ntdelbutton { - width: 26px; - height: 26px; - margin: 0 0 0 -26px; - text-align: center; - border-radius: 3px; +#bulk-titles div { + margin: 0.2em 0.3em; } -#bulk-titles .ntdelbutton:before { - display: inline-block; - vertical-align: top; +#bulk-titles div a { + cursor: pointer; + display: block; + float: left; + height: 18px; + margin: 0 3px 0 -2px; + overflow: hidden; + position: relative; + width: 20px; } -#bulk-titles .ntdelbutton:focus { - box-shadow: 0 0 0 2px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - /* Reset inherited offset from Gutenberg */ - outline-offset: 0; +#bulk-titles div a:before { + position: relative; + top: -3px; } /*------------------------------------------------------------------------------ @@ -1194,7 +1222,7 @@ ul.cat-checklist { } .plugins td.desc { - line-height: 1.5; + line-height: 1.5em; } .plugins .desc ul, @@ -1220,7 +1248,7 @@ ul.cat-checklist { .plugins .active td, .plugins .active th { - background-color: #f0f6fc; + background-color: #f7fcfe; } .plugins .update th, @@ -1235,15 +1263,15 @@ ul.cat-checklist { .plugin-install #the-list td, .upgrade .plugins td, .upgrade .plugins th { - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .plugins tr.active.plugin-update-tr + tr.inactive th, .plugins tr.active.plugin-update-tr + tr.inactive td, .plugins tr.active + tr.inactive th, .plugins tr.active + tr.inactive td { - border-top: 1px solid rgba(0, 0, 0, 0.03); - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.02), inset 0 -1px 0 #dcdcde; + border-top: 1px solid rgba(0,0,0,0.03); + box-shadow: inset 0 1px 0 rgba(0,0,0,0.02), inset 0 -1px 0 #e1e1e1; } .plugins .update td, @@ -1261,7 +1289,7 @@ ul.cat-checklist { .plugins .active th.check-column, .plugin-update-tr.active td { - border-left: 4px solid #72aee6; + border-left: 4px solid #00a0d2; } .wp-list-table.plugins .plugin-title, @@ -1270,6 +1298,11 @@ ul.cat-checklist { white-space: nowrap; } +.plugins .dashicon { + font: 16px dashicons; + vertical-align: text-bottom; +} + .plugins .plugin-title img, .plugins .plugin-title .dashicons { float: left; @@ -1280,10 +1313,10 @@ ul.cat-checklist { .plugins .plugin-title .dashicons:before { padding: 2px; - background-color: #f0f0f1; - box-shadow: inset 0 0 10px rgba(167, 170, 173, 0.15); + background-color: #eee; + box-shadow: inset 0 0 10px rgba(160,165,170,.15); font-size: 60px; - color: #c3c4c7; + color: #B4B9BE; } #update-themes-table .plugin-title img, @@ -1291,10 +1324,6 @@ ul.cat-checklist { width: 85px; } -.plugins .column-auto-updates { - width: 14.2em; -} - .plugins .inactive .plugin-title strong { font-weight: 400; } @@ -1304,11 +1333,6 @@ ul.cat-checklist { padding: 0 0 5px; } -.plugins .row-actions { - white-space: normal; - min-width: 12em; -} - .plugins .update .second, .plugins .update .row-actions, .plugins .updated .second, @@ -1323,7 +1347,7 @@ ul.cat-checklist { } .plugins .plugin-update-tr .plugin-update { - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); overflow: hidden; /* clearfix */ padding: 0; } @@ -1337,46 +1361,16 @@ ul.cat-checklist { margin: 0.5em 0; } -.plugins .plugin-description a, -.plugins .plugin-update a, -.updates-table .plugin-title a { - text-decoration: underline; -} - -.plugins tr.paused th.check-column { - border-left: 4px solid #b32d2e; -} - -.plugins tr.paused th, -.plugins tr.paused td { - background-color: #f6f7f7; -} - -.plugins tr.paused .plugin-title, -.plugins .paused .dashicons-warning { - color: #b32d2e; -} - -.plugins .paused .error-display p, -.plugins .paused .error-display code { - font-size: 90%; - color: rgba(0, 0, 0, 0.7); -} - -.plugins .resume-link { - color: #b32d2e; -} - .plugin-card .update-now:before { - color: #d63638; + color: #f56e28; content: "\f463"; display: inline-block; font: normal 20px/1 dashicons; - margin: -3px 5px 0 -2px; - speak: never; + margin: 3px 5px 0 -2px; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - vertical-align: middle; + vertical-align: top; } .plugin-card .updating-message:before { @@ -1394,21 +1388,10 @@ ul.cat-checklist { } .plugin-card .updated-message:before { - color: #68de7c; + color: #79ba49; content: "\f147"; } -.plugin-install-php #the-list { - display: flex; - flex-wrap: wrap; -} - -.plugin-install-php .plugin-card { - display: flex; - flex-direction: column; - justify-content: space-between; -} - .plugin-install-php h2 { clear: both; } @@ -1437,7 +1420,7 @@ ul.cat-checklist { width: 48.5%; width: calc( 50% - 8px ); background-color: #fff; - border: 1px solid #dcdcde; + border: 1px solid #ddd; box-sizing: border-box; } @@ -1450,7 +1433,7 @@ ul.cat-checklist { margin-right: 0; } -@media screen and (min-width: 1600px) and ( max-width: 2299px ) { +@media screen and ( min-width: 1600px ) { .plugin-card { width: 30%; width: calc( 33.1% - 8px ); @@ -1475,31 +1458,6 @@ ul.cat-checklist { } } -@media screen and (min-width: 2300px) { - .plugin-card { - width: 25%; - width: calc( 25% - 12px ); - } - - .plugin-card:nth-child(odd) { - clear: none; - margin-left: 8px; - } - - .plugin-card:nth-child(even) { - margin-right: 8px; - } - - .plugin-card:nth-child(4n+1) { - clear: both; - margin-left: 0; - } - - .plugin-card:nth-child(4n) { - margin-right: 0; - } -} - .plugin-card-top { position: relative; padding: 20px 20px 10px; @@ -1512,7 +1470,7 @@ div.action-links, } .plugin-card h3 { - margin: 0 12px 12px 0; + margin: 0 0 12px; font-size: 18px; line-height: 1.3; } @@ -1520,7 +1478,7 @@ div.action-links, .plugin-card .name, .plugin-card .desc { margin-left: 148px; /* icon + margin */ - margin-right: 128px; /* action links + margin */ + margin-right: 120px; /* action links */ } .plugin-card .action-links { @@ -1533,6 +1491,7 @@ div.action-links, .plugin-action-buttons { clear: right; float: right; + margin-left: 2em; margin-bottom: 1em; text-align: right; } @@ -1544,8 +1503,8 @@ div.action-links, .plugin-card-bottom { clear: both; padding: 12px 20px; - background-color: #f6f7f7; - border-top: 1px solid #dcdcde; + background-color: #fafafa; + border-top: 1px solid #ddd; overflow: hidden; } @@ -1560,7 +1519,7 @@ div.action-links, .plugin-card-update-failed .notice-error { margin: 0; padding-left: 16px; - box-shadow: 0 -1px 0 #dcdcde; + box-shadow: 0 -1px 0 #ddd; } .plugin-card-update-failed .plugin-card-bottom { @@ -1568,7 +1527,7 @@ div.action-links, } .plugin-card .column-rating { - line-height: 1.76923076; + line-height: 23px; } .plugin-card .column-rating, @@ -1594,7 +1553,7 @@ div.action-links, .plugin-card .column-compatibility span:before { font: normal 20px/.5 dashicons; - speak: never; + speak: none; display: inline-block; padding: 0; top: 4px; @@ -1604,21 +1563,19 @@ div.action-links, -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: none !important; - color: #3c434a; + color: #444; } -.plugin-card .column-compatibility .compatibility-incompatible:before { +.plugin-card .compatibility-incompatible:before { content: "\f158"; - color: #d63638; } -.plugin-card .column-compatibility .compatibility-compatible:before { +.plugin-card .compatibility-compatible:before { content: "\f147"; - color: #007017; } .plugin-card .notice { - margin: 20px 20px 0; + margin: 20px 20px 0 20px; } .plugin-icon { @@ -1631,28 +1588,31 @@ div.action-links, } .no-plugin-results { - color: #646970; /* same as no themes and no media */ + color: #666; /* same as no themes and no media */ font-size: 18px; font-style: normal; margin: 0; padding: 100px 0 0; - width: 100%; text-align: center; } /* ms */ /* Background Color for Site Status */ .wp-list-table .site-deleted, -.wp-list-table tr.site-deleted, +.wp-list-table tr.site-deleted { + background: #ff8573; +} +.wp-list-table .site-spammed, +.wp-list-table tr.site-spammed { + background: #faafaa; +} .wp-list-table .site-archived, .wp-list-table tr.site-archived { - background: #fcf0f1; + background: #ffebe8; } -.wp-list-table .site-spammed, -.wp-list-table tr.site-spammed, .wp-list-table .site-mature, .wp-list-table tr.site-mature { - background: #fcf9e8; + background: #fecac2; } .sites.fixed .column-lastupdated, @@ -1667,7 +1627,7 @@ div.action-links, /* =Media Queries -------------------------------------------------------------- */ -@media screen and (max-width: 1100px) and (min-width: 782px), (max-width: 480px) { +@media screen and ( max-width: 1100px ) and ( min-width: 782px ), ( max-width: 480px ) { .plugin-card .action-links { position: static; margin-left: 148px; @@ -1689,10 +1649,6 @@ div.action-links, margin-right: 20px; } - .plugin-card h3 { - margin-right: 24px; - } - .plugin-card .name, .plugin-card .desc { margin-right: 0; @@ -1701,16 +1657,20 @@ div.action-links, .plugin-card .desc p:first-of-type { margin-top: 0; } + + .fixed .column-date { + width: 14%; + } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { /* WP List Table Options & Filters */ .tablenav { height: auto; } .tablenav.top { - margin: 20px 0 5px; + margin: 20px 0 5px 0; } .tablenav.bottom { @@ -1734,7 +1694,7 @@ div.action-links, .view-switch a { width: 36px; height: 36px; - line-height: 2.53846153; + line-height: 33px; } /* Pagination */ @@ -1752,6 +1712,7 @@ div.action-links, .tablenav .tablenav-pages { width: 100%; + height: auto; text-align: center; margin: 0 0 25px; } @@ -1764,17 +1725,8 @@ div.action-links, display: none; } - .tablenav.bottom .actions select { - margin-bottom: 5px; - } - - .tablenav.bottom .actions.alignleft + .actions.alignleft { - clear: left; - margin-top: 10px; - } - .tablenav.bottom .tablenav-pages.one-page { - margin-top: 15px; + margin: 15px 0 0 0; height: 0; } @@ -1782,19 +1734,19 @@ div.action-links, font-size: 16px; } - .tablenav .tablenav-pages .button, - .tablenav .tablenav-pages .tablenav-pages-navspan { - min-width: 44px; - padding: 12px 8px; + .tablenav-pages .pagination-links a, + .tablenav-pages-navspan { + padding: 9px 11px 12px; font-size: 18px; - line-height: 1; + } + + .tablenav-pages-navspan { + height: 18px; } .tablenav-pages .pagination-links .current-page { - min-width: 44px; - padding: 12px 6px; + padding: 8px 9px 9px; font-size: 16px; - line-height: 1.125; } /* WP List Table Adjustments: General */ @@ -1802,6 +1754,10 @@ div.action-links, display: none; } + .comment-count { + font-size: 14px; + } + .wp-list-table th.column-primary ~ th, .wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary ~ td:not(.check-column) { display: none; @@ -1814,10 +1770,7 @@ div.action-links, /* Checkboxes need to show */ .wp-list-table tr th.check-column { display: table-cell; - } - - .wp-list-table .check-column { - width: 2.5em; + width: 35px; } .wp-list-table .column-primary .toggle-row { @@ -1827,6 +1780,7 @@ div.action-links, .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column) { position: relative; clear: both; + display: block; width: auto !important; /* needs to override some columns that are more specifically targeted */ } @@ -1869,11 +1823,6 @@ div.action-links, display: block; } - /* Comment author hidden via Screen Options */ - .fixed .column-author.hidden ~ .column-comment .comment-author { - display: none; - } - #the-comment-list .is-expanded td { box-shadow: none; } @@ -1885,6 +1834,7 @@ div.action-links, /* Show comment bubble as text instead */ .post-com-count .screen-reader-text { position: static; + -webkit-clip-path: none; clip-path: none; width: auto; height: auto; @@ -1930,7 +1880,7 @@ div.action-links, border: none; border-radius: 0; background: none; - color: #b32d2e; + color: #bb2a2a; font-size: inherit; line-height: inherit; text-align: left; @@ -1938,7 +1888,7 @@ div.action-links, .column-response .post-com-count-pending:hover, .column-comments .post-com-count-pending:hover { - color: #d63638; + color: #dc3232; } .widefat thead td.check-column, @@ -1946,30 +1896,8 @@ div.action-links, padding-top: 10px; } - .row-actions { - margin-left: -8px; - margin-right: -8px; - padding-top: 4px; - } - - /* Make row actions more easy to select on mobile */ - body:not(.plugins-php) .row-actions { - display: flex; - flex-wrap: wrap; - gap: 8px; - color: transparent; - } - - .row-actions span a, - .row-actions span .button-link { - display: inline-block; - padding: 4px 8px; - line-height: 1.5; - } - - .row-actions span.approve:before, - .row-actions span.unapprove:before { - content: "| "; + .widefat * { + word-wrap: normal; } /* Quick Edit and Bulk Edit */ @@ -1984,20 +1912,6 @@ div.action-links, #wpbody-content .bulk-edit-row .inline-edit-col-bottom { float: none; width: 100%; - padding: 0; - } - - #the-list .inline-edit-row .inline-edit-legend, - .inline-edit-row span.title { - font-size: 16px; - } - - .inline-edit-row p.howto { - font-size: 14px; - } - - #wpbody-content .inline-edit-row-page .inline-edit-col-right { - margin-top: 0; } #wpbody-content .quick-edit-row fieldset .inline-edit-col label, @@ -2016,37 +1930,9 @@ div.action-links, box-sizing: border-box; } - .inline-edit-row fieldset input[name=jj], - .inline-edit-row fieldset input[name=hh], - .inline-edit-row fieldset input[name=mn], - .inline-edit-row fieldset input[name=aa] { - font-size: 16px; - line-height: 2; - padding: 3px 4px; - } - - #bulk-titles .ntdelbutton, - #bulk-titles .ntdeltitle, - .inline-edit-row fieldset ul.cat-checklist label { - padding: 6px 0; + .inline-edit-row fieldset ul.cat-checklist label, + .inline-edit-row #bulk-titles div { font-size: 16px; - line-height: 28px; - } - - #bulk-titles .ntdelitem { - padding-left: 37px; - } - - #bulk-titles .ntdelbutton { - width: 40px; - height: 40px; - margin: 0 0 0 -40px; - overflow: hidden; - } - - #bulk-titles .ntdelbutton:before { - font-size: 20px; - line-height: 28px; } .inline-edit-row fieldset label span.title, @@ -2054,6 +1940,10 @@ div.action-links, float: none; } + .inline-edit-row fieldset label.inline-edit-tags { + padding: 0 0.5em; + } + .inline-edit-row fieldset .inline-edit-col label.inline-edit-tags { padding: 0; } @@ -2063,6 +1953,16 @@ div.action-links, margin-left: 0; } + .inline-edit-row fieldset input[name=jj], + .inline-edit-row fieldset input[name=hh], + .inline-edit-row fieldset input[name=mn] { + width: 3em; + } + + .inline-edit-row fieldset input[name=aa] { + width: 4.5em; + } + .inline-edit-row .inline-edit-or { margin: 0 6px 0 0; } @@ -2083,6 +1983,14 @@ div.action-links, display: block; } + #bulk-titles div { + margin: 0.8em 0.3em; + } + + #bulk-titles div a { + height: 22px; + } + /* Updates */ #wpbody-content .updates-table .plugin-title { width: auto; @@ -2111,11 +2019,6 @@ div.action-links, padding: 10px 9px; /* reset from other list tables that have a label at this width */ } - /* Plugin description hidden via Screen Options */ - #wpbody-content .wp-list-table.plugins .desc.hidden { - display: none; - } - #wpbody-content .wp-list-table.plugins .column-description { padding-top: 2px; } @@ -2165,6 +2068,11 @@ div.action-links, display: table-cell; } + .plugins .active.update + .plugin-update-tr:before { + border-left: 4px solid #d54e21; + background-color: #fef7f1; + } + .plugins #the-list .plugin-update-tr .plugin-update { border-left: none; } @@ -2173,10 +2081,9 @@ div.action-links, margin-left: 0; } - .plugins .active.update + .plugin-update-tr:before, - .plugins .active.updated + .plugin-update-tr:before { - background-color: #f0f6fc; - border-left: 4px solid #72aee6; + .plugins .active.update + .plugin-update-tr:before { + background-color: #f7fcfe; + border-left: 4px solid #00a0d2; } .plugins .plugin-update-tr .update-message { @@ -2189,17 +2096,7 @@ div.action-links, line-height: 1.5; } - .plugins tbody th.check-column { - padding: 8px 0 0 5px; - } - - .plugins thead td.check-column, - .plugins tfoot td.check-column, - .plugins .inactive th.check-column { - padding-left: 9px; - } - - /* Add New plugins page */ + /* Add WP Plugin page */ table.plugin-install .column-name, table.plugin-install .column-version, table.plugin-install .column-rating, @@ -2226,7 +2123,7 @@ div.action-links, table.plugin-install #the-list tr { display: block; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0,0,0,0.1); } .plugin-card { @@ -2234,30 +2131,13 @@ div.action-links, margin-right: 0; width: 100%; } - - table.media .column-title .has-media-icon ~ .row-actions { - margin-left: 0; - clear: both; - } } -@media screen and (max-width: 480px) { +@media screen and ( max-width: 480px ) { .tablenav-pages .current-page { margin: 0; } - .tablenav.bottom .displaying-num { - position: relative; - top: 0; - display: block; - text-align: right; - padding-bottom: 0.5em; - } - - .tablenav.bottom .tablenav-pages.one-page { - height: auto; - } - .tablenav-pages .tablenav-paging-text { float: left; width: 100%; diff --git a/wp-admin/css/list-tables.min.css b/wp-admin/css/list-tables.min.css index 150b427..2a7222f 100644 --- a/wp-admin/css/list-tables.min.css +++ b/wp-admin/css/list-tables.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;border-radius:5px;background-color:#646970;color:#fff;font-size:11px;line-height:1.90909090;text-align:center}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-left:8px;width:0;height:0;border-top:5px solid #646970;border-right:5px solid transparent}.column-comments a.post-com-count-approved:focus .comment-count-approved,.column-comments a.post-com-count-approved:hover .comment-count-approved,.column-response a.post-com-count-approved:focus .comment-count-approved,.column-response a.post-com-count-approved:hover .comment-count-approved{background:#2271b1}.column-comments a.post-com-count-approved:focus:after,.column-comments a.post-com-count-approved:hover:after,.column-response a.post-com-count-approved:focus:after,.column-response a.post-com-count-approved:hover:after{border-top-color:#2271b1}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;left:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;border-radius:11px;background:#d63638;color:#fff;font-size:9px;line-height:1.88888888;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #c3c4c7}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#50575e}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden}#replysubmit .reply-submit-buttons{margin-bottom:0}#replysubmit .button{margin-right:5px}#replysubmit .spinner{float:none;margin:-4px 0 0}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#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;box-shadow:none}#replyerror{border-color:#dcdcde;background-color:#f6f7f7}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f6f7f7}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fcf9e8}#the-comment-list .unapproved th.check-column{border-left:4px solid #d63638}#the-comment-list .unapproved th.check-column input{margin-left:4px}#the-comment-list .approve a{color:#007017}#the-comment-list .unapprove a{color:#996800}#the-comment-list td,#the-comment-list th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#f0f6fc!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-date{width:14%}.column-date span[title]{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.fixed .column-posts{width:74px}.fixed .column-posts,.fixed .column-role{-webkit-hyphens:auto;hyphens:auto}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:left;min-height:60px;margin:0 9px 0 0}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-left:70px}table.media .column-title .filename{margin-bottom:.2em}.media .row-actions .copy-to-clipboard-container{display:inline;position:relative}.media .row-actions .copy-to-clipboard-container .success{position:absolute;left:50%;transform:translate(-50%,-100%);background:#000;color:#fff;border-radius:5px;margin:0;padding:2px 5px}.wp-list-table a{transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:1.38461538}#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 .comments-box{border:0 none}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:never;display:inline-block;padding:0;top:-4px;left:-8px;color:#3c434a;line-height:.5;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.column-comments .sorting-indicator:before{top:0;left:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;right:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-list-table .toggle-row:active{box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;left:10px;border-radius:50%;display:block;padding:1px 2px 1px 0;color:#3c434a;content:"\f140";font:normal 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:never}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}.locked-indicator{display:none;margin-left:6px;height:20px;width:16px}.locked-indicator-icon:before{color:#8c8f94;content:"\f160";display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.locked-info{display:none;margin-top:4px}.locked-text{vertical-align:top}.wp-locked .locked-indicator,.wp-locked .locked-info{display:block}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding: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.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages .current-page{margin:0 2px 0 0;font-size:13px;text-align:center}.tablenav .total-pages{margin-right:2px}.tablenav #table-paging{margin-left:2px}.tablenav{clear:both;height:30px;margin:6px 0 4px;padding-top:5px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;margin:0 0 9px}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{display:inline-block;vertical-align:baseline;min-width:30px;min-height:30px;margin:0;padding:0 4px;font-size:16px;line-height:1.625;text-align:center}.tablenav .displaying-num{margin-right:7px}.tablenav .one-page .displaying-num{display:inline-block;margin:5px 0}.tablenav .actions{padding:0 8px 0 0}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-right:20px}.tablenav .view-switch{float:right;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 8px 0 2px}.media-toolbar.wp-filter .view-switch{margin:0 12px 0 2px}.view-switch a{float:left;width:28px;height:28px;text-align:center;line-height:1.84615384;text-decoration:none}.view-switch a:before{color:#c3c4c7;display:inline-block;font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#787c82}.view-switch a.current:before{color:#2271b1}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{color:#a7aaad;font-size:13px;padding:2px 0 0;position:relative;left:-9999em}.rtl .row-actions a{display:inline-block}.row-actions .network_active,.row-actions .network_only{color:#000}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}.row-actions-visible{padding:2px 0 0}#wpbody-content .inline-edit-row fieldset{float:left;margin:0;padding:0 12px 0 0;width:100%;box-sizing:border-box}#wpbody-content .inline-edit-row td fieldset:last-of-type{padding-right:0}tr.inline-edit-row td{padding:0;position:relative}.inline-edit-wrapper{display:flow-root;padding:0 12px;border:1px solid transparent;border-radius:4px}.inline-edit-wrapper:focus{border-color:#2271b1;box-shadow:0 0 0 1px #2271b1;outline:2px solid transparent}#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 .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:50%}#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;line-height:2.5}.inline-edit-row .submit{display:flex;flex-wrap:wrap;align-items:center;clear:both;margin:0;padding:.5em 0 1em}.inline-edit-save.submit .button{margin-right:8px}.inline-edit-save .spinner{float:none;margin:0}.inline-edit-row .notice-error{box-sizing:border-box;min-width:100%;margin-top:1em}.inline-edit-row .notice-error .error{margin:.5em 0;padding:2px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em 0;line-height:2.5;font-weight:600}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;vertical-align:baseline;line-height:2}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:left;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .inline-edit-or{margin:.2em 6px .2em 0;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#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 .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{vertical-align:middle;text-align:center;padding:0 4px}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}#bulk-titles-list,#bulk-titles-list li,.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row fieldset ul.cat-checklist input{margin-top:-1px;margin-left:3px}.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%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.quick-edit-row-post fieldset label.inline-edit-status{float:left}#bulk-titles,ul.cat-checklist{height:14em;border:1px solid #ddd;margin:0 0 5px;padding:.2em 5px;overflow-y:scroll}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{display:inline-block;margin:0;padding:3px 0;line-height:20px;vertical-align:top}#bulk-titles .ntdelitem{padding-left:23px}#bulk-titles .ntdelbutton{width:26px;height:26px;margin:0 0 0 -26px;text-align:center;border-radius:3px}#bulk-titles .ntdelbutton:before{display:inline-block;vertical-align:top}#bulk-titles .ntdelbutton:focus{box-shadow:0 0 0 2px #3582c4;outline:2px solid transparent;outline-offset:0}.plugins tbody,.plugins tbody th.check-column{padding:8px 0 0 2px}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5}.plugins .desc ol,.plugins .desc ul{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px;padding:0}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f0f6fc}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #dcdcde}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{box-shadow:none}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #72aee6}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .plugin-title .dashicons,.plugins .plugin-title img{float:left;padding:0 10px 0 0;width:64px;height:64px}.plugins .plugin-title .dashicons:before{padding:2px;background-color:#f0f0f1;box-shadow:inset 0 0 10px rgba(167,170,173,.15);font-size:60px;color:#c3c4c7}#update-themes-table .plugin-title .dashicons,#update-themes-table .plugin-title img{width:85px}.plugins .column-auto-updates{width:14.2em}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .row-actions{white-space:normal;min-width:12em}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 20px 15px 40px}.plugins .notice p{margin:.5em 0}.plugins .plugin-description a,.plugins .plugin-update a,.updates-table .plugin-title a{text-decoration:underline}.plugins tr.paused th.check-column{border-left:4px solid #b32d2e}.plugins tr.paused td,.plugins tr.paused th{background-color:#f6f7f7}.plugins .paused .dashicons-warning,.plugins tr.paused .plugin-title{color:#b32d2e}.plugins .paused .error-display code,.plugins .paused .error-display p{font-size:90%;color:rgba(0,0,0,.7)}.plugins .resume-link{color:#b32d2e}.plugin-card .update-now:before{color:#d63638;content:"\f463";display:inline-block;font:normal 20px/1 dashicons;margin:-3px 5px 0 -2px;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}.plugin-card .updating-message:before{content:"\f463";animation:rotation 2s infinite linear}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.plugin-card .updated-message:before{color:#68de7c;content:"\f147"}.plugin-install-php #the-list{display:flex;flex-wrap:wrap}.plugin-install-php .plugin-card{display:flex;flex-direction:column;justify-content:space-between}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:left;margin:0 8px 16px;width:48.5%;width:calc(50% - 8px);background-color:#fff;border:1px solid #dcdcde;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-left:0}.plugin-card:nth-child(2n){margin-right:0}@media screen and (min-width:1600px) and (max-width:2299px){.plugin-card{width:30%;width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-left:8px}.plugin-card:nth-child(2n){margin-right:8px}.plugin-card:nth-child(3n+1){clear:both;margin-left:0}.plugin-card:nth-child(3n){margin-right:0}}@media screen and (min-width:2300px){.plugin-card{width:25%;width:calc(25% - 12px)}.plugin-card:nth-child(odd){clear:none;margin-left:8px}.plugin-card:nth-child(2n){margin-right:8px}.plugin-card:nth-child(4n+1){clear:both;margin-left:0}.plugin-card:nth-child(4n){margin-right:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 12px 12px 0;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-left:148px;margin-right:128px}.plugin-card .action-links{position:absolute;top:20px;right:20px;width:120px}.plugin-action-buttons{clear:right;float:right;margin-bottom:1em;text-align:right}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#f6f7f7;border-top:1px solid #dcdcde;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-left:16px;box-shadow:0 -1px 0 #dcdcde}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:1.76923076}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:left;clear:left;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:right;float:right;clear:right;width:65%;width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:normal 20px/.5 dashicons;speak:never;display:inline-block;padding:0;top:4px;left:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#3c434a}.plugin-card .column-compatibility .compatibility-incompatible:before{content:"\f158";color:#d63638}.plugin-card .column-compatibility .compatibility-compatible:before{content:"\f147";color:#007017}.plugin-card .notice{margin:20px 20px 0}.plugin-icon{position:absolute;top:20px;left:20px;width:128px;height:128px;margin:0 20px 20px 0}.no-plugin-results{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;width:100%;text-align:center}.wp-list-table .site-archived,.wp-list-table .site-deleted,.wp-list-table tr.site-archived,.wp-list-table tr.site-deleted{background:#fcf0f1}.wp-list-table .site-mature,.wp-list-table .site-spammed,.wp-list-table tr.site-mature,.wp-list-table tr.site-spammed{background:#fcf9e8}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-left:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:left}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-right:20px}.plugin-card h3{margin-right:24px}.plugin-card .desc,.plugin-card .name{margin-right:0}.plugin-card .desc p:first-of-type{margin-top:0}}@media screen and (max-width:782px){.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.tablenav .view-switch,.tablenav.top .actions{display:none}.view-switch a{width:36px;height:36px;line-height:2.53846153}.tablenav.top .displaying-num{display:none}.tablenav.bottom .displaying-num{position:absolute;right:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.top .tablenav-pages.one-page{display:none}.tablenav.bottom .actions select{margin-bottom:5px}.tablenav.bottom .actions.alignleft+.actions.alignleft{clear:left;margin-top:10px}.tablenav.bottom .tablenav-pages.one-page{margin-top:15px;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav .tablenav-pages .button,.tablenav .tablenav-pages .tablenav-pages-navspan{min-width:44px;padding:12px 8px;font-size:18px;line-height:1}.tablenav-pages .pagination-links .current-page{min-width:44px;padding:12px 6px;font-size:16px;line-height:1.125}.form-wrap>p{display:none}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell}.wp-list-table .check-column{width:2.5em}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;width:auto!important}.wp-list-table td.column-primary{padding-right:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;left:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:left}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}.fixed .column-author.hidden~.column-comment .comment-author{display:none}#the-comment-list .is-expanded td{box-shadow:none}#the-comment-list .is-expanded td:last-child{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;clip-path:none;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-right:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;border-radius:0;background:0 0;color:#b32d2e;font-size:inherit;line-height:inherit;text-align:left}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#d63638}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.row-actions{margin-left:-8px;margin-right:-8px;padding-top:4px}body:not(.plugins-php) .row-actions{display:flex;flex-wrap:wrap;gap:8px;color:transparent}.row-actions span .button-link,.row-actions span a{display:inline-block;padding:4px 8px;line-height:1.5}.row-actions span.approve:before,.row-actions span.unapprove:before{content:"| "}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%;padding:0}#the-list .inline-edit-row .inline-edit-legend,.inline-edit-row span.title{font-size:16px}.inline-edit-row p.howto{font-size:14px}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:0}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;box-sizing:border-box}.inline-edit-row fieldset input[name=aa],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:16px;line-height:2;padding:3px 4px}#bulk-titles .ntdelbutton,#bulk-titles .ntdeltitle,.inline-edit-row fieldset ul.cat-checklist label{padding:6px 0;font-size:16px;line-height:28px}#bulk-titles .ntdelitem{padding-left:37px}#bulk-titles .ntdelbutton{width:40px;height:40px;margin:0 0 0 -40px;overflow:hidden}#bulk-titles .ntdelbutton:before{font-size:20px;line-height:28px}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-left:0}.inline-edit-row .inline-edit-or{margin:0 6px 0 0}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:left;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#edithead label{display:block}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .desc.hidden{display:none}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-right:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{box-shadow:none;border-top:none}.plugins #the-list tr td{border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins #the-list .plugin-update-tr .plugin-update{border-left:none}.plugin-update-tr .update-message{margin-left:0}.plugins .active.update+.plugin-update-tr:before,.plugins .active.updated+.plugin-update-tr:before{background-color:#f0f6fc;border-left:4px solid #72aee6}.plugins .plugin-update-tr .update-message{margin-left:0}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}.plugins tbody th.check-column{padding:8px 0 0 5px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:9px}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{box-shadow:none}table.plugin-install #the-list tr{display:block;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-left:0;margin-right:0;width:100%}table.media .column-title .has-media-icon~.row-actions{margin-left:0;clear:both}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav.bottom .displaying-num{position:relative;top:0;display:block;text-align:right;padding-bottom:.5em}.tablenav.bottom .tablenav-pages.one-page{height:auto}.tablenav-pages .tablenav-paging-text{float:left;width:100%;padding-top:.5em}} \ No newline at end of file +.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;border-radius:5px;background-color:#72777c;color:#fff;font-size:11px;line-height:21px;text-align:center}.ie8 .column-comments .comment-count-approved,.ie8 .column-comments .comment-count-no-comments,.ie8 .column-response .comment-count-approved,.ie8 .column-response .comment-count-no-comments{min-width:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-left:8px;width:0;height:0;border-top:5px solid #72777c;border-right:5px solid transparent}.column-comments .post-com-count-approved:focus .comment-count-approved,.column-comments .post-com-count-approved:hover .comment-count-approved,.column-response .post-com-count-approved:focus .comment-count-approved,.column-response .post-com-count-approved:hover .comment-count-approved{background:#0073aa}.column-comments .post-com-count-approved:focus:after,.column-comments .post-com-count-approved:hover:after,.column-response .post-com-count-approved:focus:after,.column-response .post-com-count-approved:hover:after{border-top-color:#0073aa}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;left:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#555d66}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;overflow:hidden}#replysubmit .button{margin-right:5px}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#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;box-shadow:none}#replyerror{border-color:#ddd;background-color:#f9f9f9}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f5f5f5}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-left:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-left:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#e4f2fd!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:normal 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-posts,.fixed .column-role{-webkit-hyphens:auto;hyphens:auto}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:left;min-height:60px;margin:0 9px 0 0}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-left:70px}table.media .column-title .filename{margin-bottom:.2em}.wp-list-table a{transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;box-shadow:none}#comments-form .fixed .column-author{width:20%}#comments-form .fixed .column-date{width:14%}#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 .comments-box{border:0 none}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{content:"\f142";font:normal 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;left:-8px;color:#444;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;left:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;right:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .wp-list-table .toggle-row:focus:before{outline:#5b9dd9 solid 1px}.wp-list-table .toggle-row:active{box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;left:10px;border-radius:50%;display:block;padding:1px 2px 1px 0;color:#444;content:"\f140";font:normal 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}tr.wp-locked .locked-indicator{margin-left:6px;height:20px;width:16px}tr.wp-locked .locked-indicator-icon:before{color:#82878c;content:"\f160";display:inline-block;font:normal 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:4px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{transition:height 1s,opacity .5s}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;overflow:hidden;padding: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.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 2px 0 0;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-right:2px}.tablenav #table-paging{margin-left:2px}.tablenav a.button,.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;height:28px;margin-top:3px;cursor:default;color:#555}.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,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #ccc;padding:3px 5px 7px;background:#e5e5e5;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#ddd;background:#f7f7f7;color:#a0a5aa}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;box-shadow:none;outline:0}.tablenav .displaying-num{margin-right:7px}.tablenav .one-page .displaying-num{display:inline-block;margin-top:5px;margin-right:0}.tablenav .actions{overflow:hidden;padding:2px 8px 0 0}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-right:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:right;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 8px 0 2px}.media-toolbar.wp-filter .view-switch{margin:0 12px 0 2px}.view-switch a{float:left;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font:normal 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#727272}.view-switch a.current:before{color:#0073aa}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{color:#ddd;font-size:13px;padding:2px 0 0;position:relative;left:-9999em}.rtl .row-actions a{display:inline-block}.row-actions .network_active,.row-actions .network_only{color:#000}.comment-item:hover .row-actions,.mobile .row-actions,.no-js .row-actions,.row-actions.visible,tr:hover .row-actions{position:static}.row-actions-visible{padding:2px 0 0}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#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 .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .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;line-height:2.5}.inline-edit-row .submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row .notice-error{margin-top:1em}.inline-edit-row .notice-error .error{margin:.5em 0;padding:2px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;line-height:1.5;vertical-align:baseline}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:left;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset.inline-edit-date select{margin:1px;line-height:28px}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .inline-edit-or{margin:.2em 6px .2em 0;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#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 .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{font-style:italic}.inline-edit-row fieldset .inline-edit-date{float:left}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.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}ul.cat-checklist{height:12em;border:solid 1px #ddd;overflow-y:scroll;padding:0 5px;margin:0;background-color:#fff}#bulk-titles{display:block;height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px;margin:0 0 5px}.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-style:normal;font-size:11px}.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%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name=page_template]{width:250px}.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:18px;margin:0 3px 0 -2px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 0 0 2px}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}.updates-table .plugin-title p{margin-top:0}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ol,.plugins .desc ul{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px;padding:0}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f7fcfe}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{box-shadow:none}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #00a0d2}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .dashicon{font:16px dashicons;vertical-align:text-bottom}.plugins .plugin-title .dashicons,.plugins .plugin-title img{float:left;padding:0 10px 0 0;width:64px;height:64px}.plugins .plugin-title .dashicons:before{padding:2px;background-color:#eee;box-shadow:inset 0 0 10px rgba(160,165,170,.15);font-size:60px;color:#b4b9be}#update-themes-table .plugin-title .dashicons,#update-themes-table .plugin-title img{width:85px}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugins .plugin-update-tr .plugin-update{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);overflow:hidden;padding:0}.plugins .plugin-update-tr .notice,.plugins .plugin-update-tr div[class=update-message]{margin:5px 20px 15px 40px}.plugins .notice p{margin:.5em 0}.plugin-card .update-now:before{color:#f56e28;content:"\f463";display:inline-block;font:normal 20px/1 dashicons;margin:3px 5px 0 -2px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .updating-message:before{content:"\f463";animation:rotation 2s infinite linear}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}.plugin-card .updated-message:before{color:#79ba49;content:"\f147"}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{float:left;margin:0 8px 16px;width:48.5%;width:calc(50% - 8px);background-color:#fff;border:1px solid #ddd;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-left:0}.plugin-card:nth-child(even){margin-right:0}@media screen and (min-width:1600px){.plugin-card{width:30%;width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-left:8px}.plugin-card:nth-child(even){margin-right:8px}.plugin-card:nth-child(3n+1){clear:both;margin-left:0}.plugin-card:nth-child(3n){margin-right:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-left:148px;margin-right:120px}.plugin-card .action-links{position:absolute;top:20px;right:20px;width:120px}.plugin-action-buttons{clear:right;float:right;margin-left:2em;margin-bottom:1em;text-align:right}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #ddd;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-left:16px;box-shadow:0 -1px 0 #ddd}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:left;clear:left;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:right;float:right;clear:right;width:65%;width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:normal 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;left:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.plugin-card .compatibility-incompatible:before{content:"\f158"}.plugin-card .compatibility-compatible:before{content:"\f147"}.plugin-card .notice{margin:20px 20px 0 20px}.plugin-icon{position:absolute;top:20px;left:20px;width:128px;height:128px;margin:0 20px 20px 0}.no-plugin-results{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-left:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:left}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-right:20px}.plugin-card .desc,.plugin-card .name{margin-right:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.tablenav{height:auto}.tablenav.top{margin:20px 0 5px 0}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.tablenav .view-switch,.tablenav.top .actions{display:none}.view-switch a{width:36px;height:36px;line-height:33px}.tablenav.top .displaying-num{display:none}.tablenav.bottom .displaying-num{position:absolute;right:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;height:auto;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.top .tablenav-pages.one-page{display:none}.tablenav.bottom .tablenav-pages.one-page{margin:15px 0 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 11px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.form-wrap>p{display:none}.comment-count{font-size:14px}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-right:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;left:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:left}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{box-shadow:none}#the-comment-list .is-expanded td:last-child{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-right:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;border-radius:0;background:0 0;color:#bb2a2a;font-size:inherit;line-height:inherit;text-align:left}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#dc3232}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-left:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 6px 0 0}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:left;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#edithead label{display:block}#bulk-titles div{margin:.8em .3em}#bulk-titles div a{height:22px}#wpbody-content .updates-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}#wpbody-content .wp-list-table.plugins .plugin-title,#wpbody-content .wp-list-table.plugins .theme-title{padding-right:12px;white-space:normal}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{box-shadow:none;border-top:none}.plugins #the-list tr td{border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins .active.update+.plugin-update-tr:before{border-left:4px solid #d54e21;background-color:#fef7f1}.plugins #the-list .plugin-update-tr .plugin-update{border-left:none}.plugin-update-tr .update-message{margin-left:0}.plugins .active.update+.plugin-update-tr:before{background-color:#f7fcfe;border-left:4px solid #00a0d2}.plugins .plugin-update-tr .update-message{margin-left:0}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong{font-size:1.4em;line-height:1.5}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}table.plugin-install #the-list td{box-shadow:none}table.plugin-install #the-list tr{display:block;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-left:0;margin-right:0;width:100%}}@media screen and (max-width:480px){.tablenav-pages .current-page{margin:0}.tablenav-pages .tablenav-paging-text{float:left;width:100%;padding-top:.5em}} \ No newline at end of file diff --git a/wp-admin/css/login-rtl.css b/wp-admin/css/login-rtl.css index c5d95d7..1499c53 100644 --- a/wp-admin/css/login-rtl.css +++ b/wp-admin/css/login-rtl.css @@ -1,3 +1,6 @@ +@import url(forms-rtl.css); +@import url(l10n-rtl.css); + html, body { height: 100%; @@ -6,16 +9,16 @@ body { } body { - background: #f0f0f1; + background: #f1f1f1; min-width: 0; - color: #3c434a; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 13px; - line-height: 1.4; + line-height: 1.4em; } a { - color: #2271b1; + color: #0073aa; transition-property: border, background, color; transition-duration: .05s; transition-timing-function: ease-in-out; @@ -27,14 +30,18 @@ a { a:hover, a:active { - color: #135e96; + color: #00a0d2; } a:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 a:focus { + outline: #5b9dd9 solid 1px; } p { @@ -44,21 +51,20 @@ p { .login .message, .login .success, .login #login_error { - border-right: 4px solid #72aee6; + border-right: 4px solid #00a0d2; padding: 12px; margin-right: 0; margin-bottom: 20px; background-color: #fff; - box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); - word-wrap: break-word; + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); } .login .success { - border-right-color: #00a32a; + border-right-color: #46b450; } .login #login_error { - border-right-color: #d63638; + border-right-color: #dc3232; } #loginform p.submit, @@ -72,113 +78,33 @@ p { padding: 0; } -.login .input::-ms-clear { - display: none; -} - -.login .pw-weak { - margin-bottom: 15px; -} - -.login .button.wp-hide-pw { - background: transparent; - border: 1px solid transparent; - box-shadow: none; - font-size: 14px; - line-height: 2; - width: 2.5rem; - height: 2.5rem; - min-width: 40px; - min-height: 40px; - margin: 0; - padding: 5px 9px; - position: absolute; - left: 0; - top: 0; -} - -.login .button.wp-hide-pw:hover { - background: transparent; +.login .password-input-wrapper { + display: table; } -.login .button.wp-hide-pw:focus { - background: transparent; - border-color: #3582c4; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; +.login .input.password-input { + display: table-cell; + margin: 0; } -.login .button.wp-hide-pw:active { - background: transparent; - box-shadow: none; - transform: none; -} - -.login .button.wp-hide-pw .dashicons { - width: 1.25rem; - height: 1.25rem; - top: 0.25rem; -} - -.login .wp-pwd { - position: relative; +.login .pw-weak { + margin-bottom: 15px; } -.no-js .hide-if-no-js { - display: none; +.login .button.button-secondary { + display: table-cell; + border-radius: 0; + vertical-align: middle; } .login form { margin-top: 20px; margin-right: 0; - padding: 26px 24px 34px; + padding: 26px 24px 46px; font-weight: 400; overflow: hidden; background: #fff; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); -} - -.login form.shake { - animation: shake 0.2s cubic-bezier(.19,.49,.38,.79) both; - animation-iteration-count: 3; - transform: translateX(0); -} - -@keyframes shake { - 25% { - transform: translateX(20px); - } - 75% { - transform: translateX(-20px); - } - 100% { - transform: translateX(0); - } -} - -@media (prefers-reduced-motion: reduce) { - .login form.shake { - animation: none; - transform: none; - } -} - -.login-action-confirm_admin_email #login { - width: 60vw; - max-width: 650px; - margin-top: -2vh; -} - -@media screen and (max-width: 782px) { - .login-action-confirm_admin_email #login { - box-sizing: border-box; - margin-top: 0; - padding-right: 4vw; - padding-left: 4vw; - width: 100vw; - } + box-shadow: 0 1px 3px rgba(0,0,0,0.13); } .login form .forgetmenot { @@ -191,48 +117,6 @@ p { float: left; } -.login .reset-pass-submit { - display: flex; - flex-flow: row wrap; - justify-content: space-between; -} - -.login .reset-pass-submit .button { - display: inline-block; - float: none; - margin-bottom: 6px; -} - -.login .admin-email-confirm-form .submit { - text-align: center; -} - -.admin-email__later { - text-align: right; -} - -.login form p.admin-email__details { - margin: 1.1em 0; -} - -.login h1.admin-email__heading { - border-bottom: 1px #f0f0f1 solid; - color: #50575e; - font-weight: normal; - padding-bottom: 0.5em; - text-align: right; -} - -.admin-email__actions div { - padding-top: 1.5em; -} - -.login .admin-email__actions .button-primary { - float: none; - margin-right: 0.25em; - margin-left: 0.25em; -} - #login form p { margin-bottom: 0; } @@ -243,16 +127,13 @@ p { } .login label { + color: #72777c; font-size: 14px; - line-height: 1.5; - display: inline-block; - margin-bottom: 3px; } -.login .forgetmenot label, -.login .pw-weak label { - line-height: 1.5; - vertical-align: baseline; +.login form .forgetmenot label { + font-size: 12px; + line-height: 19px; } .login h1 { @@ -260,16 +141,16 @@ p { } .login h1 a { - background-image: url(../images/cp-logo-aqua.png?ver=202303); - background-image: none, url(../images/classicpress-logo.svg?ver=202303); + background-image: url(../images/w-logo-blue.png?ver=20190218); + background-image: none, url(../images/wordpress-logo.svg?ver=20190218); background-size: 84px; background-position: center top; background-repeat: no-repeat; - color: #3c434a; + color: #444; height: 84px; font-size: 20px; font-weight: 400; - line-height: 1.3; + line-height: 1.3em; margin: 0 auto 25px; padding: 0; text-decoration: none; @@ -282,7 +163,7 @@ p { #login { width: 320px; - padding: 5% 0 0; + padding: 6% 0 0; margin: auto; } @@ -302,74 +183,63 @@ p { .login #nav, .login #backtoblog { font-size: 13px; - padding: 0 24px; + padding: 0 24px 0; } .login #nav { - margin: 24px 0 0; + margin: 24px 0 0 0; } #backtoblog { margin: 16px 0; - word-wrap: break-word; } .login #nav a, .login #backtoblog a { text-decoration: none; - color: #50575e; + color: #555d66; } .login #nav a:hover, .login #backtoblog a:hover, .login h1 a:hover { - color: #135e96; + color: #00a0d2; } .login #nav a:focus, .login #backtoblog a:focus, .login h1 a:focus { - color: #043959; + color: #124964; } .login .privacy-policy-page-link { text-align: center; width: 100%; - margin: 3em 0 2em; + margin: 5em 0 2em; } .login form .input, -.login input[type="text"], -.login input[type="password"] { +.login input[type="text"] { font-size: 24px; - line-height: 1.33333333; /* 32px */ width: 100%; - border-width: 0.0625rem; - padding: 0.1875rem 0.3125rem; /* 3px 5px */ - margin: 0 0 16px 6px; - min-height: 40px; - max-height: none; -} - -.login input.password-input { - font-family: Consolas, Monaco, monospace; -} - -.js.login input.password-input, -.js.login-action-rp form .input, -.js.login-action-rp input[type="text"] { - padding-left: 2.5rem; + padding: 3px; + margin: 2px 0 16px 6px; } .login form .input, .login input[type="text"], .login form input[type="checkbox"] { - background: #fff; + background: #fbfbfb; } -.js.login-action-rp input[type="text"], -.js.login-action-rp input[type="password"] { - margin-bottom: 0; +.ie7 .login form .input, +.ie8 .login form .input { + font-family: sans-serif; +} + +.login-action-rp input[type="text"] { + box-shadow: none; + margin: 0; } .login #pass-strength-result { @@ -402,90 +272,21 @@ body.interim-login { margin: 0; } -/* Hide visually but not from screen readers */ -.screen-reader-text, -.screen-reader-text span { - border: 0; - clip: rect(1px, 1px, 1px, 1px); - clip-path: inset(50%); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ -} - -/* Hide the Edge "reveal password" native button */ -input::-ms-reveal { - display: none; -} - -#language-switcher { - padding: 0; - overflow: visible; - background: none; - border: none; - box-shadow: none; -} - -#language-switcher select { - margin-left: 0.25em; -} - -.language-switcher { - margin: 0 auto; - padding: 0 0 24px; - text-align: center; -} - -.language-switcher label { - margin-left: 0.25em; -} - -.language-switcher label .dashicons { - width: auto; - height: auto; -} - -.login .language-switcher .button-primary { - float: none; - margin-bottom: 0; -} - -@media screen and (max-height: 550px) { +@media screen and ( max-height: 550px ) { #login { padding: 20px 0; } - - #language-switcher { - margin-top: 0; - } } - -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .interim-login input[type=checkbox] { - width: 1rem; - height: 1rem; + height: 16px; + width: 16px; } .interim-login input[type=checkbox]:checked:before { - width: 1.3125rem; - height: 1.3125rem; - margin: -0.1875rem -0.25rem 0 0; - } - - #language-switcher label, - #language-switcher select { - margin-left: 0; - } -} - -@media screen and (max-width: 400px) { - .login .language-switcher .button-primary { - display: block; - margin: 5px auto 0; + width: 16px; + font: normal 21px/1 dashicons; + margin: -3px -4px 0 0; } } diff --git a/wp-admin/css/login-rtl.min.css b/wp-admin/css/login-rtl.min.css index adf8696..5ed97d8 100644 --- a/wp-admin/css/login-rtl.min.css +++ b/wp-admin/css/login-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;min-width:0;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a{outline:0}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}p{line-height:1.5}.login #login_error,.login .message,.login .success{border-right:4px solid #72aee6;padding:12px;margin-right:0;margin-bottom:20px;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);word-wrap:break-word}.login .success{border-right-color:#00a32a}.login #login_error{border-right-color:#d63638}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login .input::-ms-clear{display:none}.login .pw-weak{margin-bottom:15px}.login .button.wp-hide-pw{background:0 0;border:1px solid transparent;box-shadow:none;font-size:14px;line-height:2;width:2.5rem;height:2.5rem;min-width:40px;min-height:40px;margin:0;padding:5px 9px;position:absolute;left:0;top:0}.login .button.wp-hide-pw:hover{background:0 0}.login .button.wp-hide-pw:focus{background:0 0;border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.login .button.wp-hide-pw:active{background:0 0;box-shadow:none;transform:none}.login .button.wp-hide-pw .dashicons{width:1.25rem;height:1.25rem;top:.25rem}.login .wp-pwd{position:relative}.no-js .hide-if-no-js{display:none}.login form{margin-top:20px;margin-right:0;padding:26px 24px 34px;font-weight:400;overflow:hidden;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 3px rgba(0,0,0,.04)}.login form.shake{animation:shake .2s cubic-bezier(.19,.49,.38,.79) both;animation-iteration-count:3;transform:translateX(0)}@keyframes shake{25%{transform:translateX(20px)}75%{transform:translateX(-20px)}100%{transform:translateX(0)}}@media (prefers-reduced-motion:reduce){.login form.shake{animation:none;transform:none}}.login-action-confirm_admin_email #login{width:60vw;max-width:650px;margin-top:-2vh}@media screen and (max-width:782px){.login-action-confirm_admin_email #login{box-sizing:border-box;margin-top:0;padding-right:4vw;padding-left:4vw;width:100vw}}.login form .forgetmenot{font-weight:400;float:right;margin-bottom:0}.login .button-primary{float:left}.login .reset-pass-submit{display:flex;flex-flow:row wrap;justify-content:space-between}.login .reset-pass-submit .button{display:inline-block;float:none;margin-bottom:6px}.login .admin-email-confirm-form .submit{text-align:center}.admin-email__later{text-align:right}.login form p.admin-email__details{margin:1.1em 0}.login h1.admin-email__heading{border-bottom:1px #f0f0f1 solid;color:#50575e;font-weight:400;padding-bottom:.5em;text-align:right}.admin-email__actions div{padding-top:1.5em}.login .admin-email__actions .button-primary{float:none;margin-right:.25em;margin-left:.25em}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{font-size:14px;line-height:1.5;display:inline-block;margin-bottom:3px}.login .forgetmenot label,.login .pw-weak label{line-height:1.5;vertical-align:baseline}.login h1{text-align:center}.login h1 a{background-image:url(../images/cp-logo-aqua.png?ver=202303);background-image:none,url(../images/classicpress-logo.svg?ver=202303);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;height:84px;font-size:20px;font-weight:400;line-height:1.3;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#login{width:320px;padding:5% 0 0;margin:auto}.login .custom-login-image-container img{display:block;margin:10px auto;max-width:100px;max-height:100px;width:auto;height:auto}.login .custom-login-image-container.banner img{max-width:320px;max-height:240px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0;word-wrap:break-word}.login #backtoblog a,.login #nav a{text-decoration:none;color:#50575e}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#135e96}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#043959}.login .privacy-policy-page-link{text-align:center;width:100%;margin:3em 0 2em}.login form .input,.login input[type=password],.login input[type=text]{font-size:24px;line-height:1.33333333;width:100%;border-width:.0625rem;padding:.1875rem .3125rem;margin:0 0 16px 6px;min-height:40px;max-height:none}.login input.password-input{font-family:Consolas,Monaco,monospace}.js.login input.password-input,.js.login-action-rp form .input,.js.login-action-rp input[type=text]{padding-left:2.5rem}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fff}.js.login-action-rp input[type=password],.js.login-action-rp input[type=text]{margin-bottom:0}.login #pass-strength-result{font-weight:600;margin:-1px 0 16px 5px;padding:6px 5px;text-align:center;width:100%}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}.screen-reader-text,.screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}input::-ms-reveal{display:none}#language-switcher{padding:0;overflow:visible;background:0 0;border:none;box-shadow:none}#language-switcher select{margin-left:.25em}.language-switcher{margin:0 auto;padding:0 0 24px;text-align:center}.language-switcher label{margin-left:.25em}.language-switcher label .dashicons{width:auto;height:auto}.login .language-switcher .button-primary{float:none;margin-bottom:0}@media screen and (max-height:550px){#login{padding:20px 0}#language-switcher{margin-top:0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{width:1rem;height:1rem}.interim-login input[type=checkbox]:checked:before{width:1.3125rem;height:1.3125rem;margin:-.1875rem -.25rem 0 0}#language-switcher label,#language-switcher select{margin-left:0}}@media screen and (max-width:400px){.login .language-switcher .button-primary{display:block;margin:5px auto 0}} \ No newline at end of file +input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;transition:50ms border-color ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:1}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-left:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:right;display:inline-block;vertical-align:middle;width:16px;font:normal 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px -4px 0 0;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;padding:3px 5px;border-radius:0}textarea{overflow:auto;padding:2px 6px;line-height:1.4;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px 6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#dc3232;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:normal 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:right;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.pw-weak{display:none}.indicator-hint{padding-top:8px}#pass1-text,.show-password #pass1{display:none}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:left;margin:0}.network-admin.themes-php p.search-box{clear:right}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;height:28px;margin:0 0 0 4px}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:right;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 0 20px 10px;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;transform:skew(-20deg) rotate(-6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(-20deg) rotate(-9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0 0 0;padding:0 9px 8px 12px}.pressthis-bookmarklet span:before{color:#72777c;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.options-general-php #login_custom_image-description{margin-bottom:6px}.options-general-php #login_custom_image-img{max-width:120px;max-height:120px}.options-general-php .wrap .login_custom_image-notice{margin:3px 24px 3px 0;padding:3px 6px;cursor:default;color:#666;font-style:italic}.form-table.permalink-structure .available-structure-tags li{float:right;margin-left:5px}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px 0;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button,.tools-privacy-policy-page select{margin-right:6px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2em}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-right:4px solid #fff}.privacy_requests tbody th{border-right:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{height:auto;line-height:1.5;padding:4px 10px;word-break:break-all;white-space:unset}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#f7fcfe;border-right-color:#00a0d2}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#fef7f1;border-right-color:#d64d21}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:700}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#6c7781}.status-label.status-request-failed{color:#a00;font-weight:700}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form label{font-weight:700;line-height:1.5;padding-bottom:.5em;display:block}.wp-privacy-request-form input{line-height:1.5;margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px -2px 0 5px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#f56e28;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#79ba49;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-right:0}.form-table.permalink-structure td code{margin-right:32px}.form-table.permalink-structure td input[type=text]{margin-right:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=password],.wp-pwd [type=text]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;left:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-right:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-right:5px}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-left:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(-359deg)}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:600}.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{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 #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button{padding:0 5px 1px}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-right:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;min-width:0;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a{outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}p{line-height:1.5}.login #login_error,.login .message,.login .success{border-right:4px solid #00a0d2;padding:12px;margin-right:0;margin-bottom:20px;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login .success{border-right-color:#46b450}.login #login_error{border-right-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login .password-input-wrapper{display:table}.login .input.password-input{display:table-cell;margin:0}.login .pw-weak{margin-bottom:15px}.login .button.button-secondary{display:table-cell;border-radius:0;vertical-align:middle}.login form{margin-top:20px;margin-right:0;padding:26px 24px 46px;font-weight:400;overflow:hidden;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.13)}.login form .forgetmenot{font-weight:400;float:right;margin-bottom:0}.login .button-primary{float:left}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{color:#72777c;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20190218);background-image:none,url(../images/wordpress-logo.svg?ver=20190218);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#444;height:84px;font-size:20px;font-weight:400;line-height:1.3em;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#login{width:320px;padding:6% 0 0;margin:auto}.login .custom-login-image-container img{display:block;margin:10px auto;max-width:100px;max-height:100px;width:auto;height:auto}.login .custom-login-image-container.banner img{max-width:320px;max-height:240px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px 0}.login #nav{margin:24px 0 0 0}#backtoblog{margin:16px 0}.login #backtoblog a,.login #nav a{text-decoration:none;color:#555d66}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login .privacy-policy-page-link{text-align:center;width:100%;margin:5em 0 2em}.login form .input,.login input[type=text]{font-size:24px;width:100%;padding:3px;margin:2px 0 16px 6px}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fbfbfb}.ie7 .login form .input,.ie8 .login form .input{font-family:sans-serif}.login-action-rp input[type=text]{box-shadow:none;margin:0}.login #pass-strength-result{font-weight:600;margin:-1px 0 16px 5px;padding:6px 5px;text-align:center;width:100%}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}@media screen and (max-height:550px){#login{padding:20px 0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:normal 21px/1 dashicons;margin:-3px -4px 0 0}} \ No newline at end of file diff --git a/wp-admin/css/login.css b/wp-admin/css/login.css index 9bef534..63b901e 100644 --- a/wp-admin/css/login.css +++ b/wp-admin/css/login.css @@ -1,3 +1,6 @@ +@import url(forms.css); +@import url(l10n.css); + html, body { height: 100%; @@ -6,16 +9,16 @@ body { } body { - background: #f0f0f1; + background: #f1f1f1; min-width: 0; - color: #3c434a; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; font-size: 13px; - line-height: 1.4; + line-height: 1.4em; } a { - color: #2271b1; + color: #0073aa; transition-property: border, background, color; transition-duration: .05s; transition-timing-function: ease-in-out; @@ -27,14 +30,18 @@ a { a:hover, a:active { - color: #135e96; + color: #00a0d2; } a:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); +} + +.ie8 a:focus { + outline: #5b9dd9 solid 1px; } p { @@ -44,21 +51,20 @@ p { .login .message, .login .success, .login #login_error { - border-left: 4px solid #72aee6; + border-left: 4px solid #00a0d2; padding: 12px; margin-left: 0; margin-bottom: 20px; background-color: #fff; - box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); - word-wrap: break-word; + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1); } .login .success { - border-left-color: #00a32a; + border-left-color: #46b450; } .login #login_error { - border-left-color: #d63638; + border-left-color: #dc3232; } #loginform p.submit, @@ -72,113 +78,33 @@ p { padding: 0; } -.login .input::-ms-clear { - display: none; -} - -.login .pw-weak { - margin-bottom: 15px; -} - -.login .button.wp-hide-pw { - background: transparent; - border: 1px solid transparent; - box-shadow: none; - font-size: 14px; - line-height: 2; - width: 2.5rem; - height: 2.5rem; - min-width: 40px; - min-height: 40px; - margin: 0; - padding: 5px 9px; - position: absolute; - right: 0; - top: 0; -} - -.login .button.wp-hide-pw:hover { - background: transparent; +.login .password-input-wrapper { + display: table; } -.login .button.wp-hide-pw:focus { - background: transparent; - border-color: #3582c4; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; +.login .input.password-input { + display: table-cell; + margin: 0; } -.login .button.wp-hide-pw:active { - background: transparent; - box-shadow: none; - transform: none; -} - -.login .button.wp-hide-pw .dashicons { - width: 1.25rem; - height: 1.25rem; - top: 0.25rem; -} - -.login .wp-pwd { - position: relative; +.login .pw-weak { + margin-bottom: 15px; } -.no-js .hide-if-no-js { - display: none; +.login .button.button-secondary { + display: table-cell; + border-radius: 0; + vertical-align: middle; } .login form { margin-top: 20px; margin-left: 0; - padding: 26px 24px 34px; + padding: 26px 24px 46px; font-weight: 400; overflow: hidden; background: #fff; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04); -} - -.login form.shake { - animation: shake 0.2s cubic-bezier(.19,.49,.38,.79) both; - animation-iteration-count: 3; - transform: translateX(0); -} - -@keyframes shake { - 25% { - transform: translateX(-20px); - } - 75% { - transform: translateX(20px); - } - 100% { - transform: translateX(0); - } -} - -@media (prefers-reduced-motion: reduce) { - .login form.shake { - animation: none; - transform: none; - } -} - -.login-action-confirm_admin_email #login { - width: 60vw; - max-width: 650px; - margin-top: -2vh; -} - -@media screen and (max-width: 782px) { - .login-action-confirm_admin_email #login { - box-sizing: border-box; - margin-top: 0; - padding-left: 4vw; - padding-right: 4vw; - width: 100vw; - } + box-shadow: 0 1px 3px rgba(0,0,0,0.13); } .login form .forgetmenot { @@ -191,48 +117,6 @@ p { float: right; } -.login .reset-pass-submit { - display: flex; - flex-flow: row wrap; - justify-content: space-between; -} - -.login .reset-pass-submit .button { - display: inline-block; - float: none; - margin-bottom: 6px; -} - -.login .admin-email-confirm-form .submit { - text-align: center; -} - -.admin-email__later { - text-align: left; -} - -.login form p.admin-email__details { - margin: 1.1em 0; -} - -.login h1.admin-email__heading { - border-bottom: 1px #f0f0f1 solid; - color: #50575e; - font-weight: normal; - padding-bottom: 0.5em; - text-align: left; -} - -.admin-email__actions div { - padding-top: 1.5em; -} - -.login .admin-email__actions .button-primary { - float: none; - margin-left: 0.25em; - margin-right: 0.25em; -} - #login form p { margin-bottom: 0; } @@ -243,16 +127,13 @@ p { } .login label { + color: #72777c; font-size: 14px; - line-height: 1.5; - display: inline-block; - margin-bottom: 3px; } -.login .forgetmenot label, -.login .pw-weak label { - line-height: 1.5; - vertical-align: baseline; +.login form .forgetmenot label { + font-size: 12px; + line-height: 19px; } .login h1 { @@ -260,16 +141,16 @@ p { } .login h1 a { - background-image: url(../images/cp-logo-aqua.png?ver=202303); - background-image: none, url(../images/classicpress-logo.svg?ver=202303); + background-image: url(../images/w-logo-blue.png?ver=20190218); + background-image: none, url(../images/wordpress-logo.svg?ver=20190218); background-size: 84px; background-position: center top; background-repeat: no-repeat; - color: #3c434a; + color: #444; height: 84px; font-size: 20px; font-weight: 400; - line-height: 1.3; + line-height: 1.3em; margin: 0 auto 25px; padding: 0; text-decoration: none; @@ -282,7 +163,7 @@ p { #login { width: 320px; - padding: 5% 0 0; + padding: 6% 0 0; margin: auto; } @@ -302,74 +183,63 @@ p { .login #nav, .login #backtoblog { font-size: 13px; - padding: 0 24px; + padding: 0 24px 0; } .login #nav { - margin: 24px 0 0; + margin: 24px 0 0 0; } #backtoblog { margin: 16px 0; - word-wrap: break-word; } .login #nav a, .login #backtoblog a { text-decoration: none; - color: #50575e; + color: #555d66; } .login #nav a:hover, .login #backtoblog a:hover, .login h1 a:hover { - color: #135e96; + color: #00a0d2; } .login #nav a:focus, .login #backtoblog a:focus, .login h1 a:focus { - color: #043959; + color: #124964; } .login .privacy-policy-page-link { text-align: center; width: 100%; - margin: 3em 0 2em; + margin: 5em 0 2em; } .login form .input, -.login input[type="text"], -.login input[type="password"] { +.login input[type="text"] { font-size: 24px; - line-height: 1.33333333; /* 32px */ width: 100%; - border-width: 0.0625rem; - padding: 0.1875rem 0.3125rem; /* 3px 5px */ - margin: 0 6px 16px 0; - min-height: 40px; - max-height: none; -} - -.login input.password-input { - font-family: Consolas, Monaco, monospace; -} - -.js.login input.password-input, -.js.login-action-rp form .input, -.js.login-action-rp input[type="text"] { - padding-right: 2.5rem; + padding: 3px; + margin: 2px 6px 16px 0; } .login form .input, .login input[type="text"], .login form input[type="checkbox"] { - background: #fff; + background: #fbfbfb; } -.js.login-action-rp input[type="text"], -.js.login-action-rp input[type="password"] { - margin-bottom: 0; +.ie7 .login form .input, +.ie8 .login form .input { + font-family: sans-serif; +} + +.login-action-rp input[type="text"] { + box-shadow: none; + margin: 0; } .login #pass-strength-result { @@ -402,90 +272,21 @@ body.interim-login { margin: 0; } -/* Hide visually but not from screen readers */ -.screen-reader-text, -.screen-reader-text span { - border: 0; - clip: rect(1px, 1px, 1px, 1px); - clip-path: inset(50%); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - word-wrap: normal !important; /* many screen reader and browser combinations announce broken words as they would appear visually */ -} - -/* Hide the Edge "reveal password" native button */ -input::-ms-reveal { - display: none; -} - -#language-switcher { - padding: 0; - overflow: visible; - background: none; - border: none; - box-shadow: none; -} - -#language-switcher select { - margin-right: 0.25em; -} - -.language-switcher { - margin: 0 auto; - padding: 0 0 24px; - text-align: center; -} - -.language-switcher label { - margin-right: 0.25em; -} - -.language-switcher label .dashicons { - width: auto; - height: auto; -} - -.login .language-switcher .button-primary { - float: none; - margin-bottom: 0; -} - -@media screen and (max-height: 550px) { +@media screen and ( max-height: 550px ) { #login { padding: 20px 0; } - - #language-switcher { - margin-top: 0; - } } - -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .interim-login input[type=checkbox] { - width: 1rem; - height: 1rem; + height: 16px; + width: 16px; } .interim-login input[type=checkbox]:checked:before { - width: 1.3125rem; - height: 1.3125rem; - margin: -0.1875rem 0 0 -0.25rem; - } - - #language-switcher label, - #language-switcher select { - margin-right: 0; - } -} - -@media screen and (max-width: 400px) { - .login .language-switcher .button-primary { - display: block; - margin: 5px auto 0; + width: 16px; + font: normal 21px/1 dashicons; + margin: -3px 0 0 -4px; } } diff --git a/wp-admin/css/login.min.css b/wp-admin/css/login.min.css index 12b5935..c786448 100644 --- a/wp-admin/css/login.min.css +++ b/wp-admin/css/login.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body,html{height:100%;margin:0;padding:0}body{background:#f0f0f1;min-width:0;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4}a{color:#2271b1;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a{outline:0}a:active,a:hover{color:#135e96}a:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}p{line-height:1.5}.login #login_error,.login .message,.login .success{border-left:4px solid #72aee6;padding:12px;margin-left:0;margin-bottom:20px;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);word-wrap:break-word}.login .success{border-left-color:#00a32a}.login #login_error{border-left-color:#d63638}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login .input::-ms-clear{display:none}.login .pw-weak{margin-bottom:15px}.login .button.wp-hide-pw{background:0 0;border:1px solid transparent;box-shadow:none;font-size:14px;line-height:2;width:2.5rem;height:2.5rem;min-width:40px;min-height:40px;margin:0;padding:5px 9px;position:absolute;right:0;top:0}.login .button.wp-hide-pw:hover{background:0 0}.login .button.wp-hide-pw:focus{background:0 0;border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.login .button.wp-hide-pw:active{background:0 0;box-shadow:none;transform:none}.login .button.wp-hide-pw .dashicons{width:1.25rem;height:1.25rem;top:.25rem}.login .wp-pwd{position:relative}.no-js .hide-if-no-js{display:none}.login form{margin-top:20px;margin-left:0;padding:26px 24px 34px;font-weight:400;overflow:hidden;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 3px rgba(0,0,0,.04)}.login form.shake{animation:shake .2s cubic-bezier(.19,.49,.38,.79) both;animation-iteration-count:3;transform:translateX(0)}@keyframes shake{25%{transform:translateX(-20px)}75%{transform:translateX(20px)}100%{transform:translateX(0)}}@media (prefers-reduced-motion:reduce){.login form.shake{animation:none;transform:none}}.login-action-confirm_admin_email #login{width:60vw;max-width:650px;margin-top:-2vh}@media screen and (max-width:782px){.login-action-confirm_admin_email #login{box-sizing:border-box;margin-top:0;padding-left:4vw;padding-right:4vw;width:100vw}}.login form .forgetmenot{font-weight:400;float:left;margin-bottom:0}.login .button-primary{float:right}.login .reset-pass-submit{display:flex;flex-flow:row wrap;justify-content:space-between}.login .reset-pass-submit .button{display:inline-block;float:none;margin-bottom:6px}.login .admin-email-confirm-form .submit{text-align:center}.admin-email__later{text-align:left}.login form p.admin-email__details{margin:1.1em 0}.login h1.admin-email__heading{border-bottom:1px #f0f0f1 solid;color:#50575e;font-weight:400;padding-bottom:.5em;text-align:left}.admin-email__actions div{padding-top:1.5em}.login .admin-email__actions .button-primary{float:none;margin-left:.25em;margin-right:.25em}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{font-size:14px;line-height:1.5;display:inline-block;margin-bottom:3px}.login .forgetmenot label,.login .pw-weak label{line-height:1.5;vertical-align:baseline}.login h1{text-align:center}.login h1 a{background-image:url(../images/cp-logo-aqua.png?ver=202303);background-image:none,url(../images/classicpress-logo.svg?ver=202303);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#3c434a;height:84px;font-size:20px;font-weight:400;line-height:1.3;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#login{width:320px;padding:5% 0 0;margin:auto}.login .custom-login-image-container img{display:block;margin:10px auto;max-width:100px;max-height:100px;width:auto;height:auto}.login .custom-login-image-container.banner img{max-width:320px;max-height:240px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0;word-wrap:break-word}.login #backtoblog a,.login #nav a{text-decoration:none;color:#50575e}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#135e96}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#043959}.login .privacy-policy-page-link{text-align:center;width:100%;margin:3em 0 2em}.login form .input,.login input[type=password],.login input[type=text]{font-size:24px;line-height:1.33333333;width:100%;border-width:.0625rem;padding:.1875rem .3125rem;margin:0 6px 16px 0;min-height:40px;max-height:none}.login input.password-input{font-family:Consolas,Monaco,monospace}.js.login input.password-input,.js.login-action-rp form .input,.js.login-action-rp input[type=text]{padding-right:2.5rem}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fff}.js.login-action-rp input[type=password],.js.login-action-rp input[type=text]{margin-bottom:0}.login #pass-strength-result{font-weight:600;margin:-1px 5px 16px 0;padding:6px 5px;text-align:center;width:100%}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}.screen-reader-text,.screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}input::-ms-reveal{display:none}#language-switcher{padding:0;overflow:visible;background:0 0;border:none;box-shadow:none}#language-switcher select{margin-right:.25em}.language-switcher{margin:0 auto;padding:0 0 24px;text-align:center}.language-switcher label{margin-right:.25em}.language-switcher label .dashicons{width:auto;height:auto}.login .language-switcher .button-primary{float:none;margin-bottom:0}@media screen and (max-height:550px){#login{padding:20px 0}#language-switcher{margin-top:0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{width:1rem;height:1rem}.interim-login input[type=checkbox]:checked:before{width:1.3125rem;height:1.3125rem;margin:-.1875rem 0 0 -.25rem}#language-switcher label,#language-switcher select{margin-right:0}}@media screen and (max-width:400px){.login .language-switcher .button-primary{display:block;margin:5px auto 0}} \ No newline at end of file +input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;transition:50ms border-color ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=number]{height:28px;line-height:1}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{border-radius:50%;margin-right:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:left;display:inline-block;vertical-align:middle;width:16px;font:normal 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px 0 0 -4px;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;padding:3px 5px;border-radius:0}textarea{overflow:auto;padding:2px 6px;line-height:1.4;resize:vertical}.wp-admin input[type=file]{padding:3px 0;cursor:pointer}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px 6px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}::-webkit-input-placeholder{color:#72777c}::-moz-placeholder{color:#72777c;opacity:1}:-ms-input-placeholder{color:#72777c}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:normal 20px/1 dashicons;color:#dc3232;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:normal 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;box-shadow:none;cursor:default}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;border-bottom-left-radius:3px;border-bottom-right-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:left;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.no-js input#changeit2,.no-js input#doaction2,.no-js label[for=bulk-action-selector-bottom],.no-js label[for=new_role2],.no-js select#bulk-action-selector-bottom,.no-js select#new_role2{display:none}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,label{vertical-align:middle}#your-profile label+a,fieldset label{vertical-align:middle}.options-media-php [for*="_size_"]{min-width:10em;vertical-align:baseline}.options-media-php .small-text[name*="_size_"]{margin:0 0 1em}#misc-publishing-actions label{vertical-align:baseline}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.pw-weak{display:none}.indicator-hint{padding-top:8px}#pass1-text,.show-password #pass1{display:none}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:right;margin:0}.network-admin.themes-php p.search-box{clear:left}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:28px;margin:0 4px 0 0}.js.plugins-php .search-box .wp-filter-search{margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5;padding:3px 5px;height:32px}input[type=email].ui-autocomplete-loading,input[type=text].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:left;cursor:pointer}.ui-autocomplete .ui-state-focus{background-color:#ddd}.wp-tags-autocomplete .ui-state-focus{background-color:#0073aa;color:#fff}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table .td-full,.form-table th.th-full{width:auto;padding:20px 10px 20px 0;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table .date-time-doc{margin-top:1em}.form-table p.timezone-info{margin:1em 0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#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}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.color-option{cursor:pointer}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}#pressthis-code-wrap{overflow:auto}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e5e5e5;border-radius:5px;border:1px solid #b4b9be;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;transform:skew(20deg) rotate(6deg);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{transform:skew(20deg) rotate(9deg);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0 0 0;padding:0 12px 8px 9px}.pressthis-bookmarklet span:before{color:#72777c;font:normal 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#555d66}.timezone-info code{white-space:nowrap}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php .date-time-text{display:inline-block;min-width:10em}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:-3px 3px 0}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.options-general-php #login_custom_image-description{margin-bottom:6px}.options-general-php #login_custom_image-img{max-width:120px;max-height:120px}.options-general-php .wrap .login_custom_image-notice{margin:3px 0 3px 24px;padding:3px 6px;cursor:default;color:#666;font-style:italic}.form-table.permalink-structure .available-structure-tags li{float:left;margin-right:5px}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none;visibility:visible}.request-filesystem-credentials-dialog .notification-dialog{top:10%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=password],.request-filesystem-credentials-form input[type=text]{display:block}.request-filesystem-credentials-dialog input[type=password],.request-filesystem-credentials-dialog input[type=text]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=private_key],.request-filesystem-credentials-dialog label[for=public_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}.request-filesystem-credentials-dialog #auth-keys-desc{margin-bottom:0}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:none;width:auto}.request-filesystem-credentials-dialog .ftp-username{margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password{margin:0}.request-filesystem-credentials-dialog .ftp-password em{color:#888}.request-filesystem-credentials-dialog label{display:block;line-height:1.5;margin-bottom:1em}.request-filesystem-credentials-form legend{padding-bottom:0}.request-filesystem-credentials-form #ssh-keys legend{font-size:1.3em}.request-filesystem-credentials-form .notice{margin:0 0 20px 0;clear:both}.tools-privacy-policy-page form{margin-bottom:1.3em}.tools-privacy-policy-page input.button,.tools-privacy-policy-page select{margin-left:6px}.tools-privacy-edit{margin:1.5em 0}.tools-privacy-policy-page span{line-height:2em}.privacy_requests .column-email{width:40%}.privacy_requests .column-type{text-align:center}.privacy_requests tfoot td:first-child,.privacy_requests thead td:first-child{border-left:4px solid #fff}.privacy_requests tbody th{border-left:4px solid #fff;background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results th{box-shadow:none}.privacy_requests tbody .request-results th .notice{margin:0 0 5px}.privacy_requests tbody td{background:#fff;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.privacy_requests tbody .has-request-results td{box-shadow:none}.privacy_requests .next_steps .button{height:auto;line-height:1.5;padding:4px 10px;word-break:break-all;white-space:unset}.privacy_requests .status-request-confirmed td,.privacy_requests .status-request-confirmed th{background-color:#f7fcfe;border-left-color:#00a0d2}.privacy_requests .status-request-failed td,.privacy_requests .status-request-failed th{background-color:#fef7f1;border-left-color:#d64d21}.privacy_requests .export_personal_data_failed a{vertical-align:baseline}.status-label{font-weight:700}.status-label.status-request-pending{font-weight:400;font-style:italic;color:#6c7781}.status-label.status-request-failed{color:#a00;font-weight:700}.wp-privacy-request-form{clear:both}.wp-privacy-request-form-field{margin:1.5em 0}.wp-privacy-request-form label{font-weight:700;line-height:1.5;padding-bottom:.5em;display:block}.wp-privacy-request-form input{line-height:1.5;margin:0}.email-personal-data::before{display:inline-block;font:normal 20px/1 dashicons;margin:3px 5px 0 -2px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.email-personal-data--sending::before{color:#f56e28;content:"\f463";animation:rotation 2s infinite linear}.email-personal-data--sent::before{color:#79ba49;content:"\f147"}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=email],.form-table td input[type=password],.form-table td input[type=text],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{width:auto;max-width:4.375em;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-left:0}.form-table.permalink-structure td code{margin-left:32px}.form-table.permalink-structure td input[type=text]{margin-left:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#local-time,#utc-time{display:block;float:none;margin-top:.5em}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=password],.wp-pwd [type=text]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;right:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}.options-general-php input[type=text].small-text{max-width:6.25em;margin:0}.tools-privacy-policy-page form.wp-create-privacy-page{margin-bottom:1em}.tools-privacy-policy-page input#set-page,.tools-privacy-policy-page select{margin:10px 0 0}.tools-privacy-policy-page .wp-create-privacy-page span{display:block;margin-bottom:1em}.tools-privacy-policy-page .wp-create-privacy-page .button{margin-left:0}.wp-list-table.privacy_requests tr:not(.inline-edit-row):not(.no-items) td.column-primary:not(.check-column){display:table-cell}.wp-list-table.privacy_requests.widefat th input,.wp-list-table.privacy_requests.widefat thead td input{margin-left:5px}}@media only screen and (max-width:768px){.form-field input[type=email],.form-field input[type=password],.form-field input[type=text],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px),screen and (max-width:450px){.file-editor-warning .notification-dialog,.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}@media only screen and (max-width:320px){.options-general-php .date-time-text.date-time-custom-text{min-width:0;margin-right:.5em}}@keyframes rotation{0%{transform:rotate(0)}100%{transform:rotate(359deg)}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:600}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-style:normal;font-weight:600}.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{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 #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button{padding:0 5px 1px}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-left:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}}body,html{height:100%;margin:0;padding:0}body{background:#f1f1f1;min-width:0;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}a{outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}p{line-height:1.5}.login #login_error,.login .message,.login .success{border-left:4px solid #00a0d2;padding:12px;margin-left:0;margin-bottom:20px;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login .success{border-left-color:#46b450}.login #login_error{border-left-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login .password-input-wrapper{display:table}.login .input.password-input{display:table-cell;margin:0}.login .pw-weak{margin-bottom:15px}.login .button.button-secondary{display:table-cell;border-radius:0;vertical-align:middle}.login form{margin-top:20px;margin-left:0;padding:26px 24px 46px;font-weight:400;overflow:hidden;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.13)}.login form .forgetmenot{font-weight:400;float:left;margin-bottom:0}.login .button-primary{float:right}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{color:#72777c;font-size:14px}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20190218);background-image:none,url(../images/wordpress-logo.svg?ver=20190218);background-size:84px;background-position:center top;background-repeat:no-repeat;color:#444;height:84px;font-size:20px;font-weight:400;line-height:1.3em;margin:0 auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#login{width:320px;padding:6% 0 0;margin:auto}.login .custom-login-image-container img{display:block;margin:10px auto;max-width:100px;max-height:100px;width:auto;height:auto}.login .custom-login-image-container.banner img{max-width:320px;max-height:240px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px 0}.login #nav{margin:24px 0 0 0}#backtoblog{margin:16px 0}.login #backtoblog a,.login #nav a{text-decoration:none;color:#555d66}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login .privacy-policy-page-link{text-align:center;width:100%;margin:5em 0 2em}.login form .input,.login input[type=text]{font-size:24px;width:100%;padding:3px;margin:2px 6px 16px 0}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fbfbfb}.ie7 .login form .input,.ie8 .login form .input{font-family:sans-serif}.login-action-rp input[type=text]{box-shadow:none;margin:0}.login #pass-strength-result{font-weight:600;margin:-1px 5px 16px 0;padding:6px 5px;text-align:center;width:100%}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}@media screen and (max-height:550px){#login{padding:20px 0}}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:normal 21px/1 dashicons;margin:-3px 0 0 -4px}} \ No newline at end of file diff --git a/wp-admin/css/media-rtl.css b/wp-admin/css/media-rtl.css index 21d665a..4eaf0f0 100644 --- a/wp-admin/css/media-rtl.css +++ b/wp-admin/css/media-rtl.css @@ -5,7 +5,7 @@ .media-item .describe { border-collapse: collapse; width: 100%; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; clear: both; cursor: default; } @@ -51,14 +51,6 @@ max-width: 128px; } -.media-list-subtitle { - display: block; -} - -.media-list-title { - display: block; -} - #wpbody-content #async-upload-wrap a { display: none; } @@ -104,47 +96,15 @@ padding: 0 5px 0 0; } +.media-item .edit-attachment, .describe-toggle-on, .describe-toggle-off { display: block; - line-height: 2.76923076; + line-height: 36px; float: left; margin-left: 10px; } -.media-item-wrapper { - display: grid; - grid-template-columns: 1fr 1fr; -} - -.media-item .attachment-tools { - display: flex; - justify-content: flex-end; - align-items: center; -} - -.media-item .edit-attachment { - padding: 14px 0; - display: block; - margin-left: 10px; -} - -.media-item .edit-attachment.copy-to-clipboard-container { - margin-top: 0; -} - -.media-item-copy-container .success { - line-height: 0; -} - -.media-item button .copy-attachment-url { - margin-top: 14px; -} - -.media-item .copy-to-clipboard-container { - margin-top: 7px; -} - .media-item .describe-toggle-off, .media-item.open .describe-toggle-on { display: none; @@ -155,7 +115,7 @@ } .media-upload-form .media-item { - min-height: 70px; + min-height: 36px; margin-bottom: 1px; position: relative; width: 100%; @@ -164,7 +124,7 @@ .media-upload-form .media-item, .media-upload-form .media-item .error { - box-shadow: 0 1px 0 #dcdcde; + box-shadow: 0 1px 0 #ddd; } #media-items:empty { @@ -172,16 +132,16 @@ } .media-item .filename { - padding: 14px 0; + line-height: 36px; overflow: hidden; margin-right: 6px; } .media-item .pinkynail { float: right; - margin: 0 0 0 10px; - max-height: 70px; - max-width: 70px; + margin: 2px 3px 0 10px; + max-width: 40px; + max-height: 32px; } .media-item .startopen, @@ -191,7 +151,7 @@ .media-item .original { position: relative; - min-height: 34px; + height: 34px; } .media-item .progress { @@ -203,8 +163,8 @@ padding: 0; overflow: hidden; border-radius: 22px; - background: #dcdcde; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + background: #ddd; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); } .media-item .bar { @@ -213,8 +173,8 @@ height: 100%; margin-top: -22px; border-radius: 22px; - background-color: #2271b1; - box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3); + background-color: #0073aa; + box-shadow: inset 0 0 2px rgba(0,0,0,0.3); } .media-item .progress .percent { @@ -226,7 +186,7 @@ text-align: center; line-height: 22px; font-weight: 400; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + text-shadow: 0 1px 2px rgba(0,0,0,0.2); } .upload-php .fixed .column-parent { @@ -241,19 +201,14 @@ display: block; } -#html-upload-ui #async-upload { - font-size: 1em; -} - .media-upload-form .media-item.error, .media-upload-form .media-item .error { width: auto; - margin: 0 0 1px; + margin: 0 0 1px 0; } .media-upload-form .media-item .error { padding: 10px 14px 10px 0; - min-height: 50px; } .media-item .error-div button.dismiss { @@ -267,7 +222,7 @@ .find-box { background-color: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); width: 600px; overflow: hidden; margin-right: -300px; @@ -279,12 +234,12 @@ } .find-box-head { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #ddd; height: 36px; font-size: 18px; font-weight: 600; - line-height: 2; + line-height: 36px; padding: 0 16px 0 36px; position: absolute; top: 0; @@ -346,27 +301,25 @@ cursor: pointer; text-align: center; background: none; - color: #646970; + color: #666; } #find-posts-close:hover, #find-posts-close:focus { - color: #135e96; + color: #00a0d2; } #find-posts-close:focus { + outline: none; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } #find-posts-close:before { font: normal 20px/36px dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; content: "\f158"; @@ -374,21 +327,21 @@ .find-box-buttons { padding: 8px 16px; - background: #fff; - border-top: 1px solid #dcdcde; + background: #fcfcfc; + border-top: 1px solid #ddd; position: absolute; bottom: 0; right: 0; left: 0; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .find-box-inside { bottom: 57px; } } -@media screen and (max-width: 660px) { +@media screen and ( max-width: 660px ) { .find-box { top: 0; @@ -413,17 +366,40 @@ z-index: 100100; } +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: 1px solid #ddd; + line-height: 1.8em; + word-spacing: 3px; +} + .drag-drop #drag-drop-area { - border: 4px dashed #c3c4c7; + border: 4px dashed #b4b9be; height: 200px; } .drag-drop .drag-drop-inside { - margin: 60px auto 0; + margin: 70px auto 0; width: 250px; } .drag-drop-inside p { + color: #a0a5aa; font-size: 14px; margin: 5px 0; display: none; @@ -448,7 +424,7 @@ } border color while dragging a file over the uploader drop area */ .drag-drop.drag-over #drag-drop-area { - border-color: #9ec2e6; + border-color: #83b4d8; } #plupload-upload-ui { @@ -461,8 +437,7 @@ border color while dragging a file over the uploader drop area */ .media-frame.mode-grid, .media-frame.mode-grid .media-frame-content, -.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments, -.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper, +.media-frame.mode-grid .attachments-browser .attachments, .media-frame.mode-grid .uploader-inline-content { position: static; } @@ -484,8 +459,8 @@ border color while dragging a file over the uploader drop area */ width: auto; margin-top: 12px; padding: 0 16px; - border-right: 4px solid #d63638; - box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + border-right: 4px solid #dd3d36; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); background-color: #fff; } @@ -507,6 +482,25 @@ border color while dragging a file over the uploader drop area */ background: none; } +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors { + top: -10px; + left: -14px; + padding: 10px; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before { + content: "\f153"; + display: block; + font: normal 16px/1 dashicons; + color: #72777c; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before, +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before { + color: #c00; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3, /* Back-compat for pre-4.4 */ .upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2 { display: none; } @@ -519,11 +513,10 @@ border color while dragging a file over the uploader drop area */ bottom: auto; padding-top: 0; margin-top: 20px; - border: 4px dashed #c3c4c7; + border: 4px dashed #b4b9be; } -.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments, -.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper { +.media-frame.mode-select .attachments-browser.fixed .attachments { position: relative; top: 94px; /* prevent jumping up when the toolbar becomes fixed */ padding-bottom: 94px; /* offset for above so the bottom doesn't get cut off */ @@ -533,23 +526,21 @@ border color while dragging a file over the uploader drop area */ .media-frame.mode-grid .selected.attachment:focus, .media-frame.mode-grid .attachment.details:focus { box-shadow: - inset 0 0 2px 3px #f0f0f1, - inset 0 0 0 7px #4f94d4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -6px; + inset 0 0 2px 3px #f1f1f1, + inset 0 0 0 7px #5b9dd9; + outline: none; } .media-frame.mode-grid .selected.attachment { box-shadow: - inset 0 0 0 5px #f0f0f1, - inset 0 0 0 7px #c3c4c7; + inset 0 0 0 5px #f1f1f1, + inset 0 0 0 7px #ccc; } .media-frame.mode-grid .attachment.details { box-shadow: - inset 0 0 0 3px #f0f0f1, - inset 0 0 0 7px #4f94d4; + inset 0 0 0 3px #f1f1f1, + inset 0 0 0 7px #1e8cbe; } .media-frame.mode-grid.mode-select .attachment .thumbnail { @@ -567,6 +558,7 @@ border color while dragging a file over the uploader drop area */ .media-frame.mode-grid .media-toolbar select { margin: 0 0 0 10px; + font-size: 14px; } .media-frame.mode-grid.mode-edit .media-toolbar-secondary > .select-mode-toggle-button { @@ -583,14 +575,8 @@ border color while dragging a file over the uploader drop area */ margin-top: 0; } -.media-search-input-label { - margin: 0 0 0 .2em; - vertical-align: baseline; -} - -.media-frame.mode-grid .media-search-input-label { - position: static; - margin: 0 0 0 .5em; +.media-frame.mode-grid .spinner { + margin-top: 16px; } .attachments-browser .media-toolbar-secondary > .media-button { @@ -614,7 +600,7 @@ border color while dragging a file over the uploader drop area */ } .media-frame.mode-grid .attachments-browser .no-media { - color: #646970; /* same as no plugins and no themes */ + color: #666; /* same as no plugins and no themes */ font-size: 18px; font-style: normal; margin: 0; @@ -645,7 +631,7 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame .edit-media-header .left, .edit-attachment-frame .edit-media-header .right { cursor: pointer; - color: #787c82; + color: #72777c; background-color: transparent; height: 50px; width: 50px; @@ -653,7 +639,7 @@ border color while dragging a file over the uploader drop area */ position: absolute; text-align: center; border: 0; - border-right: 1px solid #dcdcde; + border-right: 1px solid #ddd; transition: color .1s ease-in-out, background .1s ease-in-out; } @@ -688,39 +674,36 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame .edit-media-header .right:hover, .edit-attachment-frame .edit-media-header .left:focus, .edit-attachment-frame .edit-media-header .right:focus { - background: #dcdcde; - border-color: #c3c4c7; + background: #ddd; + border-color: #ccc; color: #000; outline: none; box-shadow: none; } -.upload-php .media-modal-close:focus, -.edit-attachment-frame .edit-media-header .left:focus, -.edit-attachment-frame .edit-media-header .right:focus { - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; -} - .upload-php .media-modal-close:focus .media-modal-icon:before, .upload-php .media-modal-close:hover .media-modal-icon:before { color: #000; } -.edit-attachment-frame .edit-media-header .left:before { +.edit-attachment-frame .edit-media-header .left:before, +.rtl .edit-attachment-frame .edit-media-header .right:before { content: "\f345"; } -.edit-attachment-frame .edit-media-header .right:before { +.edit-attachment-frame .edit-media-header .right:before, +.rtl .edit-attachment-frame .edit-media-header .left:before { content: "\f341"; } -.edit-attachment-frame .edit-media-header [disabled], -.edit-attachment-frame .edit-media-header [disabled]:hover { - color: #c3c4c7; +.edit-attachment-frame .edit-media-header .left.disabled, +.edit-attachment-frame .edit-media-header .right.disabled, +.edit-attachment-frame .edit-media-header .left.disabled:hover, +.edit-attachment-frame .edit-media-header .right.disabled:hover { + color: #ccc; background: inherit; cursor: default; + pointer-events: none; } .edit-attachment-frame .media-frame-content, @@ -741,7 +724,7 @@ border color while dragging a file over the uploader drop area */ bottom: 0; left: 0; right: 0; - box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); + box-shadow: inset 0px 4px 4px -4px rgba(0, 0, 0, 0.1); } .edit-attachment-frame .attachment-media-view { @@ -762,15 +745,11 @@ border color while dragging a file over the uploader drop area */ max-width: 100%; max-height: 90%; max-height: calc( 100% - 42px ); /* leave space for actions underneath */ - background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-image: linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4); background-position: 100% 0, 10px 10px; background-size: 20px 20px; } -.edit-attachment-frame .attachment-media-view .details-image.icon { - background: none; -} - .edit-attachment-frame .attachment-media-view .attachment-actions { text-align: center; } @@ -781,8 +760,8 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame input, .edit-attachment-frame textarea { - padding: 4px 8px; - line-height: 1.42857143; + padding: 6px 8px; + line-height: 16px; } .edit-attachment-frame .attachment-info { @@ -792,10 +771,10 @@ border color while dragging a file over the uploader drop area */ padding: 12px 16px 0; width: 35%; height: 100%; - box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); + box-shadow: inset 0px 4px 4px -4px rgba(0, 0, 0, 0.1); border-bottom: 0; - border-right: 1px solid #dcdcde; - background: #f6f7f7; + border-right: 1px solid #ddd; + background: #f3f3f3; } .edit-attachment-frame .attachment-info .details, @@ -805,12 +784,12 @@ border color while dragging a file over the uploader drop area */ float: none; margin-bottom: 15px; padding-bottom: 15px; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } .edit-attachment-frame .attachment-info .filename { font-weight: 400; - color: #646970; + color: #666; } .edit-attachment-frame .attachment-info .thumbnail { @@ -826,21 +805,6 @@ border color while dragging a file over the uploader drop area */ text-decoration: none; } -.copy-to-clipboard-container { - display: flex; - align-items: center; - margin-top: 8px; - clear: both; -} - -.copy-to-clipboard-container .copy-attachment-url { - white-space: normal; -} - -.copy-to-clipboard-container .success { - color: #008a20; - margin-right: 8px; -} /*------------------------------------------------------------------------------ 14.2 - Image Editor @@ -849,11 +813,6 @@ border color while dragging a file over the uploader drop area */ margin-bottom: 5px; } -.wp_attachment_details #attachment_alt { - max-width: 500px; - height: 3.28571428em; -} - .wp_attachment_details .attachment-alt-text-description { margin-top: 5px; } @@ -899,10 +858,8 @@ border color while dragging a file over the uploader drop area */ } .wp_attachment_holder .imgedit-wrap .imgedit-panel-content { - float: right; padding: 3px 0 0 16px; - min-width: 400px; - max-width: calc( 100% - 266px ); + float: right; } .wp_attachment_holder .imgedit-wrap .imgedit-settings { @@ -948,7 +905,7 @@ border color while dragging a file over the uploader drop area */ .imgedit-settings .disabled { /* WCAG 1.4.3 Text or images of text that are part of an inactive user interface component ... have no contrast requirement. */ - color: #a7aaad; + color: #a0a5aa; } .A1B1 { @@ -970,6 +927,7 @@ border color while dragging a file over the uploader drop area */ } .imgedit-menu { + min-width: 300px; margin: 0 0 12px; } @@ -980,34 +938,31 @@ border color while dragging a file over the uploader drop area */ } .image-editor .imgedit-menu .button { - display: inline-block; - width: auto; - min-height: 28px; - font-size: 13px; - line-height: 2; - margin: 0 0 8px 8px; - padding: 0 10px; + float: right; + width: 32px; + height: 32px; + margin: 0 0 0 8px; + padding: 0; + background: #f1f1f1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 16px; + color: #72777c; } .imgedit-menu .button:before { - font: normal 16px/1 dashicons; - margin-left: 8px; - speak: never; + font: normal 20px/1 dashicons; + speak: none; vertical-align: middle; - position: relative; - top: -2px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } .imgedit-menu .button.disabled { - color: #a7aaad; - border-color: #dcdcde; - background: #f6f7f7; - box-shadow: none; - text-shadow: 0 1px 0 #fff; + border-color: #ccc; + background-color: #ddd; + color: #72777c; + filter: alpha(opacity=50); + opacity: 0.5; cursor: default; - transform: none; } .imgedit-crop:before { @@ -1043,7 +998,7 @@ border color while dragging a file over the uploader drop area */ } .imgedit-crop-wrap img { - background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-image: linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4); background-position: 100% 0, 10px 10px; background-size: 20px 20px; } @@ -1084,6 +1039,7 @@ border color while dragging a file over the uploader drop area */ display: block; } +#poststuff .imgedit-group-top h3, /* Back-compat for pre-4.4 */ #poststuff .imgedit-group-top h2 { display: inline-block; margin: 0; @@ -1094,7 +1050,7 @@ border color while dragging a file over the uploader drop area */ #poststuff .imgedit-group-top .button-link { text-decoration: none; - color: #1d2327; + color: #23282d; } .imgedit-applyto .imgedit-label { @@ -1104,11 +1060,7 @@ border color while dragging a file over the uploader drop area */ .imgedit-help { display: none; - padding-bottom: 8px; -} - -.imgedit-help.imgedit-restore { - padding-bottom: 0; + font-style: italic; } /* higher specificity than buttons */ @@ -1119,7 +1071,7 @@ border color while dragging a file over the uploader drop area */ margin: -1px -1px 0 0; padding: 0; background: transparent; - color: #2271b1; + color: #0074a2; font-size: 20px; line-height: 1; cursor: pointer; @@ -1128,11 +1080,10 @@ border color while dragging a file over the uploader drop area */ } .image-editor .imgedit-settings .imgedit-help-toggle:focus { - color: #2271b1; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + color: #0074a2; + border-color: #5b9dd9; + outline: none; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .form-table td.imgedit-response { @@ -1154,7 +1105,7 @@ border color while dragging a file over the uploader drop area */ } span.imgedit-scale-warn { - color: #d63638; + color: #dc3232; font-size: 20px; font-style: normal; visibility: hidden; @@ -1165,38 +1116,26 @@ span.imgedit-scale-warn { margin: 8px 0; } -.imgedit-save-target legend { - font-weight: 600; -} - .imgedit-group { margin-bottom: 8px; padding: 10px; } -.imgedit-settings .imgedit-original-dimensions { - display: inline-block; -} - .imgedit-settings .imgedit-scale input[type="text"], .imgedit-settings .imgedit-crop-ratio input[type="text"], .imgedit-settings .imgedit-crop-sel input[type="text"] { - width: 80px; + width: 50px; font-size: 14px; - padding: 0 8px; + padding: 5px 8px; } .imgedit-separator { display: inline-block; width: 7px; text-align: center; + vertical-align: middle; font-size: 13px; - color: #3c434a; -} - -.imgedit-settings .imgedit-scale-button-wrapper { - margin-top: 0.3077em; - display: block; + color: #444; } .imgedit-settings .imgedit-scale .button { @@ -1208,19 +1147,11 @@ audio, video { max-width: 100%; } -.wp-core-ui .mejs-container { +.mejs-container { width: 100%; max-width: 100%; } -.wp-core-ui .mejs-container * { - box-sizing: border-box; -} - -.wp-core-ui .mejs-time { - box-sizing: content-box; -} - /* =Media Queries -------------------------------------------------------------- */ @@ -1235,23 +1166,10 @@ audio, video { } } -@media screen and (max-width: 782px) { - .edit-attachment-frame input, - .edit-attachment-frame textarea { - line-height: 1.5; - } - +@media screen and ( max-width: 782px ) { .wp_attachment_details label[for="content"] { font-size: 14px; - line-height: 1.5; - } - - .wp_attachment_details textarea { - line-height: 1.5; - } - - .wp_attachment_details #attachment_alt { - height: 3.375em; + line-height: 1.5em; } .media-upload-form .media-item.error, @@ -1271,45 +1189,13 @@ audio, video { .imgedit-settings .imgedit-scale input[type="text"], .imgedit-settings .imgedit-crop-ratio input[type="text"], .imgedit-settings .imgedit-crop-sel input[type="text"] { + width: 60px; font-size: 16px; padding: 6px 10px; } - .wp_attachment_holder .imgedit-wrap .imgedit-panel-content, - .wp_attachment_holder .imgedit-wrap .imgedit-settings { - float: none; - width: auto; - max-width: none; - padding-bottom: 16px; - } - - .copy-to-clipboard-container .success { - font-size: 14px; - } - - /* Restructure image editor on narrow viewports. */ - .imgedit-crop-wrap img{ - width: 100%; - } - - .media-modal .imgedit-wrap .imgedit-panel-content, - .media-modal .imgedit-wrap .imgedit-settings { - position: initial !important; - } - - .media-modal .imgedit-wrap .imgedit-settings { - box-sizing: border-box; - width: 100% !important; - } - - .imgedit-settings .imgedit-scale-button-wrapper { - display: inline-block; - } -} - -@media only screen and (max-width: 600px) { - .media-item-wrapper { - grid-template-columns: 1fr; + .imgedit-applyto .imgedit-label { + vertical-align: middle; } } @@ -1324,7 +1210,7 @@ audio, video { } } -@media only screen and (max-width: 782px) { +@media only screen and ( max-width: 782px ) { .media-frame.mode-select .attachments-browser.fixed .media-toolbar { top: 46px; left: 10px; @@ -1349,6 +1235,10 @@ audio, video { height: 40px; } + .upload-php .media-modal-close .media-modal-icon { + margin: 9px 10px; + } + .edit-attachment-frame .edit-media-header .right:before, .edit-attachment-frame .edit-media-header .left:before { line-height: 40px !important; diff --git a/wp-admin/css/media-rtl.min.css b/wp-admin/css/media-rtl.min.css index 00da01b..a4a7569 100644 --- a/wp-admin/css/media-rtl.min.css +++ b/wp-admin/css/media-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #dcdcde;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:right;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 0 8px 8px;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 10px 0 0}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}.media-list-subtitle{display:block}.media-list-title{display:block}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{display:inline;padding:0 23px 0 0;margin:0 3px 0 1em;font-weight:600}.media-upload-form tr.image-size label{margin:0 5px 0 0;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 5px 0 0}.describe-toggle-off,.describe-toggle-on{display:block;line-height:2.76923076;float:left;margin-left:10px}.media-item-wrapper{display:grid;grid-template-columns:1fr 1fr}.media-item .attachment-tools{display:flex;justify-content:flex-end;align-items:center}.media-item .edit-attachment{padding:14px 0;display:block;margin-left:10px}.media-item .edit-attachment.copy-to-clipboard-container{margin-top:0}.media-item-copy-container .success{line-height:0}.media-item button .copy-attachment-url{margin-top:14px}.media-item .copy-to-clipboard-container{margin-top:7px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.media-upload-form .media-item{min-height:70px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{box-shadow:0 1px 0 #dcdcde}#media-items:empty{border:0 none}.media-item .filename{padding:14px 0;overflow:hidden;margin-right:6px}.media-item .pinkynail{float:right;margin:0 0 0 10px;max-height:70px;max-width:70px}.media-item .startclosed,.media-item .startopen{display:none}.media-item .original{position:relative;min-height:34px}.media-item .progress{float:left;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;border-radius:22px;background:#dcdcde;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;border-radius:22px;background-color:#2271b1;box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}#html-upload-ui #async-upload{font-size:1em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 14px 10px 0;min-height:50px}.media-item .error-div button.dismiss{float:left;margin:0 15px 0 10px}.find-box{background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-right:-300px;position:fixed;top:30px;bottom:30px;right:50%;z-index:100105}.find-box-head{background:#fff;border-bottom:1px solid #dcdcde;height:36px;font-size:18px;font-weight:600;line-height:2;padding:0 16px 0 36px;position:absolute;top:0;right:0;left:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;right:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:right}#find-posts-input{width:140px;height:28px;margin:0 0 0 4px}.widefat .found-radio{padding-left:0;width:16px}#find-posts-close{width:36px;height:36px;border:none;padding:0;position:absolute;top:0;left:0;cursor:pointer;text-align:center;background:0 0;color:#646970}#find-posts-close:focus,#find-posts-close:hover{color:#135e96}#find-posts-close:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}#find-posts-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fff;border-top:1px solid #dcdcde;position:absolute;bottom:0;right:0;left:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;right:0;left:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}.drag-drop #drag-drop-area{border:4px dashed #c3c4c7;height:200px}.drag-drop .drag-drop-inside{margin:60px auto 0;width:250px}.drag-drop-inside p{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:#9ec2e6}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper,.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title{display:none}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-top:12px;padding:0 16px;border-right:4px solid #d63638;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top:20px;border:4px dashed #c3c4c7}.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments,.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #f0f0f1,inset 0 0 0 7px #4f94d4;outline:2px solid transparent;outline-offset:-6px}.media-frame.mode-grid .selected.attachment{box-shadow:inset 0 0 0 5px #f0f0f1,inset 0 0 0 7px #c3c4c7}.media-frame.mode-grid .attachment.details{box-shadow:inset 0 0 0 3px #f0f0f1,inset 0 0 0 7px #4f94d4}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 0 0 10px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 0 0 8px;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 0 0 10px}.media-frame.mode-grid .search{margin-top:0}.media-search-input-label{margin:0 0 0 .2em;vertical-align:baseline}.media-frame.mode-grid .media-search-input-label{position:static;margin:0 0 0 .5em}.attachments-browser .media-toolbar-secondary>.media-button{margin-left:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;right:auto;left:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#787c82;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;left:0}.edit-attachment-frame .edit-media-header .left{left:102px}.edit-attachment-frame .edit-media-header .right{left:51px}.edit-attachment-frame .media-frame-title{right:0;left:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .right:focus,.upload-php .media-modal-close:focus{outline:2px solid transparent;outline-offset:-2px}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before{content:"\f345"}.edit-attachment-frame .edit-media-header .right:before{content:"\f341"}.edit-attachment-frame .edit-media-header [disabled],.edit-attachment-frame .edit-media-header [disabled]:hover{color:#c3c4c7;background:inherit;cursor:default}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{right:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:right;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin:0 auto 16px;max-width:100%;max-height:90%;max-height:calc(100% - 42px);background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}.edit-attachment-frame .attachment-media-view .details-image.icon{background:0 0}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:4px 8px;line-height:1.42857143}.edit-attachment-frame .attachment-info{overflow:auto;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-right:1px solid #dcdcde;background:#f6f7f7}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #dcdcde}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#646970}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.copy-to-clipboard-container{display:flex;align-items:center;margin-top:8px;clear:both}.copy-to-clipboard-container .copy-attachment-url{white-space:normal}.copy-to-clipboard-container .success{color:#008a20;margin-right:8px}.wp_attachment_details .attachment-alt-text{margin-bottom:5px}.wp_attachment_details #attachment_alt{max-width:500px;height:3.28571428em}.wp_attachment_details .attachment-alt-text-description{margin-top:5px}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{float:right;padding:3px 0 0 16px;min-width:400px;max-width:calc(100% - 266px)}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:left;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;opacity:.7;filter:alpha(opacity=70);display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;margin:-10px -10px 0 0;background:transparent url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}.no-float{float:none}.imgedit-settings .disabled,.media-disabled{color:#a7aaad}.A1B1{overflow:hidden}.A1B1 .button,.wp_attachment_image .button{float:right}.no-js .wp_attachment_image .button{display:none}.A1B1 .spinner,.wp_attachment_image .spinner{float:right}.imgedit-menu{margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{display:inline-block;width:auto;min-height:28px;font-size:13px;line-height:2;margin:0 0 8px 8px;padding:0 10px}.imgedit-menu .button:before{font:normal 16px/1 dashicons;margin-left:8px;speak:never;vertical-align:middle;position:relative;top:-2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.imgedit-menu .button.disabled{color:#a7aaad;border-color:#dcdcde;background:#f6f7f7;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop-wrap img{background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-thumbnail-preview{margin:10px 0 0 8px}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}#poststuff .imgedit-group-top .button-link{text-decoration:none;color:#1d2327}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;padding-bottom:8px}.imgedit-help.imgedit-restore{padding-bottom:0}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px -1px 0 0;padding:0;background:0 0;color:#2271b1;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#2271b1;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:#d63638;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-save-target legend{font-weight:600}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-original-dimensions{display:inline-block}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:80px;font-size:14px;padding:0 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;font-size:13px;color:#3c434a}.imgedit-settings .imgedit-scale-button-wrapper{margin-top:.3077em;display:block}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.wp-core-ui .mejs-container{width:100%;max-width:100%}.wp-core-ui .mejs-container *{box-sizing:border-box}.wp-core-ui .mejs-time{box-sizing:content-box}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.edit-attachment-frame input,.edit-attachment-frame textarea{line-height:1.5}.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5}.wp_attachment_details textarea{line-height:1.5}.wp_attachment_details #attachment_alt{height:3.375em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{font-size:16px;padding:6px 10px}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content,.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:none;width:auto;max-width:none;padding-bottom:16px}.copy-to-clipboard-container .success{font-size:14px}.imgedit-crop-wrap img{width:100%}.media-modal .imgedit-wrap .imgedit-panel-content,.media-modal .imgedit-wrap .imgedit-settings{position:initial!important}.media-modal .imgedit-wrap .imgedit-settings{box-sizing:border-box;width:100%!important}.imgedit-settings .imgedit-scale-button-wrapper{display:inline-block}}@media only screen and (max-width:600px){.media-item-wrapper{grid-template-columns:1fr}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;left:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{left:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{left:82px}.edit-attachment-frame .edit-media-header .right{left:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file +.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #ddd;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:right;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 0 8px 8px;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 10px 0 0}.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-left:6px;margin-right:2px}.media-upload-form .align .field label{display:inline;padding:0 23px 0 0;margin:0 3px 0 1em;font-weight:600}.media-upload-form tr.image-size label{margin:0 5px 0 0;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 5px 0 0}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:left;margin-left:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.media-upload-form .media-item{min-height:36px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{box-shadow:0 1px 0 #ddd}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;margin-right:6px}.media-item .pinkynail{float:right;margin:2px 3px 0 10px;max-width:40px;max-height:32px}.media-item .startclosed,.media-item .startopen{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:left;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;border-radius:22px;background:#ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;border-radius:22px;background-color:#0073aa;box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px 0}.media-upload-form .media-item .error{padding:10px 14px 10px 0}.media-item .error-div button.dismiss{float:left;margin:0 15px 0 10px}.find-box{background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-right:-300px;position:fixed;top:30px;bottom:30px;right:50%;z-index:100105}.find-box-head{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;position:absolute;top:0;right:0;left:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;right:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:right}#find-posts-input{width:140px;height:28px;margin:0 0 0 4px}.widefat .found-radio{padding-left:0;width:16px}#find-posts-close{width:36px;height:36px;border:none;padding:0;position:absolute;top:0;left:0;cursor:pointer;text-align:center;background:0 0;color:#666}#find-posts-close:focus,#find-posts-close:hover{color:#00a0d2}#find-posts-close:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#find-posts-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;right:0;left:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;right:0;left:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px}.drag-drop #drag-drop-area{border:4px dashed #b4b9be;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#a0a5aa;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}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title{display:none}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-top:12px;padding:0 16px;border-right:4px solid #dd3d36;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors{top:-10px;left:-14px;padding:10px}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:normal 16px/1 dashicons;color:#72777c}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top:20px;border:4px dashed #b4b9be}.media-frame.mode-select .attachments-browser.fixed .attachments{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 0 0 10px;font-size:14px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 0 0 8px;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 0 0 10px}.media-frame.mode-grid .search{margin-top:0}.media-frame.mode-grid .spinner{margin-top:16px}.attachments-browser .media-toolbar-secondary>.media-button{margin-left:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;right:auto;left:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#72777c;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;left:0}.edit-attachment-frame .edit-media-header .left{left:102px}.edit-attachment-frame .edit-media-header .right{left:51px}.edit-attachment-frame .media-frame-title{right:0;left:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;box-shadow:none}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before,.rtl .edit-attachment-frame .edit-media-header .right:before{content:"\f345"}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:"\f341"}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{right:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:right;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin:0 auto 16px;max-width:100%;max-height:90%;max-height:calc(100% - 42px);background-image:linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:100% 0,10px 10px;background-size:20px 20px}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-right:1px solid #ddd;background:#f3f3f3}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #ddd}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#666}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.wp_attachment_details .attachment-alt-text{margin-bottom:5px}.wp_attachment_details .attachment-alt-text-description{margin-top:5px}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding:3px 0 0 16px;float:right}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:left;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;opacity:.7;filter:alpha(opacity=70);display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;margin:-10px -10px 0 0;background:transparent url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}.no-float{float:none}.imgedit-settings .disabled,.media-disabled{color:#a0a5aa}.A1B1{overflow:hidden}.A1B1 .button,.wp_attachment_image .button{float:right}.no-js .wp_attachment_image .button{display:none}.A1B1 .spinner,.wp_attachment_image .spinner{float:right}.imgedit-menu{min-width:300px;margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{float:right;width:32px;height:32px;margin:0 0 0 8px;padding:0;background:#f1f1f1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:16px;color:#72777c}.imgedit-menu .button:before{font:normal 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu .button.disabled{border-color:#ccc;background-color:#ddd;color:#72777c;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop-wrap img{background-image:linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:100% 0,10px 10px;background-size:20px 20px}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-thumbnail-preview{margin:10px 0 0 8px}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}#poststuff .imgedit-group-top .button-link{text-decoration:none;color:#23282d}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;font-style:italic}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px -1px 0 0;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;box-shadow:0 0 3px rgba(0,115,170,.8)}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:#dc3232;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:50px;font-size:14px;padding:5px 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;vertical-align:middle;font-size:13px;color:#444}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:60px;font-size:16px;padding:6px 10px}.imgedit-applyto .imgedit-label{vertical-align:middle}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;left:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{left:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{left:82px}.edit-attachment-frame .edit-media-header .right{left:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file diff --git a/wp-admin/css/media.css b/wp-admin/css/media.css index df040d5..c4f4d5e 100644 --- a/wp-admin/css/media.css +++ b/wp-admin/css/media.css @@ -5,7 +5,7 @@ .media-item .describe { border-collapse: collapse; width: 100%; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; clear: both; cursor: default; } @@ -51,14 +51,6 @@ max-width: 128px; } -.media-list-subtitle { - display: block; -} - -.media-list-title { - display: block; -} - #wpbody-content #async-upload-wrap a { display: none; } @@ -104,47 +96,15 @@ padding: 0 0 0 5px; } +.media-item .edit-attachment, .describe-toggle-on, .describe-toggle-off { display: block; - line-height: 2.76923076; + line-height: 36px; float: right; margin-right: 10px; } -.media-item-wrapper { - display: grid; - grid-template-columns: 1fr 1fr; -} - -.media-item .attachment-tools { - display: flex; - justify-content: flex-end; - align-items: center; -} - -.media-item .edit-attachment { - padding: 14px 0; - display: block; - margin-right: 10px; -} - -.media-item .edit-attachment.copy-to-clipboard-container { - margin-top: 0; -} - -.media-item-copy-container .success { - line-height: 0; -} - -.media-item button .copy-attachment-url { - margin-top: 14px; -} - -.media-item .copy-to-clipboard-container { - margin-top: 7px; -} - .media-item .describe-toggle-off, .media-item.open .describe-toggle-on { display: none; @@ -155,7 +115,7 @@ } .media-upload-form .media-item { - min-height: 70px; + min-height: 36px; margin-bottom: 1px; position: relative; width: 100%; @@ -164,7 +124,7 @@ .media-upload-form .media-item, .media-upload-form .media-item .error { - box-shadow: 0 1px 0 #dcdcde; + box-shadow: 0 1px 0 #ddd; } #media-items:empty { @@ -172,16 +132,16 @@ } .media-item .filename { - padding: 14px 0; + line-height: 36px; overflow: hidden; margin-left: 6px; } .media-item .pinkynail { float: left; - margin: 0 10px 0 0; - max-height: 70px; - max-width: 70px; + margin: 2px 10px 0 3px; + max-width: 40px; + max-height: 32px; } .media-item .startopen, @@ -191,7 +151,7 @@ .media-item .original { position: relative; - min-height: 34px; + height: 34px; } .media-item .progress { @@ -203,8 +163,8 @@ padding: 0; overflow: hidden; border-radius: 22px; - background: #dcdcde; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + background: #ddd; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.1); } .media-item .bar { @@ -213,8 +173,8 @@ height: 100%; margin-top: -22px; border-radius: 22px; - background-color: #2271b1; - box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.3); + background-color: #0073aa; + box-shadow: inset 0 0 2px rgba(0,0,0,0.3); } .media-item .progress .percent { @@ -226,7 +186,7 @@ text-align: center; line-height: 22px; font-weight: 400; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + text-shadow: 0 1px 2px rgba(0,0,0,0.2); } .upload-php .fixed .column-parent { @@ -241,19 +201,14 @@ display: block; } -#html-upload-ui #async-upload { - font-size: 1em; -} - .media-upload-form .media-item.error, .media-upload-form .media-item .error { width: auto; - margin: 0 0 1px; + margin: 0 0 1px 0; } .media-upload-form .media-item .error { padding: 10px 0 10px 14px; - min-height: 50px; } .media-item .error-div button.dismiss { @@ -267,7 +222,7 @@ .find-box { background-color: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); width: 600px; overflow: hidden; margin-left: -300px; @@ -279,12 +234,12 @@ } .find-box-head { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #ddd; height: 36px; font-size: 18px; font-weight: 600; - line-height: 2; + line-height: 36px; padding: 0 36px 0 16px; position: absolute; top: 0; @@ -346,27 +301,25 @@ cursor: pointer; text-align: center; background: none; - color: #646970; + color: #666; } #find-posts-close:hover, #find-posts-close:focus { - color: #135e96; + color: #00a0d2; } #find-posts-close:focus { + outline: none; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } #find-posts-close:before { font: normal 20px/36px dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; content: "\f158"; @@ -374,21 +327,21 @@ .find-box-buttons { padding: 8px 16px; - background: #fff; - border-top: 1px solid #dcdcde; + background: #fcfcfc; + border-top: 1px solid #ddd; position: absolute; bottom: 0; left: 0; right: 0; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .find-box-inside { bottom: 57px; } } -@media screen and (max-width: 660px) { +@media screen and ( max-width: 660px ) { .find-box { top: 0; @@ -413,17 +366,40 @@ z-index: 100100; } +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: 1px solid #ddd; + line-height: 1.8em; + word-spacing: 3px; +} + .drag-drop #drag-drop-area { - border: 4px dashed #c3c4c7; + border: 4px dashed #b4b9be; height: 200px; } .drag-drop .drag-drop-inside { - margin: 60px auto 0; + margin: 70px auto 0; width: 250px; } .drag-drop-inside p { + color: #a0a5aa; font-size: 14px; margin: 5px 0; display: none; @@ -448,7 +424,7 @@ } border color while dragging a file over the uploader drop area */ .drag-drop.drag-over #drag-drop-area { - border-color: #9ec2e6; + border-color: #83b4d8; } #plupload-upload-ui { @@ -461,8 +437,7 @@ border color while dragging a file over the uploader drop area */ .media-frame.mode-grid, .media-frame.mode-grid .media-frame-content, -.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments, -.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper, +.media-frame.mode-grid .attachments-browser .attachments, .media-frame.mode-grid .uploader-inline-content { position: static; } @@ -484,8 +459,8 @@ border color while dragging a file over the uploader drop area */ width: auto; margin-top: 12px; padding: 0 16px; - border-left: 4px solid #d63638; - box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); + border-left: 4px solid #dd3d36; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); background-color: #fff; } @@ -507,6 +482,25 @@ border color while dragging a file over the uploader drop area */ background: none; } +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors { + top: -10px; + right: -14px; + padding: 10px; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before { + content: "\f153"; + display: block; + font: normal 16px/1 dashicons; + color: #72777c; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before, +.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before { + color: #c00; +} + +.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3, /* Back-compat for pre-4.4 */ .upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2 { display: none; } @@ -519,11 +513,10 @@ border color while dragging a file over the uploader drop area */ bottom: auto; padding-top: 0; margin-top: 20px; - border: 4px dashed #c3c4c7; + border: 4px dashed #b4b9be; } -.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments, -.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper { +.media-frame.mode-select .attachments-browser.fixed .attachments { position: relative; top: 94px; /* prevent jumping up when the toolbar becomes fixed */ padding-bottom: 94px; /* offset for above so the bottom doesn't get cut off */ @@ -533,23 +526,21 @@ border color while dragging a file over the uploader drop area */ .media-frame.mode-grid .selected.attachment:focus, .media-frame.mode-grid .attachment.details:focus { box-shadow: - inset 0 0 2px 3px #f0f0f1, - inset 0 0 0 7px #4f94d4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -6px; + inset 0 0 2px 3px #f1f1f1, + inset 0 0 0 7px #5b9dd9; + outline: none; } .media-frame.mode-grid .selected.attachment { box-shadow: - inset 0 0 0 5px #f0f0f1, - inset 0 0 0 7px #c3c4c7; + inset 0 0 0 5px #f1f1f1, + inset 0 0 0 7px #ccc; } .media-frame.mode-grid .attachment.details { box-shadow: - inset 0 0 0 3px #f0f0f1, - inset 0 0 0 7px #4f94d4; + inset 0 0 0 3px #f1f1f1, + inset 0 0 0 7px #1e8cbe; } .media-frame.mode-grid.mode-select .attachment .thumbnail { @@ -567,6 +558,7 @@ border color while dragging a file over the uploader drop area */ .media-frame.mode-grid .media-toolbar select { margin: 0 10px 0 0; + font-size: 14px; } .media-frame.mode-grid.mode-edit .media-toolbar-secondary > .select-mode-toggle-button { @@ -583,14 +575,8 @@ border color while dragging a file over the uploader drop area */ margin-top: 0; } -.media-search-input-label { - margin: 0 .2em 0 0; - vertical-align: baseline; -} - -.media-frame.mode-grid .media-search-input-label { - position: static; - margin: 0 .5em 0 0; +.media-frame.mode-grid .spinner { + margin-top: 16px; } .attachments-browser .media-toolbar-secondary > .media-button { @@ -614,7 +600,7 @@ border color while dragging a file over the uploader drop area */ } .media-frame.mode-grid .attachments-browser .no-media { - color: #646970; /* same as no plugins and no themes */ + color: #666; /* same as no plugins and no themes */ font-size: 18px; font-style: normal; margin: 0; @@ -645,7 +631,7 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame .edit-media-header .left, .edit-attachment-frame .edit-media-header .right { cursor: pointer; - color: #787c82; + color: #72777c; background-color: transparent; height: 50px; width: 50px; @@ -653,7 +639,7 @@ border color while dragging a file over the uploader drop area */ position: absolute; text-align: center; border: 0; - border-left: 1px solid #dcdcde; + border-left: 1px solid #ddd; transition: color .1s ease-in-out, background .1s ease-in-out; } @@ -688,39 +674,36 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame .edit-media-header .right:hover, .edit-attachment-frame .edit-media-header .left:focus, .edit-attachment-frame .edit-media-header .right:focus { - background: #dcdcde; - border-color: #c3c4c7; + background: #ddd; + border-color: #ccc; color: #000; outline: none; box-shadow: none; } -.upload-php .media-modal-close:focus, -.edit-attachment-frame .edit-media-header .left:focus, -.edit-attachment-frame .edit-media-header .right:focus { - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; -} - .upload-php .media-modal-close:focus .media-modal-icon:before, .upload-php .media-modal-close:hover .media-modal-icon:before { color: #000; } -.edit-attachment-frame .edit-media-header .left:before { +.edit-attachment-frame .edit-media-header .left:before, +.rtl .edit-attachment-frame .edit-media-header .right:before { content: "\f341"; } -.edit-attachment-frame .edit-media-header .right:before { +.edit-attachment-frame .edit-media-header .right:before, +.rtl .edit-attachment-frame .edit-media-header .left:before { content: "\f345"; } -.edit-attachment-frame .edit-media-header [disabled], -.edit-attachment-frame .edit-media-header [disabled]:hover { - color: #c3c4c7; +.edit-attachment-frame .edit-media-header .left.disabled, +.edit-attachment-frame .edit-media-header .right.disabled, +.edit-attachment-frame .edit-media-header .left.disabled:hover, +.edit-attachment-frame .edit-media-header .right.disabled:hover { + color: #ccc; background: inherit; cursor: default; + pointer-events: none; } .edit-attachment-frame .media-frame-content, @@ -741,7 +724,7 @@ border color while dragging a file over the uploader drop area */ bottom: 0; right: 0; left: 0; - box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); + box-shadow: inset 0px 4px 4px -4px rgba(0, 0, 0, 0.1); } .edit-attachment-frame .attachment-media-view { @@ -762,15 +745,11 @@ border color while dragging a file over the uploader drop area */ max-width: 100%; max-height: 90%; max-height: calc( 100% - 42px ); /* leave space for actions underneath */ - background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-image: linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4); background-position: 0 0, 10px 10px; background-size: 20px 20px; } -.edit-attachment-frame .attachment-media-view .details-image.icon { - background: none; -} - .edit-attachment-frame .attachment-media-view .attachment-actions { text-align: center; } @@ -781,8 +760,8 @@ border color while dragging a file over the uploader drop area */ .edit-attachment-frame input, .edit-attachment-frame textarea { - padding: 4px 8px; - line-height: 1.42857143; + padding: 6px 8px; + line-height: 16px; } .edit-attachment-frame .attachment-info { @@ -792,10 +771,10 @@ border color while dragging a file over the uploader drop area */ padding: 12px 16px 0; width: 35%; height: 100%; - box-shadow: inset 0 4px 4px -4px rgba(0, 0, 0, 0.1); + box-shadow: inset 0px 4px 4px -4px rgba(0, 0, 0, 0.1); border-bottom: 0; - border-left: 1px solid #dcdcde; - background: #f6f7f7; + border-left: 1px solid #ddd; + background: #f3f3f3; } .edit-attachment-frame .attachment-info .details, @@ -805,12 +784,12 @@ border color while dragging a file over the uploader drop area */ float: none; margin-bottom: 15px; padding-bottom: 15px; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } .edit-attachment-frame .attachment-info .filename { font-weight: 400; - color: #646970; + color: #666; } .edit-attachment-frame .attachment-info .thumbnail { @@ -826,21 +805,6 @@ border color while dragging a file over the uploader drop area */ text-decoration: none; } -.copy-to-clipboard-container { - display: flex; - align-items: center; - margin-top: 8px; - clear: both; -} - -.copy-to-clipboard-container .copy-attachment-url { - white-space: normal; -} - -.copy-to-clipboard-container .success { - color: #008a20; - margin-left: 8px; -} /*------------------------------------------------------------------------------ 14.2 - Image Editor @@ -849,11 +813,6 @@ border color while dragging a file over the uploader drop area */ margin-bottom: 5px; } -.wp_attachment_details #attachment_alt { - max-width: 500px; - height: 3.28571428em; -} - .wp_attachment_details .attachment-alt-text-description { margin-top: 5px; } @@ -899,10 +858,8 @@ border color while dragging a file over the uploader drop area */ } .wp_attachment_holder .imgedit-wrap .imgedit-panel-content { - float: left; padding: 3px 16px 0 0; - min-width: 400px; - max-width: calc( 100% - 266px ); + float: left; } .wp_attachment_holder .imgedit-wrap .imgedit-settings { @@ -948,7 +905,7 @@ border color while dragging a file over the uploader drop area */ .imgedit-settings .disabled { /* WCAG 1.4.3 Text or images of text that are part of an inactive user interface component ... have no contrast requirement. */ - color: #a7aaad; + color: #a0a5aa; } .A1B1 { @@ -970,6 +927,7 @@ border color while dragging a file over the uploader drop area */ } .imgedit-menu { + min-width: 300px; margin: 0 0 12px; } @@ -980,34 +938,31 @@ border color while dragging a file over the uploader drop area */ } .image-editor .imgedit-menu .button { - display: inline-block; - width: auto; - min-height: 28px; - font-size: 13px; - line-height: 2; - margin: 0 8px 8px 0; - padding: 0 10px; + float: left; + width: 32px; + height: 32px; + margin: 0 8px 0 0; + padding: 0; + background: #f1f1f1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + line-height: 16px; + color: #72777c; } .imgedit-menu .button:before { - font: normal 16px/1 dashicons; - margin-right: 8px; - speak: never; + font: normal 20px/1 dashicons; + speak: none; vertical-align: middle; - position: relative; - top: -2px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; } .imgedit-menu .button.disabled { - color: #a7aaad; - border-color: #dcdcde; - background: #f6f7f7; - box-shadow: none; - text-shadow: 0 1px 0 #fff; + border-color: #ccc; + background-color: #ddd; + color: #72777c; + filter: alpha(opacity=50); + opacity: 0.5; cursor: default; - transform: none; } .imgedit-crop:before { @@ -1043,7 +998,7 @@ border color while dragging a file over the uploader drop area */ } .imgedit-crop-wrap img { - background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); + background-image: linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4); background-position: 0 0, 10px 10px; background-size: 20px 20px; } @@ -1084,6 +1039,7 @@ border color while dragging a file over the uploader drop area */ display: block; } +#poststuff .imgedit-group-top h3, /* Back-compat for pre-4.4 */ #poststuff .imgedit-group-top h2 { display: inline-block; margin: 0; @@ -1094,7 +1050,7 @@ border color while dragging a file over the uploader drop area */ #poststuff .imgedit-group-top .button-link { text-decoration: none; - color: #1d2327; + color: #23282d; } .imgedit-applyto .imgedit-label { @@ -1104,11 +1060,7 @@ border color while dragging a file over the uploader drop area */ .imgedit-help { display: none; - padding-bottom: 8px; -} - -.imgedit-help.imgedit-restore { - padding-bottom: 0; + font-style: italic; } /* higher specificity than buttons */ @@ -1119,7 +1071,7 @@ border color while dragging a file over the uploader drop area */ margin: -1px 0 0 -1px; padding: 0; background: transparent; - color: #2271b1; + color: #0074a2; font-size: 20px; line-height: 1; cursor: pointer; @@ -1128,11 +1080,10 @@ border color while dragging a file over the uploader drop area */ } .image-editor .imgedit-settings .imgedit-help-toggle:focus { - color: #2271b1; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + color: #0074a2; + border-color: #5b9dd9; + outline: none; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .form-table td.imgedit-response { @@ -1154,7 +1105,7 @@ border color while dragging a file over the uploader drop area */ } span.imgedit-scale-warn { - color: #d63638; + color: #dc3232; font-size: 20px; font-style: normal; visibility: hidden; @@ -1165,38 +1116,26 @@ span.imgedit-scale-warn { margin: 8px 0; } -.imgedit-save-target legend { - font-weight: 600; -} - .imgedit-group { margin-bottom: 8px; padding: 10px; } -.imgedit-settings .imgedit-original-dimensions { - display: inline-block; -} - .imgedit-settings .imgedit-scale input[type="text"], .imgedit-settings .imgedit-crop-ratio input[type="text"], .imgedit-settings .imgedit-crop-sel input[type="text"] { - width: 80px; + width: 50px; font-size: 14px; - padding: 0 8px; + padding: 5px 8px; } .imgedit-separator { display: inline-block; width: 7px; text-align: center; + vertical-align: middle; font-size: 13px; - color: #3c434a; -} - -.imgedit-settings .imgedit-scale-button-wrapper { - margin-top: 0.3077em; - display: block; + color: #444; } .imgedit-settings .imgedit-scale .button { @@ -1208,19 +1147,11 @@ audio, video { max-width: 100%; } -.wp-core-ui .mejs-container { +.mejs-container { width: 100%; max-width: 100%; } -.wp-core-ui .mejs-container * { - box-sizing: border-box; -} - -.wp-core-ui .mejs-time { - box-sizing: content-box; -} - /* =Media Queries -------------------------------------------------------------- */ @@ -1235,23 +1166,10 @@ audio, video { } } -@media screen and (max-width: 782px) { - .edit-attachment-frame input, - .edit-attachment-frame textarea { - line-height: 1.5; - } - +@media screen and ( max-width: 782px ) { .wp_attachment_details label[for="content"] { font-size: 14px; - line-height: 1.5; - } - - .wp_attachment_details textarea { - line-height: 1.5; - } - - .wp_attachment_details #attachment_alt { - height: 3.375em; + line-height: 1.5em; } .media-upload-form .media-item.error, @@ -1271,45 +1189,13 @@ audio, video { .imgedit-settings .imgedit-scale input[type="text"], .imgedit-settings .imgedit-crop-ratio input[type="text"], .imgedit-settings .imgedit-crop-sel input[type="text"] { + width: 60px; font-size: 16px; padding: 6px 10px; } - .wp_attachment_holder .imgedit-wrap .imgedit-panel-content, - .wp_attachment_holder .imgedit-wrap .imgedit-settings { - float: none; - width: auto; - max-width: none; - padding-bottom: 16px; - } - - .copy-to-clipboard-container .success { - font-size: 14px; - } - - /* Restructure image editor on narrow viewports. */ - .imgedit-crop-wrap img{ - width: 100%; - } - - .media-modal .imgedit-wrap .imgedit-panel-content, - .media-modal .imgedit-wrap .imgedit-settings { - position: initial !important; - } - - .media-modal .imgedit-wrap .imgedit-settings { - box-sizing: border-box; - width: 100% !important; - } - - .imgedit-settings .imgedit-scale-button-wrapper { - display: inline-block; - } -} - -@media only screen and (max-width: 600px) { - .media-item-wrapper { - grid-template-columns: 1fr; + .imgedit-applyto .imgedit-label { + vertical-align: middle; } } @@ -1324,7 +1210,7 @@ audio, video { } } -@media only screen and (max-width: 782px) { +@media only screen and ( max-width: 782px ) { .media-frame.mode-select .attachments-browser.fixed .media-toolbar { top: 46px; right: 10px; @@ -1349,6 +1235,10 @@ audio, video { height: 40px; } + .upload-php .media-modal-close .media-modal-icon { + margin: 9px 10px; + } + .edit-attachment-frame .edit-media-header .right:before, .edit-attachment-frame .edit-media-header .left:before { line-height: 40px !important; diff --git a/wp-admin/css/media.min.css b/wp-admin/css/media.min.css index 8039ca7..0fe8844 100644 --- a/wp-admin/css/media.min.css +++ b/wp-admin/css/media.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #dcdcde;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}.media-list-subtitle{display:block}.media-list-title{display:block}#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:600}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.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-off,.describe-toggle-on{display:block;line-height:2.76923076;float:right;margin-right:10px}.media-item-wrapper{display:grid;grid-template-columns:1fr 1fr}.media-item .attachment-tools{display:flex;justify-content:flex-end;align-items:center}.media-item .edit-attachment{padding:14px 0;display:block;margin-right:10px}.media-item .edit-attachment.copy-to-clipboard-container{margin-top:0}.media-item-copy-container .success{line-height:0}.media-item button .copy-attachment-url{margin-top:14px}.media-item .copy-to-clipboard-container{margin-top:7px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.media-upload-form .media-item{min-height:70px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{box-shadow:0 1px 0 #dcdcde}#media-items:empty{border:0 none}.media-item .filename{padding:14px 0;overflow:hidden;margin-left:6px}.media-item .pinkynail{float:left;margin:0 10px 0 0;max-height:70px;max-width:70px}.media-item .startclosed,.media-item .startopen{display:none}.media-item .original{position:relative;min-height:34px}.media-item .progress{float:right;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;border-radius:22px;background:#dcdcde;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;border-radius:22px;background-color:#2271b1;box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}#html-upload-ui #async-upload{font-size:1em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 0 10px 14px;min-height:50px}.media-item .error-div button.dismiss{float:right;margin:0 10px 0 15px}.find-box{background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-left:-300px;position:fixed;top:30px;bottom:30px;left:50%;z-index:100105}.find-box-head{background:#fff;border-bottom:1px solid #dcdcde;height:36px;font-size:18px;font-weight:600;line-height:2;padding:0 36px 0 16px;position:absolute;top:0;left:0;right:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;left:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:left}#find-posts-input{width:140px;height:28px;margin:0 4px 0 0}.widefat .found-radio{padding-right:0;width:16px}#find-posts-close{width:36px;height:36px;border:none;padding:0;position:absolute;top:0;right:0;cursor:pointer;text-align:center;background:0 0;color:#646970}#find-posts-close:focus,#find-posts-close:hover{color:#135e96}#find-posts-close:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}#find-posts-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fff;border-top:1px solid #dcdcde;position:absolute;bottom:0;left:0;right:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;left:0;right:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}.drag-drop #drag-drop-area{border:4px dashed #c3c4c7;height:200px}.drag-drop .drag-drop-inside{margin:60px auto 0;width:250px}.drag-drop-inside p{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:#9ec2e6}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser.has-load-more .attachments-wrapper,.media-frame.mode-grid .attachments-browser:not(.has-load-more) .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title{display:none}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-top:12px;padding:0 16px;border-left:4px solid #d63638;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top:20px;border:4px dashed #c3c4c7}.media-frame.mode-select .attachments-browser.fixed:not(.has-load-more) .attachments,.media-frame.mode-select .attachments-browser.has-load-more.fixed .attachments-wrapper{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #f0f0f1,inset 0 0 0 7px #4f94d4;outline:2px solid transparent;outline-offset:-6px}.media-frame.mode-grid .selected.attachment{box-shadow:inset 0 0 0 5px #f0f0f1,inset 0 0 0 7px #c3c4c7}.media-frame.mode-grid .attachment.details{box-shadow:inset 0 0 0 3px #f0f0f1,inset 0 0 0 7px #4f94d4}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 10px 0 0}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 8px 0 0;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 10px 0 0}.media-frame.mode-grid .search{margin-top:0}.media-search-input-label{margin:0 .2em 0 0;vertical-align:baseline}.media-frame.mode-grid .media-search-input-label{position:static;margin:0 .5em 0 0}.attachments-browser .media-toolbar-secondary>.media-button{margin-right:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;left:auto;right:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#787c82;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;right:0}.edit-attachment-frame .edit-media-header .left{right:102px}.edit-attachment-frame .edit-media-header .right{right:51px}.edit-attachment-frame .media-frame-title{left:0;right:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .right:focus,.upload-php .media-modal-close:focus{outline:2px solid transparent;outline-offset:-2px}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before{content:"\f341"}.edit-attachment-frame .edit-media-header .right:before{content:"\f345"}.edit-attachment-frame .edit-media-header [disabled],.edit-attachment-frame .edit-media-header [disabled]:hover{color:#c3c4c7;background:inherit;cursor:default}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{left:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;right:0;left:0;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:left;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin:0 auto 16px;max-width:100%;max-height:90%;max-height:calc(100% - 42px);background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}.edit-attachment-frame .attachment-media-view .details-image.icon{background:0 0}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:4px 8px;line-height:1.42857143}.edit-attachment-frame .attachment-info{overflow:auto;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-left:1px solid #dcdcde;background:#f6f7f7}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #dcdcde}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#646970}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.copy-to-clipboard-container{display:flex;align-items:center;margin-top:8px;clear:both}.copy-to-clipboard-container .copy-attachment-url{white-space:normal}.copy-to-clipboard-container .success{color:#008a20;margin-left:8px}.wp_attachment_details .attachment-alt-text{margin-bottom:5px}.wp_attachment_details #attachment_alt{max-width:500px;height:3.28571428em}.wp_attachment_details .attachment-alt-text-description{margin-top:5px}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{float:left;padding:3px 16px 0 0;min-width:400px;max-width:calc(100% - 266px)}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:right;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;opacity:.7;filter:alpha(opacity=70);display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;background:transparent url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}.no-float{float:none}.imgedit-settings .disabled,.media-disabled{color:#a7aaad}.A1B1{overflow:hidden}.A1B1 .button,.wp_attachment_image .button{float:left}.no-js .wp_attachment_image .button{display:none}.A1B1 .spinner,.wp_attachment_image .spinner{float:left}.imgedit-menu{margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{display:inline-block;width:auto;min-height:28px;font-size:13px;line-height:2;margin:0 8px 8px 0;padding:0 10px}.imgedit-menu .button:before{font:normal 16px/1 dashicons;margin-right:8px;speak:never;vertical-align:middle;position:relative;top:-2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.imgedit-menu .button.disabled{color:#a7aaad;border-color:#dcdcde;background:#f6f7f7;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default;transform:none}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop-wrap img{background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}.imgedit-crop{margin:0 8px 0 0}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 8px 0 3px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 8px 0 3px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 8px 0 3px}.imgedit-thumbnail-preview{margin:10px 8px 0 0}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}#poststuff .imgedit-group-top .button-link{text-decoration:none;color:#1d2327}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;padding-bottom:8px}.imgedit-help.imgedit-restore{padding-bottom:0}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px 0 0 -1px;padding:0;background:0 0;color:#2271b1;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#2271b1;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:#d63638;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-save-target legend{font-weight:600}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-original-dimensions{display:inline-block}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:80px;font-size:14px;padding:0 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;font-size:13px;color:#3c434a}.imgedit-settings .imgedit-scale-button-wrapper{margin-top:.3077em;display:block}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.wp-core-ui .mejs-container{width:100%;max-width:100%}.wp-core-ui .mejs-container *{box-sizing:border-box}.wp-core-ui .mejs-time{box-sizing:content-box}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.edit-attachment-frame input,.edit-attachment-frame textarea{line-height:1.5}.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5}.wp_attachment_details textarea{line-height:1.5}.wp_attachment_details #attachment_alt{height:3.375em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 0 10px 12px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{font-size:16px;padding:6px 10px}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content,.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:none;width:auto;max-width:none;padding-bottom:16px}.copy-to-clipboard-container .success{font-size:14px}.imgedit-crop-wrap img{width:100%}.media-modal .imgedit-wrap .imgedit-panel-content,.media-modal .imgedit-wrap .imgedit-settings{position:initial!important}.media-modal .imgedit-wrap .imgedit-settings{box-sizing:border-box;width:100%!important}.imgedit-settings .imgedit-scale-button-wrapper{display:inline-block}}@media only screen and (max-width:600px){.media-item-wrapper{grid-template-columns:1fr}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;right:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{right:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{right:82px}.edit-attachment-frame .edit-media-header .right{right:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file +.media-item .describe{border-collapse:collapse;width:100%;border-top:1px solid #ddd;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:600}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.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-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:right;margin-right:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.media-upload-form .media-item{min-height:36px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{box-shadow:0 1px 0 #ddd}#media-items:empty{border:0 none}.media-item .filename{line-height:36px;overflow:hidden;margin-left:6px}.media-item .pinkynail{float:left;margin:2px 10px 0 3px;max-width:40px;max-height:32px}.media-item .startclosed,.media-item .startopen{display:none}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;border-radius:22px;background:#ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;border-radius:22px;background-color:#0073aa;box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #plupload-upload-ui{display:none}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px 0}.media-upload-form .media-item .error{padding:10px 0 10px 14px}.media-item .error-div button.dismiss{float:right;margin:0 10px 0 15px}.find-box{background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-left:-300px;position:fixed;top:30px;bottom:30px;left:50%;z-index:100105}.find-box-head{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;position:absolute;top:0;left:0;right:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;left:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:left}#find-posts-input{width:140px;height:28px;margin:0 4px 0 0}.widefat .found-radio{padding-right:0;width:16px}#find-posts-close{width:36px;height:36px;border:none;padding:0;position:absolute;top:0;right:0;cursor:pointer;text-align:center;background:0 0;color:#666}#find-posts-close:focus,#find-posts-close:hover{color:#00a0d2}#find-posts-close:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#find-posts-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;left:0;right:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;left:0;right:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em 0}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px}.drag-drop #drag-drop-area{border:4px dashed #b4b9be;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#a0a5aa;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}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title{display:none}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-top:12px;padding:0 16px;border-left:4px solid #dd3d36;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors{top:-10px;right:-14px;padding:10px}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:normal 16px/1 dashicons;color:#72777c}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top:20px;border:4px dashed #b4b9be}.media-frame.mode-select .attachments-browser.fixed .attachments{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 10px 0 0;font-size:14px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 8px 0 0;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 10px 0 0}.media-frame.mode-grid .search{margin-top:0}.media-frame.mode-grid .spinner{margin-top:16px}.attachments-browser .media-toolbar-secondary>.media-button{margin-right:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;left:auto;right:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#72777c;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;right:0}.edit-attachment-frame .edit-media-header .left{right:102px}.edit-attachment-frame .edit-media-header .right{right:51px}.edit-attachment-frame .media-frame-title{left:0;right:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;box-shadow:none}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before,.rtl .edit-attachment-frame .edit-media-header .right:before{content:"\f341"}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:"\f345"}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{left:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;right:0;left:0;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:left;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin:0 auto 16px;max-width:100%;max-height:90%;max-height:calc(100% - 42px);background-image:linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:0 0,10px 10px;background-size:20px 20px}.edit-attachment-frame .attachment-media-view .attachment-actions{text-align:center}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-left:1px solid #ddd;background:#f3f3f3}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #ddd}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#666}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.wp_attachment_details .attachment-alt-text{margin-bottom:5px}.wp_attachment_details .attachment-alt-text-description{margin-top:5px}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative;padding-top:10px}.imgedit-settings fieldset,.imgedit-settings p{margin:8px 0}.imgedit-settings legend{margin-bottom:5px}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding:3px 16px 0 0;float:left}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:right;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;bottom:0;width:100%;background:#fff;opacity:.7;filter:alpha(opacity=70);display:none}.imgedit-wait:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;background:transparent url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}.no-float{float:none}.imgedit-settings .disabled,.media-disabled{color:#a0a5aa}.A1B1{overflow:hidden}.A1B1 .button,.wp_attachment_image .button{float:left}.no-js .wp_attachment_image .button{display:none}.A1B1 .spinner,.wp_attachment_image .spinner{float:left}.imgedit-menu{min-width:300px;margin:0 0 12px}.imgedit-menu .note-no-rotate{clear:both;margin:0;padding:1em 0 0}.image-editor .imgedit-menu .button{float:left;width:32px;height:32px;margin:0 8px 0 0;padding:0;background:#f1f1f1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:16px;color:#72777c}.imgedit-menu .button:before{font:normal 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu .button.disabled{border-color:#ccc;background-color:#ddd;color:#72777c;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop-wrap img{background-image:linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:0 0,10px 10px;background-size:20px 20px}.imgedit-crop{margin:0 8px 0 0}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 8px 0 3px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 8px 0 3px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 8px 0 3px}.imgedit-thumbnail-preview{margin:10px 8px 0 0}.imgedit-thumbnail-preview-caption{display:block}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{display:inline-block;margin:0;padding:0;font-size:14px;line-height:1.4}#poststuff .imgedit-group-top .button-link{text-decoration:none;color:#23282d}.imgedit-applyto .imgedit-label{display:block;padding:.5em 0 0}.imgedit-help{display:none;font-style:italic}.image-editor .imgedit-settings .imgedit-help-toggle,.image-editor .imgedit-settings .imgedit-help-toggle:active,.image-editor .imgedit-settings .imgedit-help-toggle:hover{border:1px solid transparent;margin:-1px 0 0 -1px;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.image-editor .imgedit-settings .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;box-shadow:0 0 3px rgba(0,115,170,.8)}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap;font-size:12px;line-height:inherit}span.imgedit-scale-warn{color:#dc3232;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-save-target{margin:8px 0}.imgedit-group{margin-bottom:8px;padding:10px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:50px;font-size:14px;padding:5px 8px}.imgedit-separator{display:inline-block;width:7px;text-align:center;vertical-align:middle;font-size:13px;color:#444}.imgedit-settings .imgedit-scale .button{margin-bottom:0}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 0 10px 12px}.imgedit-settings .imgedit-crop-ratio input[type=text],.imgedit-settings .imgedit-crop-sel input[type=text],.imgedit-settings .imgedit-scale input[type=text]{width:60px;font-size:16px;padding:6px 10px}.imgedit-applyto .imgedit-label{vertical-align:middle}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;right:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{right:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{right:82px}.edit-attachment-frame .edit-media-header .right{right:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}} \ No newline at end of file diff --git a/wp-admin/css/nav-menus-rtl.css b/wp-admin/css/nav-menus-rtl.css index 3de15a2..dd99b5a 100644 --- a/wp-admin/css/nav-menus-rtl.css +++ b/wp-admin/css/nav-menus-rtl.css @@ -37,8 +37,8 @@ ul.add-menu-item-tabs li { } #wpbody-content #menu-settings-column { - display: inline; - width: 281px; + display:inline; + width:281px; margin-right: -300px; clear: both; float: right; @@ -65,8 +65,15 @@ ul.add-menu-item-tabs li { position: relative; } +.blank-slate .menu-settings { + border: none; + margin-top: 0; + padding-top: 0; + overflow: hidden; +} + .is-submenu { - color: #50575e; /* #fafafa background */ + color: #555d66; /* #fafafa background */ font-style: italic; font-weight: 400; margin-right: 4px; @@ -76,7 +83,7 @@ ul.add-menu-item-tabs li { margin-top: 23px; padding: 10px; overflow: hidden; - background: #fff; + background: #fbfbfb; } .manage-menus .selected-menu, @@ -97,105 +104,8 @@ ul.add-menu-item-tabs li { margin: 1em 0 10px; } -#nav-menu-bulk-actions-top { - margin: 1em 0; -} - -#nav-menu-bulk-actions-bottom { - margin: 1em 0; - margin: calc( 1em + 9px ) 0 ; -} - -.bulk-actions input.button { - margin-left: 12px; -} - -.bulk-select-button { - position: relative; - display: inline-block; - padding: 0 10px; - font-size: 13px; - line-height: 2.15384615; - height: auto; - min-height: 30px; - background: #f6f7f7; - vertical-align: top; - border: 1px solid #dcdcde; - margin: 0; - cursor: pointer; - border-radius: 3px; - white-space: nowrap; - box-sizing: border-box; -} - -.bulk-selection .bulk-select-button { - color: #2271b1; - border-color: #2271b1; - background: #f6f7f7; - vertical-align: top; -} - -#pending-menu-items-to-delete { - display: none; -} - -.bulk-selection #pending-menu-items-to-delete { - display: block; - margin-top: 1em; -} - -#pending-menu-items-to-delete p { - margin-bottom: 0; -} - -#pending-menu-items-to-delete ul { - margin-top: 0; - list-style: none; -} - -#pending-menu-items-to-delete ul li { - display: inline; -} - -input.bulk-select-switcher + .bulk-select-button-label { - vertical-align: inherit; -} - -label.bulk-select-button:hover, -label.bulk-select-button:active, -label.bulk-select-button:focus-within { - background: #f0f0f1; - border-color: #0a4b78; - color: #0a4b78; -} - -input.bulk-select-switcher:focus + .bulk-select-button-label { - color: #0a4b78; -} - -.bulk-actions input.menu-items-delete { - -moz-appearance: none; - appearance: none; - font-size: inherit; - border: 0; - line-height: 2.1em; - background: none; - cursor: pointer; - text-decoration: underline; - color: #b32d2e; -} - -.bulk-actions input.menu-items-delete:hover { - color: #b32d2e; - border: none; -} - -.bulk-actions input.menu-items-delete.disabled { - display: none; -} - .menu-settings { - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; margin-top: 2em; } @@ -232,7 +142,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } .theme-location-set { - color: #646970; + color: #72777c; font-size: 11px; } @@ -251,6 +161,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { margin-left: 20px; margin-top: -3px; width: 100%; + background: #f5f5f5; } #menu-management .menu-edit { @@ -258,20 +169,19 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } .nav-menus-php #post-body { - padding: 0 10px; + padding: 0 10px 10px; border-top: 1px solid #fff; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; background: #fff; } #nav-menu-header, #nav-menu-footer { padding: 0 10px; - background: #f6f7f7; } #nav-menu-header { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; margin-bottom: 0; } @@ -279,6 +189,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { display: inline-block; vertical-align: middle; margin-left: 7px; + font-style: italic; } .nav-menus-php #post-body div.updated, @@ -291,17 +202,13 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { float: none; } -.nav-menus-php #post-body-content .post-body-plain { - margin-bottom: 0; -} - #menu-management .menu-add-new abbr { - font-weight: 600; + font-weight:600; } #select-nav-menu-container { text-align: left; - padding: 0 10px 3px; + padding: 0 10px 3px 10px; margin-bottom: 5px; } @@ -348,7 +255,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { .locations-edit-menu-link { padding-left: 3px; - border-left: 1px solid #c3c4c7; + border-left: 1px solid #ccc; } #menu-management .inside { @@ -411,7 +318,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } .button-controls { - clear: both; + clear:both; margin: 10px 0; } @@ -431,7 +338,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } #manage-menu .inside { - padding: 0; + padding: 0px 0px; } /* Custom Links */ @@ -483,7 +390,8 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { /* Listings */ .nav-menus-php .list li { display: none; - margin: 0 0 5px; + margin: 0; + margin-bottom: 5px; } .nav-menus-php .list li .menu-item-title { @@ -501,17 +409,13 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { margin-top: -4px; } -.menu-item-title .post-state { - font-weight: 600; -} - /* Nav Menu */ #menu-container .inside { padding-bottom: 10px; } .menu { - padding-top: 1em; + padding-top:1em; } #menu-to-edit { @@ -525,35 +429,35 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { .menu li { margin-bottom: 0; - position: relative; + position:relative; } .menu-item-bar { - clear: both; - line-height: 1.5; - position: relative; + clear:both; + line-height:1.5em; + position:relative; margin: 9px 0 0; } .menu-item-bar .menu-item-handle { - border: 1px solid #dcdcde; + border: 1px solid #ddd; position: relative; padding: 10px 15px; height: auto; min-height: 20px; - max-width: 382px; - line-height: 2.30769230; + width: 382px; + line-height: 30px; overflow: hidden; word-wrap: break-word; } .menu-item-bar .menu-item-handle:hover { - border-color: #8c8f94; + border-color: #999; } #menu-to-edit .menu-item-invalid .menu-item-handle { - background: #fcf0f1; - border-color: #d63638; + background: #f6c9cc; + border-color: #f1acb1; } .no-js .menu-item-edit-active .item-edit { @@ -566,29 +470,20 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { .menu li.deleting .menu-item-handle { background-image: none; - background-color: #f86368; + background-color: #f66; } .menu-item-handle .item-title { font-size: 13px; font-weight: 600; - line-height: 1.53846153; + line-height: 20px; display: block; /* @todo: responsive view. */ margin-left: 13em; } -.menu-item-handle .menu-item-checkbox { - display: none; -} - -.bulk-selection .menu-item-handle .menu-item-checkbox { - display: inline-block; - margin-left: 6px; -} - .menu-item-handle .menu-item-title.no-title { - color: #646970; + color: #72777c; } /* Sortables */ @@ -597,13 +492,13 @@ li.menu-item.ui-sortable-helper .menu-item-bar { } li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { - margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ + margin-top: 13px; } .menu .sortable-placeholder { height: 35px; width: 410px; - margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ + margin-top: 13px; } /* Hide the transport list when it's empty */ @@ -612,7 +507,7 @@ li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { } /* WARNING: The factor of 30px is hardcoded into the nav-menus JavaScript. */ -.menu-item-depth-0 { margin-right: 0; } +.menu-item-depth-0 { margin-right: 0px; } .menu-item-depth-1 { margin-right: 30px; } .menu-item-depth-2 { margin-right: 60px; } .menu-item-depth-3 { margin-right: 90px; } @@ -625,7 +520,7 @@ li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { .menu-item-depth-10 { margin-right: 300px; } .menu-item-depth-11 { margin-right: 330px; } -.menu-item-depth-0 .menu-item-transport { margin-right: 0; } +.menu-item-depth-0 .menu-item-transport { margin-right: 0px; } .menu-item-depth-1 .menu-item-transport { margin-right: -30px; } .menu-item-depth-2 .menu-item-transport { margin-right: -60px; } .menu-item-depth-3 .menu-item-transport { margin-right: -90px; } @@ -655,9 +550,9 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .item-type { display: inline-block; padding: 12px 16px; - color: #646970; + color: #666; font-size: 12px; - line-height: 1.5; + line-height: 18px; } .item-controls { @@ -696,14 +591,15 @@ body.menu-max-depth-11 { min-width: 1280px !important; } height: auto; margin: 12px 0 12px -10px; padding: 0; - color: #2271b1; + color: #0073aa; text-decoration: underline; font-size: 12px; - line-height: 1.5; + line-height: 18px; } .no-js.nav-menus-php .item-edit .screen-reader-text { position: static; + -webkit-clip-path: none; clip-path: none; width: auto; height: auto; @@ -732,8 +628,8 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .nav-menus-php .item-edit:focus:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } /* Menu editing */ @@ -743,13 +639,13 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .menu-item-settings { display: block; - max-width: 392px; - padding: 10px; + width: 402px; + padding: 10px 10px 10px 0; position: relative; z-index: 10; /* Keep .item-title's shadow from appearing on top of .menu-item-settings */ - border: 1px solid #c3c4c7; + border: 1px solid #e5e5e5; border-top: none; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); } .menu-item-settings .field-move { @@ -760,11 +656,13 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .field-move-visual-label { float: right; margin-left: 4px; + font-style: italic; } .menu-item-settings .field-move .button-link { display: none; margin: 0 2px; + font-style: italic; } .menu-item-edit-active .menu-item-settings { @@ -793,9 +691,10 @@ body.menu-max-depth-11 { min-width: 1280px !important; } display: block; margin: 0 0 15px; padding: 3px 5px 5px; - border: 1px solid #dcdcde; - color: #646970; + border: 1px solid #ddd; + color: #72777c; font-size: 12px; + font-style: italic; } .link-to-original a { @@ -814,15 +713,11 @@ body.menu-max-depth-11 { min-width: 1280px !important; } } .description-thin { - width: calc(50% - 5px); -} - -.menu-item-settings .description-thin + .description-thin { - margin-left: 0; + width: 190px; } .description-wide { - width: 100%; + width: 390px; } .menu-item-actions { @@ -838,7 +733,7 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .nav-menus-php .major-publishing-actions { clear: both; padding: 10px 0; - line-height: 2.15384615; + line-height: 28px; } .nav-menus-php .major-publishing-actions .publishing-action { @@ -846,10 +741,14 @@ body.menu-max-depth-11 { min-width: 1280px !important; } float: left; } +.nav-menus-php .blank-slate .menu-settings { + display: none; +} + /* Same as the Publish Meta Box #delete-action */ .nav-menus-php .delete-action { float: right; - line-height: 2.1; + line-height: 28px; } .nav-menus-php .major-publishing-actions .form-invalid { @@ -867,21 +766,25 @@ body.menu-max-depth-11 { min-width: 1280px !important; } /* =Media Queries -------------------------------------------------------------- */ -@media only screen and (min-width: 769px) and (max-width: 1000px) { +@media only screen and (min-width: 769px) and (max-width: 1000px){ body.menu-max-depth-0 { min-width: 0 !important; } - #menu-management-liquid { + #menu-management-liquid{ width: 100%; } - .nav-menus-php #post-body-content { + .nav-menus-php #post-body-content{ min-width: 0; } + + .menu-item-bar .menu-item-handle{ + width: 90%; + } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { body.nav-menus-php, body.wp-customizer { min-width: 0 !important; @@ -928,13 +831,13 @@ body.menu-max-depth-11 { min-width: 1280px !important; } width: 100%; } - .nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action { + .nav-menus-php .major-publishing-actions .publishing-action { padding-top: 1em; } .nav-menus-php .delete-action { font-size: 14px; - line-height: 2.14285714; + line-height: 30px; } .menu-item-bar .menu-item-handle, @@ -963,7 +866,6 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .menu-settings-group { padding-right: 0; - overflow: visible; } .menu-settings-group-name { @@ -986,38 +888,14 @@ body.menu-max-depth-11 { min-width: 1280px !important; } margin: 0.5em 0; } - .wp-core-ui .manage-menus .button { - margin-bottom: 0; - } - .widefat .menu-locations .menu-location-title { padding-top: 16px; } } -@media only screen and (min-width: 783px) { - @supports (position: sticky) and (scroll-margin-bottom: 130px) { - - #nav-menu-footer { - position: sticky; - bottom: 0; - z-index: 10; - box-shadow: 0 -1px 0 0 #ddd; - } - - #save_menu_header { - display: none; - } - } -} - @media only screen and (max-width: 768px) { /* menu locations */ #menu-locations-wrap .widefat { width: 100%; } - - .bulk-select-button { - padding: 5px 10px; - } } diff --git a/wp-admin/css/nav-menus-rtl.min.css b/wp-admin/css/nav-menus-rtl.min.css index 348cfef..a7e7ed8 100644 --- a/wp-admin/css/nav-menus-rtl.min.css +++ b/wp-admin/css/nav-menus-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 4px 5px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-right:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-right:-300px;clear:both;float:right;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.is-submenu{color:#50575e;font-style:italic;font-weight:400;margin-right:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fff}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-left:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}#nav-menu-bulk-actions-top{margin:1em 0}#nav-menu-bulk-actions-bottom{margin:1em 0;margin:calc(1em + 9px) 0}.bulk-actions input.button{margin-left:12px}.bulk-select-button{position:relative;display:inline-block;padding:0 10px;font-size:13px;line-height:2.15384615;height:auto;min-height:30px;background:#f6f7f7;vertical-align:top;border:1px solid #dcdcde;margin:0;cursor:pointer;border-radius:3px;white-space:nowrap;box-sizing:border-box}.bulk-selection .bulk-select-button{color:#2271b1;border-color:#2271b1;background:#f6f7f7;vertical-align:top}#pending-menu-items-to-delete{display:none}.bulk-selection #pending-menu-items-to-delete{display:block;margin-top:1em}#pending-menu-items-to-delete p{margin-bottom:0}#pending-menu-items-to-delete ul{margin-top:0;list-style:none}#pending-menu-items-to-delete ul li{display:inline}input.bulk-select-switcher+.bulk-select-button-label{vertical-align:inherit}label.bulk-select-button:active,label.bulk-select-button:focus-within,label.bulk-select-button:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}input.bulk-select-switcher:focus+.bulk-select-button-label{color:#0a4b78}.bulk-actions input.menu-items-delete{-moz-appearance:none;appearance:none;font-size:inherit;border:0;line-height:2.1em;background:0 0;cursor:pointer;text-decoration:underline;color:#b32d2e}.bulk-actions input.menu-items-delete:hover{color:#b32d2e;border:none}.bulk-actions input.menu-items-delete.disabled{display:none}.menu-settings{border-top:1px solid #f0f0f1;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-right:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:right;margin:0;width:100%}.menu-settings-group-name{float:right;clear:both;width:25%;padding:3px 0 0;margin-right:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#646970;font-size:11px}#menu-management-liquid{float:right;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-left:20px;margin-top:-3px;width:100%}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px;border-top:1px solid #fff;border-bottom:1px solid #dcdcde;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px;background:#f6f7f7}#nav-menu-header{border-bottom:1px solid #dcdcde;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-left:7px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}.nav-menus-php #post-body-content .post-body-plain{margin-bottom:0}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:left;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-title label{font-weight:600}.menu-location-menus select{float:right}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:right;width:160px;margin-left:5px}.locations-row-links{float:right;margin:6px 6px 0 0}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-left:3px;border-left:1px solid #c3c4c7}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:left}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}#cancel-save{text-decoration:underline;font-size:12px;margin-right:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:left}.list-controls{float:right;margin-top:5px}.add-to-menu{float:left}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#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:right;margin-top:5px;padding-left:5px}.menu-item-textbox{width:180px}.customlinkdiv label,.nav-menus-php .howto span{float:right;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px 0 0 -10px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-left:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}.menu-item-title .post-state{font-weight:600}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dcdcde;position:relative;padding:10px 15px;height:auto;min-height:20px;max-width:382px;line-height:2.30769230;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#8c8f94}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#fcf0f1;border-color:#d63638}.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;background-color:#f86368}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:1.53846153;display:block;margin-left:13em}.menu-item-handle .menu-item-checkbox{display:none}.bulk-selection .menu-item-handle .menu-item-checkbox{display:inline-block;margin-left:6px}.menu-item-handle .menu-item-title.no-title{color:#646970}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:9px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:9px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:30px}.menu-item-depth-2{margin-right:60px}.menu-item-depth-3{margin-right:90px}.menu-item-depth-4{margin-right:120px}.menu-item-depth-5{margin-right:150px}.menu-item-depth-6{margin-right:180px}.menu-item-depth-7{margin-right:210px}.menu-item-depth-8{margin-right:240px}.menu-item-depth-9{margin-right:270px}.menu-item-depth-10{margin-right:300px}.menu-item-depth-11{margin-right:330px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px}.menu-item-depth-2 .menu-item-transport{margin-right:-60px}.menu-item-depth-3 .menu-item-transport{margin-right:-90px}.menu-item-depth-4 .menu-item-transport{margin-right:-120px}.menu-item-depth-5 .menu-item-transport{margin-right:-150px}.menu-item-depth-6 .menu-item-transport{margin-right:-180px}.menu-item-depth-7 .menu-item-transport{margin-right:-210px}.menu-item-depth-8 .menu-item-transport{margin-right:-240px}.menu-item-depth-9 .menu-item-transport{margin-right:-270px}.menu-item-depth-10 .menu-item-transport{margin-right:-300px}.menu-item-depth-11 .menu-item-transport{margin-right:-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{display:inline-block;padding:12px 16px;color:#646970;font-size:12px;line-height:1.5}.item-controls{font-size:12px;position:absolute;left:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-left:10px}.nav-menus-php .item-edit{position:absolute;left:-20px;top:0;display:block;width:30px;height:40px;outline:0}.no-js.nav-menus-php .item-edit{position:static;float:left;width:auto;height:auto;margin:12px 0 12px -10px;padding:0;color:#2271b1;text-decoration:underline;font-size:12px;line-height:1.5}.no-js.nav-menus-php .item-edit .screen-reader-text{position:static;clip-path:none;width:auto;height:auto;margin:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-right:4px;width:20px;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.js.nav-menus-php .item-edit:focus{box-shadow:none}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;max-width:392px;padding:10px;position:relative;z-index:10;border:1px solid #c3c4c7;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:right;margin-left:4px}.menu-item-settings .field-move .button-link{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #dcdcde;color:#646970;font-size:12px}.link-to-original a{padding-right:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;float:right}.description-thin{width:calc(50% - 5px)}.menu-item-settings .description-thin+.description-thin{margin-left:0}.description-wide{width:100%}.menu-item-actions{padding-top:15px;padding-bottom:7px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:2.15384615}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left}.nav-menus-php .delete-action{float:right;line-height:2.1}.nav-menus-php .major-publishing-actions .form-invalid{padding-right:4px;margin-right:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}}@media screen and (max-width:782px){body.nav-menus-php,body.wp-customizer{min-width:0!important}#nav-menus-frame{margin-right:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-right:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}#menu-name{width:100%}.nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action{padding-top:1em}.nav-menus-php .delete-action{font-size:14px;line-height:2.14285714}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide{width:100%}.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-right:0;overflow:visible}.menu-settings-group-name{float:none;width:auto;margin-right:0;margin-bottom:15px}.menu-settings-input{float:none;margin-bottom:15px}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.wp-core-ui .manage-menus .button{margin-bottom:0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (min-width:783px){@supports (position:sticky) and (scroll-margin-bottom:130px){#nav-menu-footer{position:sticky;bottom:0;z-index:10;box-shadow:0 -1px 0 0 #ddd}#save_menu_header{display:none}}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}.bulk-select-button{padding:5px 10px}} \ No newline at end of file +.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 4px 5px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-right:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-right:-300px;clear:both;float:right;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#555d66;font-style:italic;font-weight:400;margin-right:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-left:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-right:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:right;margin:0;width:100%}.menu-settings-group-name{float:right;clear:both;width:25%;padding:3px 0 0;margin-right:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#72777c;font-size:11px}#menu-management-liquid{float:right;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-left:20px;margin-top:-3px;width:100%;background:#f5f5f5}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px 10px;border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #ddd;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-left:7px;font-style:italic}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:left;padding:0 10px 3px 10px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-title label{font-weight:600}.menu-location-menus select{float:right}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:right;width:160px;margin-left:5px}.locations-row-links{float:right;margin:6px 6px 0 0}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-left:3px;border-left:1px solid #ccc}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:left}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}#cancel-save{text-decoration:underline;font-size:12px;margin-right:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:left}.list-controls{float:right;margin-top:5px}.add-to-menu{float:left}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#manage-menu .inside{padding:0 0}#available-links dt{display:block}#add-custom-link .howto{font-size:12px}#add-custom-link label span{display:block;float:right;margin-top:5px;padding-left:5px}.menu-item-textbox{width:180px}.customlinkdiv label,.nav-menus-php .howto span{float:right;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px 0 0 -10px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.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-left:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;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:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #ddd;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.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;background-color:#f66}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:20px;display:block;margin-left:13em}.menu-item-handle .menu-item-title.no-title{color:#72777c}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:30px}.menu-item-depth-2{margin-right:60px}.menu-item-depth-3{margin-right:90px}.menu-item-depth-4{margin-right:120px}.menu-item-depth-5{margin-right:150px}.menu-item-depth-6{margin-right:180px}.menu-item-depth-7{margin-right:210px}.menu-item-depth-8{margin-right:240px}.menu-item-depth-9{margin-right:270px}.menu-item-depth-10{margin-right:300px}.menu-item-depth-11{margin-right:330px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px}.menu-item-depth-2 .menu-item-transport{margin-right:-60px}.menu-item-depth-3 .menu-item-transport{margin-right:-90px}.menu-item-depth-4 .menu-item-transport{margin-right:-120px}.menu-item-depth-5 .menu-item-transport{margin-right:-150px}.menu-item-depth-6 .menu-item-transport{margin-right:-180px}.menu-item-depth-7 .menu-item-transport{margin-right:-210px}.menu-item-depth-8 .menu-item-transport{margin-right:-240px}.menu-item-depth-9 .menu-item-transport{margin-right:-270px}.menu-item-depth-10 .menu-item-transport{margin-right:-300px}.menu-item-depth-11 .menu-item-transport{margin-right:-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{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;left:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls a:hover{cursor:pointer}.item-controls .item-order{padding-left:10px}.nav-menus-php .item-edit{position:absolute;left:-20px;top:0;display:block;width:30px;height:40px;outline:0}.no-js.nav-menus-php .item-edit{position:static;float:left;width:auto;height:auto;margin:12px 0 12px -10px;padding:0;color:#0073aa;text-decoration:underline;font-size:12px;line-height:18px}.no-js.nav-menus-php .item-edit .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-right:4px;width:20px;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.js.nav-menus-php .item-edit:focus{box-shadow:none}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:402px;padding:10px 10px 10px 0;position:relative;z-index:10;border:1px solid #e5e5e5;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:right;margin-left:4px;font-style:italic}.menu-item-settings .field-move .button-link{display:none;margin:0 2px;font-style:italic}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #ddd;color:#72777c;font-size:12px;font-style:italic}.link-to-original a{padding-right:4px;font-style:normal}.hidden-field{display:none}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;float:right}.description-thin{width:190px}.description-wide{width:390px}.menu-item-actions{padding-top:15px;padding-bottom:7px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:28px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left}.nav-menus-php .blank-slate .menu-settings{display:none}.nav-menus-php .delete-action{float:right;line-height:28px}.nav-menus-php .major-publishing-actions .form-invalid{padding-right:4px;margin-right:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php,body.wp-customizer{min-width:0!important}#nav-menus-frame{margin-right:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-right:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}#menu-name{width:100%}.nav-menus-php .major-publishing-actions .publishing-action{padding-top:1em}.nav-menus-php .delete-action{font-size:14px;line-height:30px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide{width:100%}.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-right:0}.menu-settings-group-name{float:none;width:auto;margin-right:0;margin-bottom:15px}.menu-settings-input{float:none;margin-bottom:15px}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}} \ No newline at end of file diff --git a/wp-admin/css/nav-menus.css b/wp-admin/css/nav-menus.css index df131ed..4021b03 100644 --- a/wp-admin/css/nav-menus.css +++ b/wp-admin/css/nav-menus.css @@ -37,8 +37,8 @@ ul.add-menu-item-tabs li { } #wpbody-content #menu-settings-column { - display: inline; - width: 281px; + display:inline; + width:281px; margin-left: -300px; clear: both; float: left; @@ -65,8 +65,15 @@ ul.add-menu-item-tabs li { position: relative; } +.blank-slate .menu-settings { + border: none; + margin-top: 0; + padding-top: 0; + overflow: hidden; +} + .is-submenu { - color: #50575e; /* #fafafa background */ + color: #555d66; /* #fafafa background */ font-style: italic; font-weight: 400; margin-left: 4px; @@ -76,7 +83,7 @@ ul.add-menu-item-tabs li { margin-top: 23px; padding: 10px; overflow: hidden; - background: #fff; + background: #fbfbfb; } .manage-menus .selected-menu, @@ -97,105 +104,8 @@ ul.add-menu-item-tabs li { margin: 1em 0 10px; } -#nav-menu-bulk-actions-top { - margin: 1em 0; -} - -#nav-menu-bulk-actions-bottom { - margin: 1em 0; - margin: calc( 1em + 9px ) 0 ; -} - -.bulk-actions input.button { - margin-right: 12px; -} - -.bulk-select-button { - position: relative; - display: inline-block; - padding: 0 10px; - font-size: 13px; - line-height: 2.15384615; - height: auto; - min-height: 30px; - background: #f6f7f7; - vertical-align: top; - border: 1px solid #dcdcde; - margin: 0; - cursor: pointer; - border-radius: 3px; - white-space: nowrap; - box-sizing: border-box; -} - -.bulk-selection .bulk-select-button { - color: #2271b1; - border-color: #2271b1; - background: #f6f7f7; - vertical-align: top; -} - -#pending-menu-items-to-delete { - display: none; -} - -.bulk-selection #pending-menu-items-to-delete { - display: block; - margin-top: 1em; -} - -#pending-menu-items-to-delete p { - margin-bottom: 0; -} - -#pending-menu-items-to-delete ul { - margin-top: 0; - list-style: none; -} - -#pending-menu-items-to-delete ul li { - display: inline; -} - -input.bulk-select-switcher + .bulk-select-button-label { - vertical-align: inherit; -} - -label.bulk-select-button:hover, -label.bulk-select-button:active, -label.bulk-select-button:focus-within { - background: #f0f0f1; - border-color: #0a4b78; - color: #0a4b78; -} - -input.bulk-select-switcher:focus + .bulk-select-button-label { - color: #0a4b78; -} - -.bulk-actions input.menu-items-delete { - -moz-appearance: none; - appearance: none; - font-size: inherit; - border: 0; - line-height: 2.1em; - background: none; - cursor: pointer; - text-decoration: underline; - color: #b32d2e; -} - -.bulk-actions input.menu-items-delete:hover { - color: #b32d2e; - border: none; -} - -.bulk-actions input.menu-items-delete.disabled { - display: none; -} - .menu-settings { - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; margin-top: 2em; } @@ -232,7 +142,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } .theme-location-set { - color: #646970; + color: #72777c; font-size: 11px; } @@ -251,6 +161,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { margin-right: 20px; margin-top: -3px; width: 100%; + background: #f5f5f5; } #menu-management .menu-edit { @@ -258,20 +169,19 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } .nav-menus-php #post-body { - padding: 0 10px; + padding: 0 10px 10px; border-top: 1px solid #fff; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; background: #fff; } #nav-menu-header, #nav-menu-footer { padding: 0 10px; - background: #f6f7f7; } #nav-menu-header { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; margin-bottom: 0; } @@ -279,6 +189,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { display: inline-block; vertical-align: middle; margin-right: 7px; + font-style: italic; } .nav-menus-php #post-body div.updated, @@ -291,17 +202,13 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { float: none; } -.nav-menus-php #post-body-content .post-body-plain { - margin-bottom: 0; -} - #menu-management .menu-add-new abbr { - font-weight: 600; + font-weight:600; } #select-nav-menu-container { text-align: right; - padding: 0 10px 3px; + padding: 0 10px 3px 10px; margin-bottom: 5px; } @@ -348,7 +255,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { .locations-edit-menu-link { padding-right: 3px; - border-right: 1px solid #c3c4c7; + border-right: 1px solid #ccc; } #menu-management .inside { @@ -411,7 +318,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } .button-controls { - clear: both; + clear:both; margin: 10px 0; } @@ -431,7 +338,7 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { } #manage-menu .inside { - padding: 0; + padding: 0px 0px; } /* Custom Links */ @@ -483,7 +390,8 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { /* Listings */ .nav-menus-php .list li { display: none; - margin: 0 0 5px; + margin: 0; + margin-bottom: 5px; } .nav-menus-php .list li .menu-item-title { @@ -501,17 +409,13 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { margin-top: -4px; } -.menu-item-title .post-state { - font-weight: 600; -} - /* Nav Menu */ #menu-container .inside { padding-bottom: 10px; } .menu { - padding-top: 1em; + padding-top:1em; } #menu-to-edit { @@ -525,35 +429,35 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { .menu li { margin-bottom: 0; - position: relative; + position:relative; } .menu-item-bar { - clear: both; - line-height: 1.5; - position: relative; + clear:both; + line-height:1.5em; + position:relative; margin: 9px 0 0; } .menu-item-bar .menu-item-handle { - border: 1px solid #dcdcde; + border: 1px solid #ddd; position: relative; padding: 10px 15px; height: auto; min-height: 20px; - max-width: 382px; - line-height: 2.30769230; + width: 382px; + line-height: 30px; overflow: hidden; word-wrap: break-word; } .menu-item-bar .menu-item-handle:hover { - border-color: #8c8f94; + border-color: #999; } #menu-to-edit .menu-item-invalid .menu-item-handle { - background: #fcf0f1; - border-color: #d63638; + background: #f6c9cc; + border-color: #f1acb1; } .no-js .menu-item-edit-active .item-edit { @@ -566,29 +470,20 @@ input.bulk-select-switcher:focus + .bulk-select-button-label { .menu li.deleting .menu-item-handle { background-image: none; - background-color: #f86368; + background-color: #f66; } .menu-item-handle .item-title { font-size: 13px; font-weight: 600; - line-height: 1.53846153; + line-height: 20px; display: block; /* @todo: responsive view. */ margin-right: 13em; } -.menu-item-handle .menu-item-checkbox { - display: none; -} - -.bulk-selection .menu-item-handle .menu-item-checkbox { - display: inline-block; - margin-right: 6px; -} - .menu-item-handle .menu-item-title.no-title { - color: #646970; + color: #72777c; } /* Sortables */ @@ -597,13 +492,13 @@ li.menu-item.ui-sortable-helper .menu-item-bar { } li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { - margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ + margin-top: 13px; } .menu .sortable-placeholder { height: 35px; width: 410px; - margin-top: 9px; /* Must use the same value used by the dragged item .menu-item-bar */ + margin-top: 13px; } /* Hide the transport list when it's empty */ @@ -612,7 +507,7 @@ li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { } /* WARNING: The factor of 30px is hardcoded into the nav-menus JavaScript. */ -.menu-item-depth-0 { margin-left: 0; } +.menu-item-depth-0 { margin-left: 0px; } .menu-item-depth-1 { margin-left: 30px; } .menu-item-depth-2 { margin-left: 60px; } .menu-item-depth-3 { margin-left: 90px; } @@ -625,7 +520,7 @@ li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar { .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-0 .menu-item-transport { margin-left: 0px; } .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; } @@ -655,9 +550,9 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .item-type { display: inline-block; padding: 12px 16px; - color: #646970; + color: #666; font-size: 12px; - line-height: 1.5; + line-height: 18px; } .item-controls { @@ -696,14 +591,15 @@ body.menu-max-depth-11 { min-width: 1280px !important; } height: auto; margin: 12px -10px 12px 0; padding: 0; - color: #2271b1; + color: #0073aa; text-decoration: underline; font-size: 12px; - line-height: 1.5; + line-height: 18px; } .no-js.nav-menus-php .item-edit .screen-reader-text { position: static; + -webkit-clip-path: none; clip-path: none; width: auto; height: auto; @@ -732,8 +628,8 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .nav-menus-php .item-edit:focus:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } /* Menu editing */ @@ -743,13 +639,13 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .menu-item-settings { display: block; - max-width: 392px; - padding: 10px; + width: 402px; + padding: 10px 0 10px 10px; position: relative; z-index: 10; /* Keep .item-title's shadow from appearing on top of .menu-item-settings */ - border: 1px solid #c3c4c7; + border: 1px solid #e5e5e5; border-top: none; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 1px 1px rgba(0,0,0,0.04); } .menu-item-settings .field-move { @@ -760,11 +656,13 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .field-move-visual-label { float: left; margin-right: 4px; + font-style: italic; } .menu-item-settings .field-move .button-link { display: none; margin: 0 2px; + font-style: italic; } .menu-item-edit-active .menu-item-settings { @@ -793,9 +691,10 @@ body.menu-max-depth-11 { min-width: 1280px !important; } display: block; margin: 0 0 15px; padding: 3px 5px 5px; - border: 1px solid #dcdcde; - color: #646970; + border: 1px solid #ddd; + color: #72777c; font-size: 12px; + font-style: italic; } .link-to-original a { @@ -814,15 +713,11 @@ body.menu-max-depth-11 { min-width: 1280px !important; } } .description-thin { - width: calc(50% - 5px); -} - -.menu-item-settings .description-thin + .description-thin { - margin-right: 0; + width: 190px; } .description-wide { - width: 100%; + width: 390px; } .menu-item-actions { @@ -838,7 +733,7 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .nav-menus-php .major-publishing-actions { clear: both; padding: 10px 0; - line-height: 2.15384615; + line-height: 28px; } .nav-menus-php .major-publishing-actions .publishing-action { @@ -846,10 +741,14 @@ body.menu-max-depth-11 { min-width: 1280px !important; } float: right; } +.nav-menus-php .blank-slate .menu-settings { + display: none; +} + /* Same as the Publish Meta Box #delete-action */ .nav-menus-php .delete-action { float: left; - line-height: 2.1; + line-height: 28px; } .nav-menus-php .major-publishing-actions .form-invalid { @@ -867,21 +766,25 @@ body.menu-max-depth-11 { min-width: 1280px !important; } /* =Media Queries -------------------------------------------------------------- */ -@media only screen and (min-width: 769px) and (max-width: 1000px) { +@media only screen and (min-width: 769px) and (max-width: 1000px){ body.menu-max-depth-0 { min-width: 0 !important; } - #menu-management-liquid { + #menu-management-liquid{ width: 100%; } - .nav-menus-php #post-body-content { + .nav-menus-php #post-body-content{ min-width: 0; } + + .menu-item-bar .menu-item-handle{ + width: 90%; + } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { body.nav-menus-php, body.wp-customizer { min-width: 0 !important; @@ -928,13 +831,13 @@ body.menu-max-depth-11 { min-width: 1280px !important; } width: 100%; } - .nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action { + .nav-menus-php .major-publishing-actions .publishing-action { padding-top: 1em; } .nav-menus-php .delete-action { font-size: 14px; - line-height: 2.14285714; + line-height: 30px; } .menu-item-bar .menu-item-handle, @@ -963,7 +866,6 @@ body.menu-max-depth-11 { min-width: 1280px !important; } .menu-settings-group { padding-left: 0; - overflow: visible; } .menu-settings-group-name { @@ -986,38 +888,14 @@ body.menu-max-depth-11 { min-width: 1280px !important; } margin: 0.5em 0; } - .wp-core-ui .manage-menus .button { - margin-bottom: 0; - } - .widefat .menu-locations .menu-location-title { padding-top: 16px; } } -@media only screen and (min-width: 783px) { - @supports (position: sticky) and (scroll-margin-bottom: 130px) { - - #nav-menu-footer { - position: sticky; - bottom: 0; - z-index: 10; - box-shadow: 0 -1px 0 0 #ddd; - } - - #save_menu_header { - display: none; - } - } -} - @media only screen and (max-width: 768px) { /* menu locations */ #menu-locations-wrap .widefat { width: 100%; } - - .bulk-select-button { - padding: 5px 10px; - } } diff --git a/wp-admin/css/nav-menus.min.css b/wp-admin/css/nav-menus.min.css index 27996df..f108456 100644 --- a/wp-admin/css/nav-menus.min.css +++ b/wp-admin/css/nav-menus.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 4px 8px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-left:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.is-submenu{color:#50575e;font-style:italic;font-weight:400;margin-left:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fff}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-right:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}#nav-menu-bulk-actions-top{margin:1em 0}#nav-menu-bulk-actions-bottom{margin:1em 0;margin:calc(1em + 9px) 0}.bulk-actions input.button{margin-right:12px}.bulk-select-button{position:relative;display:inline-block;padding:0 10px;font-size:13px;line-height:2.15384615;height:auto;min-height:30px;background:#f6f7f7;vertical-align:top;border:1px solid #dcdcde;margin:0;cursor:pointer;border-radius:3px;white-space:nowrap;box-sizing:border-box}.bulk-selection .bulk-select-button{color:#2271b1;border-color:#2271b1;background:#f6f7f7;vertical-align:top}#pending-menu-items-to-delete{display:none}.bulk-selection #pending-menu-items-to-delete{display:block;margin-top:1em}#pending-menu-items-to-delete p{margin-bottom:0}#pending-menu-items-to-delete ul{margin-top:0;list-style:none}#pending-menu-items-to-delete ul li{display:inline}input.bulk-select-switcher+.bulk-select-button-label{vertical-align:inherit}label.bulk-select-button:active,label.bulk-select-button:focus-within,label.bulk-select-button:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}input.bulk-select-switcher:focus+.bulk-select-button-label{color:#0a4b78}.bulk-actions input.menu-items-delete{-moz-appearance:none;appearance:none;font-size:inherit;border:0;line-height:2.1em;background:0 0;cursor:pointer;text-decoration:underline;color:#b32d2e}.bulk-actions input.menu-items-delete:hover{color:#b32d2e;border:none}.bulk-actions input.menu-items-delete.disabled{display:none}.menu-settings{border-top:1px solid #f0f0f1;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-left:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:left;margin:0;width:100%}.menu-settings-group-name{float:left;clear:both;width:25%;padding:3px 0 0;margin-left:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#646970;font-size:11px}#menu-management-liquid{float:left;min-width:100%;margin-top:3px}#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:0 10px;border-top:1px solid #fff;border-bottom:1px solid #dcdcde;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px;background:#f6f7f7}#nav-menu-header{border-bottom:1px solid #dcdcde;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-right:7px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}.nav-menus-php #post-body-content .post-body-plain{margin-bottom:0}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:right;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-title label{font-weight:600}.menu-location-menus select{float:left}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:left;width:160px;margin-right:5px}.locations-row-links{float:left;margin:6px 0 0 6px}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-right:3px;border-right:1px solid #c3c4c7}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#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}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#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}.customlinkdiv label,.nav-menus-php .howto span{float:left;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px -10px 0 0}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 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-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}.menu-item-title .post-state{font-weight:600}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dcdcde;position:relative;padding:10px 15px;height:auto;min-height:20px;max-width:382px;line-height:2.30769230;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#8c8f94}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#fcf0f1;border-color:#d63638}.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;background-color:#f86368}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:1.53846153;display:block;margin-right:13em}.menu-item-handle .menu-item-checkbox{display:none}.bulk-selection .menu-item-handle .menu-item-checkbox{display:inline-block;margin-right:6px}.menu-item-handle .menu-item-title.no-title{color:#646970}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:9px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:9px}.menu-item .menu-item-transport:empty{display:none}.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{display:inline-block;padding:12px 16px;color:#646970;font-size:12px;line-height:1.5}.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:40px;outline:0}.no-js.nav-menus-php .item-edit{position:static;float:right;width:auto;height:auto;margin:12px -10px 12px 0;padding:0;color:#2271b1;text-decoration:underline;font-size:12px;line-height:1.5}.no-js.nav-menus-php .item-edit .screen-reader-text{position:static;clip-path:none;width:auto;height:auto;margin:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-left:4px;width:20px;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.js.nav-menus-php .item-edit:focus{box-shadow:none}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;max-width:392px;padding:10px;position:relative;z-index:10;border:1px solid #c3c4c7;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:left;margin-right:4px}.menu-item-settings .field-move .button-link{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #dcdcde;color:#646970;font-size:12px}.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:calc(50% - 5px)}.menu-item-settings .description-thin+.description-thin{margin-right:0}.description-wide{width:100%}.menu-item-actions{padding-top:15px;padding-bottom:7px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:2.15384615}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right}.nav-menus-php .delete-action{float:left;line-height:2.1}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}}@media screen and (max-width:782px){body.nav-menus-php,body.wp-customizer{min-width:0!important}#nav-menus-frame{margin-left:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-left:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}#menu-name{width:100%}.nav-menus-php #nav-menu-header .major-publishing-actions .publishing-action{padding-top:1em}.nav-menus-php .delete-action{font-size:14px;line-height:2.14285714}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide{width:100%}.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-left:0;overflow:visible}.menu-settings-group-name{float:none;width:auto;margin-left:0;margin-bottom:15px}.menu-settings-input{float:none;margin-bottom:15px}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.wp-core-ui .manage-menus .button{margin-bottom:0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (min-width:783px){@supports (position:sticky) and (scroll-margin-bottom:130px){#nav-menu-footer{position:sticky;bottom:0;z-index:10;box-shadow:0 -1px 0 0 #ddd}#save_menu_header{display:none}}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}.bulk-select-button{padding:5px 10px}} \ No newline at end of file +.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 4px 8px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}.has-no-menu-item .button-controls{display:none}#nav-menus-frame{margin-left:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#555d66;font-style:italic;font-weight:400;margin-left:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus .selected-menu,.manage-menus .submit-btn,.manage-menus select,.nav-menus-php .add-new-menu-action{display:inline-block;margin-right:3px;vertical-align:middle}.manage-menus select,.menu-location-menus select{max-width:100%}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings-group{margin:0 0 10px;overflow:hidden;padding-left:20%}.menu-settings-group:last-of-type{margin-bottom:0}.menu-settings-input{float:left;margin:0;width:100%}.menu-settings-group-name{float:left;clear:both;width:25%;padding:3px 0 0;margin-left:-25%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#72777c;font-size:11px}#menu-management-liquid{float:left;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;background:#f5f5f5}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px 10px;border-top:1px solid #fff;border-bottom:1px solid #ddd;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #ddd;margin-bottom:0}#nav-menu-header .menu-name-label{display:inline-block;vertical-align:middle;margin-right:7px;font-style:italic}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:600}#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}.widefat .menu-locations .menu-location-title{padding:13px 10px 0}.menu-location-title label{font-weight:600}.menu-location-menus select{float:left}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:left;width:160px;margin-right:5px}.locations-row-links{float:left;margin:6px 0 0 6px}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-right:3px;border-right:1px solid #ccc}#menu-management .inside{padding:0 10px}.customlinkdiv .menu-item-textbox,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv p{margin-top:0}#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}#cancel-save{text-decoration:underline;font-size:12px;margin-left:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px;vertical-align:middle}#manage-menu .inside{padding:0 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}.customlinkdiv label,.nav-menus-php .howto span{float:left;margin-top:6px}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px -10px 0 0}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.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-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;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:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #ddd;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.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;background-color:#f66}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:20px;display:block;margin-right:13em}.menu-item-handle .menu-item-title.no-title{color:#72777c}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.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{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.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:40px;outline:0}.no-js.nav-menus-php .item-edit{position:static;float:right;width:auto;height:auto;margin:12px -10px 12px 0;padding:0;color:#0073aa;text-decoration:underline;font-size:12px;line-height:18px}.no-js.nav-menus-php .item-edit .screen-reader-text{position:static;-webkit-clip-path:none;clip-path:none;width:auto;height:auto;margin:0}.nav-menus-php .item-edit:before{margin-top:10px;margin-left:4px;width:20px;border-radius:50%;text-indent:-1px}.no-js.nav-menus-php .item-edit:before{display:none}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.js.nav-menus-php .item-edit:focus{box-shadow:none}.nav-menus-php .item-edit:focus:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:402px;padding:10px 0 10px 10px;position:relative;z-index:10;border:1px solid #e5e5e5;border-top:none;box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move{margin:3px 0 5px;line-height:1.5}.field-move-visual-label{float:left;margin-right:4px;font-style:italic}.menu-item-settings .field-move .button-link{display:none;margin:0 2px;font-style:italic}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em -10px;text-align:center}.add-menu-item-pagelinks .page-numbers{display:inline-block;min-width:20px}.add-menu-item-pagelinks .page-numbers.dots{min-width:0}.link-to-original{display:block;margin:0 0 15px;padding:3px 5px 5px;border:1px solid #ddd;color:#72777c;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}.description-wide{width:390px}.menu-item-actions{padding-top:15px;padding-bottom:7px}#cancel-save{cursor:pointer}.nav-menus-php .major-publishing-actions{clear:both;padding:10px 0;line-height:28px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right}.nav-menus-php .blank-slate .menu-settings{display:none}.nav-menus-php .delete-action{float:left;line-height:28px}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php,body.wp-customizer{min-width:0!important}#nav-menus-frame{margin-left:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-left:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}#menu-name{width:100%}.nav-menus-php .major-publishing-actions .publishing-action{padding-top:1em}.nav-menus-php .delete-action{font-size:14px;line-height:30px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide{width:100%}.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings-group{padding-left:0}.menu-settings-group-name{float:none;width:auto;margin-left:0;margin-bottom:15px}.menu-settings-input{float:none;margin-bottom:15px}.menu-edit .checkbox-input{margin-top:0}.manage-menus select{margin:.5em 0}.widefat .menu-locations .menu-location-title{padding-top:16px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}} \ No newline at end of file diff --git a/wp-admin/css/revisions-rtl.css b/wp-admin/css/revisions-rtl.css index 1a0fbb8..fc294eb 100644 --- a/wp-admin/css/revisions-rtl.css +++ b/wp-admin/css/revisions-rtl.css @@ -6,12 +6,9 @@ position: relative; } -.revisions-diff-frame { - top: 10px; -} - .revisions-controls { padding-top: 40px; + height: 100px; z-index: 1; } @@ -26,7 +23,7 @@ top: 0; height: 82px; background: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .revisions-tickmarks { @@ -42,7 +39,7 @@ .revisions-tickmarks > div { position: absolute; height: 100%; - border-right: 1px solid #a7aaad; + border-right: 1px solid #a0a5aa; box-sizing: border-box; } @@ -79,6 +76,7 @@ top: 50%; top: calc( 50% - 10px ); transition: opacity 0.5s; + filter: alpha(opacity=0); /* ie8 and earlier */ } body.folded .revisions .loading-indicator { @@ -93,6 +91,7 @@ body.folded .revisions .loading-indicator { .revisions.loading .loading-indicator { opacity: 1; + filter: alpha(opacity=100); /* ie8 and earlier */ } .revisions .diff { @@ -101,6 +100,7 @@ body.folded .revisions .loading-indicator { .revisions.loading .diff { opacity: 0.5; + filter: alpha(opacity=50); /* ie8 and earlier */ } .revisions.diff-error .diff { @@ -110,8 +110,7 @@ body.folded .revisions .loading-indicator { .revisions-meta { margin-top: 20px; background-color: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - overflow: hidden; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .revisions.pinned .revisions-meta { @@ -131,11 +130,11 @@ body.folded .revisions .loading-indicator { } .revisions-controls .author-card .date { - color: #646970; + color: #72777c; } .revisions-controls .author-card.autosave { - color: #d63638; + color: #d54e21; } .revisions-controls .author-card .author-name { @@ -173,7 +172,7 @@ body.folded .revisions .loading-indicator { .revisions-diff { padding: 15px; background-color: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .revisions-diff h3:first-child { @@ -186,6 +185,10 @@ body.folded .revisions .loading-indicator { vertical-align: middle; } +table.diff tbody tr td:nth-child(2) { + width: 4%; +} + table.diff { table-layout: fixed; width: 100%; @@ -216,8 +219,8 @@ table.diff td, table.diff th { font-family: Consolas, Monaco, monospace; font-size: 14px; - line-height: 1.57142857; - padding: 0.5em 2em 0.5em 0.5em; + line-height: 1.618; + padding: .5em; vertical-align: top; word-wrap: break-word; } @@ -237,37 +240,19 @@ table.diff .diff-addedline ins { } table.diff .diff-deletedline { - position: relative; - background-color: #fcf0f1; + background-color: #ffe9e9; } table.diff .diff-deletedline del { - background-color: #ffabaf; + background-color: #faa; } table.diff .diff-addedline { - position: relative; - background-color: #edfaef; -} - -table.diff .diff-deletedline .dashicons, -table.diff .diff-addedline .dashicons { - position: absolute; - top: 0.85714286em; - right: 0.5em; - width: 1em; - height: 1em; - font-size: 1em; - line-height: 1; -} - -table.diff .diff-addedline .dashicons { - /* Compensate the vertically non-centered plus glyph. */ - top: 0.92857143em; + background-color: #e9ffe9; } table.diff .diff-addedline ins { - background-color: #68de7c; + background-color: #afa; } .diff-meta { @@ -277,7 +262,7 @@ table.diff .diff-addedline ins { } .diff-title strong { - line-height: 2.46153846; + line-height: 32px; min-width: 60px; text-align: left; float: right; @@ -286,7 +271,7 @@ table.diff .diff-addedline ins { .revisions-controls .author-card .author-info { font-size: 12px; - line-height: 1.33333333; + line-height: 16px; } .revisions-controls .author-card .avatar, @@ -309,7 +294,7 @@ table.diff .diff-addedline ins { float: left; margin-right: 6px; margin-left: 6px; - margin-top: 2px; + margin-top: 4px; } .diff-meta-from { @@ -378,9 +363,19 @@ table.diff .diff-addedline ins { left: 20px; } +.ie8 .revisions-tooltip-arrow > span { + right: 15px; + top: -25px; + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"; +} + +.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow > span { + left: 25px; +} + .revisions-tooltip, .revisions-tooltip-arrow > span { - border: 1px solid #dcdcde; + border: 1px solid #ddd; background-color: #fff; } @@ -402,7 +397,7 @@ table.diff .diff-addedline ins { .arrow:after { z-index: 9999; background-color: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .arrow.top { @@ -441,7 +436,7 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { /* jQuery UI Slider */ .wp-slider.ui-slider { position: relative; - border: 1px solid #dcdcde; + border: 1px solid #ddd; text-align: right; cursor: pointer; } @@ -460,41 +455,42 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { .wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.focus { - background: #f6f7f7; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 0 #c3c4c7; + background: #f7f7f7; + border: 1px solid #ccc; + box-shadow: 0 1px 0 #cccccc; } .wp-slider .ui-slider-handle:hover, .wp-slider .ui-slider-handle.ui-state-hover { - background: #f6f7f7; - border-color: #8c8f94; + background: #fafafa; + border-color: #999; } .wp-slider .ui-slider-handle:active, .wp-slider .ui-slider-handle.ui-state-active { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); - transform: translateY(1px); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } + .wp-slider .ui-slider-handle:before { background: none; position: absolute; top: 2px; right: 2px; - color: #50575e; + color: #555; content: "\f229"; font: normal 18px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wp-slider .ui-slider-handle:hover:before, .wp-slider .ui-slider-handle.ui-state-hover:before { - color: #1d2327; + color: #23282d; } .wp-slider .ui-slider-handle.from-handle:before, @@ -522,7 +518,7 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { .wp-slider .ui-slider-range { position: absolute; - font-size: 0.7em; + font-size: .7em; display: block; border: 0; background-color: transparent; @@ -530,7 +526,7 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { } .wp-slider.ui-slider-horizontal { - height: 0.7em; + height: .7em; } .wp-slider.ui-slider-horizontal .ui-slider-handle { @@ -565,38 +561,15 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { #diff-next-revision, #diff-previous-revision { margin-top: -1em; } - .revisions-buttons { - overflow: hidden; - margin-bottom: 15px; - } - - .revisions-controls, - .comparing-two-revisions .revisions-controls { - height: 170px; - } - - .revisions-tooltip { - bottom: 130px; - z-index: 2; - } - - .diff-meta { - overflow: hidden; - } - table.diff { -ms-word-break: break-all; word-break: break-all; word-wrap: break-word; } - - .diff-meta input.restore-revision { - margin-top: 0; - } } diff --git a/wp-admin/css/revisions-rtl.min.css b/wp-admin/css/revisions-rtl.min.css index 4185712..c062ddc 100644 --- a/wp-admin/css/revisions-rtl.min.css +++ b/wp-admin/css/revisions-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-diff-frame{top:10px}.revisions-controls{padding-top:40px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-right:1px solid #a7aaad;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:calc(100% - 30px);top:50%;top:calc(50% - 10px);transition:opacity .5s}body.folded .revisions .loading-indicator{margin-right:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1}.revisions .diff{transition:opacity .5s}.revisions.loading .diff{opacity:.5}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden}.revisions.pinned .revisions-meta{box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;left:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#646970}.revisions-controls .author-card.autosave{color:#d63638}.revisions-controls .author-card .author-name{font-weight:600}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:right}.revisions-next{float:left}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.57142857;padding:.5em 2em .5em .5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}table.diff .diff-deletedline{position:relative;background-color:#fcf0f1}table.diff .diff-deletedline del{background-color:#ffabaf}table.diff .diff-addedline{position:relative;background-color:#edfaef}table.diff .diff-addedline .dashicons,table.diff .diff-deletedline .dashicons{position:absolute;top:.85714286em;right:.5em;width:1em;height:1em;font-size:1em;line-height:1}table.diff .diff-addedline .dashicons{top:.92857143em}table.diff .diff-addedline ins{background-color:#68de7c}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:2.46153846;min-width:60px;text-align:left;float:right;margin-left:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:1.33333333}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:right;margin-right:6px;margin-left:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:left;margin-right:6px;margin-left:6px;margin-top:2px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-left:0;margin-right:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;display:none;opacity:0}.revisions-tooltip.flipped{margin-right:0;margin-left:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;right:0;margin-right:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-right:0;margin-left:35px;right:auto;left:0}.revisions-tooltip-arrow>span{content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:auto;left:20px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #dcdcde;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;right:0;margin-right:-35px;bottom:90px;z-index:10000}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow.top{top:-16px;bottom:auto}.arrow.left{right:20%}.arrow:after{content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #dcdcde;text-align:right;cursor:pointer}.wp-slider .ui-slider-handle{border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f6f7f7;border:1px solid #c3c4c7;box-shadow:0 1px 0 #c3c4c7}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#f6f7f7;border-color:#8c8f94}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;right:2px;color:#50575e;content:"\f229";font:normal 18px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#1d2327}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px -1px 0 0}.wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f141";left:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-color:transparent;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-right:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{right:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{left:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}.revisions-buttons{overflow:hidden;margin-bottom:15px}.comparing-two-revisions .revisions-controls,.revisions-controls{height:170px}.revisions-tooltip{bottom:130px;z-index:2}.diff-meta{overflow:hidden}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}.diff-meta input.restore-revision{margin-top:0}} \ No newline at end of file +.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-controls{padding-top:40px;height:100px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-right:1px solid #a0a5aa;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:calc(100% - 30px);top:50%;top:calc(50% - 10px);transition:opacity .5s;filter:alpha(opacity=0)}body.folded .revisions .loading-indicator{margin-right:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1;filter:alpha(opacity=100)}.revisions .diff{transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;left:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#72777c}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:600}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:right}.revisions-next{float:left}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff tbody tr td:nth-child(2){width:4%}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.618;padding:.5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}table.diff .diff-deletedline{background-color:#ffe9e9}table.diff .diff-deletedline del{background-color:#faa}table.diff .diff-addedline{background-color:#e9ffe9}table.diff .diff-addedline ins{background-color:#afa}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:32px;min-width:60px;text-align:left;float:right;margin-left:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:16px}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:right;margin-right:6px;margin-left:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:left;margin-right:6px;margin-left:6px;margin-top:4px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-left:0;margin-right:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;display:none;opacity:0}.revisions-tooltip.flipped{margin-right:0;margin-left:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;right:0;margin-right:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-right:0;margin-left:35px;right:auto;left:0}.revisions-tooltip-arrow>span{content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:auto;left:20px}.ie8 .revisions-tooltip-arrow>span{right:15px;top:-25px;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"}.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:25px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #ddd;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;right:0;margin-right:-35px;bottom:90px;z-index:10000}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow.top{top:-16px;bottom:auto}.arrow.left{right:20%}.arrow:after{content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #ddd;text-align:right;cursor:pointer}.wp-slider .ui-slider-handle{border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f7f7f7;border:1px solid #ccc;box-shadow:0 1px 0 #ccc}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#fafafa;border-color:#999}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;right:2px;color:#555;content:"\f229";font:normal 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#23282d}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px -1px 0 0}.wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f141";left:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-color:transparent;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-right:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{right:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{left:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}} \ No newline at end of file diff --git a/wp-admin/css/revisions.css b/wp-admin/css/revisions.css index e523ee4..c900a49 100644 --- a/wp-admin/css/revisions.css +++ b/wp-admin/css/revisions.css @@ -6,12 +6,9 @@ position: relative; } -.revisions-diff-frame { - top: 10px; -} - .revisions-controls { padding-top: 40px; + height: 100px; z-index: 1; } @@ -26,7 +23,7 @@ top: 0; height: 82px; background: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .revisions-tickmarks { @@ -42,7 +39,7 @@ .revisions-tickmarks > div { position: absolute; height: 100%; - border-left: 1px solid #a7aaad; + border-left: 1px solid #a0a5aa; box-sizing: border-box; } @@ -79,6 +76,7 @@ top: 50%; top: calc( 50% - 10px ); transition: opacity 0.5s; + filter: alpha(opacity=0); /* ie8 and earlier */ } body.folded .revisions .loading-indicator { @@ -93,6 +91,7 @@ body.folded .revisions .loading-indicator { .revisions.loading .loading-indicator { opacity: 1; + filter: alpha(opacity=100); /* ie8 and earlier */ } .revisions .diff { @@ -101,6 +100,7 @@ body.folded .revisions .loading-indicator { .revisions.loading .diff { opacity: 0.5; + filter: alpha(opacity=50); /* ie8 and earlier */ } .revisions.diff-error .diff { @@ -110,8 +110,7 @@ body.folded .revisions .loading-indicator { .revisions-meta { margin-top: 20px; background-color: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - overflow: hidden; + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .revisions.pinned .revisions-meta { @@ -131,11 +130,11 @@ body.folded .revisions .loading-indicator { } .revisions-controls .author-card .date { - color: #646970; + color: #72777c; } .revisions-controls .author-card.autosave { - color: #d63638; + color: #d54e21; } .revisions-controls .author-card .author-name { @@ -173,7 +172,7 @@ body.folded .revisions .loading-indicator { .revisions-diff { padding: 15px; background-color: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .revisions-diff h3:first-child { @@ -186,6 +185,10 @@ body.folded .revisions .loading-indicator { vertical-align: middle; } +table.diff tbody tr td:nth-child(2) { + width: 4%; +} + table.diff { table-layout: fixed; width: 100%; @@ -216,8 +219,8 @@ table.diff td, table.diff th { font-family: Consolas, Monaco, monospace; font-size: 14px; - line-height: 1.57142857; - padding: 0.5em 0.5em 0.5em 2em; + line-height: 1.618; + padding: .5em; vertical-align: top; word-wrap: break-word; } @@ -237,37 +240,19 @@ table.diff .diff-addedline ins { } table.diff .diff-deletedline { - position: relative; - background-color: #fcf0f1; + background-color: #ffe9e9; } table.diff .diff-deletedline del { - background-color: #ffabaf; + background-color: #faa; } table.diff .diff-addedline { - position: relative; - background-color: #edfaef; -} - -table.diff .diff-deletedline .dashicons, -table.diff .diff-addedline .dashicons { - position: absolute; - top: 0.85714286em; - left: 0.5em; - width: 1em; - height: 1em; - font-size: 1em; - line-height: 1; -} - -table.diff .diff-addedline .dashicons { - /* Compensate the vertically non-centered plus glyph. */ - top: 0.92857143em; + background-color: #e9ffe9; } table.diff .diff-addedline ins { - background-color: #68de7c; + background-color: #afa; } .diff-meta { @@ -277,7 +262,7 @@ table.diff .diff-addedline ins { } .diff-title strong { - line-height: 2.46153846; + line-height: 32px; min-width: 60px; text-align: right; float: left; @@ -286,7 +271,7 @@ table.diff .diff-addedline ins { .revisions-controls .author-card .author-info { font-size: 12px; - line-height: 1.33333333; + line-height: 16px; } .revisions-controls .author-card .avatar, @@ -309,7 +294,7 @@ table.diff .diff-addedline ins { float: right; margin-left: 6px; margin-right: 6px; - margin-top: 2px; + margin-top: 4px; } .diff-meta-from { @@ -378,9 +363,19 @@ table.diff .diff-addedline ins { right: 20px; } +.ie8 .revisions-tooltip-arrow > span { + left: 15px; + top: -25px; + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"; +} + +.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow > span { + right: 25px; +} + .revisions-tooltip, .revisions-tooltip-arrow > span { - border: 1px solid #dcdcde; + border: 1px solid #ddd; background-color: #fff; } @@ -402,7 +397,7 @@ table.diff .diff-addedline ins { .arrow:after { z-index: 9999; background-color: #fff; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .arrow.top { @@ -441,7 +436,7 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { /* jQuery UI Slider */ .wp-slider.ui-slider { position: relative; - border: 1px solid #dcdcde; + border: 1px solid #ddd; text-align: left; cursor: pointer; } @@ -460,41 +455,42 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { .wp-slider .ui-slider-handle, .wp-slider .ui-slider-handle.focus { - background: #f6f7f7; - border: 1px solid #c3c4c7; - box-shadow: 0 1px 0 #c3c4c7; + background: #f7f7f7; + border: 1px solid #ccc; + box-shadow: 0 1px 0 #cccccc; } .wp-slider .ui-slider-handle:hover, .wp-slider .ui-slider-handle.ui-state-hover { - background: #f6f7f7; - border-color: #8c8f94; + background: #fafafa; + border-color: #999; } .wp-slider .ui-slider-handle:active, .wp-slider .ui-slider-handle.ui-state-active { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); - transform: translateY(1px); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } + .wp-slider .ui-slider-handle:before { background: none; position: absolute; top: 2px; left: 2px; - color: #50575e; + color: #555; content: "\f229"; font: normal 18px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .wp-slider .ui-slider-handle:hover:before, .wp-slider .ui-slider-handle.ui-state-hover:before { - color: #1d2327; + color: #23282d; } .wp-slider .ui-slider-handle.from-handle:before, @@ -522,7 +518,7 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { .wp-slider .ui-slider-range { position: absolute; - font-size: 0.7em; + font-size: .7em; display: block; border: 0; background-color: transparent; @@ -530,7 +526,7 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { } .wp-slider.ui-slider-horizontal { - height: 0.7em; + height: .7em; } .wp-slider.ui-slider-horizontal .ui-slider-handle { @@ -565,38 +561,15 @@ div.revisions-controls > .wp-slider > .ui-slider-handle { } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { #diff-next-revision, #diff-previous-revision { margin-top: -1em; } - .revisions-buttons { - overflow: hidden; - margin-bottom: 15px; - } - - .revisions-controls, - .comparing-two-revisions .revisions-controls { - height: 170px; - } - - .revisions-tooltip { - bottom: 130px; - z-index: 2; - } - - .diff-meta { - overflow: hidden; - } - table.diff { -ms-word-break: break-all; word-break: break-all; word-wrap: break-word; } - - .diff-meta input.restore-revision { - margin-top: 0; - } } diff --git a/wp-admin/css/revisions.min.css b/wp-admin/css/revisions.min.css index 07cdf1d..a3cc4ac 100644 --- a/wp-admin/css/revisions.min.css +++ b/wp-admin/css/revisions.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-diff-frame{top:10px}.revisions-controls{padding-top:40px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-left:1px solid #a7aaad;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:calc(100% - 30px);top:50%;top:calc(50% - 10px);transition:opacity .5s}body.folded .revisions .loading-indicator{margin-left:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1}.revisions .diff{transition:opacity .5s}.revisions.loading .diff{opacity:.5}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);overflow:hidden}.revisions.pinned .revisions-meta{box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;right:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#646970}.revisions-controls .author-card.autosave{color:#d63638}.revisions-controls .author-card .author-name{font-weight:600}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:left}.revisions-next{float:right}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.57142857;padding:.5em .5em .5em 2em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}table.diff .diff-deletedline{position:relative;background-color:#fcf0f1}table.diff .diff-deletedline del{background-color:#ffabaf}table.diff .diff-addedline{position:relative;background-color:#edfaef}table.diff .diff-addedline .dashicons,table.diff .diff-deletedline .dashicons{position:absolute;top:.85714286em;left:.5em;width:1em;height:1em;font-size:1em;line-height:1}table.diff .diff-addedline .dashicons{top:.92857143em}table.diff .diff-addedline ins{background-color:#68de7c}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:2.46153846;min-width:60px;text-align:right;float:left;margin-right:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:1.33333333}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:left;margin-left:6px;margin-right:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:right;margin-left:6px;margin-right:6px;margin-top:2px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-right:0;margin-left:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;display:none;opacity:0}.revisions-tooltip.flipped{margin-left:0;margin-right:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;left:0;margin-left:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-left:0;margin-right:35px;left:auto;right:0}.revisions-tooltip-arrow>span{content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:auto;right:20px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #dcdcde;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;left:0;margin-left:-35px;bottom:90px;z-index:10000}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow.top{top:-16px;bottom:auto}.arrow.left{left:20%}.arrow:after{content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #dcdcde;text-align:left;cursor:pointer}.wp-slider .ui-slider-handle{border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f6f7f7;border:1px solid #c3c4c7;box-shadow:0 1px 0 #c3c4c7}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#f6f7f7;border-color:#8c8f94}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;left:2px;color:#50575e;content:"\f229";font:normal 18px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#1d2327}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px 0 0 -1px}.wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f139";right:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-color:transparent;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-left:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{left:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{right:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}.revisions-buttons{overflow:hidden;margin-bottom:15px}.comparing-two-revisions .revisions-controls,.revisions-controls{height:170px}.revisions-tooltip{bottom:130px;z-index:2}.diff-meta{overflow:hidden}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}.diff-meta input.restore-revision{margin-top:0}} \ No newline at end of file +.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-controls{padding-top:40px;height:100px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-left:1px solid #a0a5aa;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:calc(100% - 30px);top:50%;top:calc(50% - 10px);transition:opacity .5s;filter:alpha(opacity=0)}body.folded .revisions .loading-indicator{margin-left:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1;filter:alpha(opacity=100)}.revisions .diff{transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;right:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#72777c}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:600}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:left}.revisions-next{float:right}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff tbody tr td:nth-child(2){width:4%}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.618;padding:.5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}table.diff .diff-deletedline{background-color:#ffe9e9}table.diff .diff-deletedline del{background-color:#faa}table.diff .diff-addedline{background-color:#e9ffe9}table.diff .diff-addedline ins{background-color:#afa}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:32px;min-width:60px;text-align:right;float:left;margin-right:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:16px}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:left;margin-left:6px;margin-right:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:right;margin-left:6px;margin-right:6px;margin-top:4px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-right:0;margin-left:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;display:none;opacity:0}.revisions-tooltip.flipped{margin-left:0;margin-right:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;left:0;margin-left:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-left:0;margin-right:35px;left:auto;right:0}.revisions-tooltip-arrow>span{content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:auto;right:20px}.ie8 .revisions-tooltip-arrow>span{left:15px;top:-25px;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"}.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:25px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #ddd;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;left:0;margin-left:-35px;bottom:90px;z-index:10000}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow.top{top:-16px;bottom:auto}.arrow.left{left:20%}.arrow:after{content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #ddd;text-align:left;cursor:pointer}.wp-slider .ui-slider-handle{border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f7f7f7;border:1px solid #ccc;box-shadow:0 1px 0 #ccc}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#fafafa;border-color:#999}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;left:2px;color:#555;content:"\f229";font:normal 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#23282d}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px 0 0 -1px}.wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f139";right:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-color:transparent;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-left:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{left:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{right:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}} \ No newline at end of file diff --git a/wp-admin/css/site-health-rtl.css b/wp-admin/css/site-health-rtl.css deleted file mode 100644 index 18e6ce0..0000000 --- a/wp-admin/css/site-health-rtl.css +++ /dev/null @@ -1,357 +0,0 @@ -/* Note: Any Site Health selectors that use -duplicate styling from the Privacy settings screen -are styled in the Privacy section of edit.css */ - -.health-check-body h2 { - line-height: 1.4; -} - -.health-check-body h3 { - padding: 0; - font-weight: 400; -} - -.site-health-progress-wrapper { - margin-bottom: 1rem; -} - -.site-health-progress { - display: inline-block; - height: 20px; - width: 20px; - margin: 0; - border-radius: 100%; - position: relative; - font-weight: 600; - font-size: 0.4rem; -} - -.site-health-progress-count { - position: absolute; - display: block; - height: 80px; - width: 80px; - right: 50%; - top: 50%; - margin-top: -40px; - margin-right: -40px; - border-radius: 100%; - line-height: 6.3; - font-size: 2em; -} - -.loading .site-health-progress svg #bar { - stroke-dashoffset: 0; - stroke: #c3c4c7; - animation: loadingPulse 3s infinite ease-in-out; -} - -.site-health-progress svg circle { - stroke-dashoffset: 0; - transition: stroke-dashoffset 1s linear; - stroke: #c3c4c7; - stroke-width: 2em; -} - -.site-health-progress svg #bar { - stroke-dashoffset: 565; - stroke: #d63638; -} - -.green .site-health-progress #bar { - stroke: #00a32a; -} -.green .site-health-progress .site-health-progress-label { - color: #00a32a; -} - -.orange .site-health-progress #bar { - stroke: #dba617; -} -.orange .site-health-progress .site-health-progress-label { - color: #dba617; -} - -.site-health-progress-label { - font-weight: 600; - line-height: 20px; - margin-right: 0.3rem; -} - -@keyframes loadingPulse { - 0% { - stroke: #c3c4c7; - } - 50% { - stroke: #72aee6; - } - 100% { - stroke: #c3c4c7; - } -} - -.health-check-tabs-wrapper { - /* IE 11 */ - display: -ms-inline-grid; - -ms-grid-columns: 1fr 1fr 1fr 1fr; - vertical-align: top; - /* modern browsers */ - display: inline-grid; - grid-template-columns: 1fr 1fr 1fr 1fr; -} - -.health-check-tabs-wrapper.tab-count-1 { - grid-template-columns: 1fr; -} -.health-check-tabs-wrapper.tab-count-2 { - grid-template-columns: 1fr 1fr; -} -.health-check-tabs-wrapper.tab-count-3 { - grid-template-columns: 1fr 1fr 1fr; -} - -.health-check-tab { - display: block; /* IE 11 */ - text-decoration: none; - color: inherit; - padding: 0.5rem 1rem 1rem; - margin: 0 1rem; - transition: box-shadow 0.5s ease-in-out; -} - -.health-check-offscreen-nav-wrapper { - position: relative; - background: transparent; - border: none; -} -.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav { - right: initial; -} - -.health-check-offscreen-nav { - display: none; - position: absolute; - padding-top: 10px; - left: 0; - top: 100%; - width: 13rem; -} -.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav { - display: inline-block; -} -.health-check-offscreen-nav:before { - position: absolute; - content: ""; - width: 0; - height: 0; - border-style: solid; - border-width: 0 10px 5px; - border-color: transparent transparent #ffffff; - left: 20px; - top: 5px; -} - -.health-check-offscreen-nav .health-check-tab { - background: #fff; - box-shadow: 0 2px 5px 0 rgba( 0, 0, 0, 0.75 ); -} - -.health-check-offscreen-nav .health-check-tab.active { - box-shadow: inset -3px 0 #3582c4; - font-weight: 600; -} - -.health-check-body { - max-width: 800px; - margin: 0 auto; -} - -.health-check-table td:first-child { - width: 30%; -} - -.health-check-table td { - width: 70%; -} - -.health-check-table ul, -.health-check-table ol { - margin: 0; -} - -.health-check-body li { - line-height: 1.5; -} - -.health-check-body .pass::before, -.health-check-body .good::before { - content: "\f147"; - color: #00a32a; -} - -.health-check-body .warning::before { - content: "\f460"; - color: #dba617; -} - -.health-check-body .info::before { - content: "\f348"; - color: #72aee6; -} - -.health-check-body .fail::before, -.health-check-body .error::before { - content: "\f335"; - color: #d63638; -} - -.site-health-copy-buttons { - margin: 1rem 0; -} - -.site-health-copy-buttons .copy-button-wrapper { - display: inline-flex; - align-items: center; - margin: 0.5rem 0 1rem; -} - -.site-health-copy-buttons .success { - color: #008a20; - margin-right: 0.5rem; -} - -.site-status-has-issues.hide { - display: none; -} - -.site-health-view-more { - text-align: center; -} - -.site-health-issues-wrapper:first-of-type { - margin-top: 3rem; -} - -.site-health-issues-wrapper { - margin-bottom: 3rem; - margin-top: 2rem; -} - -.site-status-all-clear { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - height: 100%; - width: 100%; - margin: 0 0 3rem; -} - -@media all and (min-width: 784px) { - .site-status-all-clear { - margin: 2rem 0 5rem; - } -} - -.site-status-all-clear.hide { - display: none; -} - -.site-status-all-clear .dashicons { - font-size: 150px; - height: 150px; - margin-bottom: 2rem; - width: 150px; -} - -.site-status-all-clear .encouragement { - font-size: 1.5rem; - font-weight: 600; -} - -.site-status-all-clear p { - margin: 0; -} - -.wp-core-ui .button.site-health-view-passed { - position: relative; - padding-left: 40px; - padding-right: 20px; -} - -.health-check-wp-paths-sizes.spinner { - visibility: visible; - float: none; - margin: 0 4px; - flex-shrink: 0; -} - -/* Styling unique to the dashboard widget. */ -#dashboard_site_health .site-health-details { - padding-right: 16px; -} - -#dashboard_site_health .site-health-details p:first-child { - margin-top: 0; -} - -#dashboard_site_health .site-health-details p:last-child { - margin-bottom: 0; -} - -#dashboard_site_health .health-check-widget { - display: grid; - grid-template-columns: 1fr 2fr; - grid-auto-rows: minmax(64px, auto); - column-gap: 16px; - align-items: center; -} -#dashboard_site_health .site-health-progress-label { - margin-right: 0; -} - -.health-check-widget-title-section { - margin-bottom: 0; - text-align: center; -} - -@media screen and (max-width: 480px) { - #dashboard_site_health .health-check-widget { - grid-template-columns: 100%; - } -} - -@media screen and (max-width: 782px) { - - .site-health-issues-wrapper .health-check-accordion-trigger { - flex-direction: column; - align-items: flex-start; - } - - .health-check-accordion-trigger .badge { - margin: 1em 0 0; - } - - .health-check-table { - table-layout: fixed; - } - - .health-check-table td { - box-sizing: border-box; - display: block; - width: 100%; - word-wrap: break-word; - } - - .health-check-table td:first-child { - width: 100%; - padding-bottom: 0; - font-weight: 600; - } - - .wp-core-ui .site-health-copy-buttons .copy-button { - margin-bottom: 0; - } -} - diff --git a/wp-admin/css/site-health-rtl.min.css b/wp-admin/css/site-health-rtl.min.css deleted file mode 100644 index caea88c..0000000 --- a/wp-admin/css/site-health-rtl.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! This file is auto-generated */ -.health-check-body h2{line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.site-health-progress-wrapper{margin-bottom:1rem}.site-health-progress{display:inline-block;height:20px;width:20px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;right:50%;top:50%;margin-top:-40px;margin-right:-40px;border-radius:100%;line-height:6.3;font-size:2em}.loading .site-health-progress svg #bar{stroke-dashoffset:0;stroke:#c3c4c7;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#c3c4c7;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#d63638}.green .site-health-progress #bar{stroke:#00a32a}.green .site-health-progress .site-health-progress-label{color:#00a32a}.orange .site-health-progress #bar{stroke:#dba617}.orange .site-health-progress .site-health-progress-label{color:#dba617}.site-health-progress-label{font-weight:600;line-height:20px;margin-right:.3rem}@keyframes loadingPulse{0%{stroke:#c3c4c7}50%{stroke:#72aee6}100%{stroke:#c3c4c7}}.health-check-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr 1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr 1fr 1fr}.health-check-tabs-wrapper.tab-count-1{grid-template-columns:1fr}.health-check-tabs-wrapper.tab-count-2{grid-template-columns:1fr 1fr}.health-check-tabs-wrapper.tab-count-3{grid-template-columns:1fr 1fr 1fr}.health-check-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-offscreen-nav-wrapper{position:relative;background:0 0;border:none}.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav{right:initial}.health-check-offscreen-nav{display:none;position:absolute;padding-top:10px;left:0;top:100%;width:13rem}.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav{display:inline-block}.health-check-offscreen-nav:before{position:absolute;content:"";width:0;height:0;border-style:solid;border-width:0 10px 5px;border-color:transparent transparent #fff;left:20px;top:5px}.health-check-offscreen-nav .health-check-tab{background:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.75)}.health-check-offscreen-nav .health-check-tab.active{box-shadow:inset -3px 0 #3582c4;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";color:#00a32a}.health-check-body .warning::before{content:"\f460";color:#dba617}.health-check-body .info::before{content:"\f348";color:#72aee6}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";color:#d63638}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{display:inline-flex;align-items:center;margin:.5rem 0 1rem}.site-health-copy-buttons .success{color:#008a20;margin-right:.5rem}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin:0 0 3rem}@media all and (min-width:784px){.site-status-all-clear{margin:2rem 0 5rem}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:150px;margin-bottom:2rem;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.wp-core-ui .button.site-health-view-passed{position:relative;padding-left:40px;padding-right:20px}.health-check-wp-paths-sizes.spinner{visibility:visible;float:none;margin:0 4px;flex-shrink:0}#dashboard_site_health .site-health-details{padding-right:16px}#dashboard_site_health .site-health-details p:first-child{margin-top:0}#dashboard_site_health .site-health-details p:last-child{margin-bottom:0}#dashboard_site_health .health-check-widget{display:grid;grid-template-columns:1fr 2fr;grid-auto-rows:minmax(64px,auto);column-gap:16px;align-items:center}#dashboard_site_health .site-health-progress-label{margin-right:0}.health-check-widget-title-section{margin-bottom:0;text-align:center}@media screen and (max-width:480px){#dashboard_site_health .health-check-widget{grid-template-columns:100%}}@media screen and (max-width:782px){.site-health-issues-wrapper .health-check-accordion-trigger{flex-direction:column;align-items:flex-start}.health-check-accordion-trigger .badge{margin:1em 0 0}.health-check-table{table-layout:fixed}.health-check-table td{box-sizing:border-box;display:block;width:100%;word-wrap:break-word}.health-check-table td:first-child{width:100%;padding-bottom:0;font-weight:600}.wp-core-ui .site-health-copy-buttons .copy-button{margin-bottom:0}} \ No newline at end of file diff --git a/wp-admin/css/site-health.css b/wp-admin/css/site-health.css deleted file mode 100644 index da65a93..0000000 --- a/wp-admin/css/site-health.css +++ /dev/null @@ -1,357 +0,0 @@ -/* Note: Any Site Health selectors that use -duplicate styling from the Privacy settings screen -are styled in the Privacy section of edit.css */ - -.health-check-body h2 { - line-height: 1.4; -} - -.health-check-body h3 { - padding: 0; - font-weight: 400; -} - -.site-health-progress-wrapper { - margin-bottom: 1rem; -} - -.site-health-progress { - display: inline-block; - height: 20px; - width: 20px; - margin: 0; - border-radius: 100%; - position: relative; - font-weight: 600; - font-size: 0.4rem; -} - -.site-health-progress-count { - position: absolute; - display: block; - height: 80px; - width: 80px; - left: 50%; - top: 50%; - margin-top: -40px; - margin-left: -40px; - border-radius: 100%; - line-height: 6.3; - font-size: 2em; -} - -.loading .site-health-progress svg #bar { - stroke-dashoffset: 0; - stroke: #c3c4c7; - animation: loadingPulse 3s infinite ease-in-out; -} - -.site-health-progress svg circle { - stroke-dashoffset: 0; - transition: stroke-dashoffset 1s linear; - stroke: #c3c4c7; - stroke-width: 2em; -} - -.site-health-progress svg #bar { - stroke-dashoffset: 565; - stroke: #d63638; -} - -.green .site-health-progress #bar { - stroke: #00a32a; -} -.green .site-health-progress .site-health-progress-label { - color: #00a32a; -} - -.orange .site-health-progress #bar { - stroke: #dba617; -} -.orange .site-health-progress .site-health-progress-label { - color: #dba617; -} - -.site-health-progress-label { - font-weight: 600; - line-height: 20px; - margin-left: 0.3rem; -} - -@keyframes loadingPulse { - 0% { - stroke: #c3c4c7; - } - 50% { - stroke: #72aee6; - } - 100% { - stroke: #c3c4c7; - } -} - -.health-check-tabs-wrapper { - /* IE 11 */ - display: -ms-inline-grid; - -ms-grid-columns: 1fr 1fr 1fr 1fr; - vertical-align: top; - /* modern browsers */ - display: inline-grid; - grid-template-columns: 1fr 1fr 1fr 1fr; -} - -.health-check-tabs-wrapper.tab-count-1 { - grid-template-columns: 1fr; -} -.health-check-tabs-wrapper.tab-count-2 { - grid-template-columns: 1fr 1fr; -} -.health-check-tabs-wrapper.tab-count-3 { - grid-template-columns: 1fr 1fr 1fr; -} - -.health-check-tab { - display: block; /* IE 11 */ - text-decoration: none; - color: inherit; - padding: 0.5rem 1rem 1rem; - margin: 0 1rem; - transition: box-shadow 0.5s ease-in-out; -} - -.health-check-offscreen-nav-wrapper { - position: relative; - background: transparent; - border: none; -} -.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav { - left: initial; -} - -.health-check-offscreen-nav { - display: none; - position: absolute; - padding-top: 10px; - right: 0; - top: 100%; - width: 13rem; -} -.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav { - display: inline-block; -} -.health-check-offscreen-nav:before { - position: absolute; - content: ""; - width: 0; - height: 0; - border-style: solid; - border-width: 0 10px 5px; - border-color: transparent transparent #ffffff; - right: 20px; - top: 5px; -} - -.health-check-offscreen-nav .health-check-tab { - background: #fff; - box-shadow: 0 2px 5px 0 rgba( 0, 0, 0, 0.75 ); -} - -.health-check-offscreen-nav .health-check-tab.active { - box-shadow: inset 3px 0 #3582c4; - font-weight: 600; -} - -.health-check-body { - max-width: 800px; - margin: 0 auto; -} - -.health-check-table td:first-child { - width: 30%; -} - -.health-check-table td { - width: 70%; -} - -.health-check-table ul, -.health-check-table ol { - margin: 0; -} - -.health-check-body li { - line-height: 1.5; -} - -.health-check-body .pass::before, -.health-check-body .good::before { - content: "\f147"; - color: #00a32a; -} - -.health-check-body .warning::before { - content: "\f460"; - color: #dba617; -} - -.health-check-body .info::before { - content: "\f348"; - color: #72aee6; -} - -.health-check-body .fail::before, -.health-check-body .error::before { - content: "\f335"; - color: #d63638; -} - -.site-health-copy-buttons { - margin: 1rem 0; -} - -.site-health-copy-buttons .copy-button-wrapper { - display: inline-flex; - align-items: center; - margin: 0.5rem 0 1rem; -} - -.site-health-copy-buttons .success { - color: #008a20; - margin-left: 0.5rem; -} - -.site-status-has-issues.hide { - display: none; -} - -.site-health-view-more { - text-align: center; -} - -.site-health-issues-wrapper:first-of-type { - margin-top: 3rem; -} - -.site-health-issues-wrapper { - margin-bottom: 3rem; - margin-top: 2rem; -} - -.site-status-all-clear { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; - height: 100%; - width: 100%; - margin: 0 0 3rem; -} - -@media all and (min-width: 784px) { - .site-status-all-clear { - margin: 2rem 0 5rem; - } -} - -.site-status-all-clear.hide { - display: none; -} - -.site-status-all-clear .dashicons { - font-size: 150px; - height: 150px; - margin-bottom: 2rem; - width: 150px; -} - -.site-status-all-clear .encouragement { - font-size: 1.5rem; - font-weight: 600; -} - -.site-status-all-clear p { - margin: 0; -} - -.wp-core-ui .button.site-health-view-passed { - position: relative; - padding-right: 40px; - padding-left: 20px; -} - -.health-check-wp-paths-sizes.spinner { - visibility: visible; - float: none; - margin: 0 4px; - flex-shrink: 0; -} - -/* Styling unique to the dashboard widget. */ -#dashboard_site_health .site-health-details { - padding-left: 16px; -} - -#dashboard_site_health .site-health-details p:first-child { - margin-top: 0; -} - -#dashboard_site_health .site-health-details p:last-child { - margin-bottom: 0; -} - -#dashboard_site_health .health-check-widget { - display: grid; - grid-template-columns: 1fr 2fr; - grid-auto-rows: minmax(64px, auto); - column-gap: 16px; - align-items: center; -} -#dashboard_site_health .site-health-progress-label { - margin-left: 0; -} - -.health-check-widget-title-section { - margin-bottom: 0; - text-align: center; -} - -@media screen and (max-width: 480px) { - #dashboard_site_health .health-check-widget { - grid-template-columns: 100%; - } -} - -@media screen and (max-width: 782px) { - - .site-health-issues-wrapper .health-check-accordion-trigger { - flex-direction: column; - align-items: flex-start; - } - - .health-check-accordion-trigger .badge { - margin: 1em 0 0; - } - - .health-check-table { - table-layout: fixed; - } - - .health-check-table td { - box-sizing: border-box; - display: block; - width: 100%; - word-wrap: break-word; - } - - .health-check-table td:first-child { - width: 100%; - padding-bottom: 0; - font-weight: 600; - } - - .wp-core-ui .site-health-copy-buttons .copy-button { - margin-bottom: 0; - } -} - diff --git a/wp-admin/css/site-health.min.css b/wp-admin/css/site-health.min.css deleted file mode 100644 index d469f2d..0000000 --- a/wp-admin/css/site-health.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! This file is auto-generated */ -.health-check-body h2{line-height:1.4}.health-check-body h3{padding:0;font-weight:400}.site-health-progress-wrapper{margin-bottom:1rem}.site-health-progress{display:inline-block;height:20px;width:20px;margin:0;border-radius:100%;position:relative;font-weight:600;font-size:.4rem}.site-health-progress-count{position:absolute;display:block;height:80px;width:80px;left:50%;top:50%;margin-top:-40px;margin-left:-40px;border-radius:100%;line-height:6.3;font-size:2em}.loading .site-health-progress svg #bar{stroke-dashoffset:0;stroke:#c3c4c7;animation:loadingPulse 3s infinite ease-in-out}.site-health-progress svg circle{stroke-dashoffset:0;transition:stroke-dashoffset 1s linear;stroke:#c3c4c7;stroke-width:2em}.site-health-progress svg #bar{stroke-dashoffset:565;stroke:#d63638}.green .site-health-progress #bar{stroke:#00a32a}.green .site-health-progress .site-health-progress-label{color:#00a32a}.orange .site-health-progress #bar{stroke:#dba617}.orange .site-health-progress .site-health-progress-label{color:#dba617}.site-health-progress-label{font-weight:600;line-height:20px;margin-left:.3rem}@keyframes loadingPulse{0%{stroke:#c3c4c7}50%{stroke:#72aee6}100%{stroke:#c3c4c7}}.health-check-tabs-wrapper{display:-ms-inline-grid;-ms-grid-columns:1fr 1fr 1fr 1fr;vertical-align:top;display:inline-grid;grid-template-columns:1fr 1fr 1fr 1fr}.health-check-tabs-wrapper.tab-count-1{grid-template-columns:1fr}.health-check-tabs-wrapper.tab-count-2{grid-template-columns:1fr 1fr}.health-check-tabs-wrapper.tab-count-3{grid-template-columns:1fr 1fr 1fr}.health-check-tab{display:block;text-decoration:none;color:inherit;padding:.5rem 1rem 1rem;margin:0 1rem;transition:box-shadow .5s ease-in-out}.health-check-offscreen-nav-wrapper{position:relative;background:0 0;border:none}.health-check-offscreen-nav-wrapper:focus .health-check-offscreen-nav{left:initial}.health-check-offscreen-nav{display:none;position:absolute;padding-top:10px;right:0;top:100%;width:13rem}.health-check-offscreen-nav-wrapper.visible .health-check-offscreen-nav{display:inline-block}.health-check-offscreen-nav:before{position:absolute;content:"";width:0;height:0;border-style:solid;border-width:0 10px 5px;border-color:transparent transparent #fff;right:20px;top:5px}.health-check-offscreen-nav .health-check-tab{background:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,.75)}.health-check-offscreen-nav .health-check-tab.active{box-shadow:inset 3px 0 #3582c4;font-weight:600}.health-check-body{max-width:800px;margin:0 auto}.health-check-table td:first-child{width:30%}.health-check-table td{width:70%}.health-check-table ol,.health-check-table ul{margin:0}.health-check-body li{line-height:1.5}.health-check-body .good::before,.health-check-body .pass::before{content:"\f147";color:#00a32a}.health-check-body .warning::before{content:"\f460";color:#dba617}.health-check-body .info::before{content:"\f348";color:#72aee6}.health-check-body .error::before,.health-check-body .fail::before{content:"\f335";color:#d63638}.site-health-copy-buttons{margin:1rem 0}.site-health-copy-buttons .copy-button-wrapper{display:inline-flex;align-items:center;margin:.5rem 0 1rem}.site-health-copy-buttons .success{color:#008a20;margin-left:.5rem}.site-status-has-issues.hide{display:none}.site-health-view-more{text-align:center}.site-health-issues-wrapper:first-of-type{margin-top:3rem}.site-health-issues-wrapper{margin-bottom:3rem;margin-top:2rem}.site-status-all-clear{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;height:100%;width:100%;margin:0 0 3rem}@media all and (min-width:784px){.site-status-all-clear{margin:2rem 0 5rem}}.site-status-all-clear.hide{display:none}.site-status-all-clear .dashicons{font-size:150px;height:150px;margin-bottom:2rem;width:150px}.site-status-all-clear .encouragement{font-size:1.5rem;font-weight:600}.site-status-all-clear p{margin:0}.wp-core-ui .button.site-health-view-passed{position:relative;padding-right:40px;padding-left:20px}.health-check-wp-paths-sizes.spinner{visibility:visible;float:none;margin:0 4px;flex-shrink:0}#dashboard_site_health .site-health-details{padding-left:16px}#dashboard_site_health .site-health-details p:first-child{margin-top:0}#dashboard_site_health .site-health-details p:last-child{margin-bottom:0}#dashboard_site_health .health-check-widget{display:grid;grid-template-columns:1fr 2fr;grid-auto-rows:minmax(64px,auto);column-gap:16px;align-items:center}#dashboard_site_health .site-health-progress-label{margin-left:0}.health-check-widget-title-section{margin-bottom:0;text-align:center}@media screen and (max-width:480px){#dashboard_site_health .health-check-widget{grid-template-columns:100%}}@media screen and (max-width:782px){.site-health-issues-wrapper .health-check-accordion-trigger{flex-direction:column;align-items:flex-start}.health-check-accordion-trigger .badge{margin:1em 0 0}.health-check-table{table-layout:fixed}.health-check-table td{box-sizing:border-box;display:block;width:100%;word-wrap:break-word}.health-check-table td:first-child{width:100%;padding-bottom:0;font-weight:600}.wp-core-ui .site-health-copy-buttons .copy-button{margin-bottom:0}} \ No newline at end of file diff --git a/wp-admin/css/themes-rtl.css b/wp-admin/css/themes-rtl.css index 57c8839..dbf8e56 100644 --- a/wp-admin/css/themes-rtl.css +++ b/wp-admin/css/themes-rtl.css @@ -7,10 +7,6 @@ 16.1 - Manage Themes ------------------------------------------------------------------------------*/ -.themes-php { - overflow-y: scroll; -} - body.js .theme-browser.search-loading { display: none; } @@ -38,17 +34,22 @@ body.js .theme-browser.search-loading { right: 20px; margin: 0; width: 280px; + font-size: 16px; + font-weight: 300; + line-height: 1.5; } /* Position admin messages */ -.theme .notice, -.theme .notice.is-dismissible { +.theme .notices { right: 0; margin: 0; position: absolute; left: 0; top: 0; } +.theme .notices .notice { + margin: 0; +} /** * Main theme element @@ -60,17 +61,22 @@ body.js .theme-browser.search-loading { margin: 0 0 4% 4%; position: relative; width: 30.6%; - border: 1px solid #dcdcde; - box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1); + border: 1px solid #ddd; + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); box-sizing: border-box; } +.ie8 .theme-browser .theme { + width: 30%; + margin: 0 0 4% 3%; +} + .theme-browser .theme:nth-child(3n) { margin-left: 0; } .theme-browser .theme:hover, -.theme-browser .theme.focus { +.theme-browser .theme:focus { cursor: pointer; } @@ -80,12 +86,12 @@ body.js .theme-browser.search-loading { height: 18px; margin: 0; padding: 15px; - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; background: #fff; - background: rgba(255, 255, 255, 0.65); + background: rgba(255,255,255,0.65); } /* Activate and Customize buttons, shown on hover and focus */ @@ -94,12 +100,13 @@ body.js .theme-browser.search-loading { opacity: 0; transition: opacity 0.1s ease-in-out; height: auto; - background: rgba(246, 247, 247, 0.7); - border-right: 1px solid rgba(0, 0, 0, 0.05); + background: rgba(244, 244, 244, 0.7); + border-right: 1px solid rgba(0,0,0,0.05); } .theme-browser .theme:hover .theme-actions, -.theme-browser .theme.focus .theme-actions { +.theme-browser .theme.focus .theme-actions, +.theme-browser .theme:focus .theme-actions { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; opacity: 1; } @@ -143,12 +150,12 @@ body.js .theme-browser.search-loading { } .theme-browser .theme:hover .theme-screenshot, -.theme-browser .theme.focus .theme-screenshot { +.theme-browser .theme:focus .theme-screenshot { background: #fff; } .theme-browser.rendered .theme:hover .theme-screenshot img, -.theme-browser.rendered .theme.focus .theme-screenshot img { +.theme-browser.rendered .theme:focus .theme-screenshot img { opacity: 0.4; } @@ -159,42 +166,35 @@ body.js .theme-browser.search-loading { top: 35%; left: 20%; right: 20%; - width: 60%; - background: #1d2327; - background: rgba(0, 0, 0, 0.7); + background: #23282d; + background: rgba(0,0,0,0.7); color: #fff; font-size: 15px; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6); + text-shadow: 0 1px 0 rgba(0,0,0,0.6); -webkit-font-smoothing: antialiased; font-weight: 600; padding: 15px 12px; text-align: center; border-radius: 3px; - border: none; transition: opacity 0.1s ease-in-out; - cursor: pointer; -} - -.theme-browser .theme .more-details:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #2271b1; } -.theme-browser .theme.focus { - border-color: #4f94d4; - box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); +.theme-browser .theme:focus { + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); } -.theme-browser .theme.focus .more-details { +.theme-browser .theme:focus .more-details { opacity: 1; } /* Current theme needs to have its action always on view */ -.theme-browser .theme.active.focus .theme-actions { +.theme-browser .theme.active:focus .theme-actions { display: block; } .theme-browser.rendered .theme:hover .more-details, -.theme-browser.rendered .theme.focus .more-details { +.theme-browser.rendered .theme:focus .more-details { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; opacity: 1; } @@ -203,11 +203,11 @@ body.js .theme-browser.search-loading { * The currently active theme */ .theme-browser .theme.active .theme-name { - background: #1d2327; + background: #23282d; color: #fff; padding-left: 110px; font-weight: 300; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.5); } .theme-browser .customize-control .theme.active .theme-name { @@ -219,7 +219,7 @@ body.js .theme-browser.search-loading { } .theme-browser .theme.active .theme-actions { - background: rgba(44, 51, 56, 0.7); + background: rgba(49,49,49,0.7); border-right: none; opacity: 1; } @@ -234,8 +234,8 @@ body.js .theme-browser.search-loading { top: 50%; transform: translateY(-50%); left: 0; - padding: 9px 15px; - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); } .theme-browser .theme.active .theme-actions .button-primary { @@ -243,8 +243,8 @@ body.js .theme-browser.search-loading { } .theme-browser .theme .theme-author { - background: #1d2327; - color: #f0f0f1; + background: #23282d; + color: #eee; display: none; font-size: 14px; margin: 0 10px; @@ -259,6 +259,7 @@ body.js .theme-browser.search-loading { .theme-browser .theme.display-author .theme-author a { color: inherit; + text-decoration: none; } /** @@ -288,14 +289,14 @@ body.js .theme-browser.search-loading { bottom: 0; padding: 0; text-shadow: none; - border: 5px dashed #dcdcde; + border: 5px dashed #d5d2ca; border: 5px dashed rgba(0, 0, 0, 0.1); box-sizing: border-box; } .theme-browser .theme.add-new-theme span:after { - background: #dcdcde; - background: rgba(140, 143, 148, 0.1); + background: #e5e5e5; + background: rgba(153, 153, 153, 0.1); border-radius: 50%; display: inline-block; content: "\f132"; @@ -305,7 +306,7 @@ body.js .theme-browser.search-loading { height: 100px; vertical-align: middle; text-align: center; - color: #8c8f94; + color: rgb(153, 153, 153); position: absolute; top: 30%; right: 50%; @@ -313,7 +314,7 @@ body.js .theme-browser.search-loading { text-indent: -4px; padding: 0; text-shadow: none; - z-index: 4; + z-index:4; } .rtl .theme-browser .theme.add-new-theme span:after { @@ -328,14 +329,14 @@ body.js .theme-browser.search-loading { .theme-browser .theme.add-new-theme a:hover span:after, .theme-browser .theme.add-new-theme a:focus span:after { background: #fff; - color: #2271b1; + color: #0073aa; } .theme-browser .theme.add-new-theme a:hover:after, .theme-browser .theme.add-new-theme a:focus:after { border-color: transparent; color: #fff; - background: #2271b1; + background: #0073aa; content: ""; } @@ -367,8 +368,8 @@ body.js .theme-browser.search-loading { left: 0; top: 0; bottom: 0; - background: #f0f0f1; - background: rgba(240, 240, 241, 0.9); + background: #f1f1f1; + background: rgba( 238, 238, 238, 0.9 ); z-index: 10000; /* Over WP Pointers. */ } @@ -378,7 +379,7 @@ body.js .theme-browser.search-loading { right: 0; left: 0; height: 48px; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } .theme-overlay .theme-header button { @@ -392,14 +393,14 @@ body.js .theme-browser.search-loading { text-align: center; float: left; border: 0; - border-right: 1px solid #dcdcde; + border-right: 1px solid #ddd; background-color: transparent; transition: color .1s ease-in-out, background .1s ease-in-out; } .theme-overlay .theme-header .close:before { font: normal 22px/50px dashicons !important; - color: #787c82; + color: #72777c; display: inline-block; content: "\f335"; font-weight: 300; @@ -409,14 +410,14 @@ body.js .theme-browser.search-loading { .theme-overlay .theme-header .right, .theme-overlay .theme-header .left { cursor: pointer; - color: #787c82; + color: #72777c; background-color: transparent; height: 48px; width: 54px; float: right; text-align: center; border: 0; - border-left: 1px solid #dcdcde; + border-left: 1px solid #ddd; transition: color .1s ease-in-out, background .1s ease-in-out; } @@ -426,8 +427,8 @@ body.js .theme-browser.search-loading { .theme-overlay .theme-header .right:hover, .theme-overlay .theme-header .left:focus, .theme-overlay .theme-header .left:hover { - background: #dcdcde; - border-color: #c3c4c7; + background: #ddd; + border-color: #ccc; color: #000; } @@ -439,15 +440,15 @@ body.js .theme-browser.search-loading { .theme-overlay .theme-header .close:focus, .theme-overlay .theme-header .right:focus, .theme-overlay .theme-header .left:focus { - box-shadow: none; - outline: none; + box-shadow: none; + outline: none; } .theme-overlay .theme-header .left.disabled, .theme-overlay .theme-header .right.disabled, .theme-overlay .theme-header .left.disabled:hover, .theme-overlay .theme-header .right.disabled:hover { - color: #c3c4c7; + color: #ccc; background: inherit; cursor: inherit; } @@ -502,10 +503,14 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { right: 0; left: 0; padding: 10px 25px 5px; - background: #f6f7f7; + background: #f3f3f3; z-index: 30; box-sizing: border-box; - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; +} + +.ie8 .theme-overlay .theme-actions { + border: 1px solid #eee; } .theme-overlay .theme-actions a { @@ -521,7 +526,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .broken-themes a.delete-theme, .theme-overlay .theme-actions .delete-theme { - color: #d63638; + color: #a00; text-decoration: none; border-color: transparent; box-shadow: none; @@ -538,9 +543,9 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .broken-themes a.delete-theme:focus, .theme-overlay .theme-actions .delete-theme:hover, .theme-overlay .theme-actions .delete-theme:focus { - background: #d63638; + background: #d54e21; color: #fff; - border-color: #d63638; + border-color: #d54e21; } .theme-overlay .theme-actions .active-theme, @@ -570,7 +575,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { box-sizing: border-box; overflow: hidden; position: relative; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 0 1px rgba(0,0,0,0.2); } .theme-overlay .screenshot:after { @@ -598,8 +603,8 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { /* Other screenshots, shown small and square */ .theme-overlay .screenshot.thumb { - background: #c3c4c7; - border: 1px solid #f0f0f1; + background: #ccc; + border: 1px solid #eee; float: none; display: inline-block; margin: 10px 5px 0; @@ -626,7 +631,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme-overlay .screenshot.selected { background: transparent; - border: 2px solid #72aee6; + border: 2px solid #00a0d2; } .theme-overlay .screenshot.selected img { @@ -648,7 +653,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .current-label { - background: #2c3338; + background: #32373c; color: #fff; font-size: 11px; display: inline-block; @@ -661,7 +666,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .theme-name { - color: #1d2327; + color: #23282d; font-size: 32px; font-weight: 100; margin: 10px 0 0; @@ -671,7 +676,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .theme-version { - color: #646970; + color: #72777c; font-size: 13px; font-weight: 400; float: none; @@ -681,56 +686,43 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme-overlay .theme-author { margin: 15px 0 25px; - color: #646970; + color: #72777c; font-size: 16px; font-weight: 400; line-height: inherit; } -.theme-overlay .toggle-auto-update { - /* Better align spin icon and text. */ - display: inline-flex; - align-items: center; - /* Prevents content after the auto-update toggler from jumping down and up. */ - min-height: 20px; /* Same height as the spinning dashicon. */ - vertical-align: top; -} - -.theme-overlay .theme-autoupdate .toggle-auto-update { +.theme-overlay .theme-author a { text-decoration: none; } -.theme-overlay .theme-autoupdate .toggle-auto-update .label { - text-decoration: underline; -} - .theme-overlay .theme-description { - color: #50575e; + color: #555; font-size: 15px; font-weight: 400; line-height: 1.5; - margin: 30px 0 0; + margin: 30px 0 0 0; } .theme-overlay .theme-tags { - border-top: 3px solid #f0f0f1; - color: #646970; + border-top: 3px solid #eee; + color: #82878c; font-size: 13px; font-weight: 400; - margin: 30px 0 0; + margin: 30px 0 0 0; padding-top: 20px; } .theme-overlay .theme-tags span { - color: #3c434a; + color: #444; font-weight: 600; margin-left: 5px; } .theme-overlay .parent-theme { - background: #fff; - border: 1px solid #f0f0f1; - border-right: 4px solid #72aee6; + background: #f7fcfe; + border: 1px solid #eee; + border-right: 4px solid #00a0d2; font-size: 14px; font-weight: 400; margin-top: 30px; @@ -738,7 +730,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .parent-theme strong { - font-weight: 600; + font-weight: 700; } /** @@ -835,7 +827,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } /* Admin menu is folded */ -@media only screen and (max-width: 960px) { +@media only screen and (max-width: 900px) { .theme-overlay .theme-wrap { right: 65px; } @@ -871,7 +863,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-browser .theme .theme-actions { - padding: 5px 10px 4px; + padding: 5px 10px 4px 10px; } .theme-overlay.small-screenshot .theme-screenshots { @@ -888,14 +880,18 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme:not(.active):hover .theme-actions, .theme:not(.active):focus .theme-actions, .theme:hover .more-details, - .theme.focus .more-details { + .theme:focus .more-details { display: none; } .theme-browser.rendered .theme:hover .theme-screenshot img, - .theme-browser.rendered .theme.focus .theme-screenshot img { + .theme-browser.rendered .theme:focus .theme-screenshot img { opacity: 1.0; } + + .theme .notice .cut { + display: none; + } } @media only screen and (max-width: 480px) { @@ -908,15 +904,6 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme-browser .theme:nth-child(3n) { margin-left: 0; } - - .theme-overlay .theme-about { - bottom: 105px; - } - - .theme-overlay .theme-actions { - padding-right: 4%; - padding-left: 4%; - } } @media only screen and (max-width: 650px) { @@ -944,7 +931,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .theme-author { - margin: 5px 0 15px; + margin: 5px 0 15px 0; } .theme-overlay .current-label { @@ -957,7 +944,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { clear: both; right: 0; left: 0; - margin: -5px 0 20px; + margin: -5px 0 20px 0; width: 100%; max-width: 280px; } @@ -1010,11 +997,11 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { /* Already installed theme */ .theme-browser .theme .theme-installed { - background: #2271b1; + background: #0073aa; } .theme-browser .theme .notice-success p:before { - color: #68de7c; + color: #79ba49; content: "\f147"; display: inline-block; font: normal 20px/1 'dashicons'; @@ -1024,7 +1011,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-install.updated-message:before { - content: ""; + content: ''; } .theme-install-php .wp-filter { @@ -1067,8 +1054,8 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .upload-theme .wp-upload-form, .upload-plugin .wp-upload-form { - background: #f6f7f7; - border: 1px solid #c3c4c7; + background: #fafafa; + border: 1px solid #e5e5e5; padding: 30px; margin: 30px auto; display: inline-flex; @@ -1083,7 +1070,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .upload-theme .install-help, .upload-plugin .install-help { - color: #50575e; /* #f1f1f1 background */ + color: #555d66; /* #f1f1f1 background */ font-size: 18px; font-style: normal; margin: 0; @@ -1094,7 +1081,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { p.no-themes, p.no-themes-local { clear: both; - color: #646970; + color: #666; font-size: 18px; font-style: normal; margin: 0; @@ -1123,7 +1110,7 @@ p.no-themes-local { } .theme-details .theme-rating { - line-height: 1.9; + line-height: 23px; } .theme-details .star-rating { @@ -1133,17 +1120,17 @@ p.no-themes-local { .theme-details .num-ratings, .theme-details .no-rating { font-size: 11px; - color: #646970; + color: #72777c; } .theme-details .no-rating { display: block; - line-height: 1.9; + line-height: 20px; } .update-from-upload-comparison { - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #dcdcde; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; text-align: right; margin: 1rem 0 1.4rem; border-collapse: collapse; @@ -1171,7 +1158,7 @@ p.no-themes-local { } .update-from-upload-comparison td.warning { - color: #d63638; + color: #a00; } .update-from-upload-actions { @@ -1183,7 +1170,7 @@ p.no-themes-local { ------------------------------------------------------------------------------*/ .appearance_page_custom-header #headimg { - border: 1px solid #dcdcde; + border: 1px solid #ddd; overflow: hidden; width: 100%; } @@ -1219,7 +1206,7 @@ p.no-themes-local { div#custom-background-image { min-height: 100px; - border: 1px solid #dcdcde; + border: 1px solid #ddd; } div#custom-background-image img { @@ -1228,16 +1215,16 @@ div#custom-background-image img { } .background-position-control input[type="radio"]:checked ~ .button { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ); z-index: 1; } .background-position-control input[type="radio"]:focus ~ .button { - border-color: #4f94d4; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 3px rgba(34, 113, 177, 0.8); - color: #1d2327; + border-color: #5b9dd9; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ), 0 0 3px rgba( 0, 115, 170, .8 ); + color: #23282d; } .background-position-control .background-position-center-icon, @@ -1245,7 +1232,7 @@ div#custom-background-image img { display: inline-block; line-height: 1; text-align: center; - transition: background-color .1s ease-in; + transition: background-color .1s ease-in 0; } .background-position-control .background-position-center-icon { @@ -1256,7 +1243,7 @@ div#custom-background-image img { } .background-position-control .background-position-center-icon:before { - background-color: #50575e; + background-color: #555; border-radius: 50%; content: ""; height: 12px; @@ -1265,7 +1252,7 @@ div#custom-background-image img { .background-position-control .button:hover .background-position-center-icon:before, .background-position-control input[type="radio"]:focus ~ .button .background-position-center-icon:before { - background-color: #1d2327; + background-color: #23282d; } .background-position-control .button-group { @@ -1277,7 +1264,7 @@ div#custom-background-image img { box-shadow: none; /* Following properties are overridden by buttons responsive styles (see: wp-includes/css/buttons.css). */ height: 40px !important; - line-height: 2.9 !important; + line-height: 37px !important; margin: 0 0 0 -1px !important; padding: 0 10px 1px !important; position: relative; @@ -1290,7 +1277,7 @@ div#custom-background-image img { } .background-position-control .button-group:last-child .button { - box-shadow: 0 1px 0 #c3c4c7; + box-shadow: 0 1px 0 #ccc; } .background-position-control .button-group > label { @@ -1373,7 +1360,7 @@ body.full-overlay-active { padding: 0; margin: 0; z-index: 10; - background: #f0f0f1; + background: #eee; border-left: none; } @@ -1440,7 +1427,7 @@ body.full-overlay-active { left: 0; height: 45px; padding: 0 15px; - line-height: 3.2; + line-height: 45px; z-index: 10; margin: 0; border-top: none; @@ -1480,9 +1467,10 @@ body.full-overlay-active { float: right; width: 45px; height: 45px; - background: #f0f0f1; - border-left: 1px solid #dcdcde; - color: #3c434a; + padding-left: 2px; + background: #eee; + border-left: 1px solid #ddd; + color: #444; cursor: pointer; text-decoration: none; transition: color .1s ease-in-out, background .1s ease-in-out; @@ -1494,8 +1482,8 @@ body.full-overlay-active { .theme-install-overlay .previous-theme:focus, .theme-install-overlay .next-theme:hover, .theme-install-overlay .next-theme:focus { - background: #dcdcde; - border-color: #c3c4c7; + background: #ddd; + border-color: #ccc; color: #000; outline: none; box-shadow: none; @@ -1531,8 +1519,8 @@ body.full-overlay-active { .theme-install-overlay .previous-theme.disabled:focus, .theme-install-overlay .next-theme.disabled:hover, .theme-install-overlay .next-theme.disabled:focus { - color: #c3c4c7; - background: #f0f0f1; + color: #b4b9be; + background: #eee; cursor: default; pointer-events: none; } @@ -1559,7 +1547,7 @@ body.full-overlay-active { right: 0; padding: 9px 10px 9px 0; height: 45px; - color: #646970; + color: #656a6f; outline: 0; line-height: 1; background-color: transparent !important; @@ -1570,14 +1558,14 @@ body.full-overlay-active { .wp-core-ui .wp-full-overlay .collapse-sidebar:hover, .wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #2271b1; + color: #0073aa; } .wp-full-overlay .collapse-sidebar-arrow, .wp-full-overlay .collapse-sidebar-label { display: inline-block; vertical-align: middle; - line-height: 1.6; + line-height: 20px; } .wp-full-overlay .collapse-sidebar-arrow { @@ -1590,9 +1578,9 @@ body.full-overlay-active { .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .wp-full-overlay .collapse-sidebar-label { @@ -1606,9 +1594,9 @@ body.full-overlay-active { .wp-full-overlay .collapse-sidebar-arrow:before { display: block; content: "\f148"; - background: #f0f0f1; + background: #eee; font: normal 20px/1 dashicons; - speak: never; + speak: none; padding: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -1621,7 +1609,7 @@ body.full-overlay-active { /* rtl:ignore */ .wp-full-overlay.collapsed .collapse-sidebar-arrow:before, .rtl .wp-full-overlay .collapse-sidebar-arrow:before { - transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ + transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ } .rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before { @@ -1640,11 +1628,11 @@ body.full-overlay-active { /* Device/preview size toggles */ .wp-full-overlay { - background: #1d2327; + background: #191e23; } .wp-full-overlay-main { - background-color: #f0f0f1; + background-color: #f1f1f1; } .expanded .wp-full-overlay-footer { @@ -1656,8 +1644,8 @@ body.full-overlay-active { width: 18%; width: calc( 18% - 1px ); height: 45px; - border-top: 1px solid #dcdcde; - background: #f0f0f1; + border-top: 1px solid #ddd; + background: #eee; } .wp-full-overlay-footer .devices-wrapper { @@ -1666,8 +1654,8 @@ body.full-overlay-active { .wp-full-overlay-footer .devices { position: relative; - background: #f0f0f1; - box-shadow: 20px 0 10px -5px #f0f0f1; + background: #eee; + box-shadow: 20px 0 10px -5px #eee; } .wp-full-overlay-footer .devices button { @@ -1680,10 +1668,9 @@ body.full-overlay-active { box-shadow: none; border-top: 1px solid transparent; border-bottom: 4px solid transparent; - transition: - .15s color ease-in-out, - .15s background-color ease-in-out, - .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; } .wp-full-overlay-footer .devices button:focus { @@ -1698,11 +1685,11 @@ body.full-overlay-active { vertical-align: top; margin: 3px 0; padding: 4px 8px; - color: #646970; + color: #656a6f; } .wp-full-overlay-footer .devices button.active { - border-bottom-color: #1d2327; + border-bottom-color: #191e23; } .wp-full-overlay-footer .devices button:hover, @@ -1712,16 +1699,16 @@ body.full-overlay-active { .wp-full-overlay-footer .devices button:focus, .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #2271b1; + border-bottom-color: #0073aa; } .wp-full-overlay-footer .devices button.active:before { - color: #1d2327; + color: #191e23; } .wp-full-overlay-footer .devices button:hover:before, .wp-full-overlay-footer .devices button:focus:before { - color: #2271b1; + color: #0073aa; } .wp-full-overlay-footer .devices .preview-desktop:before { @@ -1736,7 +1723,7 @@ body.full-overlay-active { content: "\f470"; } -@media screen and (max-width: 1024px) { +@media screen and (max-width:1024px) { .wp-full-overlay-footer .devices { display: none; } @@ -1780,7 +1767,7 @@ body.full-overlay-active { #customize-container, #customize-controls .notice.notification-overlay { - background: #f0f0f1; + background: #eee; z-index: 500000; position: fixed; overflow: visible; @@ -1844,7 +1831,7 @@ body.full-overlay-active { .install-theme-info .theme-name { font-size: 16px; - line-height: 1.5; + line-height: 24px; margin-bottom: 0; margin-top: 0; } @@ -1852,23 +1839,7 @@ body.full-overlay-active { .install-theme-info .theme-screenshot { margin: 15px 0; width: 258px; - border: 1px solid #c3c4c7; - position: relative; - overflow: hidden; -} - -.install-theme-info .theme-screenshot > img { - width: 100%; - height: auto; - position: absolute; - right: 0; - top: 0; -} - -.install-theme-info .theme-screenshot:after { - content: ""; - display: block; - padding-top: 66.66666666%; + border: 1px solid #ccc; } .install-theme-info .theme-details { @@ -1881,35 +1852,37 @@ body.full-overlay-active { .theme-details .theme-description { float: right; - color: #646970; - line-height: 1.6; + color: #72777c; + line-height: 20px; max-width: 100%; } .theme-install-overlay .wp-full-overlay-header .button { float: left; margin: 8px 0 0 10px; + /* For when .theme-install is a span rather than a.button-primary (already installed theme) */ + line-height: 26px; } .theme-install-overlay .wp-full-overlay-sidebar { - background: #f0f0f1; - border-left: 1px solid #dcdcde; + background: #eee; + border-left: 1px solid #ddd; } .theme-install-overlay .wp-full-overlay-sidebar-content { background: #fff; - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #dcdcde; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; } .theme-install-overlay .wp-full-overlay-main { position: absolute; z-index: 0; - background-color: #f0f0f1; + background-color: #f1f1f1; } .customize-loading #customize-container { - background-color: #f0f0f1; + background-color: #f1f1f1; } #customize-preview.wp-full-overlay-main:before, @@ -1957,7 +1930,7 @@ body.full-overlay-active { } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .available-theme .action-links .delete-theme { float: none; margin: 0; @@ -1973,10 +1946,9 @@ body.full-overlay-active { width: 100%; } - .theme-install-overlay .wp-full-overlay-header .button { - font-size: 13px; - line-height: 2.15384615; - min-height: 30px; + .theme-install-overlay .wp-full-overlay-header .theme-install { + margin-top: 6px; + line-height: normal; } .theme-browser .theme .theme-actions .button { @@ -1985,13 +1957,8 @@ body.full-overlay-active { .theme-browser .theme.active .theme-actions, .theme-browser .theme .theme-actions { - padding-top: 4px; - padding-bottom: 4px; - } - - .upload-theme .wp-upload-form, - .upload-plugin .wp-upload-form { - display: block; + padding-top: 8px; + padding-bottom: 8px; } } @@ -2000,6 +1967,6 @@ body.full-overlay-active { .theme-info .updating-message:before, .theme-info .updated-message:before, .theme-install.updating-message:before { - speak: never; + speak: none; } } diff --git a/wp-admin/css/themes-rtl.min.css b/wp-admin/css/themes-rtl.min.css index 268d42e..00169fc 100644 --- a/wp-admin/css/themes-rtl.min.css +++ b/wp-admin/css/themes-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.themes-php{overflow-y:scroll}body.js .theme-browser.search-loading{display:none}.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-right:20px}.themes-php .search-form{display:inline}.themes-php .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px}.theme .notice,.theme .notice.is-dismissible{right:0;margin:0;position:absolute;left:0;top:0}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #dcdcde;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme:nth-child(3n){margin-left:0}.theme-browser .theme.focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;transition:opacity .1s ease-in-out;height:auto;background:rgba(246,247,247,.7);border-right:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-left:3px}.theme-browser .theme .theme-actions .button{float:none;margin-right:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;right:0;top:0;width:100%;transition:opacity .2s ease-in-out}.theme-browser .theme.focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;left:20%;right:20%;width:60%;background:#1d2327;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;border-radius:3px;border:none;transition:opacity .1s ease-in-out;cursor:pointer}.theme-browser .theme .more-details:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.theme-browser .theme.focus{border-color:#4f94d4;box-shadow:0 0 2px rgba(79,148,212,.8)}.theme-browser .theme.focus .more-details{opacity:1}.theme-browser .theme.active.focus .theme-actions{display:block}.theme-browser.rendered .theme.focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme.active .theme-name{background:#1d2327;color:#fff;padding-left:110px;font-weight:300;box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-left:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(44,51,56,.7);border-right:none;opacity:1}.theme-id-container{position:relative}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{position:absolute;top:50%;transform:translateY(-50%);left:0;padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}.theme-browser .theme.active .theme-actions .button-primary{margin-left:0}.theme-browser .theme .theme-author{background:#1d2327;color:#f0f0f1;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit}.theme-browser .theme.add-new-theme{border:none;box-shadow:none}.theme-browser .theme.add-new-theme a{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;right:0;left:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #dcdcde;border:5px dashed rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#dcdcde;background:rgba(140,143,148,.1);border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:normal 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#8c8f94;position:absolute;top:30%;right:50%;margin-right:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#2271b1}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#2271b1;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;right:-20px;left:0;top:0;bottom:0;background:#f0f0f1;background:rgba(240,240,241,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;right:0;left:0;height:48px;border-bottom:1px solid #dcdcde}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:left;border:0;border-right:1px solid #dcdcde;background-color:transparent;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:normal 22px/50px dashicons!important;color:#787c82;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#787c82;background-color:transparent;height:48px;width:54px;float:right;text-align:center;border:0;border-left:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#dcdcde;border-color:#c3c4c7;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#c3c4c7;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f345"}.theme-overlay .theme-header .right:before{content:"\f341"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;right:190px;left:30px;bottom:3%;background:#fff;box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{right:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;right:0;left:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;right:0;left:0;padding:10px 25px 5px;background:#f6f7f7;z-index:30;box-sizing:border-box;border-top:1px solid #f0f0f1}.theme-overlay .theme-actions a{margin-left:5px;margin-bottom:5px}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"]{display:none}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#d63638;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;left:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d63638;color:#fff;border-color:#d63638}.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:right;margin:0 0 0 30px;width:55%;max-width:1200px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;right:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:350px;width:auto}.theme-overlay .screenshot.thumb{background:#c3c4c7;border:1px solid #f0f0f1;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;height:auto;position:absolute;right:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #72aee6}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:right}.theme-overlay .current-label{background:#2c3338;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;border-radius:2px;margin:0 0 -10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.theme-overlay .theme-name{color:#1d2327;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#646970;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#646970;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .toggle-auto-update{display:inline-flex;align-items:center;min-height:20px;vertical-align:top}.theme-overlay .theme-autoupdate .toggle-auto-update{text-decoration:none}.theme-overlay .theme-autoupdate .toggle-auto-update .label{text-decoration:underline}.theme-overlay .theme-description{color:#50575e;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #f0f0f1;color:#646970;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#3c434a;font-weight:600;margin-left:5px}.theme-overlay .parent-theme{background:#fff;border:1px solid #f0f0f1;border-right:4px solid #72aee6;font-size:14px;font-weight:400;margin-top:30px;padding:10px 20px 10px 10px}.theme-overlay .parent-theme strong{font-weight:600}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;right:auto;left:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 0 3% 3%}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-left:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-left:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 0 3% 3%}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-left:3%}.theme-browser .theme:nth-child(4n){margin-left:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-left:0}.theme-browser .theme:nth-child(2n){margin-left:0}.theme-browser .theme:nth-child(odd){margin-left:5%}}@media only screen and (max-width:960px){.theme-overlay .theme-wrap{right:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;left:0;bottom:0;right:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:0;width:auto}.theme.focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-left:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-left:0}.theme-overlay .theme-about{bottom:105px}.theme-overlay .theme-actions{padding-right:4%;padding-left:4%}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-right:0}.theme-overlay .theme-actions .delete-theme{position:relative;left:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;right:0;left:0;margin:-5px 0 20px;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:normal 60px/90px dashicons;width:80px;height:80px;top:30%;right:50%;text-indent:0;margin-right:-40px}.single-theme .theme-wrap{margin:0 -10px 0 -12px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:right;width:50%;border-spacing:3px;padding:3px}.update-php .wrap{max-width:40rem}.theme-browser .theme .theme-installed{background:#2271b1}.theme-browser .theme .notice-success p:before{color:#68de7c;content:"\f147";display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:""}.theme-install-php .wp-filter{padding-right:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px;text-align:center}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#f6f7f7;border:1px solid #c3c4c7;padding:30px;margin:30px auto;display:inline-flex;justify-content:space-between;align-items:center}.upload-plugin .wp-upload-form input[type=file],.upload-theme .wp-upload-form input[type=file]{margin-left:10px}.upload-plugin .install-help,.upload-theme .install-help{color:#50575e;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes,p.no-themes-local{clear:both;color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0}}.theme-details .theme-rating{line-height:1.9}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#646970}.theme-details .no-rating{display:block;line-height:1.9}.update-from-upload-comparison{border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;text-align:right;margin:1rem 0 1.4rem;border-collapse:collapse;width:100%}.update-from-upload-comparison tr:last-child td{height:1.4rem;vertical-align:top}.update-from-upload-comparison tr:first-child th{font-weight:700;height:1.4rem;vertical-align:bottom}.update-from-upload-comparison td.name-label{text-align:left}.update-from-upload-comparison td,.update-from-upload-comparison th{padding:.4rem 1.4rem}.update-from-upload-comparison td.warning{color:#d63638}.update-from-upload-actions{margin-top:1.4rem}.appearance_page_custom-header #headimg{border:1px solid #dcdcde;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{clear:both;margin:0 0 20px 20px;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-left:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dcdcde}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#4f94d4;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(34,113,177,.8);color:#1d2327}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;transition:background-color .1s ease-in}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#50575e;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#1d2327}.background-position-control .button-group{display:block}.background-position-control .button-group .button{border-radius:0;box-shadow:none;height:40px!important;line-height:2.9!important;margin:0 0 0 -1px!important;padding:0 10px 1px!important;position:relative}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{box-shadow:0 1px 0 #c3c4c7}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:first-child>label:last-child .button{border-radius:3px 0 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:last-child>label:first-child .button{border-radius:0 0 3px 0}.background-position-control .button-group:last-child>label:first-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:last-child>label:last-child .button{border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:last-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;min-width:300px;max-width:600px;width:18%;height:100%;top:0;bottom:0;right:0;padding:0;margin:0;z-index:10;background:#f0f0f1;border-left:none}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px}@media screen and (min-width:1667px){.wp-full-overlay.expanded{margin-right:18%}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-18%}}@media screen and (min-width:3333px){.wp-full-overlay.expanded{margin-right:600px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-600px}}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;left:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;right:0;left:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;right:0;left:0;height:45px;padding:0 15px;line-height:3.2;z-index:10;margin:0;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;right:0;left:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:right;width:45px;height:45px;background:#f0f0f1;border-left:1px solid #dcdcde;color:#3c434a;cursor:pointer;text-decoration:none;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:normal 22px/1 dashicons;content:"\f335";position:relative;top:7px;right:13px}.theme-install-overlay .previous-theme:before{font:normal 20px/1 dashicons;content:"\f345";position:relative;top:6px;right:14px}.theme-install-overlay .next-theme:before{font:normal 20px/1 dashicons;content:"\f341";position:relative;top:6px;right:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#c3c4c7;background:#f0f0f1;cursor:default;pointer-events:none}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-right:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;right:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;right:0;padding:9px 10px 9px 0;height:45px;color:#646970;outline:0;line-height:1;background-color:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#2271b1}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:1.6}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-full-overlay .collapse-sidebar-label{margin-right:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#f0f0f1;font:normal 20px/1 dashicons;speak:never;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{transition-property:right,left,top,bottom,width,margin;transition-duration:.2s}.wp-full-overlay{background:#1d2327}.wp-full-overlay-main{background-color:#f0f0f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;right:0;min-width:299px;max-width:599px;width:18%;width:calc(18% - 1px);height:45px;border-top:1px solid #dcdcde;background:#f0f0f1}.wp-full-overlay-footer .devices-wrapper{float:left}.wp-full-overlay-footer .devices{position:relative;background:#f0f0f1;box-shadow:20px 0 10px -5px #f0f0f1}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 -4px 0 0;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#646970}.wp-full-overlay-footer .devices button.active{border-bottom-color:#1d2327}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#2271b1}.wp-full-overlay-footer .devices button.active:before{color:#1d2327}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#2271b1}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto -160px auto 0;width:320px;height:480px;max-height:100%;max-width:100%;right:50%}.preview-tablet .wp-full-overlay-main{margin:auto -360px auto 0;width:720px;height:1080px;max-height:100%;max-width:100%;right:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container,#customize-controls .notice.notification-overlay{background:#f0f0f1;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%}#customize-container{display:none}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:left;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:1.5;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #c3c4c7;position:relative;overflow:hidden}.install-theme-info .theme-screenshot>img{width:100%;height:auto;position:absolute;right:0;top:0}.install-theme-info .theme-screenshot:after{content:"";display:block;padding-top:66.66666666%}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:right;color:#646970;line-height:1.6;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:left;margin:8px 0 0 10px}.theme-install-overlay .wp-full-overlay-sidebar{background:#f0f0f1;border-left:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f0f0f1}.customize-loading #customize-container{background-color:#f0f0f1}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;transform:translateZ(0);background:transparent url(../images/spinner.gif) no-repeat center center;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);background-size:15px 123px}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .button{font-size:13px;line-height:2.15384615;min-height:30px}.theme-browser .theme .theme-actions .button{margin-bottom:0}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{padding-top:4px;padding-bottom:4px}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{display:block}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:never}} \ No newline at end of file +body.js .theme-browser.search-loading{display:none}.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-right:20px}.themes-php .search-form{display:inline}.themes-php .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.theme .notices{right:0;margin:0;position:absolute;left:0;top:0}.theme .notices .notice{margin:0}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #ddd;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-sizing:border-box}.ie8 .theme-browser .theme{width:30%;margin:0 0 4% 3%}.theme-browser .theme:nth-child(3n){margin-left:0}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;transition:opacity .1s ease-in-out;height:auto;background:rgba(244,244,244,.7);border-right:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-left:3px}.theme-browser .theme .theme-actions .button{float:none;margin-right:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;right:0;top:0;width:100%;transition:opacity .2s ease-in-out}.theme-browser .theme:focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;left:20%;right:20%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;border-radius:3px;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}.theme-browser .theme:focus .more-details{opacity:1}.theme-browser .theme.active:focus .theme-actions{display:block}.theme-browser.rendered .theme:focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme.active .theme-name{background:#23282d;color:#fff;padding-left:110px;font-weight:300;box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-left:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(49,49,49,.7);border-right:none;opacity:1}.theme-id-container{position:relative}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{position:absolute;top:50%;transform:translateY(-50%);left:0;padding:10px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}.theme-browser .theme.active .theme-actions .button-primary{margin-left:0}.theme-browser .theme .theme-author{background:#23282d;color:#eee;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit;text-decoration:none}.theme-browser .theme.add-new-theme{border:none;box-shadow:none}.theme-browser .theme.add-new-theme a{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;right:0;left:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:normal 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#999;position:absolute;top:30%;right:50%;margin-right:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#0073aa}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#0073aa;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;right:-20px;left:0;top:0;bottom:0;background:#f1f1f1;background:rgba(238,238,238,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;right:0;left:0;height:48px;border-bottom:1px solid #ddd}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:left;border:0;border-right:1px solid #ddd;background-color:transparent;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:normal 22px/50px dashicons!important;color:#72777c;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#72777c;background-color:transparent;height:48px;width:54px;float:right;text-align:center;border:0;border-left:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#ccc;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f345"}.theme-overlay .theme-header .right:before{content:"\f341"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;right:190px;left:30px;bottom:3%;background:#fff;box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{right:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;right:0;left:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;right:0;left:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.ie8 .theme-overlay .theme-actions{border:1px solid #eee}.theme-overlay .theme-actions a{margin-left:5px;margin-bottom:5px}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"]{display:none}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;left:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d54e21;color:#fff;border-color:#d54e21}.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:right;margin:0 0 0 30px;width:55%;max-width:1200px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;right:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:350px;width:auto}.theme-overlay .screenshot.thumb{background:#ccc;border:1px solid #eee;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;height:auto;position:absolute;right:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #00a0d2}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:right}.theme-overlay .current-label{background:#32373c;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;border-radius:2px;margin:0 0 -10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#72777c;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#72777c;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0 0}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:600;margin-left:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-right:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 20px 10px 10px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;right:auto;left:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 0 3% 3%}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-left:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-left:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 0 3% 3%}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-left:3%}.theme-browser .theme:nth-child(4n){margin-left:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-left:0}.theme-browser .theme:nth-child(even){margin-left:0}.theme-browser .theme:nth-child(odd){margin-left:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{right:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;left:0;bottom:0;right:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px 10px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}.theme .notice .cut{display:none}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-left:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-left:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-right:0}.theme-overlay .theme-actions .delete-theme{position:relative;left:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px 0}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;right:0;left:0;margin:-5px 0 20px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:normal 60px/90px dashicons;width:80px;height:80px;top:30%;right:50%;text-indent:0;margin-right:-40px}.single-theme .theme-wrap{margin:0 -10px 0 -12px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:right;width:50%;border-spacing:3px;padding:3px}.update-php .wrap{max-width:40rem}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .notice-success p:before{color:#79ba49;content:"\f147";display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:''}.theme-install-php .wp-filter{padding-right:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px;text-align:center}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;display:inline-flex;justify-content:space-between;align-items:center}.upload-plugin .wp-upload-form input[type=file],.upload-theme .wp-upload-form input[type=file]{margin-left:10px}.upload-plugin .install-help,.upload-theme .install-help{color:#555d66;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes,p.no-themes-local{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#72777c}.theme-details .no-rating{display:block;line-height:20px}.update-from-upload-comparison{border-top:1px solid #ddd;border-bottom:1px solid #ddd;text-align:right;margin:1rem 0 1.4rem;border-collapse:collapse;width:100%}.update-from-upload-comparison tr:last-child td{height:1.4rem;vertical-align:top}.update-from-upload-comparison tr:first-child th{font-weight:700;height:1.4rem;vertical-align:bottom}.update-from-upload-comparison td.name-label{text-align:left}.update-from-upload-comparison td,.update-from-upload-comparison th{padding:.4rem 1.4rem}.update-from-upload-comparison td.warning{color:#a00}.update-from-upload-actions{margin-top:1.4rem}.appearance_page_custom-header #headimg{border:1px solid #ddd;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{clear:both;margin:0 0 20px 20px;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-left:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #ddd}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);color:#23282d}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;transition:background-color .1s ease-in 0}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#555;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#23282d}.background-position-control .button-group{display:block}.background-position-control .button-group .button{border-radius:0;box-shadow:none;height:40px!important;line-height:37px!important;margin:0 0 0 -1px!important;padding:0 10px 1px!important;position:relative}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{box-shadow:0 1px 0 #ccc}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:first-child>label:last-child .button{border-radius:3px 0 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:last-child>label:first-child .button{border-radius:0 0 3px 0}.background-position-control .button-group:last-child>label:first-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:last-child>label:last-child .button{border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:last-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;min-width:300px;max-width:600px;width:18%;height:100%;top:0;bottom:0;right:0;padding:0;margin:0;z-index:10;background:#eee;border-left:none}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-300px}@media screen and (min-width:1667px){.wp-full-overlay.expanded{margin-right:18%}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-18%}}@media screen and (min-width:3333px){.wp-full-overlay.expanded{margin-right:600px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-right:-600px}}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;left:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;right:0;left:0;top:0;bottom:0;height:100%}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;right:0;left:0;height:45px;padding:0 15px;line-height:45px;z-index:10;margin:0;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;right:0;left:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:right;width:45px;height:45px;padding-left:2px;background:#eee;border-left:1px solid #ddd;color:#444;cursor:pointer;text-decoration:none;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:normal 22px/1 dashicons;content:"\f335";position:relative;top:7px;right:13px}.theme-install-overlay .previous-theme:before{font:normal 20px/1 dashicons;content:"\f345";position:relative;top:6px;right:14px}.theme-install-overlay .next-theme:before{font:normal 20px/1 dashicons;content:"\f341";position:relative;top:6px;right:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#b4b9be;background:#eee;cursor:default;pointer-events:none}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-right:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;right:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;right:0;padding:9px 10px 9px 0;height:45px;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#0073aa}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:20px}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-full-overlay .collapse-sidebar-label{margin-right:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#eee;font:normal 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{transition-property:right,left,top,bottom,width,margin;transition-duration:.2s}.wp-full-overlay{background:#191e23}.wp-full-overlay-main{background-color:#f1f1f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;right:0;min-width:299px;max-width:599px;width:18%;width:calc(18% - 1px);height:45px;border-top:1px solid #ddd;background:#eee}.wp-full-overlay-footer .devices-wrapper{float:left}.wp-full-overlay-footer .devices{position:relative;background:#eee;box-shadow:20px 0 10px -5px #eee}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 -4px 0 0;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#656a6f}.wp-full-overlay-footer .devices button.active{border-bottom-color:#191e23}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#0073aa}.wp-full-overlay-footer .devices button.active:before{color:#191e23}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#0073aa}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto -160px auto 0;width:320px;height:480px;max-height:100%;max-width:100%;right:50%}.preview-tablet .wp-full-overlay-main{margin:auto -360px auto 0;width:720px;height:1080px;max-height:100%;max-width:100%;right:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container,#customize-controls .notice.notification-overlay{background:#eee;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%}#customize-container{display:none}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:left;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:right;color:#72777c;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:left;margin:8px 0 0 10px;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f1f1f1}.customize-loading #customize-container{background-color:#f1f1f1}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;transform:translateZ(0);background:transparent url(../images/spinner.gif) no-repeat center center;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);background-size:15px 123px}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}.theme-browser .theme .theme-actions .button{margin-bottom:0}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{padding-top:8px;padding-bottom:8px}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:none}} \ No newline at end of file diff --git a/wp-admin/css/themes.css b/wp-admin/css/themes.css index 708afae..334b5fd 100644 --- a/wp-admin/css/themes.css +++ b/wp-admin/css/themes.css @@ -7,10 +7,6 @@ 16.1 - Manage Themes ------------------------------------------------------------------------------*/ -.themes-php { - overflow-y: scroll; -} - body.js .theme-browser.search-loading { display: none; } @@ -38,17 +34,22 @@ body.js .theme-browser.search-loading { left: 20px; margin: 0; width: 280px; + font-size: 16px; + font-weight: 300; + line-height: 1.5; } /* Position admin messages */ -.theme .notice, -.theme .notice.is-dismissible { +.theme .notices { left: 0; margin: 0; position: absolute; right: 0; top: 0; } +.theme .notices .notice { + margin: 0; +} /** * Main theme element @@ -60,17 +61,22 @@ body.js .theme-browser.search-loading { margin: 0 4% 4% 0; position: relative; width: 30.6%; - border: 1px solid #dcdcde; - box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1); + border: 1px solid #ddd; + box-shadow: 0 1px 1px -1px rgba(0,0,0,0.1); box-sizing: border-box; } +.ie8 .theme-browser .theme { + width: 30%; + margin: 0 3% 4% 0; +} + .theme-browser .theme:nth-child(3n) { margin-right: 0; } .theme-browser .theme:hover, -.theme-browser .theme.focus { +.theme-browser .theme:focus { cursor: pointer; } @@ -80,12 +86,12 @@ body.js .theme-browser.search-loading { height: 18px; margin: 0; padding: 15px; - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; background: #fff; - background: rgba(255, 255, 255, 0.65); + background: rgba(255,255,255,0.65); } /* Activate and Customize buttons, shown on hover and focus */ @@ -94,12 +100,13 @@ body.js .theme-browser.search-loading { opacity: 0; transition: opacity 0.1s ease-in-out; height: auto; - background: rgba(246, 247, 247, 0.7); - border-left: 1px solid rgba(0, 0, 0, 0.05); + background: rgba(244, 244, 244, 0.7); + border-left: 1px solid rgba(0,0,0,0.05); } .theme-browser .theme:hover .theme-actions, -.theme-browser .theme.focus .theme-actions { +.theme-browser .theme.focus .theme-actions, +.theme-browser .theme:focus .theme-actions { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; opacity: 1; } @@ -143,12 +150,12 @@ body.js .theme-browser.search-loading { } .theme-browser .theme:hover .theme-screenshot, -.theme-browser .theme.focus .theme-screenshot { +.theme-browser .theme:focus .theme-screenshot { background: #fff; } .theme-browser.rendered .theme:hover .theme-screenshot img, -.theme-browser.rendered .theme.focus .theme-screenshot img { +.theme-browser.rendered .theme:focus .theme-screenshot img { opacity: 0.4; } @@ -159,42 +166,35 @@ body.js .theme-browser.search-loading { top: 35%; right: 20%; left: 20%; - width: 60%; - background: #1d2327; - background: rgba(0, 0, 0, 0.7); + background: #23282d; + background: rgba(0,0,0,0.7); color: #fff; font-size: 15px; - text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6); + text-shadow: 0 1px 0 rgba(0,0,0,0.6); -webkit-font-smoothing: antialiased; font-weight: 600; padding: 15px 12px; text-align: center; border-radius: 3px; - border: none; transition: opacity 0.1s ease-in-out; - cursor: pointer; -} - -.theme-browser .theme .more-details:focus { - box-shadow: 0 0 0 1px #fff, 0 0 0 3px #2271b1; } -.theme-browser .theme.focus { - border-color: #4f94d4; - box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); +.theme-browser .theme:focus { + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba( 30, 140, 190, 0.8 ); } -.theme-browser .theme.focus .more-details { +.theme-browser .theme:focus .more-details { opacity: 1; } /* Current theme needs to have its action always on view */ -.theme-browser .theme.active.focus .theme-actions { +.theme-browser .theme.active:focus .theme-actions { display: block; } .theme-browser.rendered .theme:hover .more-details, -.theme-browser.rendered .theme.focus .more-details { +.theme-browser.rendered .theme:focus .more-details { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; opacity: 1; } @@ -203,11 +203,11 @@ body.js .theme-browser.search-loading { * The currently active theme */ .theme-browser .theme.active .theme-name { - background: #1d2327; + background: #23282d; color: #fff; padding-right: 110px; font-weight: 300; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.5); + box-shadow: inset 0 1px 1px rgba(0,0,0,0.5); } .theme-browser .customize-control .theme.active .theme-name { @@ -219,7 +219,7 @@ body.js .theme-browser.search-loading { } .theme-browser .theme.active .theme-actions { - background: rgba(44, 51, 56, 0.7); + background: rgba(49,49,49,0.7); border-left: none; opacity: 1; } @@ -234,8 +234,8 @@ body.js .theme-browser.search-loading { top: 50%; transform: translateY(-50%); right: 0; - padding: 9px 15px; - box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1); + padding: 10px 15px; + box-shadow: inset 0 1px 0 rgba(0,0,0,0.1); } .theme-browser .theme.active .theme-actions .button-primary { @@ -243,8 +243,8 @@ body.js .theme-browser.search-loading { } .theme-browser .theme .theme-author { - background: #1d2327; - color: #f0f0f1; + background: #23282d; + color: #eee; display: none; font-size: 14px; margin: 0 10px; @@ -259,6 +259,7 @@ body.js .theme-browser.search-loading { .theme-browser .theme.display-author .theme-author a { color: inherit; + text-decoration: none; } /** @@ -288,14 +289,14 @@ body.js .theme-browser.search-loading { bottom: 0; padding: 0; text-shadow: none; - border: 5px dashed #dcdcde; + border: 5px dashed #d5d2ca; border: 5px dashed rgba(0, 0, 0, 0.1); box-sizing: border-box; } .theme-browser .theme.add-new-theme span:after { - background: #dcdcde; - background: rgba(140, 143, 148, 0.1); + background: #e5e5e5; + background: rgba(153, 153, 153, 0.1); border-radius: 50%; display: inline-block; content: "\f132"; @@ -305,7 +306,7 @@ body.js .theme-browser.search-loading { height: 100px; vertical-align: middle; text-align: center; - color: #8c8f94; + color: rgb(153, 153, 153); position: absolute; top: 30%; left: 50%; @@ -313,7 +314,7 @@ body.js .theme-browser.search-loading { text-indent: -4px; padding: 0; text-shadow: none; - z-index: 4; + z-index:4; } .rtl .theme-browser .theme.add-new-theme span:after { @@ -328,14 +329,14 @@ body.js .theme-browser.search-loading { .theme-browser .theme.add-new-theme a:hover span:after, .theme-browser .theme.add-new-theme a:focus span:after { background: #fff; - color: #2271b1; + color: #0073aa; } .theme-browser .theme.add-new-theme a:hover:after, .theme-browser .theme.add-new-theme a:focus:after { border-color: transparent; color: #fff; - background: #2271b1; + background: #0073aa; content: ""; } @@ -367,8 +368,8 @@ body.js .theme-browser.search-loading { right: 0; top: 0; bottom: 0; - background: #f0f0f1; - background: rgba(240, 240, 241, 0.9); + background: #f1f1f1; + background: rgba( 238, 238, 238, 0.9 ); z-index: 10000; /* Over WP Pointers. */ } @@ -378,7 +379,7 @@ body.js .theme-browser.search-loading { left: 0; right: 0; height: 48px; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; } .theme-overlay .theme-header button { @@ -392,14 +393,14 @@ body.js .theme-browser.search-loading { text-align: center; float: right; border: 0; - border-left: 1px solid #dcdcde; + border-left: 1px solid #ddd; background-color: transparent; transition: color .1s ease-in-out, background .1s ease-in-out; } .theme-overlay .theme-header .close:before { font: normal 22px/50px dashicons !important; - color: #787c82; + color: #72777c; display: inline-block; content: "\f335"; font-weight: 300; @@ -409,14 +410,14 @@ body.js .theme-browser.search-loading { .theme-overlay .theme-header .right, .theme-overlay .theme-header .left { cursor: pointer; - color: #787c82; + color: #72777c; background-color: transparent; height: 48px; width: 54px; float: left; text-align: center; border: 0; - border-right: 1px solid #dcdcde; + border-right: 1px solid #ddd; transition: color .1s ease-in-out, background .1s ease-in-out; } @@ -426,8 +427,8 @@ body.js .theme-browser.search-loading { .theme-overlay .theme-header .right:hover, .theme-overlay .theme-header .left:focus, .theme-overlay .theme-header .left:hover { - background: #dcdcde; - border-color: #c3c4c7; + background: #ddd; + border-color: #ccc; color: #000; } @@ -439,15 +440,15 @@ body.js .theme-browser.search-loading { .theme-overlay .theme-header .close:focus, .theme-overlay .theme-header .right:focus, .theme-overlay .theme-header .left:focus { - box-shadow: none; - outline: none; + box-shadow: none; + outline: none; } .theme-overlay .theme-header .left.disabled, .theme-overlay .theme-header .right.disabled, .theme-overlay .theme-header .left.disabled:hover, .theme-overlay .theme-header .right.disabled:hover { - color: #c3c4c7; + color: #ccc; background: inherit; cursor: inherit; } @@ -502,10 +503,14 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { left: 0; right: 0; padding: 10px 25px 5px; - background: #f6f7f7; + background: #f3f3f3; z-index: 30; box-sizing: border-box; - border-top: 1px solid #f0f0f1; + border-top: 1px solid #eee; +} + +.ie8 .theme-overlay .theme-actions { + border: 1px solid #eee; } .theme-overlay .theme-actions a { @@ -521,7 +526,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .broken-themes a.delete-theme, .theme-overlay .theme-actions .delete-theme { - color: #d63638; + color: #a00; text-decoration: none; border-color: transparent; box-shadow: none; @@ -538,9 +543,9 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .broken-themes a.delete-theme:focus, .theme-overlay .theme-actions .delete-theme:hover, .theme-overlay .theme-actions .delete-theme:focus { - background: #d63638; + background: #d54e21; color: #fff; - border-color: #d63638; + border-color: #d54e21; } .theme-overlay .theme-actions .active-theme, @@ -570,7 +575,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { box-sizing: border-box; overflow: hidden; position: relative; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 0 1px rgba(0,0,0,0.2); } .theme-overlay .screenshot:after { @@ -598,8 +603,8 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { /* Other screenshots, shown small and square */ .theme-overlay .screenshot.thumb { - background: #c3c4c7; - border: 1px solid #f0f0f1; + background: #ccc; + border: 1px solid #eee; float: none; display: inline-block; margin: 10px 5px 0; @@ -626,7 +631,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme-overlay .screenshot.selected { background: transparent; - border: 2px solid #72aee6; + border: 2px solid #00a0d2; } .theme-overlay .screenshot.selected img { @@ -648,7 +653,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .current-label { - background: #2c3338; + background: #32373c; color: #fff; font-size: 11px; display: inline-block; @@ -661,7 +666,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .theme-name { - color: #1d2327; + color: #23282d; font-size: 32px; font-weight: 100; margin: 10px 0 0; @@ -671,7 +676,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .theme-version { - color: #646970; + color: #72777c; font-size: 13px; font-weight: 400; float: none; @@ -681,56 +686,43 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme-overlay .theme-author { margin: 15px 0 25px; - color: #646970; + color: #72777c; font-size: 16px; font-weight: 400; line-height: inherit; } -.theme-overlay .toggle-auto-update { - /* Better align spin icon and text. */ - display: inline-flex; - align-items: center; - /* Prevents content after the auto-update toggler from jumping down and up. */ - min-height: 20px; /* Same height as the spinning dashicon. */ - vertical-align: top; -} - -.theme-overlay .theme-autoupdate .toggle-auto-update { +.theme-overlay .theme-author a { text-decoration: none; } -.theme-overlay .theme-autoupdate .toggle-auto-update .label { - text-decoration: underline; -} - .theme-overlay .theme-description { - color: #50575e; + color: #555; font-size: 15px; font-weight: 400; line-height: 1.5; - margin: 30px 0 0; + margin: 30px 0 0 0; } .theme-overlay .theme-tags { - border-top: 3px solid #f0f0f1; - color: #646970; + border-top: 3px solid #eee; + color: #82878c; font-size: 13px; font-weight: 400; - margin: 30px 0 0; + margin: 30px 0 0 0; padding-top: 20px; } .theme-overlay .theme-tags span { - color: #3c434a; + color: #444; font-weight: 600; margin-right: 5px; } .theme-overlay .parent-theme { - background: #fff; - border: 1px solid #f0f0f1; - border-left: 4px solid #72aee6; + background: #f7fcfe; + border: 1px solid #eee; + border-left: 4px solid #00a0d2; font-size: 14px; font-weight: 400; margin-top: 30px; @@ -738,7 +730,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .parent-theme strong { - font-weight: 600; + font-weight: 700; } /** @@ -835,7 +827,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } /* Admin menu is folded */ -@media only screen and (max-width: 960px) { +@media only screen and (max-width: 900px) { .theme-overlay .theme-wrap { left: 65px; } @@ -871,7 +863,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-browser .theme .theme-actions { - padding: 5px 10px 4px; + padding: 5px 10px 4px 10px; } .theme-overlay.small-screenshot .theme-screenshots { @@ -888,14 +880,18 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme:not(.active):hover .theme-actions, .theme:not(.active):focus .theme-actions, .theme:hover .more-details, - .theme.focus .more-details { + .theme:focus .more-details { display: none; } .theme-browser.rendered .theme:hover .theme-screenshot img, - .theme-browser.rendered .theme.focus .theme-screenshot img { + .theme-browser.rendered .theme:focus .theme-screenshot img { opacity: 1.0; } + + .theme .notice .cut { + display: none; + } } @media only screen and (max-width: 480px) { @@ -908,15 +904,6 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .theme-browser .theme:nth-child(3n) { margin-right: 0; } - - .theme-overlay .theme-about { - bottom: 105px; - } - - .theme-overlay .theme-actions { - padding-left: 4%; - padding-right: 4%; - } } @media only screen and (max-width: 650px) { @@ -944,7 +931,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-overlay .theme-author { - margin: 5px 0 15px; + margin: 5px 0 15px 0; } .theme-overlay .current-label { @@ -957,7 +944,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { clear: both; left: 0; right: 0; - margin: -5px 0 20px; + margin: -5px 0 20px 0; width: 100%; max-width: 280px; } @@ -1010,11 +997,11 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { /* Already installed theme */ .theme-browser .theme .theme-installed { - background: #2271b1; + background: #0073aa; } .theme-browser .theme .notice-success p:before { - color: #68de7c; + color: #79ba49; content: "\f147"; display: inline-block; font: normal 20px/1 'dashicons'; @@ -1024,7 +1011,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { } .theme-install.updated-message:before { - content: ""; + content: ''; } .theme-install-php .wp-filter { @@ -1067,8 +1054,8 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .upload-theme .wp-upload-form, .upload-plugin .wp-upload-form { - background: #f6f7f7; - border: 1px solid #c3c4c7; + background: #fafafa; + border: 1px solid #e5e5e5; padding: 30px; margin: 30px auto; display: inline-flex; @@ -1083,7 +1070,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { .upload-theme .install-help, .upload-plugin .install-help { - color: #50575e; /* #f1f1f1 background */ + color: #555d66; /* #f1f1f1 background */ font-size: 18px; font-style: normal; margin: 0; @@ -1094,7 +1081,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap { p.no-themes, p.no-themes-local { clear: both; - color: #646970; + color: #666; font-size: 18px; font-style: normal; margin: 0; @@ -1123,7 +1110,7 @@ p.no-themes-local { } .theme-details .theme-rating { - line-height: 1.9; + line-height: 23px; } .theme-details .star-rating { @@ -1133,17 +1120,17 @@ p.no-themes-local { .theme-details .num-ratings, .theme-details .no-rating { font-size: 11px; - color: #646970; + color: #72777c; } .theme-details .no-rating { display: block; - line-height: 1.9; + line-height: 20px; } .update-from-upload-comparison { - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #dcdcde; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; text-align: left; margin: 1rem 0 1.4rem; border-collapse: collapse; @@ -1171,7 +1158,7 @@ p.no-themes-local { } .update-from-upload-comparison td.warning { - color: #d63638; + color: #a00; } .update-from-upload-actions { @@ -1183,7 +1170,7 @@ p.no-themes-local { ------------------------------------------------------------------------------*/ .appearance_page_custom-header #headimg { - border: 1px solid #dcdcde; + border: 1px solid #ddd; overflow: hidden; width: 100%; } @@ -1219,7 +1206,7 @@ p.no-themes-local { div#custom-background-image { min-height: 100px; - border: 1px solid #dcdcde; + border: 1px solid #ddd; } div#custom-background-image img { @@ -1228,16 +1215,16 @@ div#custom-background-image img { } .background-position-control input[type="radio"]:checked ~ .button { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ); z-index: 1; } .background-position-control input[type="radio"]:focus ~ .button { - border-color: #4f94d4; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 3px rgba(34, 113, 177, 0.8); - color: #1d2327; + border-color: #5b9dd9; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, .5 ), 0 0 3px rgba( 0, 115, 170, .8 ); + color: #23282d; } .background-position-control .background-position-center-icon, @@ -1245,7 +1232,7 @@ div#custom-background-image img { display: inline-block; line-height: 1; text-align: center; - transition: background-color .1s ease-in; + transition: background-color .1s ease-in 0; } .background-position-control .background-position-center-icon { @@ -1256,7 +1243,7 @@ div#custom-background-image img { } .background-position-control .background-position-center-icon:before { - background-color: #50575e; + background-color: #555; border-radius: 50%; content: ""; height: 12px; @@ -1265,7 +1252,7 @@ div#custom-background-image img { .background-position-control .button:hover .background-position-center-icon:before, .background-position-control input[type="radio"]:focus ~ .button .background-position-center-icon:before { - background-color: #1d2327; + background-color: #23282d; } .background-position-control .button-group { @@ -1277,7 +1264,7 @@ div#custom-background-image img { box-shadow: none; /* Following properties are overridden by buttons responsive styles (see: wp-includes/css/buttons.css). */ height: 40px !important; - line-height: 2.9 !important; + line-height: 37px !important; margin: 0 -1px 0 0 !important; padding: 0 10px 1px !important; position: relative; @@ -1290,7 +1277,7 @@ div#custom-background-image img { } .background-position-control .button-group:last-child .button { - box-shadow: 0 1px 0 #c3c4c7; + box-shadow: 0 1px 0 #ccc; } .background-position-control .button-group > label { @@ -1322,7 +1309,7 @@ div#custom-background-image img { } .background-position-control .button-group:last-child > label:last-child .button { - border-radius: 0 0 3px; + border-radius: 0 0 3px 0; } .background-position-control .button-group:last-child > label:last-child .dashicons { @@ -1373,7 +1360,7 @@ body.full-overlay-active { padding: 0; margin: 0; z-index: 10; - background: #f0f0f1; + background: #eee; border-right: none; } @@ -1440,7 +1427,7 @@ body.full-overlay-active { right: 0; height: 45px; padding: 0 15px; - line-height: 3.2; + line-height: 45px; z-index: 10; margin: 0; border-top: none; @@ -1480,9 +1467,10 @@ body.full-overlay-active { float: left; width: 45px; height: 45px; - background: #f0f0f1; - border-right: 1px solid #dcdcde; - color: #3c434a; + padding-right: 2px; + background: #eee; + border-right: 1px solid #ddd; + color: #444; cursor: pointer; text-decoration: none; transition: color .1s ease-in-out, background .1s ease-in-out; @@ -1494,8 +1482,8 @@ body.full-overlay-active { .theme-install-overlay .previous-theme:focus, .theme-install-overlay .next-theme:hover, .theme-install-overlay .next-theme:focus { - background: #dcdcde; - border-color: #c3c4c7; + background: #ddd; + border-color: #ccc; color: #000; outline: none; box-shadow: none; @@ -1531,8 +1519,8 @@ body.full-overlay-active { .theme-install-overlay .previous-theme.disabled:focus, .theme-install-overlay .next-theme.disabled:hover, .theme-install-overlay .next-theme.disabled:focus { - color: #c3c4c7; - background: #f0f0f1; + color: #b4b9be; + background: #eee; cursor: default; pointer-events: none; } @@ -1559,7 +1547,7 @@ body.full-overlay-active { left: 0; padding: 9px 0 9px 10px; height: 45px; - color: #646970; + color: #656a6f; outline: 0; line-height: 1; background-color: transparent !important; @@ -1570,14 +1558,14 @@ body.full-overlay-active { .wp-core-ui .wp-full-overlay .collapse-sidebar:hover, .wp-core-ui .wp-full-overlay .collapse-sidebar:focus { - color: #2271b1; + color: #0073aa; } .wp-full-overlay .collapse-sidebar-arrow, .wp-full-overlay .collapse-sidebar-label { display: inline-block; vertical-align: middle; - line-height: 1.6; + line-height: 20px; } .wp-full-overlay .collapse-sidebar-arrow { @@ -1590,9 +1578,9 @@ body.full-overlay-active { .wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow, .wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .wp-full-overlay .collapse-sidebar-label { @@ -1606,9 +1594,9 @@ body.full-overlay-active { .wp-full-overlay .collapse-sidebar-arrow:before { display: block; content: "\f148"; - background: #f0f0f1; + background: #eee; font: normal 20px/1 dashicons; - speak: never; + speak: none; padding: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -1621,7 +1609,7 @@ body.full-overlay-active { /* rtl:ignore */ .wp-full-overlay.collapsed .collapse-sidebar-arrow:before, .rtl .wp-full-overlay .collapse-sidebar-arrow:before { - transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ + transform: rotate(180.001deg); /* Firefox: promoting to its own layer to trigger anti-aliasing */ } .rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before { @@ -1640,11 +1628,11 @@ body.full-overlay-active { /* Device/preview size toggles */ .wp-full-overlay { - background: #1d2327; + background: #191e23; } .wp-full-overlay-main { - background-color: #f0f0f1; + background-color: #f1f1f1; } .expanded .wp-full-overlay-footer { @@ -1656,8 +1644,8 @@ body.full-overlay-active { width: 18%; width: calc( 18% - 1px ); height: 45px; - border-top: 1px solid #dcdcde; - background: #f0f0f1; + border-top: 1px solid #ddd; + background: #eee; } .wp-full-overlay-footer .devices-wrapper { @@ -1666,8 +1654,8 @@ body.full-overlay-active { .wp-full-overlay-footer .devices { position: relative; - background: #f0f0f1; - box-shadow: -20px 0 10px -5px #f0f0f1; + background: #eee; + box-shadow: -20px 0 10px -5px #eee; } .wp-full-overlay-footer .devices button { @@ -1680,10 +1668,9 @@ body.full-overlay-active { box-shadow: none; border-top: 1px solid transparent; border-bottom: 4px solid transparent; - transition: - .15s color ease-in-out, - .15s background-color ease-in-out, - .15s border-color ease-in-out; + transition: .15s color ease-in-out, + .15s background-color ease-in-out, + .15s border-color ease-in-out; } .wp-full-overlay-footer .devices button:focus { @@ -1698,11 +1685,11 @@ body.full-overlay-active { vertical-align: top; margin: 3px 0; padding: 4px 8px; - color: #646970; + color: #656a6f; } .wp-full-overlay-footer .devices button.active { - border-bottom-color: #1d2327; + border-bottom-color: #191e23; } .wp-full-overlay-footer .devices button:hover, @@ -1712,16 +1699,16 @@ body.full-overlay-active { .wp-full-overlay-footer .devices button:focus, .wp-full-overlay-footer .devices button.active:hover { - border-bottom-color: #2271b1; + border-bottom-color: #0073aa; } .wp-full-overlay-footer .devices button.active:before { - color: #1d2327; + color: #191e23; } .wp-full-overlay-footer .devices button:hover:before, .wp-full-overlay-footer .devices button:focus:before { - color: #2271b1; + color: #0073aa; } .wp-full-overlay-footer .devices .preview-desktop:before { @@ -1736,7 +1723,7 @@ body.full-overlay-active { content: "\f470"; } -@media screen and (max-width: 1024px) { +@media screen and (max-width:1024px) { .wp-full-overlay-footer .devices { display: none; } @@ -1780,7 +1767,7 @@ body.full-overlay-active { #customize-container, #customize-controls .notice.notification-overlay { - background: #f0f0f1; + background: #eee; z-index: 500000; position: fixed; overflow: visible; @@ -1844,7 +1831,7 @@ body.full-overlay-active { .install-theme-info .theme-name { font-size: 16px; - line-height: 1.5; + line-height: 24px; margin-bottom: 0; margin-top: 0; } @@ -1852,23 +1839,7 @@ body.full-overlay-active { .install-theme-info .theme-screenshot { margin: 15px 0; width: 258px; - border: 1px solid #c3c4c7; - position: relative; - overflow: hidden; -} - -.install-theme-info .theme-screenshot > img { - width: 100%; - height: auto; - position: absolute; - left: 0; - top: 0; -} - -.install-theme-info .theme-screenshot:after { - content: ""; - display: block; - padding-top: 66.66666666%; + border: 1px solid #ccc; } .install-theme-info .theme-details { @@ -1881,35 +1852,37 @@ body.full-overlay-active { .theme-details .theme-description { float: left; - color: #646970; - line-height: 1.6; + color: #72777c; + line-height: 20px; max-width: 100%; } .theme-install-overlay .wp-full-overlay-header .button { float: right; margin: 8px 10px 0 0; + /* For when .theme-install is a span rather than a.button-primary (already installed theme) */ + line-height: 26px; } .theme-install-overlay .wp-full-overlay-sidebar { - background: #f0f0f1; - border-right: 1px solid #dcdcde; + background: #eee; + border-right: 1px solid #ddd; } .theme-install-overlay .wp-full-overlay-sidebar-content { background: #fff; - border-top: 1px solid #dcdcde; - border-bottom: 1px solid #dcdcde; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; } .theme-install-overlay .wp-full-overlay-main { position: absolute; z-index: 0; - background-color: #f0f0f1; + background-color: #f1f1f1; } .customize-loading #customize-container { - background-color: #f0f0f1; + background-color: #f1f1f1; } #customize-preview.wp-full-overlay-main:before, @@ -1957,7 +1930,7 @@ body.full-overlay-active { } } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .available-theme .action-links .delete-theme { float: none; margin: 0; @@ -1973,10 +1946,9 @@ body.full-overlay-active { width: 100%; } - .theme-install-overlay .wp-full-overlay-header .button { - font-size: 13px; - line-height: 2.15384615; - min-height: 30px; + .theme-install-overlay .wp-full-overlay-header .theme-install { + margin-top: 6px; + line-height: normal; } .theme-browser .theme .theme-actions .button { @@ -1985,13 +1957,8 @@ body.full-overlay-active { .theme-browser .theme.active .theme-actions, .theme-browser .theme .theme-actions { - padding-top: 4px; - padding-bottom: 4px; - } - - .upload-theme .wp-upload-form, - .upload-plugin .wp-upload-form { - display: block; + padding-top: 8px; + padding-bottom: 8px; } } @@ -2000,6 +1967,6 @@ body.full-overlay-active { .theme-info .updating-message:before, .theme-info .updated-message:before, .theme-install.updating-message:before { - speak: never; + speak: none; } } diff --git a/wp-admin/css/themes.min.css b/wp-admin/css/themes.min.css index b44fa94..9ad60e0 100644 --- a/wp-admin/css/themes.min.css +++ b/wp-admin/css/themes.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.themes-php{overflow-y:scroll}body.js .theme-browser.search-loading{display:none}.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-left:20px}.themes-php .search-form{display:inline}.themes-php .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px}.theme .notice,.theme .notice.is-dismissible{left:0;margin:0;position:absolute;right:0;top:0}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #dcdcde;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme:nth-child(3n){margin-right:0}.theme-browser .theme.focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;transition:opacity .1s ease-in-out;height:auto;background:rgba(246,247,247,.7);border-left:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-right:3px}.theme-browser .theme .theme-actions .button{float:none;margin-left:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;left:0;top:0;width:100%;transition:opacity .2s ease-in-out}.theme-browser .theme.focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;right:20%;left:20%;width:60%;background:#1d2327;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;border-radius:3px;border:none;transition:opacity .1s ease-in-out;cursor:pointer}.theme-browser .theme .more-details:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.theme-browser .theme.focus{border-color:#4f94d4;box-shadow:0 0 2px rgba(79,148,212,.8)}.theme-browser .theme.focus .more-details{opacity:1}.theme-browser .theme.active.focus .theme-actions{display:block}.theme-browser.rendered .theme.focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme.active .theme-name{background:#1d2327;color:#fff;padding-right:110px;font-weight:300;box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-right:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(44,51,56,.7);border-left:none;opacity:1}.theme-id-container{position:relative}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{position:absolute;top:50%;transform:translateY(-50%);right:0;padding:9px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}.theme-browser .theme.active .theme-actions .button-primary{margin-right:0}.theme-browser .theme .theme-author{background:#1d2327;color:#f0f0f1;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit}.theme-browser .theme.add-new-theme{border:none;box-shadow:none}.theme-browser .theme.add-new-theme a{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;left:0;right:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #dcdcde;border:5px dashed rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#dcdcde;background:rgba(140,143,148,.1);border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:normal 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#8c8f94;position:absolute;top:30%;left:50%;margin-left:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#2271b1}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#2271b1;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;left:-20px;right:0;top:0;bottom:0;background:#f0f0f1;background:rgba(240,240,241,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;left:0;right:0;height:48px;border-bottom:1px solid #dcdcde}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:right;border:0;border-left:1px solid #dcdcde;background-color:transparent;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:normal 22px/50px dashicons!important;color:#787c82;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#787c82;background-color:transparent;height:48px;width:54px;float:left;text-align:center;border:0;border-right:1px solid #dcdcde;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#dcdcde;border-color:#c3c4c7;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#c3c4c7;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f341"}.theme-overlay .theme-header .right:before{content:"\f345"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;left:190px;right:30px;bottom:3%;background:#fff;box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{left:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;left:0;right:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;left:0;right:0;padding:10px 25px 5px;background:#f6f7f7;z-index:30;box-sizing:border-box;border-top:1px solid #f0f0f1}.theme-overlay .theme-actions a{margin-right:5px;margin-bottom:5px}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"]{display:none}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#d63638;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;right:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d63638;color:#fff;border-color:#d63638}.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:left;margin:0 30px 0 0;width:55%;max-width:1200px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;left:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:350px;width:auto}.theme-overlay .screenshot.thumb{background:#c3c4c7;border:1px solid #f0f0f1;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;height:auto;position:absolute;left:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #72aee6}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:left}.theme-overlay .current-label{background:#2c3338;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;border-radius:2px;margin:0 0 -10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.theme-overlay .theme-name{color:#1d2327;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#646970;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#646970;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .toggle-auto-update{display:inline-flex;align-items:center;min-height:20px;vertical-align:top}.theme-overlay .theme-autoupdate .toggle-auto-update{text-decoration:none}.theme-overlay .theme-autoupdate .toggle-auto-update .label{text-decoration:underline}.theme-overlay .theme-description{color:#50575e;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #f0f0f1;color:#646970;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#3c434a;font-weight:600;margin-right:5px}.theme-overlay .parent-theme{background:#fff;border:1px solid #f0f0f1;border-left:4px solid #72aee6;font-size:14px;font-weight:400;margin-top:30px;padding:10px 10px 10px 20px}.theme-overlay .parent-theme strong{font-weight:600}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;left:auto;right:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 3% 3% 0}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-right:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-right:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 3% 3% 0}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-right:3%}.theme-browser .theme:nth-child(4n){margin-right:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-right:0}.theme-browser .theme:nth-child(2n){margin-right:0}.theme-browser .theme:nth-child(odd){margin-right:5%}}@media only screen and (max-width:960px){.theme-overlay .theme-wrap{left:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;right:0;bottom:0;left:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:0;width:auto}.theme.focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme.focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-right:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-right:0}.theme-overlay .theme-about{bottom:105px}.theme-overlay .theme-actions{padding-left:4%;padding-right:4%}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-left:0}.theme-overlay .theme-actions .delete-theme{position:relative;right:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;left:0;right:0;margin:-5px 0 20px;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:normal 60px/90px dashicons;width:80px;height:80px;top:30%;left:50%;text-indent:0;margin-left:-40px}.single-theme .theme-wrap{margin:0 -12px 0 -10px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:left;width:50%;border-spacing:3px;padding:3px}.update-php .wrap{max-width:40rem}.theme-browser .theme .theme-installed{background:#2271b1}.theme-browser .theme .notice-success p:before{color:#68de7c;content:"\f147";display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:""}.theme-install-php .wp-filter{padding-left:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px;text-align:center}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#f6f7f7;border:1px solid #c3c4c7;padding:30px;margin:30px auto;display:inline-flex;justify-content:space-between;align-items:center}.upload-plugin .wp-upload-form input[type=file],.upload-theme .wp-upload-form input[type=file]{margin-right:10px}.upload-plugin .install-help,.upload-theme .install-help{color:#50575e;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes,p.no-themes-local{clear:both;color:#646970;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0}}.theme-details .theme-rating{line-height:1.9}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#646970}.theme-details .no-rating{display:block;line-height:1.9}.update-from-upload-comparison{border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde;text-align:left;margin:1rem 0 1.4rem;border-collapse:collapse;width:100%}.update-from-upload-comparison tr:last-child td{height:1.4rem;vertical-align:top}.update-from-upload-comparison tr:first-child th{font-weight:700;height:1.4rem;vertical-align:bottom}.update-from-upload-comparison td.name-label{text-align:right}.update-from-upload-comparison td,.update-from-upload-comparison th{padding:.4rem 1.4rem}.update-from-upload-comparison td.warning{color:#d63638}.update-from-upload-actions{margin-top:1.4rem}.appearance_page_custom-header #headimg{border:1px solid #dcdcde;overflow:hidden;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 #dcdcde}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#4f94d4;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(34,113,177,.8);color:#1d2327}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;transition:background-color .1s ease-in}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#50575e;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#1d2327}.background-position-control .button-group{display:block}.background-position-control .button-group .button{border-radius:0;box-shadow:none;height:40px!important;line-height:2.9!important;margin:0 -1px 0 0!important;padding:0 10px 1px!important;position:relative}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{box-shadow:0 1px 0 #c3c4c7}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{border-radius:3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:first-child>label:last-child .button{border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:first-child .button{border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:first-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:last-child .button{border-radius:0 0 3px}.background-position-control .button-group:last-child>label:last-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;min-width:300px;max-width:600px;width:18%;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;background:#f0f0f1;border-right:none}.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}@media screen and (min-width:1667px){.wp-full-overlay.expanded{margin-left:18%}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-18%}}@media screen and (min-width:3333px){.wp-full-overlay.expanded{margin-left:600px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-600px}}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;right:0;width:3px;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{position:absolute;left:0;right:0;height:45px;padding:0 15px;line-height:3.2;z-index:10;margin:0;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:left;width:45px;height:45px;background:#f0f0f1;border-right:1px solid #dcdcde;color:#3c434a;cursor:pointer;text-decoration:none;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#dcdcde;border-color:#c3c4c7;color:#000;outline:0;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:normal 22px/1 dashicons;content:"\f335";position:relative;top:7px;left:13px}.theme-install-overlay .previous-theme:before{font:normal 20px/1 dashicons;content:"\f341";position:relative;top:6px;left:14px}.theme-install-overlay .next-theme:before{font:normal 20px/1 dashicons;content:"\f345";position:relative;top:6px;left:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#c3c4c7;background:#f0f0f1;cursor:default;pointer-events:none}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-left:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;left:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;left:0;padding:9px 0 9px 10px;height:45px;color:#646970;outline:0;line-height:1;background-color:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#2271b1}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:1.6}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.wp-full-overlay .collapse-sidebar-label{margin-left:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#f0f0f1;font:normal 20px/1 dashicons;speak:never;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{transition-property:left,right,top,bottom,width,margin;transition-duration:.2s}.wp-full-overlay{background:#1d2327}.wp-full-overlay-main{background-color:#f0f0f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;left:0;min-width:299px;max-width:599px;width:18%;width:calc(18% - 1px);height:45px;border-top:1px solid #dcdcde;background:#f0f0f1}.wp-full-overlay-footer .devices-wrapper{float:right}.wp-full-overlay-footer .devices{position:relative;background:#f0f0f1;box-shadow:-20px 0 10px -5px #f0f0f1}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 0 0 -4px;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#646970}.wp-full-overlay-footer .devices button.active{border-bottom-color:#1d2327}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#2271b1}.wp-full-overlay-footer .devices button.active:before{color:#1d2327}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#2271b1}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto 0 auto -160px;width:320px;height:480px;max-height:100%;max-width:100%;left:50%}.preview-tablet .wp-full-overlay-main{margin:auto 0 auto -360px;width:720px;height:1080px;max-height:100%;max-width:100%;left:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container,#customize-controls .notice.notification-overlay{background:#f0f0f1;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}#customize-container{display:none}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .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:1.5;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #c3c4c7;position:relative;overflow:hidden}.install-theme-info .theme-screenshot>img{width:100%;height:auto;position:absolute;left:0;top:0}.install-theme-info .theme-screenshot:after{content:"";display:block;padding-top:66.66666666%}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:left;color:#646970;line-height:1.6;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:right;margin:8px 10px 0 0}.theme-install-overlay .wp-full-overlay-sidebar{background:#f0f0f1;border-right:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #dcdcde;border-bottom:1px solid #dcdcde}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f0f0f1}.customize-loading #customize-container{background-color:#f0f0f1}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;transform:translateZ(0);background:transparent url(../images/spinner.gif) no-repeat center center;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);background-size:15px 123px}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .button{font-size:13px;line-height:2.15384615;min-height:30px}.theme-browser .theme .theme-actions .button{margin-bottom:0}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{padding-top:4px;padding-bottom:4px}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{display:block}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:never}} \ No newline at end of file +body.js .theme-browser.search-loading{display:none}.theme-browser .themes{clear:both}.themes-php:not(.network-admin) .wrap h1{margin-bottom:15px}.themes-php .wrap h1 .button{margin-left:20px}.themes-php .search-form{display:inline}.themes-php .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.theme .notices{left:0;margin:0;position:absolute;right:0;top:0}.theme .notices .notice{margin:0}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #ddd;box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-sizing:border-box}.ie8 .theme-browser .theme{width:30%;margin:0 3% 4% 0}.theme-browser .theme:nth-child(3n){margin-right:0}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;transition:opacity .1s ease-in-out;height:auto;background:rgba(244,244,244,.7);border-left:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-right:3px}.theme-browser .theme .theme-actions .button{float:none;margin-left:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-backface-visibility:hidden;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;left:0;top:0;width:100%;transition:opacity .2s ease-in-out}.theme-browser .theme:focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;right:20%;left:20%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;border-radius:3px;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}.theme-browser .theme:focus .more-details{opacity:1}.theme-browser .theme.active:focus .theme-actions{display:block}.theme-browser.rendered .theme:focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme.active .theme-name{background:#23282d;color:#fff;padding-right:110px;font-weight:300;box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-right:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(49,49,49,.7);border-left:none;opacity:1}.theme-id-container{position:relative}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{position:absolute;top:50%;transform:translateY(-50%);right:0;padding:10px 15px;box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}.theme-browser .theme.active .theme-actions .button-primary{margin-right:0}.theme-browser .theme .theme-author{background:#23282d;color:#eee;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit;text-decoration:none}.theme-browser .theme.add-new-theme{border:none;box-shadow:none}.theme-browser .theme.add-new-theme a{text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;left:0;right:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:normal 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#999;position:absolute;top:30%;left:50%;margin-left:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#0073aa}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#0073aa;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;left:-20px;right:0;top:0;bottom:0;background:#f1f1f1;background:rgba(238,238,238,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;left:0;right:0;height:48px;border-bottom:1px solid #ddd}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:right;border:0;border-left:1px solid #ddd;background-color:transparent;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:normal 22px/50px dashicons!important;color:#72777c;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#72777c;background-color:transparent;height:48px;width:54px;float:left;text-align:center;border:0;border-right:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#ccc;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:normal 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f341"}.theme-overlay .theme-header .right:before{content:"\f345"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;left:190px;right:30px;bottom:3%;background:#fff;box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}body.folded .theme-browser~.theme-overlay .theme-wrap{left:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;left:0;right:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;left:0;right:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.ie8 .theme-overlay .theme-actions{border:1px solid #eee}.theme-overlay .theme-actions a{margin-right:5px;margin-bottom:5px}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"]{display:none}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;right:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d54e21;color:#fff;border-color:#d54e21}.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:left;margin:0 30px 0 0;width:55%;max-width:1200px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;left:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:350px;width:auto}.theme-overlay .screenshot.thumb{background:#ccc;border:1px solid #eee;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;height:auto;position:absolute;left:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #00a0d2}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:left}.theme-overlay .current-label{background:#32373c;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;border-radius:2px;margin:0 0 -10px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3;word-wrap:break-word;overflow-wrap:break-word}.theme-overlay .theme-version{color:#72777c;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#72777c;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0 0}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:600;margin-right:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-left:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 10px 10px 20px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;left:auto;right:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 3% 3% 0}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-right:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-right:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 3% 3% 0}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-right:3%}.theme-browser .theme:nth-child(4n){margin-right:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-right:0}.theme-browser .theme:nth-child(even){margin-right:0}.theme-browser .theme:nth-child(odd){margin-right:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{left:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;right:0;bottom:0;left:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px 10px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}.theme .notice .cut{display:none}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-right:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-right:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description{margin-left:0}.theme-overlay .theme-actions .delete-theme{position:relative;right:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px 0}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;left:0;right:0;margin:-5px 0 20px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:normal 60px/90px dashicons;width:80px;height:80px;top:30%;left:50%;text-indent:0;margin-left:-40px}.single-theme .theme-wrap{margin:0 -12px 0 -10px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:left;width:50%;border-spacing:3px;padding:3px}.update-php .wrap{max-width:40rem}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .notice-success p:before{color:#79ba49;content:"\f147";display:inline-block;font:normal 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.theme-install.updated-message:before{content:''}.theme-install-php .wp-filter{padding-left:20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.plugin-install-tab-upload .upload-view-toggle .upload,.upload-view-toggle .browse{display:none}.plugin-install-tab-upload .upload-view-toggle .browse{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:50px 0;width:100%;overflow:hidden;position:relative;top:10px;text-align:center}.plugin-install-tab-upload .upload-plugin,.show-upload-view .upload-plugin,.show-upload-view .upload-plugin-wrap,.show-upload-view .upload-theme{display:block}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;display:inline-flex;justify-content:space-between;align-items:center}.upload-plugin .wp-upload-form input[type=file],.upload-theme .wp-upload-form input[type=file]{margin-right:10px}.upload-plugin .install-help,.upload-theme .install-help{color:#555d66;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}p.no-themes,p.no-themes-local{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:100px 0;text-align:center;display:none}.no-results p.no-themes{display:block}.theme-install-php .add-new-theme{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#72777c}.theme-details .no-rating{display:block;line-height:20px}.update-from-upload-comparison{border-top:1px solid #ddd;border-bottom:1px solid #ddd;text-align:left;margin:1rem 0 1.4rem;border-collapse:collapse;width:100%}.update-from-upload-comparison tr:last-child td{height:1.4rem;vertical-align:top}.update-from-upload-comparison tr:first-child th{font-weight:700;height:1.4rem;vertical-align:bottom}.update-from-upload-comparison td.name-label{text-align:right}.update-from-upload-comparison td,.update-from-upload-comparison th{padding:.4rem 1.4rem}.update-from-upload-comparison td.warning{color:#a00}.update-from-upload-actions{margin-top:1.4rem}.appearance_page_custom-header #headimg{border:1px solid #ddd;overflow:hidden;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 #ddd}div#custom-background-image img{max-width:400px;max-height:300px}.background-position-control input[type=radio]:checked~.button{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);z-index:1}.background-position-control input[type=radio]:focus~.button{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);color:#23282d}.background-position-control .background-position-center-icon,.background-position-control .background-position-center-icon:before{display:inline-block;line-height:1;text-align:center;transition:background-color .1s ease-in 0}.background-position-control .background-position-center-icon{height:20px;margin-top:13px;vertical-align:top;width:20px}.background-position-control .background-position-center-icon:before{background-color:#555;border-radius:50%;content:"";height:12px;width:12px}.background-position-control .button:hover .background-position-center-icon:before,.background-position-control input[type=radio]:focus~.button .background-position-center-icon:before{background-color:#23282d}.background-position-control .button-group{display:block}.background-position-control .button-group .button{border-radius:0;box-shadow:none;height:40px!important;line-height:37px!important;margin:0 -1px 0 0!important;padding:0 10px 1px!important;position:relative}.background-position-control .button-group .button:active,.background-position-control .button-group .button:focus,.background-position-control .button-group .button:hover{z-index:1}.background-position-control .button-group:last-child .button{box-shadow:0 1px 0 #ccc}.background-position-control .button-group>label{margin:0!important}.background-position-control .button-group:first-child>label:first-child .button{border-radius:3px 0 0}.background-position-control .button-group:first-child>label:first-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group:first-child>label:last-child .button{border-radius:0 3px 0 0}.background-position-control .button-group:first-child>label:last-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:first-child .button{border-radius:0 0 0 3px}.background-position-control .button-group:last-child>label:first-child .dashicons{transform:rotate(-45deg)}.background-position-control .button-group:last-child>label:last-child .button{border-radius:0 0 3px 0}.background-position-control .button-group:last-child>label:last-child .dashicons{transform:rotate(45deg)}.background-position-control .button-group .dashicons{margin-top:9px}.background-position-control .button-group+.button-group{margin-top:-1px}body.full-overlay-active{overflow:hidden;visibility:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;min-width:300px;max-width:600px;width:18%;height:100%;top:0;bottom:0;left:0;padding:0;margin:0;z-index:10;background:#eee;border-right:none}.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}@media screen and (min-width:1667px){.wp-full-overlay.expanded{margin-left:18%}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-18%}}@media screen and (min-width:3333px){.wp-full-overlay.expanded{margin-left:600px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{margin-left:-600px}}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;right:0;width:3px;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{position:absolute;left:0;right:0;height:45px;padding:0 15px;line-height:45px;z-index:10;margin:0;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:left;width:45px;height:45px;padding-right:2px;background:#eee;border-right:1px solid #ddd;color:#444;cursor:pointer;text-decoration:none;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:normal 22px/1 dashicons;content:"\f335";position:relative;top:7px;left:13px}.theme-install-overlay .previous-theme:before{font:normal 20px/1 dashicons;content:"\f341";position:relative;top:6px;left:14px}.theme-install-overlay .next-theme:before{font:normal 20px/1 dashicons;content:"\f345";position:relative;top:6px;left:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#b4b9be;background:#eee;cursor:default;pointer-events:none}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{border-left:0;border-top:0;border-bottom:0}.theme-install-overlay .close-full-overlay:before,.theme-install-overlay .next-theme:before,.theme-install-overlay .previous-theme:before{top:2px;left:0}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:0;left:0;padding:9px 0 9px 10px;height:45px;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#0073aa}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:20px}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-full-overlay .collapse-sidebar-label{margin-left:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#eee;font:normal 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-core-ui .wp-full-overlay.collapsed .collapse-sidebar{padding:9px 10px}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{transition-property:left,right,top,bottom,width,margin;transition-duration:.2s}.wp-full-overlay{background:#191e23}.wp-full-overlay-main{background-color:#f1f1f1}.expanded .wp-full-overlay-footer{position:fixed;bottom:0;left:0;min-width:299px;max-width:599px;width:18%;width:calc(18% - 1px);height:45px;border-top:1px solid #ddd;background:#eee}.wp-full-overlay-footer .devices-wrapper{float:right}.wp-full-overlay-footer .devices{position:relative;background:#eee;box-shadow:-20px 0 10px -5px #eee}.wp-full-overlay-footer .devices button{cursor:pointer;background:0 0;border:none;height:45px;padding:0 3px;margin:0 0 0 -4px;box-shadow:none;border-top:1px solid transparent;border-bottom:4px solid transparent;transition:.15s color ease-in-out,.15s background-color ease-in-out,.15s border-color ease-in-out}.wp-full-overlay-footer .devices button:focus{box-shadow:none;outline:0}.wp-full-overlay-footer .devices button:before{display:inline-block;-webkit-font-smoothing:antialiased;font:normal 20px/30px dashicons;vertical-align:top;margin:3px 0;padding:4px 8px;color:#656a6f}.wp-full-overlay-footer .devices button.active{border-bottom-color:#191e23}.wp-full-overlay-footer .devices button:focus,.wp-full-overlay-footer .devices button:hover{background-color:#fff}.wp-full-overlay-footer .devices button.active:hover,.wp-full-overlay-footer .devices button:focus{border-bottom-color:#0073aa}.wp-full-overlay-footer .devices button.active:before{color:#191e23}.wp-full-overlay-footer .devices button:focus:before,.wp-full-overlay-footer .devices button:hover:before{color:#0073aa}.wp-full-overlay-footer .devices .preview-desktop:before{content:"\f472"}.wp-full-overlay-footer .devices .preview-tablet:before{content:"\f471"}.wp-full-overlay-footer .devices .preview-mobile:before{content:"\f470"}@media screen and (max-width:1024px){.wp-full-overlay-footer .devices{display:none}}.collapsed .wp-full-overlay-footer .devices button:before{display:none}.preview-mobile .wp-full-overlay-main{margin:auto 0 auto -160px;width:320px;height:480px;max-height:100%;max-width:100%;left:50%}.preview-tablet .wp-full-overlay-main{margin:auto 0 auto -360px;width:720px;height:1080px;max-height:100%;max-width:100%;left:50%}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container,#customize-controls .notice.notification-overlay{background:#eee;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}#customize-container{display:none}#customize-container,.theme-install-overlay{visibility:visible}.customize-loading #customize-container iframe{opacity:0}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .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;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:left;color:#72777c;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .button{float:right;margin:8px 10px 0 0;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:absolute;z-index:0;background-color:#f1f1f1}.customize-loading #customize-container{background-color:#f1f1f1}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;transform:translateZ(0);background:transparent url(../images/spinner.gif) no-repeat center center;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready:before,.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);background-size:15px 123px}#customize-controls .notice.notification-overlay.notification-loading:before,#customize-preview.wp-full-overlay-main:before,.customize-loading #customize-container:before,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}.theme-browser .theme .theme-actions .button{margin-bottom:0}.theme-browser .theme .theme-actions,.theme-browser .theme.active .theme-actions{padding-top:8px;padding-bottom:8px}}@media aural{.theme .notice:before,.theme-info .updated-message:before,.theme-info .updating-message:before,.theme-install.updating-message:before{speak:none}} \ No newline at end of file diff --git a/wp-admin/css/widgets-rtl.css b/wp-admin/css/widgets-rtl.css index 860400a..04b3032 100644 --- a/wp-admin/css/widgets-rtl.css +++ b/wp-admin/css/widgets-rtl.css @@ -1,22 +1,15 @@ /* General Widgets Styles */ .widget { - margin: 0 auto 10px !important; + margin: 0 auto 10px; position: relative; box-sizing: border-box; } -.widget.open { - z-index: 99; -} -.widget.open:focus-within { - z-index: 100; -} - .widget-top { font-size: 13px; font-weight: 600; - background: #f6f7f7; + background: #f7f7f7; } .widget-top .widget-action { @@ -25,13 +18,13 @@ padding: 10px; background: none; cursor: pointer; + outline: none; } .widget-title h3, -.widget-title h4, -summary.widget-title { +.widget-title h4 { margin: 0; - padding: 12px 10px 15px 15px; + padding: 15px; font-size: 1em; line-height: 1; overflow: hidden; @@ -42,24 +35,12 @@ summary.widget-title { user-select: none; } -.widget-title h3 { - padding-right: 5px; -} - -summary.widget-title::marker, -summary.widget-title::-webkit-details-marker { - font-size: 1.4em; - cursor: pointer; -} - .widgets-holder-wrap .widget-inside { - border: 0; - border-top: 1px solid #c3c4c7; - padding: 1px 15px 15px; - line-height: 1.23076923; + border-top: none; + padding: 1px 15px 15px 15px; + line-height: 16px; } -#available-widgets .widget-inside, .widget.widget-dirty .widget-control-close-wrapper { display: none; } @@ -67,12 +48,12 @@ summary.widget-title::-webkit-details-marker { .in-widget-title, #widgets-right a.widget-control-edit, #available-widgets .widget-description { - color: #646970; + color: #666; } .deleting .widget-title, .deleting .widget-top .widget-action .toggle-indicator:before { - color: #a7aaad; + color: #a0a5aa; } /* Media Widgets */ @@ -102,38 +83,17 @@ summary.widget-title::-webkit-details-marker { margin-left: 8px; } -.media-widget-control .attachment-media-view .button-add-media, .media-widget-control .placeholder { - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; box-sizing: border-box; cursor: pointer; - line-height: 1.6; + line-height: 20px; padding: 9px 0; position: relative; text-align: center; width: 100%; } -.media-widget-control .attachment-media-view .button-add-media { - cursor: pointer; - background-color: #f0f0f1; - color: #2c3338; -} - -.media-widget-control .attachment-media-view .button-add-media:hover { - background-color: #fff; -} - -.media-widget-control .attachment-media-view .button-add-media:focus { - background-color: #fff; - border-style: solid; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; -} - .media-widget-control .media-widget-preview { background: transparent; text-align: center; @@ -151,9 +111,6 @@ summary.widget-title::-webkit-details-marker { .media-widget-control .media-widget-preview img { max-width: 100%; vertical-align: middle; - background-image: linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(-45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); - background-position: 100% 0, 10px 10px; - background-size: 20px 20px; } .media-widget-control .media-widget-preview .wp-video-shortcode { background: #000; @@ -166,7 +123,6 @@ summary.widget-title::-webkit-details-marker { .media-frame.media-widget .image-details .embed-media-settings .setting.align, .media-frame.media-widget .attachment-display-settings .setting.align, .media-frame.media-widget .embed-media-settings .setting.align, -.media-frame.media-widget .embed-media-settings .legend-inline, .media-frame.media-widget .embed-link-settings .setting.link-text, .media-frame.media-widget .replace-attachment, .media-frame.media-widget .checkbox-setting.autoplay { @@ -181,7 +137,7 @@ summary.widget-title::-webkit-details-marker { display: inline-block; min-height: 132px; width: 100%; - background: #000; + background: black; } .media-widget-video-link .dashicons { @@ -189,7 +145,7 @@ summary.widget-title::-webkit-details-marker { position: relative; width: 100%; top: -90px; - color: #fff; + color: white; text-decoration: none; } @@ -199,7 +155,7 @@ summary.widget-title::-webkit-details-marker { .media-frame #embed-url-field.invalid, .media-widget-image-link > .link:invalid { - border: 1px solid #d63638; + border: 1px solid #dc3232; } .media-widget-image-link { @@ -219,7 +175,7 @@ summary.widget-title::-webkit-details-marker { } .media-widget-preview .placeholder { - background: #f0f0f1; + background: #f1f1f1; } .media-widget-gallery-preview .gallery-item { @@ -265,13 +221,13 @@ summary.widget-title::-webkit-details-marker { display: flex; align-items: center; justify-content: center; - background-color: rgba(0, 0, 0, 0.5); + background-color: rgba( 0, 0, 0, .5 ); } .media-widget-gallery-preview .gallery-icon-placeholder-text { font-weight: 600; font-size: 2em; - color: #fff; + color: white; } @@ -285,7 +241,7 @@ summary.widget-title::-webkit-details-marker { } .widget-placeholder { - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; margin: 0 auto 10px; height: 45px; width: 100%; @@ -330,18 +286,7 @@ summary.widget-title::-webkit-details-marker { .sidebar-name .handlediv:focus { box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; -} - -#widgets-left .sidebar-name .toggle-indicator { - display: none; -} - -#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator, -#widgets-left .sidebar-name:hover .toggle-indicator, -#widgets-left .sidebar-name .handlediv:focus .toggle-indicator { - display: block; + outline: none; } .sidebar-name .toggle-indicator:before { @@ -351,8 +296,8 @@ summary.widget-title::-webkit-details-marker { .sidebar-name .handlediv:focus .toggle-indicator:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .sidebar-name h2, @@ -360,34 +305,19 @@ summary.widget-title::-webkit-details-marker { margin: 0; padding: 8px 10px; overflow: hidden; - white-space: normal; - line-height: 1.5; - font-size: 1em; -} - -summary.sidebar-name { - padding: 15px 7px 15px 15px; - color: #1d2327; - font-size: 1.3em; - font-weight: 600; -} - -summary.sidebar-name::marker, -summary.sidebar-name::-webkit-details-marker { - font-size: 1.2em; - cursor: pointer; + white-space: nowrap; } .widgets-holder-wrap .description { padding: 0 0 15px; margin: 0; font-style: normal; - color: #646970; + color: #72777c; } .widget-holder .description, .inactive-sidebar .description { - color: #50575e; + color: #555d66; } #widgets-right .widgets-holder-wrap .description { @@ -435,6 +365,10 @@ div#widgets-left .widget-holder { box-shadow: none; } +#available-widgets .widget-action { + display: none; +} + #available-widgets .widget { margin: 0; } @@ -465,7 +399,7 @@ div#widgets-left .widget-holder { width: 100%; background: transparent; padding: 0; - margin: 0 0 20px; + margin: 0 0 20px 0; border: none; box-shadow: none; } @@ -500,7 +434,7 @@ div#widgets-right .sidebars-column-2 { } div#widgets-right .widgets-holder-wrap { - margin: 10px 0 0; + margin: 10px 0 0 0; } div#widgets-right .sidebar-description { @@ -510,7 +444,7 @@ div#widgets-right .sidebar-description { div#widgets-right .sidebar-name h2, div#widgets-right .sidebar-name h3 { - padding: 15px 7px 15px 15px; + padding: 15px 7px; } div#widgets-right .widget-top { @@ -537,16 +471,10 @@ div#widgets-right .closed .widgets-sortables { margin: -5px 5px; } -.sidebar-name .spinner { - position: absolute; - top: 18px; - left: 30px; -} - /* Dragging a widget over a closed sidebar */ #widgets-right .widgets-holder-wrap.widget-hover { - border-color: #787c82; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + border-color: #72777c; + box-shadow: 0 1px 2px rgba(0,0,0,0.3); } /* Accessibility Mode */ @@ -567,34 +495,30 @@ div#widgets-right .closed .widgets-sortables { .widgets_access #widgets-left .widget .widget-top:hover, .widgets_access #widgets-right .widget .widget-top:hover { - border-color: #dcdcde; + border-color: #ddd; } #available-widgets .widget-control-edit .edit, -#available-widgets .widget-action .edit, #widgets-left .inactive-sidebar .widget-control-edit .add, -#widgets-left .inactive-sidebar .widget-action .add, -#widgets-right .widget-control-edit .add, -#widgets-right .widget-action .add { +#widgets-right .widget-control-edit .add { display: none; } .widget-control-edit { display: block; - color: #646970; - background: #f0f0f1; + color: #666; + background: #EEE; padding: 0 15px; - line-height: 3.30769230; - border-right: 1px solid #dcdcde; - margin-top: -3.3em; + line-height: 43px; + border-right: 1px solid #DDD; } #widgets-left .widget-control-edit:hover, #widgets-right .widget-control-edit:hover { color: #fff; - background: #3c434a; + background: #444; border-right: 0; - outline: 1px solid #3c434a; + outline: 1px solid #444; } .widgets-holder-wrap .sidebar-name, @@ -617,10 +541,6 @@ div#widgets-right .closed .widgets-sortables { margin-top: 20px; } -#available-widgets .widget-control-actions { - display: none; -} - .js .widgets-holder-wrap.closed .widget, .js .widgets-holder-wrap.closed .sidebar-description, .js .widgets-holder-wrap.closed .remove-inactive-widgets, @@ -633,18 +553,14 @@ div#widgets-right .closed .widgets-sortables { display: block; } -/* Hide Widget Description by Default */ +/* Hide Widget Settings by Default */ +.widget-inside, .widget-description { display: none; } .widget-inside { background: #fff; - font-weight: 500; -} - -.widget-inside select { - max-width: 100%; } /* Dragging widgets over the available widget area show's a "Deactivate" message */ @@ -654,11 +570,11 @@ div#widgets-right .closed .widgets-sortables { padding-right: 15px; font-size: 12px; line-height: 1; - color: #000; + color: black; } .js #removing-widget { - color: #72aee6; + color: #00a0d2; } .widget-control-noform, @@ -666,6 +582,7 @@ div#widgets-right .closed .widgets-sortables { .widgets_access .widget-action, .widgets_access .handlediv, .widgets_access #access-on, +.widgets_access .widget-holder .description, .no-js .widget-holder .description { display: none; } @@ -709,8 +626,8 @@ div#widgets-right .closed .widgets-sortables { #available-widgets .widget-top:hover, div#widgets-right .widget-top:hover, #widgets-left .widget-top:hover { - border-color: #8c8f94; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); + border-color: #999; + box-shadow: 0 1px 2px rgba(0,0,0,0.1); } .widgets-chooser ul.widgets-chooser-sidebars { @@ -724,46 +641,49 @@ div#widgets-right .widget-top:hover, display: none; } -#available-widgets .widgets-chooser { - display: block; - font-weight: 500; +.widgets-chooser ul { + border: 1px solid #ccc; } .widgets-chooser li { - border-bottom: 1px solid #c3c4c7; + padding: 10px 35px 10px 15px; + border-bottom: 1px solid #ccc; background: #fff; margin: 0; + cursor: pointer; + outline: none; position: relative; + transition: background 0.2s ease-in-out; } -.widgets-chooser .widgets-chooser-button { - width: 100%; - padding: 10px 35px 10px 15px; - background: transparent; - border: 0; - box-sizing: border-box; - text-align: right; - cursor: pointer; - transition: background 0.2s ease-in-out; + /* @todo looks like these hover/focus states are overridden by .widgets-chooser-selected */ +.widgets-chooser li:hover, +.widgets-chooser li:focus { + background: rgba(255,255,255,0.7); } -/* @todo looks like these hover/focus states are overridden by .widgets-chooser-selected */ -.widgets-chooser .widgets-chooser-button:hover, -.widgets-chooser .widgets-chooser-button:focus { - outline: none; - text-decoration: underline; +.widgets-chooser li:focus:before { + content: "\f147"; + display: block; + -webkit-font-smoothing: antialiased; + font: normal 26px/1 dashicons; + color: #555d66; + position: absolute; + top: 7px; + right: 5px; } .widgets-chooser li:last-child { border: none; } -.widgets-chooser .widgets-chooser-selected .widgets-chooser-button { - background: #2271b1; +.widgets-chooser li.widgets-chooser-selected { + background: #00a0d2; color: #fff; } -.widgets-chooser .widgets-chooser-selected:before { +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { content: "\f147"; display: block; -webkit-font-smoothing: antialiased; @@ -775,10 +695,14 @@ div#widgets-right .widget-top:hover, } .widgets-chooser .widgets-chooser-actions { - padding: 10px 0 12px; + padding: 10px 0 12px 0; text-align: center; } +.widgets-chooser button { + margin-left: 5px; +} + #available-widgets .widget .widget-top { cursor: pointer; } @@ -807,11 +731,11 @@ div#widgets-right .widget-top:hover, left: 15px; } .text-widget-fields .wp-pointer .wp-pointer-buttons { - line-height: 1.4; + line-height: 1.4em; } .custom-html-widget-fields > p > .CodeMirror { - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; } .custom-html-widget-fields code { padding-top: 1px; @@ -827,15 +751,6 @@ ul.CodeMirror-hints { /* =Media Queries -------------------------------------------------------------- */ -@media screen and (max-width: 782px) { - .widgets-holder-wrap .widget-inside input[type="checkbox"], - .widgets-holder-wrap .widget-inside input[type="radio"], - .editwidget .widget-inside input[type="checkbox"], /* Selectors for the "accessibility mode" page. */ - .editwidget .widget-inside input[type="radio"] { - margin: 0.25rem 0 0.25rem 0.25rem; - } -} - @media screen and (max-width: 480px) { div.widget-liquid-left { width: 100%; @@ -862,12 +777,13 @@ ul.CodeMirror-hints { } div.widget { + margin: 0 auto !important; max-width: 480px; } .widget-access-link { float: none; - margin: 15px 0 0; + margin: 15px 0 0 0; } } @@ -878,7 +794,7 @@ ul.CodeMirror-hints { } @media only screen and (min-width: 1250px) { - #widgets-left #widget-list .widget { + #widgets-left #available-widgets .widget { width: 49%; float: right; } @@ -887,7 +803,7 @@ ul.CodeMirror-hints { min-width: 49%; } - #widgets-left #widget-list .widget:nth-child(even) { + #widgets-left #available-widgets .widget:nth-child(even) { float: left; } diff --git a/wp-admin/css/widgets-rtl.min.css b/wp-admin/css/widgets-rtl.min.css index 83a34c2..963a15a 100644 --- a/wp-admin/css/widgets-rtl.min.css +++ b/wp-admin/css/widgets-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.widget{margin:0 auto 10px!important;position:relative;box-sizing:border-box}.widget.open{z-index:99}.widget.open:focus-within{z-index:100}.widget-top{font-size:13px;font-weight:600;background:#f6f7f7}.widget-top .widget-action{border:0;margin:0;padding:10px;background:0 0;cursor:pointer}.widget-title h3,.widget-title h4,summary.widget-title{margin:0;padding:12px 10px 15px 15px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none}.widget-title h3{padding-right:5px}summary.widget-title::-webkit-details-marker,summary.widget-title::marker{font-size:1.4em;cursor:pointer}.widgets-holder-wrap .widget-inside{border:0;border-top:1px solid #c3c4c7;padding:1px 15px 15px;line-height:1.23076923}#available-widgets .widget-inside,.widget.widget-dirty .widget-control-close-wrapper{display:none}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#646970}.deleting .widget-title,.deleting .widget-top .widget-action .toggle-indicator:before{color:#a7aaad}.wp-core-ui .media-widget-control .selected,.wp-core-ui .media-widget-control.selected .not-selected,.wp-core-ui .media-widget-control.selected .placeholder{display:none}.media-widget-control.selected .selected{display:inline-block}.media-widget-buttons{text-align:right;margin-top:0}.media-widget-control .media-widget-buttons .button{width:auto;height:auto;margin-top:12px;white-space:normal}.media-widget-buttons .button:first-child{margin-left:8px}.media-widget-control .attachment-media-view .button-add-media,.media-widget-control .placeholder{border:1px dashed #c3c4c7;box-sizing:border-box;cursor:pointer;line-height:1.6;padding:9px 0;position:relative;text-align:center;width:100%}.media-widget-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.media-widget-control .attachment-media-view .button-add-media:hover{background-color:#fff}.media-widget-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-style:solid;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent;outline-offset:-2px}.media-widget-control .media-widget-preview{background:0 0;text-align:center}.media-widget-control .media-widget-preview .notice{text-align:initial}.media-frame .media-widget-embed-notice p code,.media-widget-control .notice p code{padding:0 0 0 3px}.media-frame .media-widget-embed-notice{margin-top:16px}.media-widget-control .media-widget-preview img{max-width:100%;vertical-align:middle;background-image:linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(-45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:100% 0,10px 10px;background-size:20px 20px}.media-widget-control .media-widget-preview .wp-video-shortcode{background:#000}.media-frame.media-widget .media-toolbar-secondary{min-width:300px}.media-frame.media-widget .attachment-display-settings .setting.align,.media-frame.media-widget .checkbox-setting.autoplay,.media-frame.media-widget .embed-link-settings .setting.link-text,.media-frame.media-widget .embed-media-settings .legend-inline,.media-frame.media-widget .embed-media-settings .setting.align,.media-frame.media-widget .image-details .embed-media-settings .setting.align,.media-frame.media-widget .replace-attachment{display:none}.media-widget-video-preview{width:100%}.media-widget-video-link{display:inline-block;min-height:132px;width:100%;background:#000}.media-widget-video-link .dashicons{font:normal 60px/1 dashicons;position:relative;width:100%;top:-90px;color:#fff;text-decoration:none}.media-widget-video-link.no-poster .dashicons{top:30px}.media-frame #embed-url-field.invalid,.media-widget-image-link>.link:invalid{border:1px solid #d63638}.media-widget-image-link{margin:1em 0}.media-widget-gallery-preview{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:-1.79104477%}.media-widget-preview.media_gallery,.media-widget-preview.media_image{cursor:pointer}.media-widget-preview .placeholder{background:#f0f0f1}.media-widget-gallery-preview .gallery-item{box-sizing:border-box;width:50%;margin:0;background:0 0}.media-widget-gallery-preview .gallery-item .gallery-icon{margin:4.5%}.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child,.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+5),.media-widget-gallery-preview .gallery-item:nth-last-child(n+5)~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+6),.media-widget-gallery-preview .gallery-item:nth-last-child(n+6)~.gallery-item{max-width:33.33%}.media-widget-gallery-preview .gallery-item img{height:auto;vertical-align:bottom}.media-widget-gallery-preview .gallery-icon{position:relative}.media-widget-gallery-preview .gallery-icon-placeholder{position:absolute;top:0;bottom:0;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5)}.media-widget-gallery-preview .gallery-icon-placeholder-text{font-weight:600;font-size:2em;color:#fff}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #c3c4c7;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.js .sidebar-name{cursor:pointer}.sidebar-name .handlediv{float:left;width:38px;height:38px;border:0;margin:0;padding:8px;background:0 0;cursor:pointer;outline:0}#widgets-right .sidebar-name .handlediv{margin:5px 0 0 3px}.sidebar-name .handlediv:focus{box-shadow:none;outline:1px solid transparent}#widgets-left .sidebar-name .toggle-indicator{display:none}#widgets-left .sidebar-name .handlediv:focus .toggle-indicator,#widgets-left .sidebar-name:hover .toggle-indicator,#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator{display:block}.sidebar-name .toggle-indicator:before{padding:1px 0 1px 2px;border-radius:50%}.sidebar-name .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:normal;line-height:1.5;font-size:1em}summary.sidebar-name{padding:15px 7px 15px 15px;color:#1d2327;font-size:1.3em;font-weight:600}summary.sidebar-name::-webkit-details-marker,summary.sidebar-name::marker{font-size:1.2em;cursor:pointer}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#646970}.inactive-sidebar .description,.widget-holder .description{color:#50575e}#widgets-right .widgets-holder-wrap .description{padding-right:7px;padding-left:7px}div.widget-liquid-left{margin:0;width:38%;float:right}div.widget-liquid-right{float:left;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 0 0 10px}#widgets-left .widgets-holder-wrap,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;box-shadow:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{right:auto}.widget-title-action{float:left;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 7px 15px 15px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}.sidebar-name .spinner{position:absolute;top:18px;left:30px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#787c82;box-shadow:0 1px 2px rgba(0,0,0,.3)}.widget-access-link{float:left;margin:-5px 10px 10px 0}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#dcdcde}#available-widgets .widget-action .edit,#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-action .add,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-action .add,#widgets-right .widget-control-edit .add{display:none}.widget-control-edit{display:block;color:#646970;background:#f0f0f1;padding:0 15px;line-height:3.30769230;border-right:1px solid #dcdcde;margin-top:-3.3em}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#3c434a;border-right:0;outline:1px solid #3c434a}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-inside{display:block;padding:0 15px}.editwidget .widget-control-actions{margin-top:20px}#available-widgets .widget-control-actions{display:none}.js .closed br.clear,.js .widgets-holder-wrap.closed .description,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}.widget-description{display:none}.widget-inside{background:#fff;font-weight:500}.widget-inside select{max-width:100%}#removing-widget{display:none;font-weight:400;padding-right:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#72aee6}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widgets_access #access-on,.widgets_access .handlediv,.widgets_access .widget-action{display:none}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{transition:opacity .1s linear}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.4)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}#available-widgets .widgets-chooser{display:block;font-weight:500}.widgets-chooser li{border-bottom:1px solid #c3c4c7;background:#fff;margin:0;position:relative}.widgets-chooser .widgets-chooser-button{width:100%;padding:10px 35px 10px 15px;background:0 0;border:0;box-sizing:border-box;text-align:right;cursor:pointer;transition:background .2s ease-in-out}.widgets-chooser .widgets-chooser-button:focus,.widgets-chooser .widgets-chooser-button:hover{outline:0;text-decoration:underline}.widgets-chooser li:last-child{border:none}.widgets-chooser .widgets-chooser-selected .widgets-chooser-button{background:#2271b1;color:#fff}.widgets-chooser .widgets-chooser-selected:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#fff;position:absolute;top:7px;right:5px}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}.text-widget-fields{position:relative}.text-widget-fields [hidden]{display:none}.text-widget-fields .wp-pointer.wp-pointer-top{position:absolute;z-index:3;top:100px;left:10px;right:10px}.text-widget-fields .wp-pointer .wp-pointer-arrow{right:auto;left:15px}.text-widget-fields .wp-pointer .wp-pointer-buttons{line-height:1.4}.custom-html-widget-fields>p>.CodeMirror{border:1px solid #dcdcde}.custom-html-widget-fields code{padding-top:1px;padding-bottom:1px}ul.CodeMirror-hints{z-index:101}.widget-control-actions .custom-html-widget-save-button.button.validation-blocked{cursor:not-allowed}@media screen and (max-width:782px){.editwidget .widget-inside input[type=checkbox],.editwidget .widget-inside input[type=radio],.widgets-holder-wrap .widget-inside input[type=checkbox],.widgets-holder-wrap .widget-inside input[type=radio]{margin:.25rem 0 .25rem .25rem}}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-left:none;padding-left:0}#widgets-left .sidebar-name{margin-left:0}#widgets-left #available-widgets .widget-top{margin-left:0}#widgets-left .inactive-sidebar .widgets-sortables{margin-left:0}div.widget-liquid-right{width:100%;float:none}div.widget{max-width:480px}.widget-access-link{float:none;margin:15px 0 0}}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #widget-list .widget{width:49%;float:right}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #widget-list .widget:nth-child(2n){float:left}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:right;width:49%}#widgets-right .sidebars-column-1{margin-left:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}} \ No newline at end of file +.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top .widget-action{border:0;margin:0;padding:10px;background:0 0;cursor:pointer;outline:0}.widget-title h3,.widget-title h4{margin:0;padding:15px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px 15px;line-height:16px}.widget.widget-dirty .widget-control-close-wrapper{display:none}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top .widget-action .toggle-indicator:before{color:#a0a5aa}.wp-core-ui .media-widget-control .selected,.wp-core-ui .media-widget-control.selected .not-selected,.wp-core-ui .media-widget-control.selected .placeholder{display:none}.media-widget-control.selected .selected{display:inline-block}.media-widget-buttons{text-align:right;margin-top:0}.media-widget-control .media-widget-buttons .button{width:auto;height:auto;margin-top:12px;white-space:normal}.media-widget-buttons .button:first-child{margin-left:8px}.media-widget-control .placeholder{border:1px dashed #b4b9be;box-sizing:border-box;cursor:pointer;line-height:20px;padding:9px 0;position:relative;text-align:center;width:100%}.media-widget-control .media-widget-preview{background:0 0;text-align:center}.media-widget-control .media-widget-preview .notice{text-align:initial}.media-frame .media-widget-embed-notice p code,.media-widget-control .notice p code{padding:0 0 0 3px}.media-frame .media-widget-embed-notice{margin-top:16px}.media-widget-control .media-widget-preview img{max-width:100%;vertical-align:middle}.media-widget-control .media-widget-preview .wp-video-shortcode{background:#000}.media-frame.media-widget .media-toolbar-secondary{min-width:300px}.media-frame.media-widget .attachment-display-settings .setting.align,.media-frame.media-widget .checkbox-setting.autoplay,.media-frame.media-widget .embed-link-settings .setting.link-text,.media-frame.media-widget .embed-media-settings .setting.align,.media-frame.media-widget .image-details .embed-media-settings .setting.align,.media-frame.media-widget .replace-attachment{display:none}.media-widget-video-preview{width:100%}.media-widget-video-link{display:inline-block;min-height:132px;width:100%;background:#000}.media-widget-video-link .dashicons{font:normal 60px/1 dashicons;position:relative;width:100%;top:-90px;color:#fff;text-decoration:none}.media-widget-video-link.no-poster .dashicons{top:30px}.media-frame #embed-url-field.invalid,.media-widget-image-link>.link:invalid{border:1px solid #dc3232}.media-widget-image-link{margin:1em 0}.media-widget-gallery-preview{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:-1.79104477%}.media-widget-preview.media_gallery,.media-widget-preview.media_image{cursor:pointer}.media-widget-preview .placeholder{background:#f1f1f1}.media-widget-gallery-preview .gallery-item{box-sizing:border-box;width:50%;margin:0;background:0 0}.media-widget-gallery-preview .gallery-item .gallery-icon{margin:4.5%}.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child,.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+5),.media-widget-gallery-preview .gallery-item:nth-last-child(n+5)~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+6),.media-widget-gallery-preview .gallery-item:nth-last-child(n+6)~.gallery-item{max-width:33.33%}.media-widget-gallery-preview .gallery-item img{height:auto;vertical-align:bottom}.media-widget-gallery-preview .gallery-icon{position:relative}.media-widget-gallery-preview .gallery-icon-placeholder{position:absolute;top:0;bottom:0;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5)}.media-widget-gallery-preview .gallery-icon-placeholder-text{font-weight:600;font-size:2em;color:#fff}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #b4b9be;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.js .sidebar-name{cursor:pointer}.sidebar-name .handlediv{float:left;width:38px;height:38px;border:0;margin:0;padding:8px;background:0 0;cursor:pointer;outline:0}#widgets-right .sidebar-name .handlediv{margin:5px 0 0 3px}.sidebar-name .handlediv:focus{box-shadow:none;outline:0}.sidebar-name .toggle-indicator:before{padding:1px 0 1px 2px;border-radius:50%}.sidebar-name .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#72777c}.inactive-sidebar .description,.widget-holder .description{color:#555d66}#widgets-right .widgets-holder-wrap .description{padding-right:7px;padding-left:7px}div.widget-liquid-left{margin:0;width:38%;float:right}div.widget-liquid-right{float:left;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 0 0 10px}#widgets-left .widgets-holder-wrap,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;box-shadow:none}#available-widgets .widget-action{display:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px 0;border:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{right:auto}.widget-title-action{float:left;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 7px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#72777c;box-shadow:0 1px 2px rgba(0,0,0,.3)}.widget-access-link{float:left;margin:-5px 10px 10px 0}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#ddd}#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-control-edit .add{display:none}.widget-control-edit{display:block;color:#666;background:#eee;padding:0 15px;line-height:43px;border-right:1px solid #ddd}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#444;border-right:0;outline:1px solid #444}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-inside{display:block;padding:0 15px}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .description,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}.widget-description,.widget-inside{display:none}.widget-inside{background:#fff}#removing-widget{display:none;font-weight:400;padding-right:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#00a0d2}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widgets_access #access-on,.widgets_access .handlediv,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{transition:opacity .1s linear}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #ccc}.widgets-chooser li{padding:10px 35px 10px 15px;border-bottom:1px solid #ccc;background:#fff;margin:0;cursor:pointer;outline:0;position:relative;transition:background .2s ease-in-out}.widgets-chooser li:focus,.widgets-chooser li:hover{background:rgba(255,255,255,.7)}.widgets-chooser li:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#555d66;position:absolute;top:7px;right:5px}.widgets-chooser li:last-child{border:none}.widgets-chooser li.widgets-chooser-selected{background:#00a0d2;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#fff;position:absolute;top:7px;right:5px}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px 0;text-align:center}.widgets-chooser button{margin-left:5px}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}.text-widget-fields{position:relative}.text-widget-fields [hidden]{display:none}.text-widget-fields .wp-pointer.wp-pointer-top{position:absolute;z-index:3;top:100px;left:10px;right:10px}.text-widget-fields .wp-pointer .wp-pointer-arrow{right:auto;left:15px}.text-widget-fields .wp-pointer .wp-pointer-buttons{line-height:1.4em}.custom-html-widget-fields>p>.CodeMirror{border:1px solid #e5e5e5}.custom-html-widget-fields code{padding-top:1px;padding-bottom:1px}ul.CodeMirror-hints{z-index:101}.widget-control-actions .custom-html-widget-save-button.button.validation-blocked{cursor:not-allowed}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-left:none;padding-left:0}#widgets-left .sidebar-name{margin-left:0}#widgets-left #available-widgets .widget-top{margin-left:0}#widgets-left .inactive-sidebar .widgets-sortables{margin-left:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto!important;max-width:480px}.widget-access-link{float:none;margin:15px 0 0 0}}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:right}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:left}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:right;width:49%}#widgets-right .sidebars-column-1{margin-left:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}} \ No newline at end of file diff --git a/wp-admin/css/widgets.css b/wp-admin/css/widgets.css index 1564b20..58577ad 100644 --- a/wp-admin/css/widgets.css +++ b/wp-admin/css/widgets.css @@ -1,22 +1,15 @@ /* General Widgets Styles */ .widget { - margin: 0 auto 10px !important; + margin: 0 auto 10px; position: relative; box-sizing: border-box; } -.widget.open { - z-index: 99; -} -.widget.open:focus-within { - z-index: 100; -} - .widget-top { font-size: 13px; font-weight: 600; - background: #f6f7f7; + background: #f7f7f7; } .widget-top .widget-action { @@ -25,13 +18,13 @@ padding: 10px; background: none; cursor: pointer; + outline: none; } .widget-title h3, -.widget-title h4, -summary.widget-title { +.widget-title h4 { margin: 0; - padding: 12px 15px 15px 10px; + padding: 15px; font-size: 1em; line-height: 1; overflow: hidden; @@ -42,24 +35,12 @@ summary.widget-title { user-select: none; } -.widget-title h3 { - padding-left: 5px; -} - -summary.widget-title::marker, -summary.widget-title::-webkit-details-marker { - font-size: 1.4em; - cursor: pointer; -} - .widgets-holder-wrap .widget-inside { - border: 0; - border-top: 1px solid #c3c4c7; - padding: 1px 15px 15px; - line-height: 1.23076923; + border-top: none; + padding: 1px 15px 15px 15px; + line-height: 16px; } -#available-widgets .widget-inside, .widget.widget-dirty .widget-control-close-wrapper { display: none; } @@ -67,12 +48,12 @@ summary.widget-title::-webkit-details-marker { .in-widget-title, #widgets-right a.widget-control-edit, #available-widgets .widget-description { - color: #646970; + color: #666; } .deleting .widget-title, .deleting .widget-top .widget-action .toggle-indicator:before { - color: #a7aaad; + color: #a0a5aa; } /* Media Widgets */ @@ -102,38 +83,17 @@ summary.widget-title::-webkit-details-marker { margin-right: 8px; } -.media-widget-control .attachment-media-view .button-add-media, .media-widget-control .placeholder { - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; box-sizing: border-box; cursor: pointer; - line-height: 1.6; + line-height: 20px; padding: 9px 0; position: relative; text-align: center; width: 100%; } -.media-widget-control .attachment-media-view .button-add-media { - cursor: pointer; - background-color: #f0f0f1; - color: #2c3338; -} - -.media-widget-control .attachment-media-view .button-add-media:hover { - background-color: #fff; -} - -.media-widget-control .attachment-media-view .button-add-media:focus { - background-color: #fff; - border-style: solid; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; -} - .media-widget-control .media-widget-preview { background: transparent; text-align: center; @@ -151,9 +111,6 @@ summary.widget-title::-webkit-details-marker { .media-widget-control .media-widget-preview img { max-width: 100%; vertical-align: middle; - background-image: linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7), linear-gradient(45deg, #c3c4c7 25%, transparent 25%, transparent 75%, #c3c4c7 75%, #c3c4c7); - background-position: 0 0, 10px 10px; - background-size: 20px 20px; } .media-widget-control .media-widget-preview .wp-video-shortcode { background: #000; @@ -166,7 +123,6 @@ summary.widget-title::-webkit-details-marker { .media-frame.media-widget .image-details .embed-media-settings .setting.align, .media-frame.media-widget .attachment-display-settings .setting.align, .media-frame.media-widget .embed-media-settings .setting.align, -.media-frame.media-widget .embed-media-settings .legend-inline, .media-frame.media-widget .embed-link-settings .setting.link-text, .media-frame.media-widget .replace-attachment, .media-frame.media-widget .checkbox-setting.autoplay { @@ -181,7 +137,7 @@ summary.widget-title::-webkit-details-marker { display: inline-block; min-height: 132px; width: 100%; - background: #000; + background: black; } .media-widget-video-link .dashicons { @@ -189,7 +145,7 @@ summary.widget-title::-webkit-details-marker { position: relative; width: 100%; top: -90px; - color: #fff; + color: white; text-decoration: none; } @@ -199,7 +155,7 @@ summary.widget-title::-webkit-details-marker { .media-frame #embed-url-field.invalid, .media-widget-image-link > .link:invalid { - border: 1px solid #d63638; + border: 1px solid #dc3232; } .media-widget-image-link { @@ -219,7 +175,7 @@ summary.widget-title::-webkit-details-marker { } .media-widget-preview .placeholder { - background: #f0f0f1; + background: #f1f1f1; } .media-widget-gallery-preview .gallery-item { @@ -265,13 +221,13 @@ summary.widget-title::-webkit-details-marker { display: flex; align-items: center; justify-content: center; - background-color: rgba(0, 0, 0, 0.5); + background-color: rgba( 0, 0, 0, .5 ); } .media-widget-gallery-preview .gallery-icon-placeholder-text { font-weight: 600; font-size: 2em; - color: #fff; + color: white; } @@ -285,7 +241,7 @@ summary.widget-title::-webkit-details-marker { } .widget-placeholder { - border: 1px dashed #c3c4c7; + border: 1px dashed #b4b9be; margin: 0 auto 10px; height: 45px; width: 100%; @@ -330,18 +286,7 @@ summary.widget-title::-webkit-details-marker { .sidebar-name .handlediv:focus { box-shadow: none; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; -} - -#widgets-left .sidebar-name .toggle-indicator { - display: none; -} - -#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator, -#widgets-left .sidebar-name:hover .toggle-indicator, -#widgets-left .sidebar-name .handlediv:focus .toggle-indicator { - display: block; + outline: none; } .sidebar-name .toggle-indicator:before { @@ -351,8 +296,8 @@ summary.widget-title::-webkit-details-marker { .sidebar-name .handlediv:focus .toggle-indicator:before { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .sidebar-name h2, @@ -360,34 +305,19 @@ summary.widget-title::-webkit-details-marker { margin: 0; padding: 8px 10px; overflow: hidden; - white-space: normal; - line-height: 1.5; - font-size: 1em; -} - -summary.sidebar-name { - padding: 15px 15px 15px 7px; - color: #1d2327; - font-size: 1.3em; - font-weight: 600; -} - -summary.sidebar-name::marker, -summary.sidebar-name::-webkit-details-marker { - font-size: 1.2em; - cursor: pointer; + white-space: nowrap; } .widgets-holder-wrap .description { padding: 0 0 15px; margin: 0; font-style: normal; - color: #646970; + color: #72777c; } .widget-holder .description, .inactive-sidebar .description { - color: #50575e; + color: #555d66; } #widgets-right .widgets-holder-wrap .description { @@ -435,6 +365,10 @@ div#widgets-left .widget-holder { box-shadow: none; } +#available-widgets .widget-action { + display: none; +} + #available-widgets .widget { margin: 0; } @@ -465,7 +399,7 @@ div#widgets-left .widget-holder { width: 100%; background: transparent; padding: 0; - margin: 0 0 20px; + margin: 0 0 20px 0; border: none; box-shadow: none; } @@ -500,7 +434,7 @@ div#widgets-right .sidebars-column-2 { } div#widgets-right .widgets-holder-wrap { - margin: 10px 0 0; + margin: 10px 0 0 0; } div#widgets-right .sidebar-description { @@ -510,7 +444,7 @@ div#widgets-right .sidebar-description { div#widgets-right .sidebar-name h2, div#widgets-right .sidebar-name h3 { - padding: 15px 15px 15px 7px; + padding: 15px 7px; } div#widgets-right .widget-top { @@ -537,16 +471,10 @@ div#widgets-right .closed .widgets-sortables { margin: -5px 5px; } -.sidebar-name .spinner { - position: absolute; - top: 18px; - right: 30px; -} - /* Dragging a widget over a closed sidebar */ #widgets-right .widgets-holder-wrap.widget-hover { - border-color: #787c82; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + border-color: #72777c; + box-shadow: 0 1px 2px rgba(0,0,0,0.3); } /* Accessibility Mode */ @@ -567,34 +495,30 @@ div#widgets-right .closed .widgets-sortables { .widgets_access #widgets-left .widget .widget-top:hover, .widgets_access #widgets-right .widget .widget-top:hover { - border-color: #dcdcde; + border-color: #ddd; } #available-widgets .widget-control-edit .edit, -#available-widgets .widget-action .edit, #widgets-left .inactive-sidebar .widget-control-edit .add, -#widgets-left .inactive-sidebar .widget-action .add, -#widgets-right .widget-control-edit .add, -#widgets-right .widget-action .add { +#widgets-right .widget-control-edit .add { display: none; } .widget-control-edit { display: block; - color: #646970; - background: #f0f0f1; + color: #666; + background: #EEE; padding: 0 15px; - line-height: 3.30769230; - border-left: 1px solid #dcdcde; - margin-top: -3.3em; + line-height: 43px; + border-left: 1px solid #DDD; } #widgets-left .widget-control-edit:hover, #widgets-right .widget-control-edit:hover { color: #fff; - background: #3c434a; + background: #444; border-left: 0; - outline: 1px solid #3c434a; + outline: 1px solid #444; } .widgets-holder-wrap .sidebar-name, @@ -617,10 +541,6 @@ div#widgets-right .closed .widgets-sortables { margin-top: 20px; } -#available-widgets .widget-control-actions { - display: none; -} - .js .widgets-holder-wrap.closed .widget, .js .widgets-holder-wrap.closed .sidebar-description, .js .widgets-holder-wrap.closed .remove-inactive-widgets, @@ -633,18 +553,14 @@ div#widgets-right .closed .widgets-sortables { display: block; } -/* Hide Widget Description by Default */ +/* Hide Widget Settings by Default */ +.widget-inside, .widget-description { display: none; } .widget-inside { background: #fff; - font-weight: 500; -} - -.widget-inside select { - max-width: 100%; } /* Dragging widgets over the available widget area show's a "Deactivate" message */ @@ -654,11 +570,11 @@ div#widgets-right .closed .widgets-sortables { padding-left: 15px; font-size: 12px; line-height: 1; - color: #000; + color: black; } .js #removing-widget { - color: #72aee6; + color: #00a0d2; } .widget-control-noform, @@ -666,6 +582,7 @@ div#widgets-right .closed .widgets-sortables { .widgets_access .widget-action, .widgets_access .handlediv, .widgets_access #access-on, +.widgets_access .widget-holder .description, .no-js .widget-holder .description { display: none; } @@ -709,8 +626,8 @@ div#widgets-right .closed .widgets-sortables { #available-widgets .widget-top:hover, div#widgets-right .widget-top:hover, #widgets-left .widget-top:hover { - border-color: #8c8f94; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); + border-color: #999; + box-shadow: 0 1px 2px rgba(0,0,0,0.1); } .widgets-chooser ul.widgets-chooser-sidebars { @@ -724,46 +641,49 @@ div#widgets-right .widget-top:hover, display: none; } -#available-widgets .widgets-chooser { - display: block; - font-weight: 500; +.widgets-chooser ul { + border: 1px solid #ccc; } .widgets-chooser li { - border-bottom: 1px solid #c3c4c7; + padding: 10px 15px 10px 35px; + border-bottom: 1px solid #ccc; background: #fff; margin: 0; + cursor: pointer; + outline: none; position: relative; + transition: background 0.2s ease-in-out; } -.widgets-chooser .widgets-chooser-button { - width: 100%; - padding: 10px 15px 10px 35px; - background: transparent; - border: 0; - box-sizing: border-box; - text-align: left; - cursor: pointer; - transition: background 0.2s ease-in-out; + /* @todo looks like these hover/focus states are overridden by .widgets-chooser-selected */ +.widgets-chooser li:hover, +.widgets-chooser li:focus { + background: rgba(255,255,255,0.7); } -/* @todo looks like these hover/focus states are overridden by .widgets-chooser-selected */ -.widgets-chooser .widgets-chooser-button:hover, -.widgets-chooser .widgets-chooser-button:focus { - outline: none; - text-decoration: underline; +.widgets-chooser li:focus:before { + content: "\f147"; + display: block; + -webkit-font-smoothing: antialiased; + font: normal 26px/1 dashicons; + color: #555d66; + position: absolute; + top: 7px; + left: 5px; } .widgets-chooser li:last-child { border: none; } -.widgets-chooser .widgets-chooser-selected .widgets-chooser-button { - background: #2271b1; +.widgets-chooser li.widgets-chooser-selected { + background: #00a0d2; color: #fff; } -.widgets-chooser .widgets-chooser-selected:before { +.widgets-chooser li.widgets-chooser-selected:before, +.widgets-chooser li.widgets-chooser-selected:focus:before { content: "\f147"; display: block; -webkit-font-smoothing: antialiased; @@ -775,10 +695,14 @@ div#widgets-right .widget-top:hover, } .widgets-chooser .widgets-chooser-actions { - padding: 10px 0 12px; + padding: 10px 0 12px 0; text-align: center; } +.widgets-chooser button { + margin-right: 5px; +} + #available-widgets .widget .widget-top { cursor: pointer; } @@ -807,11 +731,11 @@ div#widgets-right .widget-top:hover, right: 15px; } .text-widget-fields .wp-pointer .wp-pointer-buttons { - line-height: 1.4; + line-height: 1.4em; } .custom-html-widget-fields > p > .CodeMirror { - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; } .custom-html-widget-fields code { padding-top: 1px; @@ -827,15 +751,6 @@ ul.CodeMirror-hints { /* =Media Queries -------------------------------------------------------------- */ -@media screen and (max-width: 782px) { - .widgets-holder-wrap .widget-inside input[type="checkbox"], - .widgets-holder-wrap .widget-inside input[type="radio"], - .editwidget .widget-inside input[type="checkbox"], /* Selectors for the "accessibility mode" page. */ - .editwidget .widget-inside input[type="radio"] { - margin: 0.25rem 0.25rem 0.25rem 0; - } -} - @media screen and (max-width: 480px) { div.widget-liquid-left { width: 100%; @@ -862,12 +777,13 @@ ul.CodeMirror-hints { } div.widget { + margin: 0 auto !important; max-width: 480px; } .widget-access-link { float: none; - margin: 15px 0 0; + margin: 15px 0 0 0; } } @@ -878,7 +794,7 @@ ul.CodeMirror-hints { } @media only screen and (min-width: 1250px) { - #widgets-left #widget-list .widget { + #widgets-left #available-widgets .widget { width: 49%; float: left; } @@ -887,7 +803,7 @@ ul.CodeMirror-hints { min-width: 49%; } - #widgets-left #widget-list .widget:nth-child(even) { + #widgets-left #available-widgets .widget:nth-child(even) { float: right; } diff --git a/wp-admin/css/widgets.min.css b/wp-admin/css/widgets.min.css index b698666..ad6f900 100644 --- a/wp-admin/css/widgets.min.css +++ b/wp-admin/css/widgets.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.widget{margin:0 auto 10px!important;position:relative;box-sizing:border-box}.widget.open{z-index:99}.widget.open:focus-within{z-index:100}.widget-top{font-size:13px;font-weight:600;background:#f6f7f7}.widget-top .widget-action{border:0;margin:0;padding:10px;background:0 0;cursor:pointer}.widget-title h3,.widget-title h4,summary.widget-title{margin:0;padding:12px 15px 15px 10px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none}.widget-title h3{padding-left:5px}summary.widget-title::-webkit-details-marker,summary.widget-title::marker{font-size:1.4em;cursor:pointer}.widgets-holder-wrap .widget-inside{border:0;border-top:1px solid #c3c4c7;padding:1px 15px 15px;line-height:1.23076923}#available-widgets .widget-inside,.widget.widget-dirty .widget-control-close-wrapper{display:none}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#646970}.deleting .widget-title,.deleting .widget-top .widget-action .toggle-indicator:before{color:#a7aaad}.wp-core-ui .media-widget-control .selected,.wp-core-ui .media-widget-control.selected .not-selected,.wp-core-ui .media-widget-control.selected .placeholder{display:none}.media-widget-control.selected .selected{display:inline-block}.media-widget-buttons{text-align:left;margin-top:0}.media-widget-control .media-widget-buttons .button{width:auto;height:auto;margin-top:12px;white-space:normal}.media-widget-buttons .button:first-child{margin-right:8px}.media-widget-control .attachment-media-view .button-add-media,.media-widget-control .placeholder{border:1px dashed #c3c4c7;box-sizing:border-box;cursor:pointer;line-height:1.6;padding:9px 0;position:relative;text-align:center;width:100%}.media-widget-control .attachment-media-view .button-add-media{cursor:pointer;background-color:#f0f0f1;color:#2c3338}.media-widget-control .attachment-media-view .button-add-media:hover{background-color:#fff}.media-widget-control .attachment-media-view .button-add-media:focus{background-color:#fff;border-style:solid;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent;outline-offset:-2px}.media-widget-control .media-widget-preview{background:0 0;text-align:center}.media-widget-control .media-widget-preview .notice{text-align:initial}.media-frame .media-widget-embed-notice p code,.media-widget-control .notice p code{padding:0 3px 0 0}.media-frame .media-widget-embed-notice{margin-top:16px}.media-widget-control .media-widget-preview img{max-width:100%;vertical-align:middle;background-image:linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7),linear-gradient(45deg,#c3c4c7 25%,transparent 25%,transparent 75%,#c3c4c7 75%,#c3c4c7);background-position:0 0,10px 10px;background-size:20px 20px}.media-widget-control .media-widget-preview .wp-video-shortcode{background:#000}.media-frame.media-widget .media-toolbar-secondary{min-width:300px}.media-frame.media-widget .attachment-display-settings .setting.align,.media-frame.media-widget .checkbox-setting.autoplay,.media-frame.media-widget .embed-link-settings .setting.link-text,.media-frame.media-widget .embed-media-settings .legend-inline,.media-frame.media-widget .embed-media-settings .setting.align,.media-frame.media-widget .image-details .embed-media-settings .setting.align,.media-frame.media-widget .replace-attachment{display:none}.media-widget-video-preview{width:100%}.media-widget-video-link{display:inline-block;min-height:132px;width:100%;background:#000}.media-widget-video-link .dashicons{font:normal 60px/1 dashicons;position:relative;width:100%;top:-90px;color:#fff;text-decoration:none}.media-widget-video-link.no-poster .dashicons{top:30px}.media-frame #embed-url-field.invalid,.media-widget-image-link>.link:invalid{border:1px solid #d63638}.media-widget-image-link{margin:1em 0}.media-widget-gallery-preview{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:-1.79104477%}.media-widget-preview.media_gallery,.media-widget-preview.media_image{cursor:pointer}.media-widget-preview .placeholder{background:#f0f0f1}.media-widget-gallery-preview .gallery-item{box-sizing:border-box;width:50%;margin:0;background:0 0}.media-widget-gallery-preview .gallery-item .gallery-icon{margin:4.5%}.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child,.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+5),.media-widget-gallery-preview .gallery-item:nth-last-child(n+5)~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+6),.media-widget-gallery-preview .gallery-item:nth-last-child(n+6)~.gallery-item{max-width:33.33%}.media-widget-gallery-preview .gallery-item img{height:auto;vertical-align:bottom}.media-widget-gallery-preview .gallery-icon{position:relative}.media-widget-gallery-preview .gallery-icon-placeholder{position:absolute;top:0;bottom:0;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5)}.media-widget-gallery-preview .gallery-icon-placeholder-text{font-weight:600;font-size:2em;color:#fff}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #c3c4c7;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.js .sidebar-name{cursor:pointer}.sidebar-name .handlediv{float:right;width:38px;height:38px;border:0;margin:0;padding:8px;background:0 0;cursor:pointer;outline:0}#widgets-right .sidebar-name .handlediv{margin:5px 3px 0 0}.sidebar-name .handlediv:focus{box-shadow:none;outline:1px solid transparent}#widgets-left .sidebar-name .toggle-indicator{display:none}#widgets-left .sidebar-name .handlediv:focus .toggle-indicator,#widgets-left .sidebar-name:hover .toggle-indicator,#widgets-left .widgets-holder-wrap.closed .sidebar-name .toggle-indicator{display:block}.sidebar-name .toggle-indicator:before{padding:1px 2px 1px 0;border-radius:50%}.sidebar-name .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:normal;line-height:1.5;font-size:1em}summary.sidebar-name{padding:15px 15px 15px 7px;color:#1d2327;font-size:1.3em;font-weight:600}summary.sidebar-name::-webkit-details-marker,summary.sidebar-name::marker{font-size:1.2em;cursor:pointer}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#646970}.inactive-sidebar .description,.widget-holder .description{color:#50575e}#widgets-right .widgets-holder-wrap .description{padding-left:7px;padding-right:7px}div.widget-liquid-left{margin:0;width:38%;float:left}div.widget-liquid-right{float:right;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 10px 0 0}#widgets-left .widgets-holder-wrap,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;box-shadow:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{left:auto}.widget-title-action{float:right;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 15px 15px 7px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}.sidebar-name .spinner{position:absolute;top:18px;right:30px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#787c82;box-shadow:0 1px 2px rgba(0,0,0,.3)}.widget-access-link{float:right;margin:-5px 0 10px 10px}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#dcdcde}#available-widgets .widget-action .edit,#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-action .add,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-action .add,#widgets-right .widget-control-edit .add{display:none}.widget-control-edit{display:block;color:#646970;background:#f0f0f1;padding:0 15px;line-height:3.30769230;border-left:1px solid #dcdcde;margin-top:-3.3em}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#3c434a;border-left:0;outline:1px solid #3c434a}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-inside{display:block;padding:0 15px}.editwidget .widget-control-actions{margin-top:20px}#available-widgets .widget-control-actions{display:none}.js .closed br.clear,.js .widgets-holder-wrap.closed .description,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}.widget-description{display:none}.widget-inside{background:#fff;font-weight:500}.widget-inside select{max-width:100%}#removing-widget{display:none;font-weight:400;padding-left:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#72aee6}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widgets_access #access-on,.widgets_access .handlediv,.widgets_access .widget-action{display:none}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{transition:opacity .1s linear}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#8c8f94;box-shadow:0 1px 2px rgba(0,0,0,.4)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}#available-widgets .widgets-chooser{display:block;font-weight:500}.widgets-chooser li{border-bottom:1px solid #c3c4c7;background:#fff;margin:0;position:relative}.widgets-chooser .widgets-chooser-button{width:100%;padding:10px 15px 10px 35px;background:0 0;border:0;box-sizing:border-box;text-align:left;cursor:pointer;transition:background .2s ease-in-out}.widgets-chooser .widgets-chooser-button:focus,.widgets-chooser .widgets-chooser-button:hover{outline:0;text-decoration:underline}.widgets-chooser li:last-child{border:none}.widgets-chooser .widgets-chooser-selected .widgets-chooser-button{background:#2271b1;color:#fff}.widgets-chooser .widgets-chooser-selected:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#fff;position:absolute;top:7px;left:5px}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}.text-widget-fields{position:relative}.text-widget-fields [hidden]{display:none}.text-widget-fields .wp-pointer.wp-pointer-top{position:absolute;z-index:3;top:100px;right:10px;left:10px}.text-widget-fields .wp-pointer .wp-pointer-arrow{left:auto;right:15px}.text-widget-fields .wp-pointer .wp-pointer-buttons{line-height:1.4}.custom-html-widget-fields>p>.CodeMirror{border:1px solid #dcdcde}.custom-html-widget-fields code{padding-top:1px;padding-bottom:1px}ul.CodeMirror-hints{z-index:101}.widget-control-actions .custom-html-widget-save-button.button.validation-blocked{cursor:not-allowed}@media screen and (max-width:782px){.editwidget .widget-inside input[type=checkbox],.editwidget .widget-inside input[type=radio],.widgets-holder-wrap .widget-inside input[type=checkbox],.widgets-holder-wrap .widget-inside input[type=radio]{margin:.25rem .25rem .25rem 0}}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-right:none;padding-right:0}#widgets-left .sidebar-name{margin-right:0}#widgets-left #available-widgets .widget-top{margin-right:0}#widgets-left .inactive-sidebar .widgets-sortables{margin-right:0}div.widget-liquid-right{width:100%;float:none}div.widget{max-width:480px}.widget-access-link{float:none;margin:15px 0 0}}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #widget-list .widget{width:49%;float:left}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #widget-list .widget:nth-child(2n){float:right}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:left;width:49%}#widgets-right .sidebars-column-1{margin-right:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}} \ No newline at end of file +.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top .widget-action{border:0;margin:0;padding:10px;background:0 0;cursor:pointer;outline:0}.widget-title h3,.widget-title h4{margin:0;padding:15px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px 15px;line-height:16px}.widget.widget-dirty .widget-control-close-wrapper{display:none}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top .widget-action .toggle-indicator:before{color:#a0a5aa}.wp-core-ui .media-widget-control .selected,.wp-core-ui .media-widget-control.selected .not-selected,.wp-core-ui .media-widget-control.selected .placeholder{display:none}.media-widget-control.selected .selected{display:inline-block}.media-widget-buttons{text-align:left;margin-top:0}.media-widget-control .media-widget-buttons .button{width:auto;height:auto;margin-top:12px;white-space:normal}.media-widget-buttons .button:first-child{margin-right:8px}.media-widget-control .placeholder{border:1px dashed #b4b9be;box-sizing:border-box;cursor:pointer;line-height:20px;padding:9px 0;position:relative;text-align:center;width:100%}.media-widget-control .media-widget-preview{background:0 0;text-align:center}.media-widget-control .media-widget-preview .notice{text-align:initial}.media-frame .media-widget-embed-notice p code,.media-widget-control .notice p code{padding:0 3px 0 0}.media-frame .media-widget-embed-notice{margin-top:16px}.media-widget-control .media-widget-preview img{max-width:100%;vertical-align:middle}.media-widget-control .media-widget-preview .wp-video-shortcode{background:#000}.media-frame.media-widget .media-toolbar-secondary{min-width:300px}.media-frame.media-widget .attachment-display-settings .setting.align,.media-frame.media-widget .checkbox-setting.autoplay,.media-frame.media-widget .embed-link-settings .setting.link-text,.media-frame.media-widget .embed-media-settings .setting.align,.media-frame.media-widget .image-details .embed-media-settings .setting.align,.media-frame.media-widget .replace-attachment{display:none}.media-widget-video-preview{width:100%}.media-widget-video-link{display:inline-block;min-height:132px;width:100%;background:#000}.media-widget-video-link .dashicons{font:normal 60px/1 dashicons;position:relative;width:100%;top:-90px;color:#fff;text-decoration:none}.media-widget-video-link.no-poster .dashicons{top:30px}.media-frame #embed-url-field.invalid,.media-widget-image-link>.link:invalid{border:1px solid #dc3232}.media-widget-image-link{margin:1em 0}.media-widget-gallery-preview{display:flex;justify-content:flex-start;flex-wrap:wrap;margin:-1.79104477%}.media-widget-preview.media_gallery,.media-widget-preview.media_image{cursor:pointer}.media-widget-preview .placeholder{background:#f1f1f1}.media-widget-gallery-preview .gallery-item{box-sizing:border-box;width:50%;margin:0;background:0 0}.media-widget-gallery-preview .gallery-item .gallery-icon{margin:4.5%}.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child,.media-widget-gallery-preview .gallery-item:nth-last-child(3):first-child~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+5),.media-widget-gallery-preview .gallery-item:nth-last-child(n+5)~.gallery-item,.media-widget-gallery-preview .gallery-item:nth-last-child(n+6),.media-widget-gallery-preview .gallery-item:nth-last-child(n+6)~.gallery-item{max-width:33.33%}.media-widget-gallery-preview .gallery-item img{height:auto;vertical-align:bottom}.media-widget-gallery-preview .gallery-icon{position:relative}.media-widget-gallery-preview .gallery-icon-placeholder{position:absolute;top:0;bottom:0;width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.5)}.media-widget-gallery-preview .gallery-icon-placeholder-text{font-weight:600;font-size:2em;color:#fff}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #b4b9be;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.js .sidebar-name{cursor:pointer}.sidebar-name .handlediv{float:right;width:38px;height:38px;border:0;margin:0;padding:8px;background:0 0;cursor:pointer;outline:0}#widgets-right .sidebar-name .handlediv{margin:5px 3px 0 0}.sidebar-name .handlediv:focus{box-shadow:none;outline:0}.sidebar-name .toggle-indicator:before{padding:1px 2px 1px 0;border-radius:50%}.sidebar-name .handlediv:focus .toggle-indicator:before{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#72777c}.inactive-sidebar .description,.widget-holder .description{color:#555d66}#widgets-right .widgets-holder-wrap .description{padding-left:7px;padding-right:7px}div.widget-liquid-left{margin:0;width:38%;float:left}div.widget-liquid-right{float:right;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 10px 0 0}#widgets-left .widgets-holder-wrap,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;box-shadow:none}#available-widgets .widget-action{display:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px 0;border:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{left:auto}.widget-title-action{float:right;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 7px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#72777c;box-shadow:0 1px 2px rgba(0,0,0,.3)}.widget-access-link{float:right;margin:-5px 0 10px 10px}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#ddd}#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-control-edit .add{display:none}.widget-control-edit{display:block;color:#666;background:#eee;padding:0 15px;line-height:43px;border-left:1px solid #ddd}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#444;border-left:0;outline:1px solid #444}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-inside{display:block;padding:0 15px}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .description,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}.widget-description,.widget-inside{display:none}.widget-inside{background:#fff}#removing-widget{display:none;font-weight:400;padding-left:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#00a0d2}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widgets_access #access-on,.widgets_access .handlediv,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{transition:opacity .1s linear}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #ccc}.widgets-chooser li{padding:10px 15px 10px 35px;border-bottom:1px solid #ccc;background:#fff;margin:0;cursor:pointer;outline:0;position:relative;transition:background .2s ease-in-out}.widgets-chooser li:focus,.widgets-chooser li:hover{background:rgba(255,255,255,.7)}.widgets-chooser li:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#555d66;position:absolute;top:7px;left:5px}.widgets-chooser li:last-child{border:none}.widgets-chooser li.widgets-chooser-selected{background:#00a0d2;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:normal 26px/1 dashicons;color:#fff;position:absolute;top:7px;left:5px}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px 0;text-align:center}.widgets-chooser button{margin-right:5px}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}.text-widget-fields{position:relative}.text-widget-fields [hidden]{display:none}.text-widget-fields .wp-pointer.wp-pointer-top{position:absolute;z-index:3;top:100px;right:10px;left:10px}.text-widget-fields .wp-pointer .wp-pointer-arrow{left:auto;right:15px}.text-widget-fields .wp-pointer .wp-pointer-buttons{line-height:1.4em}.custom-html-widget-fields>p>.CodeMirror{border:1px solid #e5e5e5}.custom-html-widget-fields code{padding-top:1px;padding-bottom:1px}ul.CodeMirror-hints{z-index:101}.widget-control-actions .custom-html-widget-save-button.button.validation-blocked{cursor:not-allowed}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-right:none;padding-right:0}#widgets-left .sidebar-name{margin-right:0}#widgets-left #available-widgets .widget-top{margin-right:0}#widgets-left .inactive-sidebar .widgets-sortables{margin-right:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto!important;max-width:480px}.widget-access-link{float:none;margin:15px 0 0 0}}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:left}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:right}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:left;width:49%}#widgets-right .sidebars-column-1{margin-right:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}} \ No newline at end of file diff --git a/wp-admin/css/wp-admin-rtl.css b/wp-admin/css/wp-admin-rtl.css index 207a8c8..5e7c37d 100644 --- a/wp-admin/css/wp-admin-rtl.css +++ b/wp-admin/css/wp-admin-rtl.css @@ -12,4 +12,3 @@ @import url(widgets-rtl.css); @import url(site-icon-rtl.css); @import url(l10n-rtl.css); -@import url(site-health-rtl.css); diff --git a/wp-admin/css/wp-admin-rtl.min.css b/wp-admin/css/wp-admin-rtl.min.css index 110850b..486af53 100644 --- a/wp-admin/css/wp-admin-rtl.min.css +++ b/wp-admin/css/wp-admin-rtl.min.css @@ -13,4 +13,3 @@ @import url(widgets-rtl.min.css); @import url(site-icon-rtl.min.css); @import url(l10n-rtl.min.css); -@import url(site-health-rtl.min.css); diff --git a/wp-admin/css/wp-admin.css b/wp-admin/css/wp-admin.css index b475cf0..14c10f9 100644 --- a/wp-admin/css/wp-admin.css +++ b/wp-admin/css/wp-admin.css @@ -12,4 +12,3 @@ @import url(widgets.css); @import url(site-icon.css); @import url(l10n.css); -@import url(site-health.css); diff --git a/wp-admin/css/wp-admin.min.css b/wp-admin/css/wp-admin.min.css index 2fdbba5..e139523 100644 --- a/wp-admin/css/wp-admin.min.css +++ b/wp-admin/css/wp-admin.min.css @@ -13,4 +13,3 @@ @import url(widgets.min.css); @import url(site-icon.min.css); @import url(l10n.min.css); -@import url(site-health.min.css); diff --git a/wp-admin/custom-background.php b/wp-admin/custom-background.php index bac0439..96e0275 100644 --- a/wp-admin/custom-background.php +++ b/wp-admin/custom-background.php @@ -9,7 +9,7 @@ * @subpackage Administration */ -_deprecated_file( basename( __FILE__ ), '5.3.0', 'wp-admin/includes/class-custom-background.php' ); +_deprecated_file( basename( __FILE__ ), 'WP-5.3.0', 'wp-admin/includes/class-custom-background.php' ); /** Custom_Background class */ require_once ABSPATH . 'wp-admin/includes/class-custom-background.php'; diff --git a/wp-admin/custom-header.php b/wp-admin/custom-header.php index aa693e7..b4507cb 100644 --- a/wp-admin/custom-header.php +++ b/wp-admin/custom-header.php @@ -4,12 +4,12 @@ * * This file is deprecated, use 'wp-admin/includes/class-custom-image-header.php' instead. * - * @deprecated 5.3.0 + * @deprecated WP-5.3.0 * @package ClassicPress * @subpackage Administration */ -_deprecated_file( basename( __FILE__ ), '5.3.0', 'wp-admin/includes/class-custom-image-header.php' ); +_deprecated_file( basename( __FILE__ ), 'WP-5.3.0', 'wp-admin/includes/class-custom-image-header.php' ); /** Custom_Image_Header class */ require_once ABSPATH . 'wp-admin/includes/class-custom-image-header.php'; diff --git a/wp-admin/customize.php b/wp-admin/customize.php index a46721c..46b81dc 100644 --- a/wp-admin/customize.php +++ b/wp-admin/customize.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 3.4.0 + * @since WP-3.4.0 */ define( 'IFRAME_REQUEST', true ); /** Load ClassicPress Administration Bootstrap */ -require_once __DIR__ . '/admin.php'; +require_once dirname( __FILE__ ) . '/admin.php'; if ( ! current_user_can( 'customize' ) ) { wp_die( @@ -49,7 +49,7 @@ * argument, settings cannot be reliably saved. Some logic short-circuits if the current value is the * same as the value being saved. This is particularly true for options via `update_option()`. * - * By opening an Ajax request, this is avoided and the changeset is published. See #39221. + * By opening an Ajax request, this is avoided and the changeset is published. See https://core.trac.wordpress.org/ticket/39221. */ $nonces = $wp_customize->get_nonces(); $request_args = array( @@ -97,7 +97,7 @@ } $registered = $wp_scripts->registered; -$wp_scripts = new WP_Scripts(); +$wp_scripts = new WP_Scripts; $wp_scripts->registered = $registered; add_action( 'customize_controls_print_scripts', 'print_head_scripts', 20 ); @@ -107,7 +107,7 @@ /** * Fires when Customizer controls are initialized, before scripts are enqueued. * - * @since 3.4.0 + * @since WP-3.4.0 */ do_action( 'customize_controls_init' ); @@ -118,7 +118,7 @@ /** * Enqueue Customizer control scripts. * - * @since 3.4.0 + * @since WP-3.4.0 */ do_action( 'customize_controls_enqueue_scripts' ); @@ -132,7 +132,10 @@ if ( wp_is_mobile() ) : $body_class .= ' mobile'; - add_filter( 'admin_viewport_meta', '_customizer_mobile_viewport_meta' ); + + ?> + + is_ios() ) { @@ -147,9 +150,9 @@ $admin_title = sprintf( $wp_customize->get_document_title_template(), __( 'Loading…' ) ); ?> -<?php echo esc_html( $admin_title ); ?> +<?php echo $admin_title; ?> - @@ -158,23 +161,16 @@ /** * Fires when Customizer control styles are printed. * - * @since 3.4.0 + * @since WP-3.4.0 */ do_action( 'customize_controls_print_styles' ); /** * Fires when Customizer control scripts are printed. * - * @since 3.4.0 + * @since WP-3.4.0 */ do_action( 'customize_controls_print_scripts' ); - -/** - * Fires in head section of Customizer controls. - * - * @since 5.5.0 - */ -do_action( 'customize_controls_head' ); ?> @@ -203,18 +199,13 @@ - - - +

        -
        +
        @@ -231,24 +222,12 @@ printf( __( 'You are customizing %s' ), '' . get_bloginfo( 'name', 'display' ) . '' ); ?> - +
        -

        - -

        -

        - Documentation on Customizer' ); - ?> -

        +
        @@ -259,7 +238,7 @@
      8. ' : ', '; } $return = rtrim( $return, ', ' ); - if ( $parsed_args['echo'] ) { - echo $return; - } else { + if ( ! $args['echo'] ) { return $return; } + echo $return; } /** - * Determines whether this site has more than one author. + * Does this site have more than one author * * Checks to see if more than one author has published posts. * - * For more information on this and similar theme functions, check out - * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ - * Conditional Tags} article in the Theme Developer Handbook. - * - * @since 3.2.0 + * @since WP-3.2.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @return bool Whether or not we have more than one author */ @@ -610,7 +545,7 @@ function is_multi_author() { /** * Filters whether the site has more than one author with published posts. * - * @since 3.2.0 + * @since WP-3.2.0 * * @param bool $is_multi_author Whether $is_multi_author should evaluate as true. */ @@ -620,9 +555,9 @@ function is_multi_author() { /** * Helper function to clear the cache for number of authors. * - * @since 3.2.0 + * @since WP-3.2.0 * @access private */ -function __clear_multi_author_cache() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionDoubleUnderscore,PHPCompatibility.FunctionNameRestrictions.ReservedFunctionNames.FunctionDoubleUnderscore +function __clear_multi_author_cache() { //phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionDoubleUnderscore,PHPCompatibility.FunctionNameRestrictions.ReservedFunctionNames.FunctionDoubleUnderscore delete_transient( 'is_multi_author' ); } diff --git a/wp-includes/bookmark-template.php b/wp-includes/bookmark-template.php index a5d0d3c..a9ae123 100644 --- a/wp-includes/bookmark-template.php +++ b/wp-includes/bookmark-template.php @@ -1,6 +1,6 @@ link_updated_f, 0, 2 ) ) { $title .= ' ('; $title .= sprintf( - /* translators: %s: Date and time of last update. */ __( 'Last updated: %s' ), - gmdate( + date( get_option( 'links_updated_date_format' ), $bookmark->link_updated_f + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ) @@ -102,33 +101,22 @@ function _walk_bookmarks( $bookmarks, $args = '' ) { $title = ' title="' . $title . '"'; } $rel = $bookmark->link_rel; - + if ( '' !== $rel ) { + $rel = ' rel="' . esc_attr( $rel ) . '"'; + } $target = $bookmark->link_target; if ( '' !== $target ) { - if ( is_string( $rel ) && '' !== $rel ) { - if ( ! str_contains( $rel, 'noopener' ) ) { - $rel = trim( $rel ) . ' noopener'; - } - } else { - $rel = 'noopener'; - } - $target = ' target="' . $target . '"'; } - - if ( '' !== $rel ) { - $rel = ' rel="' . esc_attr( $rel ) . '"'; - } - $output .= ''; $output .= $parsed_args['link_before']; if ( null != $bookmark->link_image && $parsed_args['show_images'] ) { if ( strpos( $bookmark->link_image, 'http' ) === 0 ) { - $output .= "link_image\" $alt $title>"; - } else { // If it's a relative path. - $output .= 'link_image\" $alt $title>"; + $output .= "link_image\" $alt $title />"; + } else { // If it's a relative path + $output .= 'link_image\" $alt $title />"; } if ( $parsed_args['show_name'] ) { $output .= " $name"; @@ -158,13 +146,13 @@ function _walk_bookmarks( $bookmarks, $args = '' ) { ); } $output .= $parsed_args['after'] . "\n"; - } // End while. + } // end while return $output; } /** - * Retrieves or echoes all of the bookmarks. + * Retrieve or echo all of the bookmarks. * * List of default arguments are as follows: * @@ -172,49 +160,48 @@ function _walk_bookmarks( $bookmarks, $args = '' ) { * links are displayed, if 'categorize' is 1. If 'categorize' is 0, then it will * display for only the 'title_li' string and only if 'title_li' is not empty. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see _walk_bookmarks() * * @param string|array $args { * Optional. String or array of arguments to list bookmarks. * - * @type string $orderby How to order the links by. Accepts post fields. Default 'name'. - * @type string $order Whether to order bookmarks in ascending or descending order. - * Accepts 'ASC' (ascending) or 'DESC' (descending). Default 'ASC'. - * @type int $limit Amount of bookmarks to display. Accepts 1+ or -1 for all. - * Default -1. - * @type string $category Comma-separated list of category IDs to include links from. - * Default empty. - * @type string $category_name Category to retrieve links for by name. Default empty. - * @type int|bool $hide_invisible Whether to show or hide links marked as 'invisible'. Accepts - * 1|true or 0|false. Default 1|true. - * @type int|bool $show_updated Whether to display the time the bookmark was last updated. - * Accepts 1|true or 0|false. Default 0|false. - * @type int|bool $echo Whether to echo or return the formatted bookmarks. Accepts - * 1|true (echo) or 0|false (return). Default 1|true. - * @type int|bool $categorize Whether to show links listed by category or in a single column. - * Accepts 1|true (by category) or 0|false (one column). Default 1|true. - * @type int|bool $show_description Whether to show the bookmark descriptions. Accepts 1|true or 0|false. - * Default 0|false. - * @type string $title_li What to show before the links appear. Default 'Bookmarks'. - * @type string $title_before The HTML or text to prepend to the $title_li string. Default '

        '. - * @type string $title_after The HTML or text to append to the $title_li string. Default '

        '. - * @type string|array $class The CSS class or an array of classes to use for the $title_li. - * Default 'linkcat'. - * @type string $category_before The HTML or text to prepend to $title_before if $categorize is true. - * String must contain '%id' and '%class' to inherit the category ID and - * the $class argument used for formatting in themes. - * Default '
      9. '. - * @type string $category_after The HTML or text to append to $title_after if $categorize is true. - * Default '
      10. '. - * @type string $category_orderby How to order the bookmark category based on term scheme if $categorize - * is true. Default 'name'. - * @type string $category_order Whether to order categories in ascending or descending order if - * $categorize is true. Accepts 'ASC' (ascending) or 'DESC' (descending). - * Default 'ASC'. + * @type string $orderby How to order the links by. Accepts post fields. Default 'name'. + * @type string $order Whether to order bookmarks in ascending or descending order. + * Accepts 'ASC' (ascending) or 'DESC' (descending). Default 'ASC'. + * @type int $limit Amount of bookmarks to display. Accepts 1+ or -1 for all. + * Default -1. + * @type string $category Comma-separated list of category ids to include links from. + * Default empty. + * @type string $category_name Category to retrieve links for by name. Default empty. + * @type int|bool $hide_invisible Whether to show or hide links marked as 'invisible'. Accepts + * 1|true or 0|false. Default 1|true. + * @type int|bool $show_updated Whether to display the time the bookmark was last updated. + * Accepts 1|true or 0|false. Default 0|false. + * @type int|bool $echo Whether to echo or return the formatted bookmarks. Accepts + * 1|true (echo) or 0|false (return). Default 1|true. + * @type int|bool $categorize Whether to show links listed by category or in a single column. + * Accepts 1|true (by category) or 0|false (one column). Default 1|true. + * @type int|bool $show_description Whether to show the bookmark descriptions. Accepts 1|true or 0|false. + * Default 0|false. + * @type string $title_li What to show before the links appear. Default 'Bookmarks'. + * @type string $title_before The HTML or text to prepend to the $title_li string. Default '

        '. + * @type string $title_after The HTML or text to append to the $title_li string. Default '

        '. + * @type string $class The CSS class to use for the $title_li. Default 'linkcat'. + * @type string $category_before The HTML or text to prepend to $title_before if $categorize is true. + * String must contain '%id' and '%class' to inherit the category ID and + * the $class argument used for formatting in themes. + * Default '
      11. '. + * @type string $category_after The HTML or text to append to $title_after if $categorize is true. + * Default '
      12. '. + * @type string $category_orderby How to order the bookmark category based on term scheme if $categorize + * is true. Default 'name'. + * @type string $category_order Whether to order categories in ascending or descending order if + * $categorize is true. Accepts 'ASC' (ascending) or 'DESC' (descending). + * Default 'ASC'. * } - * @return void|string Void if 'echo' argument is true, HTML list of bookmarks if 'echo' is false. + * @return string|void Will only return if echo option is set to not echo. Default is not return anything. */ function wp_list_bookmarks( $args = '' ) { $defaults = array( @@ -246,12 +233,12 @@ function wp_list_bookmarks( $args = '' ) { $parsed_args['class'] = explode( ' ', $parsed_args['class'] ); } $parsed_args['class'] = array_map( 'sanitize_html_class', $parsed_args['class'] ); - $parsed_args['class'] = trim( implode( ' ', $parsed_args['class'] ) ); + $parsed_args['class'] = trim( join( ' ', $parsed_args['class'] ) ); if ( $parsed_args['categorize'] ) { $cats = get_terms( + 'link_category', array( - 'taxonomy' => 'link_category', 'name__like' => $parsed_args['category_name'], 'include' => $parsed_args['category'], 'exclude' => $parsed_args['exclude_category'], @@ -266,7 +253,7 @@ function wp_list_bookmarks( $args = '' ) { } if ( $parsed_args['categorize'] ) { - // Split the bookmarks into ul's for each category. + // Split the bookmarks into ul's for each category foreach ( (array) $cats as $cat ) { $params = array_merge( $parsed_args, array( 'category' => $cat->term_id ) ); $bookmarks = get_bookmarks( $params ); @@ -279,11 +266,11 @@ function wp_list_bookmarks( $args = '' ) { $parsed_args['category_before'] ); /** - * Filters the category name. + * Filters the bookmarks category name. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param string $cat_name The category name. + * @param string $cat_name The category name of bookmarks. */ $catname = apply_filters( 'link_category', $cat->name ); @@ -296,7 +283,7 @@ function wp_list_bookmarks( $args = '' ) { $output .= $parsed_args['category_after'] . "\n"; } } else { - // Output one single list using title_li for the title. + //output one single list using title_li for the title $bookmarks = get_bookmarks( $parsed_args ); if ( ! empty( $bookmarks ) ) { @@ -322,15 +309,14 @@ function wp_list_bookmarks( $args = '' ) { /** * Filters the bookmarks list before it is echoed or returned. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $html The HTML list of bookmarks. */ $html = apply_filters( 'wp_list_bookmarks', $output ); - if ( $parsed_args['echo'] ) { - echo $html; - } else { + if ( ! $parsed_args['echo'] ) { return $html; } + echo $html; } diff --git a/wp-includes/bookmark.php b/wp-includes/bookmark.php index 1de2253..54561f7 100644 --- a/wp-includes/bookmark.php +++ b/wp-includes/bookmark.php @@ -7,17 +7,16 @@ */ /** - * Retrieves bookmark data. + * Retrieve Bookmark data * - * @since 2.1.0 + * @since WP-2.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int|stdClass $bookmark - * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which - * correspond to an stdClass object, an associative array, or a numeric array, - * respectively. Default OBJECT. - * @param string $filter Optional. How to sanitize bookmark fields. Default 'raw'. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * an stdClass object, an associative array, or a numeric array, respectively. Default OBJECT. + * @param string $filter Optional, default is 'raw'. * @return array|object|null Type returned depends on $output value. */ function get_bookmark( $bookmark, $output = OBJECT, $filter = 'raw' ) { @@ -53,11 +52,11 @@ function get_bookmark( $bookmark, $output = OBJECT, $filter = 'raw' ) { $_bookmark = sanitize_bookmark( $_bookmark, $filter ); - if ( OBJECT === $output ) { + if ( OBJECT == $output ) { return $_bookmark; - } elseif ( ARRAY_A === $output ) { + } elseif ( ARRAY_A == $output ) { return get_object_vars( $_bookmark ); - } elseif ( ARRAY_N === $output ) { + } elseif ( ARRAY_N == $output ) { return array_values( get_object_vars( $_bookmark ) ); } else { return $_bookmark; @@ -65,13 +64,13 @@ function get_bookmark( $bookmark, $output = OBJECT, $filter = 'raw' ) { } /** - * Retrieves single bookmark data item or field. + * Retrieve single bookmark data item or field. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param string $field The name of the data field to return. - * @param int $bookmark The bookmark ID to get field. - * @param string $context Optional. The context of how the field will be used. Default 'display'. + * @param string $field The name of the data field to return + * @param int $bookmark The bookmark ID to get field + * @param string $context Optional. The context of how the field will be used. * @return string|WP_Error */ function get_bookmark_field( $field, $bookmark, $context = 'display' ) { @@ -94,30 +93,25 @@ function get_bookmark_field( $field, $bookmark, $context = 'display' ) { } /** - * Retrieves the list of bookmarks. + * Retrieves the list of bookmarks * * Attempts to retrieve from the cache first based on MD5 hash of arguments. If * that fails, then the query will be built from the arguments and executed. The * results will be stored to the cache. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string|array $args { * Optional. String or array of arguments to retrieve bookmarks. * - * @type string $orderby How to order the links by. Accepts 'id', 'link_id', 'name', 'link_name', - * 'url', 'link_url', 'visible', 'link_visible', 'rating', 'link_rating', - * 'owner', 'link_owner', 'updated', 'link_updated', 'notes', 'link_notes', - * 'description', 'link_description', 'length' and 'rand'. - * When `$orderby` is 'length', orders by the character length of - * 'link_name'. Default 'name'. + * @type string $orderby How to order the links by. Accepts post fields. Default 'name'. * @type string $order Whether to order bookmarks in ascending or descending order. * Accepts 'ASC' (ascending) or 'DESC' (descending). Default 'ASC'. - * @type int $limit Amount of bookmarks to display. Accepts any positive number or - * -1 for all. Default -1. - * @type string $category Comma-separated list of category IDs to include links from. + * @type int $limit Amount of bookmarks to display. Accepts 1+ or -1 for all. + * Default -1. + * @type string $category Comma-separated list of category ids to include links from. * Default empty. * @type string $category_name Category to retrieve links for by name. Default empty. * @type int|bool $hide_invisible Whether to show or hide links marked as 'invisible'. Accepts @@ -126,11 +120,8 @@ function get_bookmark_field( $field, $bookmark, $context = 'display' ) { * Accepts 1|true or 0|false. Default 0|false. * @type string $include Comma-separated list of bookmark IDs to include. Default empty. * @type string $exclude Comma-separated list of bookmark IDs to exclude. Default empty. - * @type string $search Search terms. Will be SQL-formatted with wildcards before and after - * and searched in 'link_url', 'link_name' and 'link_description'. - * Default empty. * } - * @return object[] List of bookmark row objects. + * @return array List of bookmark row objects. */ function get_bookmarks( $args = '' ) { global $wpdb; @@ -164,12 +155,12 @@ function get_bookmarks( $args = '' ) { * link category is passed but does not exist. The third evaluation returns * the full cached results. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see get_bookmarks() * - * @param array $bookmarks List of the cached bookmarks. - * @param array $parsed_args An array of bookmark query arguments. + * @param array $bookmarks List of the cached bookmarks. + * @param array $parsed_args An array of bookmark query arguments. */ return apply_filters( 'get_bookmarks', $bookmarks, $parsed_args ); } @@ -180,18 +171,19 @@ function get_bookmarks( $args = '' ) { } $inclusions = ''; + if ( ! empty( $parsed_args['include'] ) ) { - $parsed_args['exclude'] = ''; // Ignore exclude, category, and category_name params if using include. + $parsed_args['exclude'] = ''; //ignore exclude, category, and category_name params if using include $parsed_args['category'] = ''; $parsed_args['category_name'] = ''; + $inclinks = preg_split( '/[\s,]+/', $parsed_args['include'] ); - $inclinks = wp_parse_id_list( $parsed_args['include'] ); if ( count( $inclinks ) ) { foreach ( $inclinks as $inclink ) { if ( empty( $inclusions ) ) { - $inclusions = ' AND ( link_id = ' . $inclink . ' '; + $inclusions = ' AND ( link_id = ' . intval( $inclink ) . ' '; } else { - $inclusions .= ' OR link_id = ' . $inclink . ' '; + $inclusions .= ' OR link_id = ' . intval( $inclink ) . ' '; } } } @@ -202,13 +194,13 @@ function get_bookmarks( $args = '' ) { $exclusions = ''; if ( ! empty( $parsed_args['exclude'] ) ) { - $exlinks = wp_parse_id_list( $parsed_args['exclude'] ); + $exlinks = preg_split( '/[\s,]+/', $parsed_args['exclude'] ); if ( count( $exlinks ) ) { foreach ( $exlinks as $exlink ) { if ( empty( $exclusions ) ) { - $exclusions = ' AND ( link_id <> ' . $exlink . ' '; + $exclusions = ' AND ( link_id <> ' . intval( $exlink ) . ' '; } else { - $exclusions .= ' AND link_id <> ' . $exlink . ' '; + $exclusions .= ' AND link_id <> ' . intval( $exlink ) . ' '; } } } @@ -237,14 +229,15 @@ function get_bookmarks( $args = '' ) { $category_query = ''; $join = ''; + if ( ! empty( $parsed_args['category'] ) ) { - $incategories = wp_parse_id_list( $parsed_args['category'] ); + $incategories = preg_split( '/[\s,]+/', $parsed_args['category'] ); if ( count( $incategories ) ) { foreach ( $incategories as $incat ) { if ( empty( $category_query ) ) { - $category_query = ' AND ( tt.term_id = ' . $incat . ' '; + $category_query = ' AND ( tt.term_id = ' . intval( $incat ) . ' '; } else { - $category_query .= ' OR tt.term_id = ' . $incat . ' '; + $category_query .= ' OR tt.term_id = ' . intval( $incat ) . ' '; } } } @@ -306,8 +299,9 @@ function get_bookmarks( $args = '' ) { $query = "SELECT * $length $recently_updated_test $get_updated FROM $wpdb->links $join WHERE 1=1 $visible $category_query"; $query .= " $exclusions $inclusions $search"; $query .= " ORDER BY $orderby $order"; + if ( -1 != $parsed_args['limit'] ) { - $query .= ' LIMIT ' . absint( $parsed_args['limit'] ); + $query .= ' LIMIT ' . $parsed_args['limit']; } $results = $wpdb->get_results( $query ); @@ -322,12 +316,13 @@ function get_bookmarks( $args = '' ) { } /** - * Sanitizes all bookmark fields. + * Sanitizes all bookmark fields * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param stdClass|array $bookmark Bookmark row. - * @param string $context Optional. How to filter the fields. Default 'display'. + * @param stdClass|array $bookmark Bookmark row + * @param string $context Optional, default is 'display'. How to filter the + * fields * @return stdClass|array Same type as $bookmark but with fields sanitized. */ function sanitize_bookmark( $bookmark, $context = 'display' ) { @@ -386,26 +381,25 @@ function sanitize_bookmark( $bookmark, $context = 'display' ) { * The 'display' context is the final context and has the `$field` has the filter name * and is passed the `$value`, `$bookmark_id`, and `$context`, respectively. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param string $field The bookmark field. * @param mixed $value The bookmark field value. * @param int $bookmark_id Bookmark ID. - * @param string $context How to filter the field value. Accepts 'raw', 'edit', 'db', - * 'display', 'attribute', or 'js'. Default 'display'. + * @param string $context How to filter the field value. Accepts 'raw', 'edit', 'attribute', + * 'js', 'db', or 'display' * @return mixed The filtered value. */ function sanitize_bookmark_field( $field, $value, $bookmark_id, $context ) { - $int_fields = array( 'link_id', 'link_rating' ); - if ( in_array( $field, $int_fields, true ) ) { - $value = (int) $value; - } - switch ( $field ) { + case 'link_id': // ints + case 'link_rating': + $value = (int) $value; + break; case 'link_category': // array( ints ) $value = array_map( 'absint', (array) $value ); // We return here so that the categories aren't filtered. - // The 'link_category' filter is for the name of a link category, not an array of a link's link categories. + // The 'link_category' filter is for the name of a link category, not an array of a link's link categories return $value; case 'link_visible': // bool stored as Y|N @@ -446,18 +440,13 @@ function sanitize_bookmark_field( $field, $value, $bookmark_id, $context ) { } } - // Restore the type for integer fields after esc_attr(). - if ( in_array( $field, $int_fields, true ) ) { - $value = (int) $value; - } - return $value; } /** * Deletes the bookmark cache. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param int $bookmark_id Bookmark ID. */ diff --git a/wp-includes/cache-compat.php b/wp-includes/cache-compat.php index eafe37c..39d1340 100644 --- a/wp-includes/cache-compat.php +++ b/wp-includes/cache-compat.php @@ -2,200 +2,35 @@ /** * Object Cache API functions missing from 3rd party object caches. * - * @link https://developer.wordpress.org/reference/classes/wp_object_cache/ + * @link https://codex.wordpress.org/Class_Reference/WP_Object_Cache * * @package WordPress * @subpackage Cache */ -if ( ! function_exists( 'wp_cache_add_multiple' ) ) : - /** - * Adds multiple values to the cache in one call, if the cache keys don't already exist. - * - * Compat function to mimic wp_cache_add_multiple(). - * - * @ignore - * @since 6.0.0 - * - * @see wp_cache_add_multiple() - * - * @param array $data Array of keys and values to be added. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false if cache key and group already exist. - */ - function wp_cache_add_multiple( array $data, $group = '', $expire = 0 ) { - $values = array(); - - foreach ( $data as $key => $value ) { - $values[ $key ] = wp_cache_add( $key, $value, $group, $expire ); - } - - return $values; - } -endif; - -if ( ! function_exists( 'wp_cache_set_multiple' ) ) : - /** - * Sets multiple values to the cache in one call. - * - * Differs from wp_cache_add_multiple() in that it will always write data. - * - * Compat function to mimic wp_cache_set_multiple(). - * - * @ignore - * @since 6.0.0 - * - * @see wp_cache_set_multiple() - * - * @param array $data Array of keys and values to be set. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false on failure. - */ - function wp_cache_set_multiple( array $data, $group = '', $expire = 0 ) { - $values = array(); - - foreach ( $data as $key => $value ) { - $values[ $key ] = wp_cache_set( $key, $value, $group, $expire ); - } - - return $values; - } -endif; - if ( ! function_exists( 'wp_cache_get_multiple' ) ) : /** - * Retrieves multiple values from the cache in one call. - * - * Compat function to mimic wp_cache_get_multiple(). + * Compat function to mimic wp_cache_get_multiple. + * Retrieves multiple values from the cache. * * @ignore - * @since 5.5.0 + * @since WP-5.5.0 * * @see wp_cache_get_multiple() * - * @param array $keys Array of keys under which the cache contents are stored. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param bool $force Optional. Whether to force an update of the local cache - * from the persistent cache. Default false. - * @return array Array of return values, grouped by key. Each value is either - * the cache contents on success, or false on failure. - */ - function wp_cache_get_multiple( $keys, $group = '', $force = false ) { - $values = array(); - - foreach ( $keys as $key ) { - $values[ $key ] = wp_cache_get( $key, $group, $force ); - } - - return $values; - } -endif; - -if ( ! function_exists( 'wp_cache_delete_multiple' ) ) : - /** - * Deletes multiple values from the cache in one call. - * - * Compat function to mimic wp_cache_delete_multiple(). - * - * @ignore - * @since 6.0.0 + * @param array $keys Array of keys to fetch. + * @param bool $force Optional. Unused. Whether to force a refetch rather than relying on the local + * cache. Default false. * - * @see wp_cache_delete_multiple() - * - * @param array $keys Array of keys under which the cache to deleted. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false if the contents were not deleted. + * @return array Array of values organized into groups. */ - function wp_cache_delete_multiple( array $keys, $group = '' ) { + function wp_cache_get_multiple( $keys, $group = 'default', $force = false ) { $values = array(); foreach ( $keys as $key ) { - $values[ $key ] = wp_cache_delete( $key, $group ); + $values[ $key ] = wp_cache_get( $key, $group, $force ); } return $values; } endif; - -if ( ! function_exists( 'wp_cache_flush_runtime' ) ) : - /** - * Removes all cache items from the in-memory runtime cache. - * - * Compat function to mimic wp_cache_flush_runtime(). - * - * @ignore - * @since 6.0.0 - * - * @see wp_cache_flush_runtime() - * - * @return bool True on success, false on failure. - */ - function wp_cache_flush_runtime() { - if ( ! wp_cache_supports( 'flush_runtime' ) ) { - _doing_it_wrong( - __FUNCTION__, - __( 'Your object cache implementation does not support flushing the in-memory runtime cache.' ), - '6.1.0' - ); - - return false; - } - - return wp_cache_flush(); - } -endif; - -if ( ! function_exists( 'wp_cache_flush_group' ) ) : - /** - * Removes all cache items in a group, if the object cache implementation supports it. - * - * Before calling this function, always check for group flushing support using the - * `wp_cache_supports( 'flush_group' )` function. - * - * @since 6.1.0 - * - * @see WP_Object_Cache::flush_group() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. - * - * @param string $group Name of group to remove from cache. - * @return bool True if group was flushed, false otherwise. - */ - function wp_cache_flush_group( $group ) { - global $wp_object_cache; - - if ( ! wp_cache_supports( 'flush_group' ) ) { - _doing_it_wrong( - __FUNCTION__, - __( 'Your object cache implementation does not support flushing individual groups.' ), - '6.1.0' - ); - - return false; - } - - return $wp_object_cache->flush_group( $group ); - } -endif; - -if ( ! function_exists( 'wp_cache_supports' ) ) : - /** - * Determines whether the object cache implementation supports a particular feature. - * - * @since 6.1.0 - * - * @param string $feature Name of the feature to check for. Possible values include: - * 'add_multiple', 'set_multiple', 'get_multiple', 'delete_multiple', - * 'flush_runtime', 'flush_group'. - * @return bool True if the feature is supported, false otherwise. - */ - function wp_cache_supports( $feature ) { - return false; - } -endif; diff --git a/wp-includes/cache.php b/wp-includes/cache.php index 8cfe218..c606609 100644 --- a/wp-includes/cache.php +++ b/wp-includes/cache.php @@ -2,7 +2,7 @@ /** * Object Cache API * - * @link https://developer.wordpress.org/reference/classes/wp_object_cache/ + * @link https://codex.wordpress.org/Class_Reference/WP_Object_Cache * * @package ClassicPress * @subpackage Cache @@ -11,21 +11,10 @@ /** WP_Object_Cache class */ require_once ABSPATH . WPINC . '/class-wp-object-cache.php'; -/** - * Sets up Object Cache Global and assigns it. - * - * @since 2.0.0 - * - * @global WP_Object_Cache $wp_object_cache - */ -function wp_cache_init() { - $GLOBALS['wp_object_cache'] = new WP_Object_Cache(); -} - /** * Adds data to the cache, if the cache key doesn't already exist. * - * @since 2.0.0 + * @since WP-2.0.0 * * @see WP_Object_Cache::add() * @global WP_Object_Cache $wp_object_cache Object cache global instance. @@ -36,7 +25,7 @@ function wp_cache_init() { * to be used across groups. Default empty. * @param int $expire Optional. When the cache data should expire, in seconds. * Default 0 (no expiration). - * @return bool True on success, false if cache key and group already exist. + * @return bool False if cache key and group already exist, true on success. */ function wp_cache_add( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; @@ -45,108 +34,91 @@ function wp_cache_add( $key, $data, $group = '', $expire = 0 ) { } /** - * Adds multiple values to the cache in one call. + * Closes the cache. * - * @since 6.0.0 + * This function has ceased to do anything since WordPress 2.5. The + * functionality was removed along with the rest of the persistent cache. * - * @see WP_Object_Cache::add_multiple() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * This does not mean that plugins can't implement this function when they need + * to make sure that the cache is cleaned up after ClassicPress no longer needs it. * - * @param array $data Array of keys and values to be set. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false if cache key and group already exist. + * @since WP-2.0.0 + * + * @return true Always returns true. */ -function wp_cache_add_multiple( array $data, $group = '', $expire = 0 ) { - global $wp_object_cache; - - return $wp_object_cache->add_multiple( $data, $group, $expire ); +function wp_cache_close() { + return true; } /** - * Replaces the contents of the cache with new data. + * Decrements numeric cache item's value. * - * @since 2.0.0 + * @since WP-3.3.0 * - * @see WP_Object_Cache::replace() + * @see WP_Object_Cache::decr() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param int|string $key The key for the cache data that should be replaced. - * @param mixed $data The new data to store in the cache. - * @param string $group Optional. The group for the cache data that should be replaced. - * Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool True if contents were replaced, false if original value does not exist. + * @param int|string $key The cache key to decrement. + * @param int $offset Optional. The amount by which to decrement the item's value. Default 1. + * @param string $group Optional. The group the key is in. Default empty. + * @return false|int False on failure, the item's new value on success. */ -function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) { +function wp_cache_decr( $key, $offset = 1, $group = '' ) { global $wp_object_cache; - return $wp_object_cache->replace( $key, $data, $group, (int) $expire ); + return $wp_object_cache->decr( $key, $offset, $group ); } /** - * Saves the data to the cache. - * - * Differs from wp_cache_add() and wp_cache_replace() in that it will always write data. + * Removes the cache contents matching key and group. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @see WP_Object_Cache::set() + * @see WP_Object_Cache::delete() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param int|string $key The cache key to use for retrieval later. - * @param mixed $data The contents to store in the cache. - * @param string $group Optional. Where to group the cache contents. Enables the same key - * to be used across groups. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool True on success, false on failure. + * @param int|string $key What the contents in the cache are called. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @return bool True on successful removal, false on failure. */ -function wp_cache_set( $key, $data, $group = '', $expire = 0 ) { +function wp_cache_delete( $key, $group = '' ) { global $wp_object_cache; - return $wp_object_cache->set( $key, $data, $group, (int) $expire ); + return $wp_object_cache->delete( $key, $group ); } /** - * Sets multiple values to the cache in one call. + * Removes all cache items. * - * @since 6.0.0 + * @since WP-2.0.0 * - * @see WP_Object_Cache::set_multiple() + * @see WP_Object_Cache::flush() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param array $data Array of keys and values to be set. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false on failure. + * @return bool False on failure, true on success */ -function wp_cache_set_multiple( array $data, $group = '', $expire = 0 ) { +function wp_cache_flush() { global $wp_object_cache; - return $wp_object_cache->set_multiple( $data, $group, $expire ); + return $wp_object_cache->flush(); } /** * Retrieves the cache contents from the cache by key and group. * - * @since 2.0.0 + * @since WP-2.0.0 * * @see WP_Object_Cache::get() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param int|string $key The key under which the cache contents are stored. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param bool $force Optional. Whether to force an update of the local cache - * from the persistent cache. Default false. - * @param bool $found Optional. Whether the key was found in the cache (passed by reference). - * Disambiguates a return of false, a storable value. Default null. - * @return mixed|false The cache contents on success, false on failure to retrieve contents. + * @param int|string $key The key under which the cache contents are stored. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param bool $force Optional. Whether to force an update of the local cache from the persistent + * cache. Default false. + * @param bool $found Optional. Whether the key was found in the cache (passed by reference). + * Disambiguates a return of false, a storable value. Default null. + * @return bool|mixed False on failure to retrieve contents or the cache + * contents on success */ function wp_cache_get( $key, $group = '', $force = false, &$found = null ) { global $wp_object_cache; @@ -155,19 +127,16 @@ function wp_cache_get( $key, $group = '', $force = false, &$found = null ) { } /** - * Retrieves multiple values from the cache in one call. - * - * @since 5.5.0 + * Gets multiple values from cache in one call. * + * @since WP-5.5.0 * @see WP_Object_Cache::get_multiple() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param array $keys Array of keys under which the cache contents are stored. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param bool $force Optional. Whether to force an update of the local cache - * from the persistent cache. Default false. - * @return array Array of return values, grouped by key. Each value is either - * the cache contents on success, or false on failure. + * @param array $keys Array of keys to get from group. + * @param string $group Optional. Where the cache contents are grouped. Default empty. + * @param bool $force Optional. Whether to force an update of the local cache from the persistent + * cache. Default false. + * @return array|bool Array of values. */ function wp_cache_get_multiple( $keys, $group = '', $force = false ) { global $wp_object_cache; @@ -176,55 +145,17 @@ function wp_cache_get_multiple( $keys, $group = '', $force = false ) { } /** - * Removes the cache contents matching key and group. - * - * @since 2.0.0 - * - * @see WP_Object_Cache::delete() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. - * - * @param int|string $key What the contents in the cache are called. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @return bool True on successful removal, false on failure. - */ -function wp_cache_delete( $key, $group = '' ) { - global $wp_object_cache; - - return $wp_object_cache->delete( $key, $group ); -} - -/** - * Deletes multiple values from the cache in one call. - * - * @since 6.0.0 + * Increment numeric cache item's value * - * @see WP_Object_Cache::delete_multiple() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. - * - * @param array $keys Array of keys under which the cache to deleted. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false if the contents were not deleted. - */ -function wp_cache_delete_multiple( array $keys, $group = '' ) { - global $wp_object_cache; - - return $wp_object_cache->delete_multiple( $keys, $group ); -} - -/** - * Increments numeric cache item's value. - * - * @since 3.3.0 + * @since WP-3.3.0 * * @see WP_Object_Cache::incr() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * * @param int|string $key The key for the cache contents that should be incremented. - * @param int $offset Optional. The amount by which to increment the item's value. - * Default 1. + * @param int $offset Optional. The amount by which to increment the item's value. Default 1. * @param string $group Optional. The group the key is in. Default empty. - * @return int|false The item's new value on success, false on failure. + * @return false|int False on failure, the item's new value on success. */ function wp_cache_incr( $key, $offset = 1, $group = '' ) { global $wp_object_cache; @@ -233,125 +164,89 @@ function wp_cache_incr( $key, $offset = 1, $group = '' ) { } /** - * Decrements numeric cache item's value. - * - * @since 3.3.0 + * Sets up Object Cache Global and assigns it. * - * @see WP_Object_Cache::decr() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. + * @since WP-2.0.0 * - * @param int|string $key The cache key to decrement. - * @param int $offset Optional. The amount by which to decrement the item's value. - * Default 1. - * @param string $group Optional. The group the key is in. Default empty. - * @return int|false The item's new value on success, false on failure. + * @global WP_Object_Cache $wp_object_cache */ -function wp_cache_decr( $key, $offset = 1, $group = '' ) { - global $wp_object_cache; - - return $wp_object_cache->decr( $key, $offset, $group ); +function wp_cache_init() { + $GLOBALS['wp_object_cache'] = new WP_Object_Cache(); } /** - * Removes all cache items. + * Replaces the contents of the cache with new data. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @see WP_Object_Cache::flush() + * @see WP_Object_Cache::replace() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @return bool True on success, false on failure. + * @param int|string $key The key for the cache data that should be replaced. + * @param mixed $data The new data to store in the cache. + * @param string $group Optional. The group for the cache data that should be replaced. + * Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool False if original value does not exist, true if contents were replaced */ -function wp_cache_flush() { +function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; - return $wp_object_cache->flush(); -} - -/** - * Removes all cache items from the in-memory runtime cache. - * - * @since 6.0.0 - * - * @see WP_Object_Cache::flush() - * - * @return bool True on success, false on failure. - */ -function wp_cache_flush_runtime() { - return wp_cache_flush(); + return $wp_object_cache->replace( $key, $data, $group, (int) $expire ); } /** - * Removes all cache items in a group, if the object cache implementation supports it. + * Saves the data to the cache. * - * Before calling this function, always check for group flushing support using the - * `wp_cache_supports( 'flush_group' )` function. + * Differs from wp_cache_add() and wp_cache_replace() in that it will always write data. * - * @since 6.1.0 + * @since WP-2.0.0 * - * @see WP_Object_Cache::flush_group() + * @see WP_Object_Cache::set() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param string $group Name of group to remove from cache. - * @return bool True if group was flushed, false otherwise. + * @param int|string $key The cache key to use for retrieval later. + * @param mixed $data The contents to store in the cache. + * @param string $group Optional. Where to group the cache contents. Enables the same key + * to be used across groups. Default empty. + * @param int $expire Optional. When to expire the cache contents, in seconds. + * Default 0 (no expiration). + * @return bool False on failure, true on success */ -function wp_cache_flush_group( $group ) { +function wp_cache_set( $key, $data, $group = '', $expire = 0 ) { global $wp_object_cache; - return $wp_object_cache->flush_group( $group ); -} - -/** - * Determines whether the object cache implementation supports a particular feature. - * - * @since 6.1.0 - * - * @param string $feature Name of the feature to check for. Possible values include: - * 'add_multiple', 'set_multiple', 'get_multiple', 'delete_multiple', - * 'flush_runtime', 'flush_group'. - * @return bool True if the feature is supported, false otherwise. - */ -function wp_cache_supports( $feature ) { - switch ( $feature ) { - case 'add_multiple': - case 'set_multiple': - case 'get_multiple': - case 'delete_multiple': - case 'flush_runtime': - case 'flush_group': - return true; - - default: - return false; - } + return $wp_object_cache->set( $key, $data, $group, (int) $expire ); } /** - * Closes the cache. + * Switches the internal blog ID. * - * This function has ceased to do anything since WordPress 2.5. The - * functionality was removed along with the rest of the persistent cache. + * This changes the blog id used to create keys in blog specific groups. * - * This does not mean that plugins can't implement this function when they need - * to make sure that the cache is cleaned up after WordPress no longer needs it. + * @since WP-3.5.0 * - * @since 2.0.0 + * @see WP_Object_Cache::switch_to_blog() + * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @return true Always returns true. + * @param int $blog_id Site ID. */ -function wp_cache_close() { - return true; +function wp_cache_switch_to_blog( $blog_id ) { + global $wp_object_cache; + + $wp_object_cache->switch_to_blog( $blog_id ); } /** * Adds a group or set of groups to the list of global groups. * - * @since 2.6.0 + * @since WP-2.6.0 * * @see WP_Object_Cache::add_global_groups() * @global WP_Object_Cache $wp_object_cache Object cache global instance. * - * @param string|string[] $groups A group or an array of groups to add. + * @param string|array $groups A group or an array of groups to add. */ function wp_cache_add_global_groups( $groups ) { global $wp_object_cache; @@ -362,34 +257,16 @@ function wp_cache_add_global_groups( $groups ) { /** * Adds a group or set of groups to the list of non-persistent groups. * - * @since 2.6.0 + * @since WP-2.6.0 * - * @param string|string[] $groups A group or an array of groups to add. + * @param string|array $groups A group or an array of groups to add. */ function wp_cache_add_non_persistent_groups( $groups ) { // Default cache doesn't persist so nothing to do here. } /** - * Switches the internal blog ID. - * - * This changes the blog id used to create keys in blog specific groups. - * - * @since 3.5.0 - * - * @see WP_Object_Cache::switch_to_blog() - * @global WP_Object_Cache $wp_object_cache Object cache global instance. - * - * @param int $blog_id Site ID. - */ -function wp_cache_switch_to_blog( $blog_id ) { - global $wp_object_cache; - - $wp_object_cache->switch_to_blog( $blog_id ); -} - -/** - * Resets internal cache keys and structures. + * Reset internal cache keys and structures. * * If the cache back end uses global blog or site IDs as part of its cache keys, * this function instructs the back end to reset those keys and perform any cleanup @@ -398,16 +275,17 @@ function wp_cache_switch_to_blog( $blog_id ) { * This function is deprecated. Use wp_cache_switch_to_blog() instead of this * function when preparing the cache for a blog switch. For clearing the cache * during unit tests, consider using wp_cache_init(). wp_cache_init() is not - * recommended outside of unit tests as the performance penalty for using it is high. + * recommended outside of unit tests as the performance penalty for using it is + * high. * - * @since 3.0.0 - * @deprecated 3.5.0 Use wp_cache_switch_to_blog() + * @since WP-2.6.0 + * @deprecated WP-3.5.0 WP_Object_Cache::reset() * @see WP_Object_Cache::reset() * * @global WP_Object_Cache $wp_object_cache Object cache global instance. */ function wp_cache_reset() { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_cache_switch_to_blog()' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0', 'WP_Object_Cache::reset()' ); global $wp_object_cache; diff --git a/wp-includes/canonical.php b/wp-includes/canonical.php index 6618ad7..9633246 100644 --- a/wp-includes/canonical.php +++ b/wp-includes/canonical.php @@ -6,7 +6,7 @@ * by Mark Jaquith * * @package ClassicPress - * @since 2.3.0 + * @since WP-2.3.0 */ /** @@ -19,24 +19,24 @@ * * Prevents redirection for feeds, trackbacks, searches, and * admin URLs. Does not redirect on non-pretty-permalink-supporting IIS 7+, - * page/post previews, WP admin, Trackbacks, robots.txt, favicon.ico, searches, - * or on POST requests. + * page/post previews, WP admin, Trackbacks, robots.txt, searches, or on POST + * requests. * * Will also attempt to find the correct link when a user enters a URL that does - * not exist based on exact WordPress query. Will instead try to parse the URL + * not exist based on exact ClassicPress query. Will instead try to parse the URL * or query in an attempt to figure the correct page to go to. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. - * @global bool $is_IIS - * @global WP_Query $wp_query WordPress Query object. - * @global wpdb $wpdb WordPress database abstraction object. - * @global WP $wp Current WordPress environment instance. + * @global WP_Rewrite $wp_rewrite + * @global bool $is_IIS + * @global WP_Query $wp_query + * @global wpdb $wpdb ClassicPress database abstraction object. + * @global WP $wp Current ClassicPress environment instance. * * @param string $requested_url Optional. The URL that was requested, used to - * figure if redirect is needed. - * @param bool $do_redirect Optional. Redirect to the new URL. + * figure if redirect is needed. + * @param bool $do_redirect Optional. Redirect to the new URL. * @return string|void The string of the URL, if redirect needed. */ function redirect_canonical( $requested_url = null, $do_redirect = true ) { @@ -57,29 +57,28 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { } } - if ( is_admin() || is_search() || is_preview() || is_trackback() || is_favicon() + if ( is_admin() || is_search() || is_preview() || is_trackback() || is_robots() || ( $is_IIS && ! iis7_supports_permalinks() ) ) { return; } if ( ! $requested_url && isset( $_SERVER['HTTP_HOST'] ) ) { - // Build the URL in the address bar. + // build the URL in the address bar $requested_url = is_ssl() ? 'https://' : 'http://'; $requested_url .= $_SERVER['HTTP_HOST']; $requested_url .= $_SERVER['REQUEST_URI']; } - $original = parse_url( $requested_url ); + $original = @parse_url( $requested_url ); if ( false === $original ) { return; } $redirect = $original; $redirect_url = false; - $redirect_obj = false; - // Notice fixing. + // Notice fixing if ( ! isset( $redirect['path'] ) ) { $redirect['path'] = ''; } @@ -87,14 +86,12 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect['query'] = ''; } - /* - * If the original URL ended with non-breaking spaces, they were almost - * certainly inserted by accident. Let's remove them, so the reader doesn't - * see a 404 error with no obvious cause. - */ + // If the original URL ended with non-breaking spaces, they were almost + // certainly inserted by accident. Let's remove them, so the reader doesn't + // see a 404 error with no obvious cause. $redirect['path'] = preg_replace( '|(%C2%A0)+$|i', '', $redirect['path'] ); - // It's not a preview, so remove it from URL. + // It's not a preview, so remove it from URL if ( get_query_var( 'preview' ) ) { $redirect['query'] = remove_query_arg( 'preview', $redirect['query'] ); } @@ -103,7 +100,6 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { if ( is_feed() && $post_id ) { $redirect_url = get_post_comments_feed_link( $post_id, get_query_var( 'feed' ) ); - $redirect_obj = get_post( $post_id ); if ( $redirect_url ) { $redirect['query'] = _remove_qs_args_if_not_in_url( @@ -112,7 +108,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect_url ); - $redirect['path'] = parse_url( $redirect_url, PHP_URL_PATH ); + $redirect['path'] = parse_url( $redirect_url, PHP_URL_PATH ); } } @@ -128,7 +124,6 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { } $redirect_url = get_permalink( $post_id ); - $redirect_obj = get_post( $post_id ); if ( $redirect_url ) { $redirect['query'] = _remove_qs_args_if_not_in_url( @@ -140,7 +135,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { } } - // These tests give us a WP-generated permalink. + // These tests give us a WP-generated permalink if ( is_404() ) { // Redirect ?page_id, ?p=, ?attachment_id= to their respective URLs. @@ -151,9 +146,8 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { if ( $redirect_post ) { $post_type_obj = get_post_type_object( $redirect_post->post_type ); - if ( $post_type_obj && $post_type_obj->public && 'auto-draft' !== $redirect_post->post_status ) { - $redirect_url = get_permalink( $redirect_post ); - $redirect_obj = get_post( $redirect_post ); + if ( $post_type_obj->public && 'auto-draft' !== $redirect_post->post_status ) { + $redirect_url = get_permalink( $redirect_post ); $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], @@ -163,15 +157,15 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { } } - $year = get_query_var( 'year' ); - $month = get_query_var( 'monthnum' ); - $day = get_query_var( 'day' ); + $year = get_query_var( 'year' ); + $month = get_query_var( 'monthnum' ); + $day = get_query_var( 'day' ); if ( $year && $month && $day ) { - $date = sprintf( '%04d-%02d-%02d', $year, $month, $day ); + $date = sprintf( '%04d-%02d-%02d', $year, $month, $day ); if ( ! wp_checkdate( $month, $day, $year, $date ) ) { - $redirect_url = get_month_link( $year, $month ); + $redirect_url = get_month_link( $year, $month ); $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], @@ -189,25 +183,6 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { ); } - // Strip off non-existing links from single posts or pages. - if ( get_query_var( 'page' ) ) { - $post_id = 0; - - if ( $wp_query->queried_object instanceof WP_Post ) { - $post_id = $wp_query->queried_object->ID; - } elseif ( $wp_query->post ) { - $post_id = $wp_query->post->ID; - } - - if ( $post_id ) { - $redirect_url = get_permalink( $post_id ); - $redirect_obj = get_post( $post_id ); - - $redirect['path'] = rtrim( $redirect['path'], (int) get_query_var( 'page' ) . '/' ); - $redirect['query'] = remove_query_arg( 'page', $redirect['query'] ); - } - } - if ( ! $redirect_url ) { $redirect_url = redirect_guess_404_permalink(); @@ -219,8 +194,15 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { ); } } - } elseif ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) { + // Strip off non-existing page links from single posts or pages. + if ( get_query_var( 'page' ) && $wp_query->post ) { + $redirect['path'] = rtrim( $redirect['path'], (int) get_query_var( 'page' ) . '/' ); + $redirect['query'] = remove_query_arg( 'page', $redirect['query'] ); + + $redirect_url = get_permalink( $wp_query->post->ID ); + } + } elseif ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) { // Rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101. if ( is_attachment() && ! array_diff( array_keys( $wp->query_vars ), array( 'attachment', 'attachment_id' ) ) @@ -228,32 +210,27 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { ) { if ( ! empty( $_GET['attachment_id'] ) ) { $redirect_url = get_attachment_link( get_query_var( 'attachment_id' ) ); - $redirect_obj = get_post( get_query_var( 'attachment_id' ) ); if ( $redirect_url ) { $redirect['query'] = remove_query_arg( 'attachment_id', $redirect['query'] ); } } else { $redirect_url = get_attachment_link(); - $redirect_obj = get_post(); } } elseif ( is_single() && ! empty( $_GET['p'] ) && ! $redirect_url ) { $redirect_url = get_permalink( get_query_var( 'p' ) ); - $redirect_obj = get_post( get_query_var( 'p' ) ); if ( $redirect_url ) { $redirect['query'] = remove_query_arg( array( 'p', 'post_type' ), $redirect['query'] ); } } elseif ( is_single() && ! empty( $_GET['name'] ) && ! $redirect_url ) { $redirect_url = get_permalink( $wp_query->get_queried_object_id() ); - $redirect_obj = get_post( $wp_query->get_queried_object_id() ); if ( $redirect_url ) { $redirect['query'] = remove_query_arg( 'name', $redirect['query'] ); } } elseif ( is_page() && ! empty( $_GET['page_id'] ) && ! $redirect_url ) { $redirect_url = get_permalink( get_query_var( 'page_id' ) ); - $redirect_obj = get_post( get_query_var( 'page_id' ) ); if ( $redirect_url ) { $redirect['query'] = remove_query_arg( 'page_id', $redirect['query'] ); @@ -266,7 +243,6 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { && 'page' === get_option( 'show_on_front' ) && get_query_var( 'page_id' ) === (int) get_option( 'page_for_posts' ) ) { $redirect_url = get_permalink( get_option( 'page_for_posts' ) ); - $redirect_obj = get_post( get_option( 'page_for_posts' ) ); if ( $redirect_url ) { $redirect['query'] = remove_query_arg( 'page_id', $redirect['query'] ); @@ -275,13 +251,13 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $m = get_query_var( 'm' ); switch ( strlen( $m ) ) { - case 4: // Yearly. - $redirect_url = get_year_link( $m ); + case 4: // Yearly + $redirect_url = get_year_link( $m ); break; - case 6: // Monthly. - $redirect_url = get_month_link( substr( $m, 0, 4 ), substr( $m, 4, 2 ) ); + case 6: // Monthly + $redirect_url = get_month_link( substr( $m, 0, 4 ), substr( $m, 4, 2 ) ); break; - case 8: // Daily. + case 8: // Daily $redirect_url = get_day_link( substr( $m, 0, 4 ), substr( $m, 4, 2 ), substr( $m, 6, 2 ) ); break; } @@ -314,6 +290,12 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect['query'] = remove_query_arg( 'year', $redirect['query'] ); } } + } elseif ( is_year() && ! empty( $_GET['year'] ) ) { + $redirect_url = get_year_link( $year ); + + if ( $redirect_url ) { + $redirect['query'] = remove_query_arg( 'year', $redirect['query'] ); + } } elseif ( is_author() && ! empty( $_GET['author'] ) && preg_match( '|^[0-9]+$|', $_GET['author'] ) ) { $author = get_userdata( get_query_var( 'author' ) ); @@ -321,19 +303,16 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { && $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE $wpdb->posts.post_author = %d AND $wpdb->posts.post_status = 'publish' LIMIT 1", $author->ID ) ) ) { $redirect_url = get_author_posts_url( $author->ID, $author->user_nicename ); - $redirect_obj = $author; if ( $redirect_url ) { - $redirect['query'] = remove_query_arg( 'author', $redirect['query'] ); + $redirect['query'] = remove_query_arg( 'author', $redirect['query'] ); } } } elseif ( is_category() || is_tag() || is_tax() ) { // Terms (tags/categories). $term_count = 0; foreach ( $wp_query->tax_query->queried_terms as $tax_query ) { - if ( isset( $tax_query['terms'] ) && is_countable( $tax_query['terms'] ) ) { - $term_count += count( $tax_query['terms'] ); - } + $term_count += count( $tax_query['terms'] ); } $obj = $wp_query->get_queried_object(); @@ -343,7 +322,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { if ( $tax_url && ! is_wp_error( $tax_url ) ) { if ( ! empty( $redirect['query'] ) ) { - // Strip taxonomy query vars off the URL. + // Strip taxonomy query vars off the url. $qv_remove = array( 'term', 'taxonomy' ); if ( is_category() ) { @@ -352,8 +331,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { } elseif ( is_tag() ) { $qv_remove[] = 'tag'; $qv_remove[] = 'tag_id'; - } else { - // Custom taxonomies will have a custom query var, remove those too. + } else { // Custom taxonomies will have a custom query var, remove those too: $tax_obj = get_taxonomy( $obj->taxonomy ); if ( false !== $tax_obj->query_var ) { $qv_remove[] = $tax_obj->query_var; @@ -362,24 +340,20 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $rewrite_vars = array_diff( array_keys( $wp_query->query ), array_keys( $_GET ) ); - // Check to see if all the query vars are coming from the rewrite, none are set via $_GET. - if ( ! array_diff( $rewrite_vars, array_keys( $_GET ) ) ) { - // Remove all of the per-tax query vars. - $redirect['query'] = remove_query_arg( $qv_remove, $redirect['query'] ); + if ( ! array_diff( $rewrite_vars, array_keys( $_GET ) ) ) { // Check to see if all the Query vars are coming from the rewrite, none are set via $_GET + $redirect['query'] = remove_query_arg( $qv_remove, $redirect['query'] ); //Remove all of the per-tax qv's - // Create the destination URL for this taxonomy. + // Create the destination url for this taxonomy $tax_url = parse_url( $tax_url ); if ( ! empty( $tax_url['query'] ) ) { // Taxonomy accessible via ?taxonomy=...&term=... or any custom query var. parse_str( $tax_url['query'], $query_vars ); $redirect['query'] = add_query_arg( $query_vars, $redirect['query'] ); - } else { - // Taxonomy is accessible via a "pretty URL". + } else { // Taxonomy is accessible via a "pretty-URL" $redirect['path'] = $tax_url['path']; } - } else { - // Some query vars are set via $_GET. Unset those from $_GET that exist via the rewrite. + } else { // Some query vars are set via $_GET. Unset those from $_GET that exist via the rewrite foreach ( $qv_remove as $_qv ) { if ( isset( $rewrite_vars[ $_qv ] ) ) { $redirect['query'] = remove_query_arg( $_qv, $redirect['query'] ); @@ -399,18 +373,16 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { || ! has_term( $category->term_id, 'category', $wp_query->get_queried_object_id() ) ) { $redirect_url = get_permalink( $wp_query->get_queried_object_id() ); - $redirect_obj = get_post( $wp_query->get_queried_object_id() ); } } } - // Post paging. + // Post Paging if ( is_singular() && get_query_var( 'page' ) ) { $page = get_query_var( 'page' ); if ( ! $redirect_url ) { $redirect_url = get_permalink( get_queried_object_id() ); - $redirect_obj = get_post( get_queried_object_id() ); } if ( $page > 1 ) { @@ -426,11 +398,8 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect['query'] = remove_query_arg( 'page', $redirect['query'] ); } - if ( get_query_var( 'sitemap' ) ) { - $redirect_url = get_sitemap_url( get_query_var( 'sitemap' ), get_query_var( 'sitemap-subtype' ), get_query_var( 'paged' ) ); - $redirect['query'] = remove_query_arg( array( 'sitemap', 'sitemap-subtype', 'paged' ), $redirect['query'] ); - } elseif ( get_query_var( 'paged' ) || is_feed() || get_query_var( 'cpage' ) ) { - // Paging and feeds. + // paging and feeds + if ( get_query_var( 'paged' ) || is_feed() || get_query_var( 'cpage' ) ) { $paged = get_query_var( 'paged' ); $feed = get_query_var( 'feed' ); $cpage = get_query_var( 'cpage' ); @@ -447,7 +416,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect['path'] = preg_replace( "#/{$wp_rewrite->comments_pagination_base}-[0-9]+?(/+)?$#", '/', $redirect['path'] ); } - $addl_path = ''; + $addl_path = ''; $default_feed = get_default_feed(); if ( is_feed() && in_array( $feed, $wp_rewrite->feeds, true ) ) { @@ -477,10 +446,10 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { ); if ( isset( $old_feed_files[ basename( $redirect['path'] ) ] ) ) { - $redirect_url = get_feed_link( $old_feed_files[ basename( $redirect['path'] ) ] ); + $redirect_url = get_feed_link( $old_feed_files[ basename( $redirect['path'] ) ] ); - wp_redirect( $redirect_url, 301 ); - die(); + wp_redirect( $redirect_url, 301 ); + die(); } } @@ -489,7 +458,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { if ( ! is_feed() ) { if ( ! is_single() ) { - $addl_path = ! empty( $addl_path ) ? trailingslashit( $addl_path ) : ''; + $addl_path = ! empty( $addl_path ) ? trailingslashit( $addl_path ) : ''; if ( $paged > 1 ) { $addl_path .= user_trailingslashit( "$wp_rewrite->pagination_base/$paged", 'paged' ); @@ -548,7 +517,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { // Tack on any additional query vars. if ( $redirect_url && ! empty( $redirect['query'] ) ) { parse_str( $redirect['query'], $_parsed_query ); - $redirect = parse_url( $redirect_url ); + $redirect = @parse_url( $redirect_url ); if ( ! empty( $_parsed_query['name'] ) && ! empty( $redirect['query'] ) ) { parse_str( $redirect['query'], $_parsed_redirect_query ); @@ -563,11 +532,11 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { rawurlencode_deep( array_values( $_parsed_query ) ) ); - $redirect_url = add_query_arg( $_parsed_query, $redirect_url ); + $redirect_url = add_query_arg( $_parsed_query, $redirect_url ); } if ( $redirect_url ) { - $redirect = parse_url( $redirect_url ); + $redirect = @parse_url( $redirect_url ); } // www.example.com vs. example.com @@ -581,14 +550,14 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $user_home['path'] = '/'; } - // Handle ports. + // Handle ports if ( ! empty( $user_home['port'] ) ) { $redirect['port'] = $user_home['port']; } else { unset( $redirect['port'] ); } - // Trailing /index.php. + // trailing /index.php $redirect['path'] = preg_replace( '|/' . preg_quote( $wp_rewrite->index, '|' ) . '/*?$|', '/', $redirect['path'] ); $punctuation_pattern = implode( @@ -597,29 +566,29 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { 'preg_quote', array( ' ', - '%20', // Space. + '%20', // space '!', - '%21', // Exclamation mark. + '%21', // exclamation mark '"', - '%22', // Double quote. + '%22', // double quote "'", - '%27', // Single quote. + '%27', // single quote '(', - '%28', // Opening bracket. + '%28', // opening bracket ')', - '%29', // Closing bracket. + '%29', // closing bracket ',', - '%2C', // Comma. + '%2C', // comma '.', - '%2E', // Period. + '%2E', // period ';', - '%3B', // Semicolon. + '%3B', // semicolon '{', - '%7B', // Opening curly bracket. + '%7B', // opening curly bracket '}', - '%7D', // Closing curly bracket. - '%E2%80%9C', // Opening curly quote. - '%E2%80%9D', // Closing curly quote. + '%7D', // closing curly bracket + '%E2%80%9C', // opening curly quote + '%E2%80%9D', // closing curly quote ) ) ); @@ -629,19 +598,19 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { if ( ! empty( $redirect['query'] ) ) { // Remove trailing spaces and end punctuation from certain terminating query string args. - $redirect['query'] = preg_replace( "#((^|&)(p|page_id|cat|tag)=[^&]*?)($punctuation_pattern)+$#", '$1', $redirect['query'] ); + $redirect['query'] = preg_replace( "#((p|page_id|cat|tag)=[^&]*?)($punctuation_pattern)+$#", '$1', $redirect['query'] ); - // Clean up empty query strings. + // Clean up empty query strings $redirect['query'] = trim( preg_replace( '#(^|&)(p|page_id|cat|tag)=?(&|$)#', '&', $redirect['query'] ), '&' ); - // Redirect obsolete feeds. + // Redirect obsolete feeds $redirect['query'] = preg_replace( '#(^|&)feed=rss(&|$)#', '$1feed=rss2$2', $redirect['query'] ); - // Remove redundant leading ampersands. + // Remove redundant leading ampersands $redirect['query'] = preg_replace( '#^\??&*?#', '', $redirect['query'] ); } - // Strip /index.php/ when we're not using PATHINFO permalinks. + // strip /index.php/ when we're not using PATHINFO permalinks if ( ! $wp_rewrite->using_index_permalinks() ) { $redirect['path'] = str_replace( '/' . $wp_rewrite->index . '/', '/', $redirect['path'] ); } @@ -669,14 +638,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect['path'] = trailingslashit( $redirect['path'] ); } - // Remove trailing slash for robots.txt or sitemap requests. - if ( is_robots() - || ! empty( get_query_var( 'sitemap' ) ) || ! empty( get_query_var( 'sitemap-stylesheet' ) ) - ) { - $redirect['path'] = untrailingslashit( $redirect['path'] ); - } - - // Strip multiple slashes out of the URL. + // Strip multiple slashes out of the URL if ( strpos( $redirect['path'], '//' ) > -1 ) { $redirect['path'] = preg_replace( '|/+|', '/', $redirect['path'] ); } @@ -736,13 +698,13 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { return; } - // Hex-encoded octets are case-insensitive. + // Hex encoded octets are case-insensitive. if ( false !== strpos( $requested_url, '%' ) ) { if ( ! function_exists( 'lowercase_octets' ) ) { /** * Converts the first hex-encoded octet match to lowercase. * - * @since 3.1.0 + * @since WP-3.1.0 * @ignore * * @param array $matches Hex-encoded octet matches for the requested URL. @@ -756,34 +718,12 @@ function lowercase_octets( $matches ) { $requested_url = preg_replace_callback( '|%[a-fA-F0-9][a-fA-F0-9]|', 'lowercase_octets', $requested_url ); } - if ( $redirect_obj instanceof WP_Post ) { - $post_status_obj = get_post_status_object( get_post_status( $redirect_obj ) ); - /* - * Unset the redirect object and URL if they are not readable by the user. - * This condition is a little confusing as the condition needs to pass if - * the post is not readable by the user. That's why there are ! (not) conditions - * throughout. - */ - if ( - // Private post statuses only redirect if the user can read them. - ! ( - $post_status_obj->private && - current_user_can( 'read_post', $redirect_obj->ID ) - ) && - // For other posts, only redirect if publicly viewable. - ! is_post_publicly_viewable( $redirect_obj ) - ) { - $redirect_obj = false; - $redirect_url = false; - } - } - /** * Filters the canonical redirect URL. * * Returning false to this filter will cancel the redirect. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param string $redirect_url The redirect URL. * @param string $requested_url The requested URL. @@ -796,13 +736,13 @@ function lowercase_octets( $matches ) { } if ( $do_redirect ) { - // Protect against chained redirects. + // protect against chained redirects if ( ! redirect_canonical( $redirect_url, false ) ) { wp_redirect( $redirect_url, 301 ); exit; } else { - // Debug. - // die("1: $redirect_url
        2: " . redirect_canonical( $redirect_url, false ) ); + // Debug + // die("1: $redirect_url
        2: " . redirect_canonical( $redirect_url, false ) ); return; } } else { @@ -814,11 +754,11 @@ function lowercase_octets( $matches ) { * Removes arguments from a query string if they are not present in a URL * DO NOT use this in plugin code. * - * @since 3.4.0 + * @since WP-3.4.0 * @access private * * @param string $query_string - * @param array $args_to_check + * @param array $args_to_check * @param string $url * @return string The altered query string */ @@ -843,23 +783,17 @@ function _remove_qs_args_if_not_in_url( $query_string, array $args_to_check, $ur /** * Strips the #fragment from a URL, if one is present. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $url The URL to strip. * @return string The altered URL. */ function strip_fragment_from_url( $url ) { - $parsed_url = wp_parse_url( $url ); + $parsed_url = parse_url( $url ); if ( ! empty( $parsed_url['host'] ) ) { - $url = ''; - - if ( ! empty( $parsed_url['scheme'] ) ) { - $url = $parsed_url['scheme'] . ':'; - } - - $url .= '//' . $parsed_url['host']; - + // This mirrors code in redirect_canonical(). It does not handle every case. + $url = $parsed_url['scheme'] . '://' . $parsed_url['host']; if ( ! empty( $parsed_url['port'] ) ) { $url .= ':' . $parsed_url['port']; } @@ -877,74 +811,23 @@ function strip_fragment_from_url( $url ) { } /** - * Attempts to guess the correct URL for a 404 request based on query vars. + * Attempts to guess the correct URL based on query vars * - * @since 2.3.0 + * @since WP-2.3.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @return string|false The correct URL if one is found. False on failure. + * @return false|string The correct URL if one is found. False on failure. */ function redirect_guess_404_permalink() { global $wpdb; - /** - * Filters whether to attempt to guess a redirect URL for a 404 request. - * - * Returning a false value from the filter will disable the URL guessing - * and return early without performing a redirect. - * - * @since 5.5.0 - * - * @param bool $do_redirect_guess Whether to attempt to guess a redirect URL - * for a 404 request. Default true. - */ - if ( false === apply_filters( 'do_redirect_guess_404_permalink', true ) ) { - return false; - } - - /** - * Short-circuits the redirect URL guessing for 404 requests. - * - * Returning a non-null value from the filter will effectively short-circuit - * the URL guessing, returning the passed value instead. - * - * @since 5.5.0 - * - * @param null|string|false $pre Whether to short-circuit guessing the redirect for a 404. - * Default null to continue with the URL guessing. - */ - $pre = apply_filters( 'pre_redirect_guess_404_permalink', null ); - if ( null !== $pre ) { - return $pre; - } - if ( get_query_var( 'name' ) ) { - /** - * Filters whether to perform a strict guess for a 404 redirect. - * - * Returning a truthy value from the filter will redirect only exact post_name matches. - * - * @since 5.5.0 - * - * @param bool $strict_guess Whether to perform a strict guess. Default false (loose guess). - */ - $strict_guess = apply_filters( 'strict_redirect_guess_404_permalink', false ); - - if ( $strict_guess ) { - $where = $wpdb->prepare( 'post_name = %s', get_query_var( 'name' ) ); - } else { - $where = $wpdb->prepare( 'post_name LIKE %s', $wpdb->esc_like( get_query_var( 'name' ) ) . '%' ); - } + $where = $wpdb->prepare( 'post_name LIKE %s', $wpdb->esc_like( get_query_var( 'name' ) ) . '%' ); - // If any of post_type, year, monthnum, or day are set, use them to refine the query. + // if any of post_type, year, monthnum, or day are set, use them to refine the query if ( get_query_var( 'post_type' ) ) { - if ( is_array( get_query_var( 'post_type' ) ) ) { - // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare - $where .= " AND post_type IN ('" . join( "', '", esc_sql( get_query_var( 'post_type' ) ) ) . "')"; - } else { - $where .= $wpdb->prepare( ' AND post_type = %s', 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 ) ) ) . "')"; } @@ -959,9 +842,8 @@ function redirect_guess_404_permalink() { $where .= $wpdb->prepare( ' AND DAYOFMONTH(post_date) = %d', get_query_var( 'day' ) ); } - $publicly_viewable_statuses = array_filter( get_post_stati(), 'is_post_status_viewable' ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $post_id = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE $where AND post_status IN ('" . implode( "', '", esc_sql( $publicly_viewable_statuses ) ) . "')" ); + $post_id = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE $where AND post_status = 'publish'" ); if ( ! $post_id ) { return false; @@ -985,9 +867,9 @@ function redirect_guess_404_permalink() { * If a user visits example.com/admin, they'll be redirected to /wp-admin. * Visiting /login redirects to /wp-login.php, and so on. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. + * @global WP_Rewrite $wp_rewrite */ function wp_redirect_admin_locations() { global $wp_rewrite; diff --git a/wp-includes/capabilities.php b/wp-includes/capabilities.php index 11dc3bb..c175d13 100644 --- a/wp-includes/capabilities.php +++ b/wp-includes/capabilities.php @@ -7,41 +7,27 @@ */ /** - * Maps a capability to the primitive capabilities required of the given user to - * satisfy the capability being checked. + * Map meta capabilities to primitive capabilities. * - * This function also accepts an ID of an object to map against if the capability is a meta capability. Meta - * capabilities such as `edit_post` and `edit_user` are capabilities used by this function to map to primitive - * capabilities that a user or role requires, such as `edit_posts` and `edit_others_posts`. + * This does not actually compare whether the user ID has the actual capability, + * just what the capability or capabilities are. Meta capability list value can + * be 'delete_user', 'edit_user', 'remove_user', 'promote_user', 'delete_post', + * 'delete_page', 'edit_post', 'edit_page', 'read_post', or 'read_page'. * - * Example usage: - * - * map_meta_cap( 'edit_posts', $user->ID ); - * map_meta_cap( 'edit_post', $user->ID, $post->ID ); - * map_meta_cap( 'edit_post_meta', $user->ID, $post->ID, $meta_key ); - * - * This function does not check whether the user has the required capabilities, - * it just returns what the required capabilities are. - * - * @since 2.0.0 - * @since 4.9.6 Added the `export_others_personal_data`, `erase_others_personal_data`, - * and `manage_privacy_options` capabilities. - * @since 5.1.0 Added the `update_php` capability. - * @since 5.2.0 Added the `resume_plugin` and `resume_theme` capabilities. - * @since 5.3.0 Formalized the existing and already documented `...$args` parameter - * by adding it to the function signature. - * @since 5.7.0 Added the `create_app_password`, `list_app_passwords`, `read_app_password`, - * `edit_app_password`, `delete_app_passwords`, `delete_app_password`, - * and `update_https` capabilities. + * @since WP-2.0.0 * * @global array $post_type_meta_caps Used to get post type meta capabilities. * - * @param string $cap Capability being checked. - * @param int $user_id User ID. - * @param mixed ...$args Optional further parameters, typically starting with an object ID. - * @return string[] Primitive capabilities required of the user. + * @param string $cap Capability name. + * @param int $user_id User ID. + * @param int $object_id Optional. ID of the specific object to check against if `$cap` is a "meta" cap. + * "Meta" capabilities, e.g. 'edit_post', 'edit_user', etc., are capabilities used + * by map_meta_cap() to map to other "primitive" capabilities, e.g. 'edit_posts', + * 'edit_others_posts', etc. The parameter is accessed via func_get_args(). + * @return array Actual capabilities for meta capability. */ -function map_meta_cap( $cap, $user_id, ...$args ) { +function map_meta_cap( $cap, $user_id ) { + $args = array_slice( func_get_args(), 2 ); $caps = array(); switch ( $cap ) { @@ -73,25 +59,6 @@ function map_meta_cap( $cap, $user_id, ...$args ) { break; case 'delete_post': case 'delete_page': - if ( ! isset( $args[0] ) ) { - if ( 'delete_post' === $cap ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific post.' ); - } else { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific page.' ); - } - - _doing_it_wrong( - __FUNCTION__, - sprintf( $message, '' . $cap . '' ), - '6.1.0' - ); - - $caps[] = 'do_not_allow'; - break; - } - $post = get_post( $args[0] ); if ( ! $post ) { $caps[] = 'do_not_allow'; @@ -99,8 +66,11 @@ function map_meta_cap( $cap, $user_id, ...$args ) { } if ( 'revision' === $post->post_type ) { - $caps[] = 'do_not_allow'; - break; + $post = get_post( $post->post_parent ); + if ( ! $post ) { + $caps[] = 'do_not_allow'; + break; + } } if ( ( get_option( 'page_for_posts' ) == $post->ID ) || ( get_option( 'page_on_front' ) == $post->ID ) ) { @@ -110,19 +80,8 @@ function map_meta_cap( $cap, $user_id, ...$args ) { $post_type = get_post_type_object( $post->post_type ); if ( ! $post_type ) { - /* translators: 1: Post type, 2: Capability name. */ - $message = __( 'The post type %1$s is not registered, so it may not be reliable to check the capability %2$s against a post of that type.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( - $message, - '' . $post->post_type . '', - '' . $cap . '' - ), - '4.4.0' - ); - + /* translators: 1: post type, 2: capability name */ + _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), 'WP-4.4.0' ); $caps[] = 'edit_others_posts'; break; } @@ -173,28 +132,9 @@ function map_meta_cap( $cap, $user_id, ...$args ) { break; // edit_post breaks down to edit_posts, edit_published_posts, or - // edit_others_posts. + // edit_others_posts case 'edit_post': case 'edit_page': - if ( ! isset( $args[0] ) ) { - if ( 'edit_post' === $cap ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific post.' ); - } else { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific page.' ); - } - - _doing_it_wrong( - __FUNCTION__, - sprintf( $message, '' . $cap . '' ), - '6.1.0' - ); - - $caps[] = 'do_not_allow'; - break; - } - $post = get_post( $args[0] ); if ( ! $post ) { $caps[] = 'do_not_allow'; @@ -211,19 +151,8 @@ function map_meta_cap( $cap, $user_id, ...$args ) { $post_type = get_post_type_object( $post->post_type ); if ( ! $post_type ) { - /* translators: 1: Post type, 2: Capability name. */ - $message = __( 'The post type %1$s is not registered, so it may not be reliable to check the capability %2$s against a post of that type.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( - $message, - '' . $post->post_type . '', - '' . $cap . '' - ), - '4.4.0' - ); - + /* translators: 1: post type, 2: capability name */ + _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), 'WP-4.4.0' ); $caps[] = 'edit_others_posts'; break; } @@ -275,25 +204,6 @@ function map_meta_cap( $cap, $user_id, ...$args ) { break; case 'read_post': case 'read_page': - if ( ! isset( $args[0] ) ) { - if ( 'read_post' === $cap ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific post.' ); - } else { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific page.' ); - } - - _doing_it_wrong( - __FUNCTION__, - sprintf( $message, '' . $cap . '' ), - '6.1.0' - ); - - $caps[] = 'do_not_allow'; - break; - } - $post = get_post( $args[0] ); if ( ! $post ) { $caps[] = 'do_not_allow'; @@ -310,19 +220,8 @@ function map_meta_cap( $cap, $user_id, ...$args ) { $post_type = get_post_type_object( $post->post_type ); if ( ! $post_type ) { - /* translators: 1: Post type, 2: Capability name. */ - $message = __( 'The post type %1$s is not registered, so it may not be reliable to check the capability %2$s against a post of that type.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( - $message, - '' . $post->post_type . '', - '' . $cap . '' - ), - '4.4.0' - ); - + /* translators: 1: post type, 2: capability name */ + _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), 'WP-4.4.0' ); $caps[] = 'edit_others_posts'; break; } @@ -336,25 +235,7 @@ function map_meta_cap( $cap, $user_id, ...$args ) { break; } - $status_obj = get_post_status_object( get_post_status( $post ) ); - if ( ! $status_obj ) { - /* translators: 1: Post status, 2: Capability name. */ - $message = __( 'The post status %1$s is not registered, so it may not be reliable to check the capability %2$s against a post with that status.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( - $message, - '' . get_post_status( $post ) . '', - '' . $cap . '' - ), - '5.4.0' - ); - - $caps[] = 'edit_others_posts'; - break; - } - + $status_obj = get_post_status_object( $post->post_status ); if ( $status_obj->public ) { $caps[] = $post_type->cap->read; break; @@ -369,20 +250,6 @@ function map_meta_cap( $cap, $user_id, ...$args ) { } break; case 'publish_post': - if ( ! isset( $args[0] ) ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific post.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( $message, '' . $cap . '' ), - '6.1.0' - ); - - $caps[] = 'do_not_allow'; - break; - } - $post = get_post( $args[0] ); if ( ! $post ) { $caps[] = 'do_not_allow'; @@ -391,19 +258,8 @@ function map_meta_cap( $cap, $user_id, ...$args ) { $post_type = get_post_type_object( $post->post_type ); if ( ! $post_type ) { - /* translators: 1: Post type, 2: Capability name. */ - $message = __( 'The post type %1$s is not registered, so it may not be reliable to check the capability %2$s against a post of that type.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( - $message, - '' . $post->post_type . '', - '' . $cap . '' - ), - '4.4.0' - ); - + /* translators: 1: post type, 2: capability name */ + _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), 'WP-4.4.0' ); $caps[] = 'edit_others_posts'; break; } @@ -422,35 +278,8 @@ function map_meta_cap( $cap, $user_id, ...$args ) { case 'edit_user_meta': case 'delete_user_meta': case 'add_user_meta': - $object_type = explode( '_', $cap )[1]; - - if ( ! isset( $args[0] ) ) { - if ( 'post' === $object_type ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific post.' ); - } elseif ( 'comment' === $object_type ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific comment.' ); - } elseif ( 'term' === $object_type ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific term.' ); - } else { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific user.' ); - } - - _doing_it_wrong( - __FUNCTION__, - sprintf( $message, '' . $cap . '' ), - '6.1.0' - ); - - $caps[] = 'do_not_allow'; - break; - } - - $object_id = (int) $args[0]; - + $object_type = explode( '_', $cap )[1]; + $object_id = (int) $args[0]; $object_subtype = get_object_subtype( $object_type, $object_id ); if ( empty( $object_subtype ) ) { @@ -474,7 +303,7 @@ function map_meta_cap( $cap, $user_id, ...$args ) { * and `$object_subtype`, refer to the metadata object type (comment, post, term or user), * the meta key value, and the object subtype respectively. * - * @since 4.9.8 + * @since WP-4.9.8 * * @param bool $allowed Whether the user can add the object meta. Default false. * @param string $meta_key The meta key. @@ -494,8 +323,8 @@ function map_meta_cap( $cap, $user_id, ...$args ) { * The dynamic portion of the hook name, `$object_type` refers to the object type being filtered. * The dynamic portion of the hook name, `$meta_key`, refers to the meta key passed to map_meta_cap(). * - * @since 3.3.0 As `auth_post_meta_{$meta_key}`. - * @since 4.6.0 + * @since WP-3.3.0 As `auth_post_meta_{$meta_key}`. + * @since WP-4.6.0 * * @param bool $allowed Whether the user can add the object meta. Default false. * @param string $meta_key The meta key. @@ -518,10 +347,9 @@ function map_meta_cap( $cap, $user_id, ...$args ) { * The dynamic portion of the hook name, `$object_subtype` refers to the object subtype being filtered. * The dynamic portion of the hook name, `$meta_key`, refers to the meta key passed to map_meta_cap(). * - * @since 4.6.0 As `auth_post_{$post_type}_meta_{$meta_key}`. - * @since 4.7.0 Renamed from `auth_post_{$post_type}_meta_{$meta_key}` to - * `auth_{$object_type}_{$object_subtype}_meta_{$meta_key}`. - * @deprecated 4.9.8 Use {@see 'auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype}'} instead. + * @since WP-4.6.0 As `auth_post_{$post_type}_meta_{$meta_key}`. + * @since WP-4.7.0 + * @deprecated WP-4.9.8 Use `auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype}` * * @param bool $allowed Whether the user can add the object meta. Default false. * @param string $meta_key The meta key. @@ -533,7 +361,7 @@ function map_meta_cap( $cap, $user_id, ...$args ) { $allowed = apply_filters_deprecated( "auth_{$object_type}_{$object_subtype}_meta_{$meta_key}", array( $allowed, $meta_key, $object_id, $user_id, $cap, $caps ), - '4.9.8', + 'WP-4.9.8', "auth_{$object_type}_meta_{$meta_key}_for_{$object_subtype}" ); } @@ -544,20 +372,6 @@ function map_meta_cap( $cap, $user_id, ...$args ) { } break; case 'edit_comment': - if ( ! isset( $args[0] ) ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific comment.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( $message, '' . $cap . '' ), - '6.1.0' - ); - - $caps[] = 'do_not_allow'; - break; - } - $comment = get_comment( $args[0] ); if ( ! $comment ) { $caps[] = 'do_not_allow'; @@ -654,12 +468,6 @@ function map_meta_cap( $cap, $user_id, ...$args ) { } } break; - case 'resume_plugin': - $caps[] = 'resume_plugins'; - break; - case 'resume_theme': - $caps[] = 'resume_themes'; - break; case 'delete_user': case 'delete_users': // If multisite only super admins can delete users. @@ -698,20 +506,6 @@ function map_meta_cap( $cap, $user_id, ...$args ) { case 'edit_term': case 'delete_term': case 'assign_term': - if ( ! isset( $args[0] ) ) { - /* translators: %s: Capability name. */ - $message = __( 'When checking for the %s capability, you must always check it against a specific term.' ); - - _doing_it_wrong( - __FUNCTION__, - sprintf( $message, '' . $cap . '' ), - '6.1.0' - ); - - $caps[] = 'do_not_allow'; - break; - } - $term_id = (int) $args[0]; $term = get_term( $term_id ); if ( ! $term || is_wp_error( $term ) ) { @@ -725,10 +519,7 @@ function map_meta_cap( $cap, $user_id, ...$args ) { break; } - if ( 'delete_term' === $cap - && ( get_option( 'default_' . $term->taxonomy ) == $term->term_id - || get_option( 'default_term_' . $term->taxonomy ) == $term->term_id ) - ) { + if ( 'delete_term' === $cap && ( get_option( 'default_' . $term->taxonomy ) == $term->term_id ) ) { $caps[] = 'do_not_allow'; break; } @@ -767,56 +558,17 @@ function map_meta_cap( $cap, $user_id, ...$args ) { $caps[] = 'manage_options'; } break; - case 'update_php': - if ( is_multisite() && ! is_super_admin( $user_id ) ) { - $caps[] = 'do_not_allow'; - } else { - $caps[] = 'update_core'; - } - break; - case 'update_https': - if ( is_multisite() && ! is_super_admin( $user_id ) ) { - $caps[] = 'do_not_allow'; - } else { - $caps[] = 'manage_options'; - $caps[] = 'update_core'; - } - break; case 'export_others_personal_data': case 'erase_others_personal_data': case 'manage_privacy_options': $caps[] = is_multisite() ? 'manage_network' : 'manage_options'; break; - case 'create_app_password': - case 'list_app_passwords': - case 'read_app_password': - case 'edit_app_password': - case 'delete_app_passwords': - case 'delete_app_password': - $caps = map_meta_cap( 'edit_user', $user_id, $args[0] ); - break; default: // Handle meta capabilities for custom post types. global $post_type_meta_caps; if ( isset( $post_type_meta_caps[ $cap ] ) ) { - return map_meta_cap( $post_type_meta_caps[ $cap ], $user_id, ...$args ); - } - - // Block capabilities map to their post equivalent. - $block_caps = array( - 'edit_blocks', - 'edit_others_blocks', - 'publish_blocks', - 'read_private_blocks', - 'delete_blocks', - 'delete_private_blocks', - 'delete_published_blocks', - 'delete_others_blocks', - 'edit_private_blocks', - 'edit_published_blocks', - ); - if ( in_array( $cap, $block_caps, true ) ) { - $cap = str_replace( '_blocks', '_posts', $cap ); + $args = array_merge( array( $post_type_meta_caps[ $cap ], $user_id ), $args ); + return call_user_func_array( 'map_meta_cap', $args ); } // If no meta caps match, return the original cap. @@ -824,82 +576,78 @@ function map_meta_cap( $cap, $user_id, ...$args ) { } /** - * Filters the primitive capabilities required of the given user to satisfy the - * capability being checked. + * Filters a user's capabilities depending on specific context and/or privilege. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string[] $caps Primitive capabilities required of the user. - * @param string $cap Capability being checked. - * @param int $user_id The user ID. - * @param array $args Adds context to the capability check, typically - * starting with an object ID. + * @param array $caps Returns the user's actual capabilities. + * @param string $cap Capability name. + * @param int $user_id The user ID. + * @param array $args Adds the context to the cap. Typically the object ID. */ return apply_filters( 'map_meta_cap', $caps, $cap, $user_id, $args ); } /** - * Returns whether the current user has the specified capability. - * - * This function also accepts an ID of an object to check against if the capability is a meta capability. Meta - * capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to - * map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`. - * - * Example usage: - * - * current_user_can( 'edit_posts' ); - * current_user_can( 'edit_post', $post->ID ); - * current_user_can( 'edit_post_meta', $post->ID, $meta_key ); + * Whether the current user has a specific capability. * * While checking against particular roles in place of a capability is supported * in part, this practice is discouraged as it may produce unreliable results. * * Note: Will always return true if the current user is a super admin, unless specifically denied. * - * @since 2.0.0 - * @since 5.3.0 Formalized the existing and already documented `...$args` parameter - * by adding it to the function signature. - * @since 5.8.0 Converted to wrapper for the user_can() function. + * @since WP-2.0.0 * * @see WP_User::has_cap() * @see map_meta_cap() * * @param string $capability Capability name. - * @param mixed ...$args Optional further parameters, typically starting with an object ID. + * @param int $object_id Optional. ID of the specific object to check against if `$capability` is a "meta" cap. + * "Meta" capabilities, e.g. 'edit_post', 'edit_user', etc., are capabilities used + * by map_meta_cap() to map to other "primitive" capabilities, e.g. 'edit_posts', + * 'edit_others_posts', etc. Accessed via func_get_args() and passed to WP_User::has_cap(), + * then map_meta_cap(). * @return bool Whether the current user has the given capability. If `$capability` is a meta cap and `$object_id` is * passed, whether the current user has the given meta capability for the given object. */ -function current_user_can( $capability, ...$args ) { - return user_can( wp_get_current_user(), $capability, ...$args ); +function current_user_can( $capability ) { + $current_user = wp_get_current_user(); + + if ( empty( $current_user ) ) { + return false; + } + + $args = array_slice( func_get_args(), 1 ); + $args = array_merge( array( $capability ), $args ); + + return call_user_func_array( array( $current_user, 'has_cap' ), $args ); } /** - * Returns whether the current user has the specified capability for a given site. + * Whether the current user has a specific capability for a given site. * - * This function also accepts an ID of an object to check against if the capability is a meta capability. Meta - * capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to - * map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`. - * - * Example usage: - * - * current_user_can_for_blog( $blog_id, 'edit_posts' ); - * current_user_can_for_blog( $blog_id, 'edit_post', $post->ID ); - * current_user_can_for_blog( $blog_id, 'edit_post_meta', $post->ID, $meta_key ); - * - * @since 3.0.0 - * @since 5.3.0 Formalized the existing and already documented `...$args` parameter - * by adding it to the function signature. - * @since 5.8.0 Wraps current_user_can() after switching to blog. + * @since WP-3.0.0 * * @param int $blog_id Site ID. * @param string $capability Capability name. - * @param mixed ...$args Optional further parameters, typically starting with an object ID. * @return bool Whether the user has the given capability. */ -function current_user_can_for_blog( $blog_id, $capability, ...$args ) { +function current_user_can_for_blog( $blog_id, $capability ) { $switched = is_multisite() ? switch_to_blog( $blog_id ) : false; - $can = current_user_can( $capability, ...$args ); + $current_user = wp_get_current_user(); + + if ( empty( $current_user ) ) { + if ( $switched ) { + restore_current_blog(); + } + return false; + } + + $args = array_slice( func_get_args(), 2 ); + $args = array_merge( array( $capability ), $args ); + + $can = call_user_func_array( array( $current_user, 'has_cap' ), $args ); if ( $switched ) { restore_current_blog(); @@ -909,28 +657,15 @@ function current_user_can_for_blog( $blog_id, $capability, ...$args ) { } /** - * Returns whether the author of the supplied post has the specified capability. - * - * This function also accepts an ID of an object to check against if the capability is a meta capability. Meta - * capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to - * map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`. - * - * Example usage: + * Whether the author of the supplied post has a specific capability. * - * author_can( $post, 'edit_posts' ); - * author_can( $post, 'edit_post', $post->ID ); - * author_can( $post, 'edit_post_meta', $post->ID, $meta_key ); - * - * @since 2.9.0 - * @since 5.3.0 Formalized the existing and already documented `...$args` parameter - * by adding it to the function signature. + * @since WP-2.9.0 * * @param int|WP_Post $post Post ID or post object. * @param string $capability Capability name. - * @param mixed ...$args Optional further parameters, typically starting with an object ID. * @return bool Whether the post author has the given capability. */ -function author_can( $post, $capability, ...$args ) { +function author_can( $post, $capability ) { $post = get_post( $post ); if ( ! $post ) { return false; @@ -942,51 +677,42 @@ function author_can( $post, $capability, ...$args ) { return false; } - return $author->has_cap( $capability, ...$args ); + $args = array_slice( func_get_args(), 2 ); + $args = array_merge( array( $capability ), $args ); + + return call_user_func_array( array( $author, 'has_cap' ), $args ); } /** - * Returns whether a particular user has the specified capability. + * Whether a particular user has a specific capability. * - * This function also accepts an ID of an object to check against if the capability is a meta capability. Meta - * capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to - * map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`. - * - * Example usage: - * - * user_can( $user->ID, 'edit_posts' ); - * user_can( $user->ID, 'edit_post', $post->ID ); - * user_can( $user->ID, 'edit_post_meta', $post->ID, $meta_key ); - * - * @since 3.1.0 - * @since 5.3.0 Formalized the existing and already documented `...$args` parameter - * by adding it to the function signature. + * @since WP-3.1.0 * * @param int|WP_User $user User ID or object. * @param string $capability Capability name. - * @param mixed ...$args Optional further parameters, typically starting with an object ID. * @return bool Whether the user has the given capability. */ -function user_can( $user, $capability, ...$args ) { +function user_can( $user, $capability ) { if ( ! is_object( $user ) ) { $user = get_userdata( $user ); } - if ( empty( $user ) ) { - // User is logged out, create anonymous user object. - $user = new WP_User( 0 ); - $user->init( new stdClass() ); + if ( ! $user || ! $user->exists() ) { + return false; } - return $user->has_cap( $capability, ...$args ); + $args = array_slice( func_get_args(), 2 ); + $args = array_merge( array( $capability ), $args ); + + return call_user_func_array( array( $user, 'has_cap' ), $args ); } /** * Retrieves the global WP_Roles instance and instantiates it if necessary. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @global WP_Roles $wp_roles WordPress role management object. + * @global WP_Roles $wp_roles WP_Roles global instance. * * @return WP_Roles WP_Roles global instance if not already instantiated. */ @@ -1000,9 +726,9 @@ function wp_roles() { } /** - * Retrieves role object. + * Retrieve role object. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. * @return WP_Role|null WP_Role object if found, null if the role does not exist. @@ -1012,28 +738,26 @@ function get_role( $role ) { } /** - * Adds a role, if it does not exist. + * Add role, if it does not exist. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param string $role Role name. + * @param string $role Role name. * @param string $display_name Display name for role. - * @param bool[] $capabilities List of capabilities keyed by the capability name, - * e.g. array( 'edit_posts' => true, 'delete_posts' => false ). - * @return WP_Role|void WP_Role object, if the role is added. + * @param array $capabilities List of capabilities, e.g. array( 'edit_posts' => true, 'delete_posts' => false ); + * @return WP_Role|null WP_Role object if role is added, null if already exists. */ function add_role( $role, $display_name, $capabilities = array() ) { if ( empty( $role ) ) { return; } - return wp_roles()->add_role( $role, $display_name, $capabilities ); } /** - * Removes a role, if it exists. + * Remove role, if it exists. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. */ @@ -1042,13 +766,13 @@ function remove_role( $role ) { } /** - * Retrieves a list of super admins. + * Retrieve a list of super admins. * - * @since 3.0.0 + * @since WP-3.0.0 * * @global array $super_admins * - * @return string[] List of super admin logins. + * @return array List of super admin logins */ function get_super_admins() { global $super_admins; @@ -1061,15 +785,15 @@ function get_super_admins() { } /** - * Determines whether user is a site admin. + * Determine if user is a site admin. * - * @since 3.0.0 + * @since WP-3.0.0 * - * @param int|false $user_id Optional. The ID of a user. Defaults to false, to check the current user. - * @return bool Whether the user is a site admin. + * @param int $user_id (Optional) The ID of a user. Defaults to the current user. + * @return bool True if the user is a site admin. */ function is_super_admin( $user_id = false ) { - if ( ! $user_id ) { + if ( ! $user_id || get_current_user_id() == $user_id ) { $user = wp_get_current_user(); } else { $user = get_userdata( $user_id ); @@ -1096,7 +820,7 @@ function is_super_admin( $user_id = false ) { /** * Grants Super Admin privileges. * - * @since 3.0.0 + * @since WP-3.0.0 * * @global array $super_admins * @@ -1113,13 +837,13 @@ function grant_super_admin( $user_id ) { /** * Fires before the user is granted Super Admin privileges. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param int $user_id ID of the user that is about to be granted Super Admin privileges. */ do_action( 'grant_super_admin', $user_id ); - // Directly fetch site_admins instead of using get_super_admins(). + // Directly fetch site_admins instead of using get_super_admins() $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); $user = get_userdata( $user_id ); @@ -1130,7 +854,7 @@ function grant_super_admin( $user_id ) { /** * Fires after the user is granted Super Admin privileges. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param int $user_id ID of the user that was granted Super Admin privileges. */ @@ -1143,7 +867,7 @@ function grant_super_admin( $user_id ) { /** * Revokes Super Admin privileges. * - * @since 3.0.0 + * @since WP-3.0.0 * * @global array $super_admins * @@ -1160,13 +884,13 @@ function revoke_super_admin( $user_id ) { /** * Fires before the user's Super Admin privileges are revoked. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param int $user_id ID of the user Super Admin privileges are being revoked from. */ do_action( 'revoke_super_admin', $user_id ); - // Directly fetch site_admins instead of using get_super_admins(). + // Directly fetch site_admins instead of using get_super_admins() $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); $user = get_userdata( $user_id ); @@ -1179,7 +903,7 @@ function revoke_super_admin( $user_id ) { /** * Fires after the user's Super Admin privileges are revoked. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param int $user_id ID of the user Super Admin privileges were revoked from. */ @@ -1196,10 +920,10 @@ function revoke_super_admin( $user_id ) { * A user must have at least one out of the 'update_core', 'install_plugins', and * 'install_themes' capabilities to qualify for 'install_languages'. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @param bool[] $allcaps An array of all the user's capabilities. - * @return bool[] Filtered array of the user's capabilities. + * @param array $allcaps An array of all the user's capabilities. + * @return array Filtered array of the user's capabilities. */ function wp_maybe_grant_install_languages_cap( $allcaps ) { if ( ! empty( $allcaps['update_core'] ) || ! empty( $allcaps['install_plugins'] ) || ! empty( $allcaps['install_themes'] ) ) { @@ -1208,64 +932,3 @@ function wp_maybe_grant_install_languages_cap( $allcaps ) { return $allcaps; } - -/** - * Filters the user capabilities to grant the 'resume_plugins' and 'resume_themes' capabilities as necessary. - * - * @since 5.2.0 - * - * @param bool[] $allcaps An array of all the user's capabilities. - * @return bool[] Filtered array of the user's capabilities. - */ -function wp_maybe_grant_resume_extensions_caps( $allcaps ) { - // Even in a multisite, regular administrators should be able to resume plugins. - if ( ! empty( $allcaps['activate_plugins'] ) ) { - $allcaps['resume_plugins'] = true; - } - - // Even in a multisite, regular administrators should be able to resume themes. - if ( ! empty( $allcaps['switch_themes'] ) ) { - $allcaps['resume_themes'] = true; - } - - return $allcaps; -} - -/** - * Filters the user capabilities to grant the 'view_site_health_checks' capabilities as necessary. - * - * @since 5.2.2 - * - * @param bool[] $allcaps An array of all the user's capabilities. - * @param string[] $caps Required primitive capabilities for the requested capability. - * @param array $args { - * Arguments that accompany the requested capability check. - * - * @type string $0 Requested capability. - * @type int $1 Concerned user ID. - * @type mixed ...$2 Optional second and further parameters, typically object ID. - * } - * @param WP_User $user The user object. - * @return bool[] Filtered array of the user's capabilities. - */ -function wp_maybe_grant_site_health_caps( $allcaps, $caps, $args, $user ) { - if ( ! empty( $allcaps['install_plugins'] ) && ( ! is_multisite() || is_super_admin( $user->ID ) ) ) { - $allcaps['view_site_health_checks'] = true; - } - - return $allcaps; -} - -return; - -// Dummy gettext calls to get strings in the catalog. -/* translators: User role for administrators. */ -_x( 'Administrator', 'User role' ); -/* translators: User role for editors. */ -_x( 'Editor', 'User role' ); -/* translators: User role for authors. */ -_x( 'Author', 'User role' ); -/* translators: User role for contributors. */ -_x( 'Contributor', 'User role' ); -/* translators: User role for subscribers. */ -_x( 'Subscriber', 'User role' ); diff --git a/wp-includes/category-template.php b/wp-includes/category-template.php index ca6074d..72d078c 100644 --- a/wp-includes/category-template.php +++ b/wp-includes/category-template.php @@ -4,14 +4,13 @@ * * @package ClassicPress * @subpackage Template - * @since 1.2.0 + * @since WP-1.2.0 */ /** - * Retrieves category link URL. - * - * @since 1.0.0 + * Retrieve category link URL. * + * @since WP-1.0.0 * @see get_term_link() * * @param int|object $category Category ID or object. @@ -32,22 +31,22 @@ function get_category_link( $category ) { } /** - * Retrieves category parents with separator. + * Retrieve category parents with separator. * - * @since 1.2.0 - * @since 4.8.0 The `$visited` parameter was deprecated and renamed to `$deprecated`. + * @since WP-1.2.0 + * @since WP-4.8.0 The `$visited` parameter was deprecated and renamed to `$deprecated`. * * @param int $category_id Category ID. * @param bool $link Optional. Whether to format with link. Default false. * @param string $separator Optional. How to separate categories. Default '/'. * @param bool $nicename Optional. Whether to use nice name for display. Default false. - * @param array $deprecated Not used. + * @param array $deprecated Not used. * @return string|WP_Error A list of category parents on success, WP_Error on failure. */ function get_category_parents( $category_id, $link = false, $separator = '/', $nicename = false, $deprecated = array() ) { if ( ! empty( $deprecated ) ) { - _deprecated_argument( __FUNCTION__, '4.8.0' ); + _deprecated_argument( __FUNCTION__, 'WP-4.8.0' ); } $format = $nicename ? 'slug' : 'name'; @@ -62,14 +61,14 @@ function get_category_parents( $category_id, $link = false, $separator = '/', $n } /** - * Retrieves post categories. + * Retrieve post categories. * - * This tag may be used outside The Loop by passing a post ID as the parameter. + * This tag may be used outside The Loop by passing a post id as the parameter. * * Note: This function only returns results from the default "category" taxonomy. * For custom taxonomies use get_the_terms(). * - * @since 0.71 + * @since WP-0.71 * * @param int $post_id Optional. The post ID. Defaults to current post ID. * @return WP_Term[] Array of WP_Term objects, one for each category assigned to the post. @@ -89,26 +88,26 @@ function get_the_category( $post_id = false ) { /** * Filters the array of categories to return for a post. * - * @since 3.1.0 - * @since 4.4.0 Added the `$post_id` parameter. + * @since WP-3.1.0 + * @since WP-4.4.0 Added `$post_id` parameter. * * @param WP_Term[] $categories An array of categories to return for the post. - * @param int|false $post_id The post ID. + * @param int|false $post_id ID of the post. */ return apply_filters( 'get_the_categories', $categories, $post_id ); } /** - * Retrieves category name based on category ID. + * Retrieve category name based on category ID. * - * @since 0.71 + * @since WP-0.71 * - * @param int $cat_id Category ID. + * @param int $cat_ID Category ID. * @return string|WP_Error Category name on success, WP_Error on failure. */ -function get_the_category_by_ID( $cat_id ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid - $cat_id = (int) $cat_id; - $category = get_term( $cat_id ); +function get_the_category_by_ID( $cat_ID ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid + $cat_ID = (int) $cat_ID; + $category = get_term( $cat_ID ); if ( is_wp_error( $category ) ) { return $category; @@ -118,25 +117,17 @@ function get_the_category_by_ID( $cat_id ) { // phpcs:ignore WordPress.NamingCon } /** - * Retrieves category list for a post in either HTML list or custom format. - * - * Generally used for quick, delimited (e.g. comma-separated) lists of categories, - * as part of a post entry meta. - * - * For a more powerful, list-based function, see wp_list_categories(). - * - * @since 1.5.1 + * Retrieve category list for a post in either HTML list or custom format. * - * @see wp_list_categories() + * @since WP-1.5.1 * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. + * @global WP_Rewrite $wp_rewrite * * @param string $separator Optional. Separator between the categories. By default, the links are placed * in an unordered list. An empty string will result in the default behavior. - * @param string $parents Optional. How to display the parents. Accepts 'multiple', 'single', or empty. - * Default empty string. - * @param int $post_id Optional. ID of the post to retrieve categories for. Defaults to the current post. - * @return string Category list for a post. + * @param string $parents Optional. How to display the parents. + * @param int $post_id Optional. Post ID to retrieve categories. + * @return string */ function get_the_category_list( $separator = '', $parents = '', $post_id = false ) { global $wp_rewrite; @@ -149,11 +140,11 @@ function get_the_category_list( $separator = '', $parents = '', $post_id = false /** * Filters the categories before building the category list. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param WP_Term[] $categories An array of the post's categories. - * @param int|false $post_id ID of the post to retrieve categories for. - * When `false`, defaults to the current post in the loop. + * @param array $categories An array of the post's categories. + * @param int|bool $post_id ID of the post we're retrieving categories for. When `false`, we assume the + * current post in the loop. */ $categories = apply_filters( 'the_category_list', get_the_category( $post_id ), $post_id ); @@ -220,7 +211,7 @@ function get_the_category_list( $separator = '', $parents = '', $post_id = false /** * Filters the category or list of categories. * - * @since 1.2.0 + * @since WP-1.2.0 * * @param string $thelist List of categories for the current post. * @param string $separator Separator used between the categories. @@ -231,7 +222,7 @@ function get_the_category_list( $separator = '', $parents = '', $post_id = false } /** - * Checks if the current post is within any of the given categories. + * Check if the current post is within any of the given categories. * * The given categories are checked against the post's categories' term_ids, names and slugs. * Categories given as integers will only be checked against the post's categories' term_ids. @@ -242,16 +233,10 @@ function get_the_category_list( $separator = '', $parents = '', $post_id = false * Prior to v2.7, this function could only be used in the WordPress Loop. * As of 2.7, the function can be used anywhere if it is provided a post ID or post object. * - * For more information on this and similar theme functions, check out - * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ - * Conditional Tags} article in the Theme Developer Handbook. - * - * @since 1.2.0 - * @since 2.7.0 The `$post` parameter was added. + * @since WP-1.2.0 * - * @param int|string|int[]|string[] $category Category ID, name, slug, or array of such - * to check against. - * @param int|WP_Post $post Optional. Post to check. Defaults to the current post. + * @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 WP-2.7.0) * @return bool True if the current post is in any of the given categories. */ function in_category( $category, $post = null ) { @@ -263,46 +248,44 @@ function in_category( $category, $post = null ) { } /** - * Displays category list for a post in either HTML list or custom format. + * Display category list for a post in either HTML list or custom format. * - * @since 0.71 + * @since WP-0.71 * * @param string $separator Optional. Separator between the categories. By default, the links are placed * in an unordered list. An empty string will result in the default behavior. - * @param string $parents Optional. How to display the parents. Accepts 'multiple', 'single', or empty. - * Default empty string. - * @param int $post_id Optional. ID of the post to retrieve categories for. Defaults to the current post. + * @param string $parents Optional. How to display the parents. + * @param int $post_id Optional. Post ID to retrieve categories. */ function the_category( $separator = '', $parents = '', $post_id = false ) { echo get_the_category_list( $separator, $parents, $post_id ); } /** - * Retrieves category description. + * Retrieve category description. * - * @since 1.0.0 + * @since WP-1.0.0 * - * @param int $category Optional. Category ID. Defaults to the current category ID. - * @return string Category description, if available. + * @param int $category Optional. Category ID. Will use global category ID by default. + * @return string Category description, available. */ function category_description( $category = 0 ) { - return term_description( $category ); + return term_description( $category, 'category' ); } /** - * Displays or retrieves the HTML dropdown list of categories. + * Display or retrieve the HTML dropdown list of categories. * * The 'hierarchical' argument, which is disabled by default, will override the * depth argument, unless it is true. When the argument is false, it will * display all of the categories. When it is enabled it will use the value in * the 'depth' argument. * - * @since 2.1.0 - * @since 4.2.0 Introduced the `value_field` argument. - * @since 4.6.0 Introduced the `required` argument. - * @since 6.1.0 Introduced the `aria_describedby` argument. + * @since WP-2.1.0 + * @since WP-4.2.0 Introduced the `value_field` argument. + * @since WP-4.6.0 Introduced the `required` argument. * - * @param array|string $args { + * @param string|array $args { * Optional. Array or string of arguments to generate a categories drop-down element. See WP_Term_Query::__construct() * for information on additional accepted arguments. * @@ -329,17 +312,13 @@ function category_description( $category = 0 ) { * of the option elements. Accepts any valid term field: 'term_id', 'name', * 'slug', 'term_group', 'term_taxonomy_id', 'taxonomy', 'description', * 'parent', 'count'. Default 'term_id'. - * @type string|array $taxonomy Name of the taxonomy or taxonomies to retrieve. Default 'category'. + * @type string|array $taxonomy Name of the category or categories to retrieve. Default 'category'. * @type bool $hide_if_empty True to skip generating markup if no categories are found. * Default false (create select element even if no categories are found). * @type bool $required Whether the `\n"; + $output = "\n"; } - /** * Filters the taxonomy drop-down output. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string $output HTML output. - * @param array $parsed_args Arguments used to build the drop-down. + * @param string $output HTML output. + * @param array $parsed_args Arguments used to build the drop-down. */ $output = apply_filters( 'wp_dropdown_cats', $output, $parsed_args ); if ( $parsed_args['echo'] ) { echo $output; } - return $output; } /** - * Displays or retrieves the HTML list of categories. + * Display or retrieve the HTML list of categories. * - * @since 2.1.0 - * @since 4.4.0 Introduced the `hide_title_if_empty` and `separator` arguments. - * @since 4.4.0 The `current_category` argument was modified to optionally accept an array of values. - * @since 6.1.0 Default value of the 'use_desc_for_title' argument was changed from 1 to 0. + * @since WP-2.1.0 + * @since WP-4.4.0 Introduced the `hide_title_if_empty` and `separator` arguments. The `current_category` argument was modified to + * optionally accept an array of values. * - * @param array|string $args { - * Array of optional arguments. See get_categories(), get_terms(), and WP_Term_Query::__construct() - * for information on additional accepted arguments. + * @param string|array $args { + * Array of optional arguments. * - * @type int|int[] $current_category ID of category, or array of IDs of categories, that should get the + * @type int $child_of Term ID to retrieve child terms of. See get_terms(). Default 0. + * @type int|array $current_category ID of category, or array of IDs of categories, that should get the * 'current-cat' class. Default 0. * @type int $depth Category depth. Used for tab indentation. Default 0. - * @type bool|int $echo Whether to echo or return the generated markup. Accepts 0, 1, or their - * bool equivalents. Default 1. - * @type int[]|string $exclude Array or comma/space-separated string of term IDs to exclude. + * @type bool|int $echo True to echo markup, false to return it. Default 1. + * @type array|string $exclude Array or comma/space-separated string of term IDs to exclude. * If `$hierarchical` is true, descendants of `$exclude` terms will also * be excluded; see `$exclude_tree`. See get_terms(). * Default empty string. - * @type int[]|string $exclude_tree Array or comma/space-separated string of term IDs to exclude, along + * @type array|string $exclude_tree Array or comma/space-separated string of term IDs to exclude, along * with their descendants. See get_terms(). Default empty string. * @type string $feed Text to use for the feed link. Default 'Feed for all posts filed * under [cat name]'. * @type string $feed_image URL of an image to use for the feed link. Default empty string. * @type string $feed_type Feed type. Used to build feed link. See get_term_feed_link(). * Default empty string (default feed). + * @type bool|int $hide_empty Whether to hide categories that don't have any posts attached to them. + * Default 1. * @type bool $hide_title_if_empty Whether to hide the `$title_li` element if there are no terms in * the list. Default false (title will always be shown). - * @type string $separator Separator between links. Default '
        '. - * @type bool|int $show_count Whether to include post counts. Accepts 0, 1, or their bool equivalents. - * Default 0. + * @type bool $hierarchical Whether to include terms that have non-empty descendants. + * See get_terms(). Default true. + * @type string $order Which direction to order categories. Accepts 'ASC' or 'DESC'. + * Default 'ASC'. + * @type string $orderby The column to use for ordering categories. Default 'name'. + * @type string $separator Separator between links. Default '
        '. + * @type bool|int $show_count Whether to show how many posts are in the category. Default 0. * @type string $show_option_all Text to display for showing all categories. Default empty string. * @type string $show_option_none Text to display for the 'no categories' option. * Default 'No categories'. * @type string $style The style used to display the categories list. If 'list', categories * will be output as an unordered list. If left empty or another value, * categories will be output separated by `
        ` tags. Default 'list'. - * @type string $taxonomy Name of the taxonomy to retrieve. Default 'category'. + * @type string $taxonomy Taxonomy name. Default 'category'. * @type string $title_li Text to use for the list title `
      13. ` element. Pass an empty string * to disable. Default 'Categories'. * @type bool|int $use_desc_for_title Whether to use the category description as the title attribute. - * Accepts 0, 1, or their bool equivalents. Default 0. - * @type Walker $walker Walker object to use to build the output. Default empty which results - * in a Walker_Category instance being used. + * Default 1. * } - * @return void|string|false Void if 'echo' argument is true, HTML list of categories if 'echo' is false. - * False if the taxonomy does not exist. + * @return false|string HTML content only if 'echo' argument is 0. */ function wp_list_categories( $args = '' ) { $defaults = array( @@ -551,14 +525,14 @@ function wp_list_categories( $args = '' ) { 'hierarchical' => true, 'order' => 'ASC', 'orderby' => 'name', - 'separator' => '
        ', + 'separator' => '
        ', 'show_count' => 0, 'show_option_all' => '', 'show_option_none' => __( 'No categories' ), 'style' => 'list', 'taxonomy' => 'category', 'title_li' => __( 'Categories' ), - 'use_desc_for_title' => 0, + 'use_desc_for_title' => 1, ); $parsed_args = wp_parse_args( $args, $defaults ); @@ -672,11 +646,10 @@ function wp_list_categories( $args = '' ) { /** * Filters the HTML output of a taxonomy list. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string $output HTML output. - * @param array|string $args An array or query string of taxonomy-listing arguments. See - * wp_list_categories() for information on accepted arguments. + * @param string $output HTML output. + * @param array $args An array of taxonomy-listing arguments. */ $html = apply_filters( 'wp_list_categories', $output, $args ); @@ -688,30 +661,39 @@ function wp_list_categories( $args = '' ) { } /** - * Displays a tag cloud. - * - * Outputs a list of tags in what is called a 'tag cloud', where the size of each tag - * is determined by how many times that particular tag has been assigned to posts. - * - * @since 2.3.0 - * @since 2.8.0 Added the `taxonomy` argument. - * @since 4.8.0 Added the `show_count` argument. - * - * @param array|string $args { - * Optional. Array or string of arguments for displaying a tag cloud. See wp_generate_tag_cloud() - * and get_terms() for the full lists of arguments that can be passed in `$args`. - * - * @type int $number The number of tags to display. Accepts any positive integer - * or zero to return all. Default 45. - * @type string $link Whether to display term editing links or term permalinks. - * Accepts 'edit' and 'view'. Default 'view'. - * @type string $post_type The post type. Used to highlight the proper post type menu - * on the linked edit page. Defaults to the first post type - * associated with the taxonomy. - * @type bool $echo Whether or not to echo the return value. Default true. - * } - * @return void|string|string[] Void if 'echo' argument is true, or on failure. Otherwise, tag cloud - * as a string or an array, depending on 'format' argument. + * Display tag cloud. + * + * The text size is set by the 'smallest' and 'largest' arguments, which will + * use the 'unit' argument value for the CSS text size unit. The 'format' + * argument can be 'flat' (default), 'list', or 'array'. The flat value for the + * 'format' argument will separate tags with spaces. The list value for the + * 'format' argument will format the tags in a UL HTML list. The array value for + * the 'format' argument will return in PHP array type format. + * + * The 'orderby' argument will accept 'name' or 'count' and defaults to 'name'. + * The 'order' is the direction to sort, defaults to 'ASC' and can be 'DESC'. + * + * The 'number' argument is how many tags to return. By default, the limit will + * be to return the top 45 tags in the tag cloud list. + * + * The 'topic_count_text' argument is a nooped plural from _n_noop() to generate the + * text for the tag link count. + * + * The 'topic_count_text_callback' argument is a function, which given the count + * of the posts with that tag returns a text for the tag link count. + * + * The 'post_type' argument is used only when 'link' is set to 'edit'. It determines the post_type + * passed to edit.php for the popular tags edit links. + * + * The 'exclude' and 'include' arguments are used for the get_tags() function. Only one + * should be used, because only one will be used and the other ignored, if they are both set. + * + * @since WP-2.3.0 + * @since WP-4.8.0 Added the `show_count` argument. + * + * @param array|string|null $args Optional. Override default arguments. + * @return void|array Generated tag cloud, only if no failures and 'array' is set for the 'format' argument. + * Otherwise, this function outputs the tag cloud. */ function wp_tag_cloud( $args = '' ) { $defaults = array( @@ -731,10 +713,10 @@ function wp_tag_cloud( $args = '' ) { 'echo' => true, 'show_count' => 0, ); - - $args = wp_parse_args( $args, $defaults ); + $args = wp_parse_args( $args, $defaults ); $tags = get_terms( + $args['taxonomy'], array_merge( $args, array( @@ -742,7 +724,7 @@ function wp_tag_cloud( $args = '' ) { 'order' => 'DESC', ) ) - ); // Always query top tags. + ); // Always query top tags if ( empty( $tags ) || is_wp_error( $tags ) ) { return; @@ -750,11 +732,10 @@ function wp_tag_cloud( $args = '' ) { foreach ( $tags as $key => $tag ) { if ( 'edit' === $args['link'] ) { - $link = get_edit_term_link( $tag, $tag->taxonomy, $args['post_type'] ); + $link = get_edit_term_link( $tag->term_id, $tag->taxonomy, $args['post_type'] ); } else { - $link = get_term_link( $tag, $tag->taxonomy ); + $link = get_term_link( intval( $tag->term_id ), $tag->taxonomy ); } - if ( is_wp_error( $link ) ) { return; } @@ -763,17 +744,15 @@ function wp_tag_cloud( $args = '' ) { $tags[ $key ]->id = $tag->term_id; } - // Here's where those top tags get sorted according to $args. - $return = wp_generate_tag_cloud( $tags, $args ); + $return = wp_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args /** * Filters the tag cloud output. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param string|string[] $return Tag cloud as a string or an array, depending on 'format' argument. - * @param array $args An array of tag cloud arguments. See wp_tag_cloud() - * for information on accepted arguments. + * @param string $return HTML output of the tag cloud. + * @param array $args An array of tag cloud arguments. */ $return = apply_filters( 'wp_tag_cloud', $return, $args ); @@ -787,7 +766,7 @@ function wp_tag_cloud( $args = '' ) { /** * Default topic count scaling for tag links. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param int $count Number of posts with that tag. * @return int Scaled count. @@ -800,12 +779,12 @@ function default_topic_count_scale( $count ) { * Generates a tag cloud (heatmap) from provided data. * * @todo Complete functionality. - * @since 2.3.0 - * @since 4.8.0 Added the `show_count` argument. + * @since WP-2.3.0 + * @since WP-4.8.0 Added the `show_count` argument. * - * @param WP_Term[] $tags Array of WP_Term objects to generate the tag cloud for. + * @param array $tags List of tags. * @param string|array $args { - * Optional. Array or string of arguments for generating a tag cloud. + * Optional. Array of string of arguments for generating a tag cloud. * * @type int $smallest Smallest font size used to display tags. Paired * with the value of `$unit`, to determine CSS text @@ -830,8 +809,8 @@ function default_topic_count_scale( $count ) { * @type string $order How to order the tags. Accepts 'ASC' (ascending), * 'DESC' (descending), or 'RAND' (random). Default 'ASC'. * @type int|bool $filter Whether to enable filtering of the final output - * via {@see 'wp_generate_tag_cloud'}. Default 1. - * @type array $topic_count_text Nooped plural text from _n_noop() to supply to + * via {@see 'wp_generate_tag_cloud'}. Default 1|true. + * @type string $topic_count_text Nooped plural text from _n_noop() to supply to * tag counts. Default null. * @type callable $topic_count_text_callback Callback used to generate nooped plural text for * tag counts based on the count. Default null. @@ -840,7 +819,7 @@ function default_topic_count_scale( $count ) { * @type bool|int $show_count Whether to display the tag counts. Default 0. Accepts * 0, 1, or their bool equivalents. * } - * @return string|string[] Tag cloud as a string or an array, depending on 'format' argument. + * @return string|array Tag cloud as a string or an array, depending on 'format' argument. */ function wp_generate_tag_cloud( $tags, $args = '' ) { $defaults = array( @@ -885,17 +864,16 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { $translate_nooped_plural = _n_noop( $args['single_text'], $args['multiple_text'] ); } else { // This is the default for when no callback, plural, or argument is passed in. - /* translators: %s: Number of items (tags). */ $translate_nooped_plural = _n_noop( '%s item', '%s items' ); } /** * Filters how the items in a tag cloud are sorted. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param WP_Term[] $tags Ordered array of terms. - * @param array $args An array of tag cloud arguments. + * @param array $tags Ordered array of terms. + * @param array $args An array of tag cloud arguments. */ $tags_sorted = apply_filters( 'tag_cloud_sort', $tags, $args ); if ( empty( $tags_sorted ) ) { @@ -927,7 +905,7 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { } $counts = array(); - $real_counts = array(); // For the alt tag. + $real_counts = array(); // For the alt tag foreach ( (array) $tags as $key => $tag ) { $real_counts[ $key ] = $tag->count; $counts[ $key ] = call_user_func( $args['topic_count_scale_callback'], $tag->count ); @@ -992,9 +970,9 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { /** * Filters the data used to generate the tag cloud. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @param array[] $tags_data An array of term data arrays for terms used to generate the tag cloud. + * @param array $tags_data An array of term data for term used to generate the tag cloud. */ $tags_data = apply_filters( 'wp_generate_tag_cloud_data', $tags_data ); @@ -1026,11 +1004,11 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { * Note: this is redundant but doesn't harm. */ $return = "
          \n\t
        • "; - $return .= implode( "
        • \n\t
        • ", $a ); + $return .= join( "
        • \n\t
        • ", $a ); $return .= "
        • \n
        \n"; break; default: - $return = implode( $args['separator'], $a ); + $return = join( $args['separator'], $a ); break; } @@ -1041,15 +1019,15 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { * The filter is only evaluated if a true value is passed * to the $filter argument in wp_generate_tag_cloud(). * - * @since 2.3.0 + * @since WP-2.3.0 * * @see wp_generate_tag_cloud() * - * @param string[]|string $return String containing the generated HTML tag cloud output - * or an array of tag links if the 'format' argument - * equals 'array'. - * @param WP_Term[] $tags An array of terms used in the tag cloud. - * @param array $args An array of wp_generate_tag_cloud() arguments. + * @param array|string $return String containing the generated HTML tag cloud output + * or an array of tag links if the 'format' argument + * equals 'array'. + * @param array $tags An array of terms used in the tag cloud. + * @param array $args An array of wp_generate_tag_cloud() arguments. */ return apply_filters( 'wp_generate_tag_cloud', $return, $tags, $args ); } else { @@ -1062,7 +1040,7 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { * * Used with `uasort()`. * - * @since 3.1.0 + * @since WP-3.1.0 * @access private * * @param object $a The first object to compare. @@ -1079,83 +1057,67 @@ function _wp_object_name_sort_cb( $a, $b ) { * * Used with `uasort()`. * - * @since 3.1.0 + * @since WP-3.1.0 * @access private * * @param object $a The first object to compare. * @param object $b The second object to compare. - * @return int Negative number if `$a->count` is less than `$b->count`, zero if they are equal, - * or greater than zero if `$a->count` is greater than `$b->count`. + * @return bool Whether the count value for `$a` is greater than the count value for `$b`. */ function _wp_object_count_sort_cb( $a, $b ) { - return ( $a->count - $b->count ); + return ( $a->count > $b->count ); } // -// Helper functions. +// Helper functions // /** - * Retrieves HTML list content for category list. - * - * @since 2.1.0 - * @since 5.3.0 Formalized the existing `...$args` parameter by adding it - * to the function signature. + * Retrieve HTML list content for category list. * * @uses Walker_Category to create HTML list content. - * @see Walker::walk() for parameters and return description. - * - * @param mixed ...$args Elements array, maximum hierarchical depth and optional additional arguments. + * @since WP-2.1.0 + * @see Walker_Category::walk() for parameters and return description. * @return string */ -function walk_category_tree( ...$args ) { - // The user's options are the third parameter. +function walk_category_tree() { + $args = func_get_args(); + // the user's options are the third parameter if ( empty( $args[2]['walker'] ) || ! ( $args[2]['walker'] instanceof Walker ) ) { - $walker = new Walker_Category(); + $walker = new Walker_Category; } else { - /** - * @var Walker $walker - */ $walker = $args[2]['walker']; } - return $walker->walk( ...$args ); + return call_user_func_array( array( $walker, 'walk' ), $args ); } /** - * Retrieves HTML dropdown (select) content for category list. - * - * @since 2.1.0 - * @since 5.3.0 Formalized the existing `...$args` parameter by adding it - * to the function signature. + * Retrieve HTML dropdown (select) content for category list. * * @uses Walker_CategoryDropdown to create HTML dropdown content. - * @see Walker::walk() for parameters and return description. - * - * @param mixed ...$args Elements array, maximum hierarchical depth and optional additional arguments. + * @since WP-2.1.0 + * @see Walker_CategoryDropdown::walk() for parameters and return description. * @return string */ -function walk_category_dropdown_tree( ...$args ) { - // The user's options are the third parameter. +function walk_category_dropdown_tree() { + $args = func_get_args(); + // the user's options are the third parameter if ( empty( $args[2]['walker'] ) || ! ( $args[2]['walker'] instanceof Walker ) ) { - $walker = new Walker_CategoryDropdown(); + $walker = new Walker_CategoryDropdown; } else { - /** - * @var Walker $walker - */ $walker = $args[2]['walker']; } - return $walker->walk( ...$args ); + return call_user_func_array( array( $walker, 'walk' ), $args ); } // -// Tags. +// Tags // /** - * Retrieves the link to the tag. - * - * @since 2.3.0 + * Retrieve the link to the tag. * + * @since WP-2.3.0 * @see get_term_link() * * @param int|object $tag Tag ID or object. @@ -1166,41 +1128,38 @@ function get_tag_link( $tag ) { } /** - * Retrieves the tags for a post. + * Retrieve the tags for a post. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param int|WP_Post $post Post ID or object. - * @return WP_Term[]|false|WP_Error Array of WP_Term objects on success, false if there are no terms - * or the post does not exist, WP_Error on failure. + * @param int $post_id Post ID. + * @return array|false|WP_Error Array of tag objects on success, false on failure. */ -function get_the_tags( $post = 0 ) { - $terms = get_the_terms( $post, 'post_tag' ); +function get_the_tags( $post_id = 0 ) { + $terms = get_the_terms( $post_id, 'post_tag' ); /** * Filters the array of tags for the given post. * - * @since 2.3.0 + * @since WP-2.3.0 * * @see get_the_terms() * - * @param WP_Term[]|false|WP_Error $terms Array of WP_Term objects on success, false if there are no terms - * or the post does not exist, WP_Error on failure. + * @param array $terms An array of tags for the given post. */ return apply_filters( 'get_the_tags', $terms ); } /** - * Retrieves the tags for a post formatted as a string. + * Retrieve the tags for a post formatted as a string. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param string $before Optional. String to use before the tags. Default empty. - * @param string $sep Optional. String to use between the tags. Default empty. - * @param string $after Optional. String to use after the tags. Default empty. - * @param int $post_id Optional. Post ID. Defaults to the current post ID. - * @return string|false|WP_Error A list of tags on success, false if there are no terms, - * WP_Error on failure. + * @param string $before Optional. String to use before tags. + * @param string $sep Optional. String to use between the tags. + * @param string $after Optional. String to use after tags. + * @param int $post_id Optional. Post ID. Defaults to the current post. + * @return string|false|WP_Error A list of tags on success, false if there are no terms, WP_Error on failure. */ function get_the_tag_list( $before = '', $sep = '', $after = '', $post_id = 0 ) { $tag_list = get_the_term_list( $post_id, 'post_tag', $before, $sep, $after ); @@ -1208,25 +1167,25 @@ function get_the_tag_list( $before = '', $sep = '', $after = '', $post_id = 0 ) /** * Filters the tags list for a given post. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param string $tag_list List of tags. - * @param string $before String to use before the tags. + * @param string $before String to use before tags. * @param string $sep String to use between the tags. - * @param string $after String to use after the tags. + * @param string $after String to use after tags. * @param int $post_id Post ID. */ return apply_filters( 'the_tags', $tag_list, $before, $sep, $after, $post_id ); } /** - * Displays the tags for a post. + * Retrieve the tags for a post. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param string $before Optional. String to use before the tags. Defaults to 'Tags:'. - * @param string $sep Optional. String to use between the tags. Default ', '. - * @param string $after Optional. String to use after the tags. Default empty. + * @param string $before Optional. Before list. + * @param string $sep Optional. Separate items using this. + * @param string $after Optional. After list. */ function the_tags( $before = null, $sep = ', ', $after = '' ) { if ( null === $before ) { @@ -1241,26 +1200,26 @@ function the_tags( $before = null, $sep = ', ', $after = '' ) { } /** - * Retrieves tag description. + * Retrieve tag description. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param int $tag Optional. Tag ID. Defaults to the current tag ID. - * @return string Tag description, if available. + * @param int $tag Optional. Tag ID. Will use global tag ID by default. + * @return string Tag description, available. */ function tag_description( $tag = 0 ) { return term_description( $tag ); } /** - * Retrieves term description. + * Retrieve term description. * - * @since 2.8.0 - * @since 4.9.2 The `$taxonomy` parameter was deprecated. + * @since WP-2.8.0 + * @since WP-4.9.2 The `$taxonomy` parameter was deprecated. * - * @param int $term Optional. Term ID. Defaults to the current term ID. - * @param null $deprecated Deprecated. Not used. - * @return string Term description, if available. + * @param int $term Optional. Term ID. Will use global term ID by default. + * @param null $deprecated Deprecated argument. + * @return string Term description, available. */ function term_description( $term = 0, $deprecated = null ) { if ( ! $term && ( is_tax() || is_tag() || is_category() ) ) { @@ -1269,31 +1228,27 @@ function term_description( $term = 0, $deprecated = null ) { $term = $term->term_id; } } - $description = get_term_field( 'description', $term ); - return is_wp_error( $description ) ? '' : $description; } /** - * Retrieves the terms of the taxonomy that are attached to the post. + * Retrieve the terms of the taxonomy that are attached to the post. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param int|WP_Post $post Post ID or object. - * @param string $taxonomy Taxonomy name. - * @return WP_Term[]|false|WP_Error Array of WP_Term objects on success, false if there are no terms - * or the post does not exist, WP_Error on failure. + * @param int|object $post Post ID or object. + * @param string $taxonomy Taxonomy name. + * @return array|false|WP_Error Array of WP_Term objects on success, false if there are no terms + * or the post does not exist, WP_Error on failure. */ function get_the_terms( $post, $taxonomy ) { $post = get_post( $post ); - if ( ! $post ) { return false; } $terms = get_object_term_cache( $post->ID, $taxonomy ); - if ( false === $terms ) { $terms = wp_get_object_terms( $post->ID, $taxonomy ); if ( ! is_wp_error( $terms ) ) { @@ -1305,11 +1260,11 @@ function get_the_terms( $post, $taxonomy ) { /** * Filters the list of terms attached to the given post. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param WP_Term[]|WP_Error $terms Array of attached terms, or WP_Error on failure. - * @param int $post_id Post ID. - * @param string $taxonomy Name of the taxonomy. + * @param array|WP_Error $terms List of attached terms, or WP_Error on failure. + * @param int $post_id Post ID. + * @param string $taxonomy Name of the taxonomy. */ $terms = apply_filters( 'get_the_terms', $terms, $post->ID, $taxonomy ); @@ -1321,19 +1276,16 @@ function get_the_terms( $post, $taxonomy ) { } /** - * Retrieves a post's terms as a list with specified format. - * - * Terms are linked to their respective term listing pages. + * Retrieve a post's terms as a list with specified format. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $post_id Post ID. * @param string $taxonomy Taxonomy name. - * @param string $before Optional. String to use before the terms. Default empty. - * @param string $sep Optional. String to use between the terms. Default empty. - * @param string $after Optional. String to use after the terms. Default empty. - * @return string|false|WP_Error A list of terms on success, false if there are no terms, - * WP_Error on failure. + * @param string $before Optional. Before list. + * @param string $sep Optional. Separate items using this. + * @param string $after Optional. After list. + * @return string|false|WP_Error A list of terms on success, false if there are no terms, WP_Error on failure. */ function get_the_term_list( $post_id, $taxonomy, $before = '', $sep = '', $after = '' ) { $terms = get_the_terms( $post_id, $taxonomy ); @@ -1359,41 +1311,42 @@ function get_the_term_list( $post_id, $taxonomy, $before = '', $sep = '', $after /** * Filters the term links for a given taxonomy. * - * The dynamic portion of the hook name, `$taxonomy`, refers + * The dynamic portion of the filter name, `$taxonomy`, refers * to the taxonomy slug. * - * Possible hook names include: - * - * - `term_links-category` - * - `term_links-post_tag` - * - `term_links-post_format` - * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param string[] $links An array of term links. + * @param array $links An array of term links. */ $term_links = apply_filters( "term_links-{$taxonomy}", $links ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores - return $before . implode( $sep, $term_links ) . $after; + return $before . join( $sep, $term_links ) . $after; } /** - * Retrieves term parents with separator. + * Retrieve term parents with separator. * - * @since 4.8.0 + * @since WP-4.8.0 + * @since 1.4.0 Added the `$parents_first` parameter. * - * @param int $term_id Term ID. - * @param string $taxonomy Taxonomy name. + * @param int $term_id Term ID. + * @param string $taxonomy Taxonomy name. * @param string|array $args { * Array of optional arguments. * - * @type string $format Use term names or slugs for display. Accepts 'name' or 'slug'. - * Default 'name'. - * @type string $separator Separator for between the terms. Default '/'. - * @type bool $link Whether to format as a link. Default true. - * @type bool $inclusive Include the term to get the parents for. Default true. + * @type string $format Use term names or slugs for display. Accepts + * 'name' or 'slug'. Default 'name'. + * @type string $separator Separator for between the terms. Default '/'. + * @type bool $link Whether to format as a link. Default true. + * @type bool $inclusive Include the term to get the parents for. Default true. + * @type bool $parents_first Order hierarchy for term names. If true, the terms + * returned are ordered from parent to child. + * If false, the terms returned are ordered + * from child to parent. + * Default is true. Accepts bool false|true. * } - * @return string|WP_Error A list of term parents on success, WP_Error or empty string on failure. + * @return string|WP_Error A list of term parents on success, WP_Error or empty + * string on failure. */ function get_term_parents_list( $term_id, $taxonomy, $args = array() ) { $list = ''; @@ -1410,15 +1363,16 @@ function get_term_parents_list( $term_id, $taxonomy, $args = array() ) { $term_id = $term->term_id; $defaults = array( - 'format' => 'name', - 'separator' => '/', - 'link' => true, - 'inclusive' => true, + 'format' => 'name', + 'separator' => '/', + 'link' => true, + 'inclusive' => true, + 'parents_first' => true, ); $args = wp_parse_args( $args, $defaults ); - foreach ( array( 'link', 'inclusive' ) as $bool ) { + foreach ( array( 'link', 'inclusive', 'parents_first' ) as $bool ) { $args[ $bool ] = wp_validate_boolean( $args[ $bool ] ); } @@ -1428,7 +1382,11 @@ function get_term_parents_list( $term_id, $taxonomy, $args = array() ) { array_unshift( $parents, $term_id ); } - foreach ( array_reverse( $parents ) as $term_id ) { + if ( $args['parents_first'] ) { + $parents = array_reverse( $parents ); + } + + foreach ( $parents as $term_id ) { $parent = get_term( $term_id, $taxonomy ); $name = ( 'slug' === $args['format'] ) ? $parent->slug : $parent->name; @@ -1443,16 +1401,16 @@ function get_term_parents_list( $term_id, $taxonomy, $args = array() ) { } /** - * Displays the terms for a post in a list. + * Display the terms in a list. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $post_id Post ID. * @param string $taxonomy Taxonomy name. - * @param string $before Optional. String to use before the terms. Default empty. - * @param string $sep Optional. String to use between the terms. Default ', '. - * @param string $after Optional. String to use after the terms. Default empty. - * @return void|false Void on success, false on failure. + * @param string $before Optional. Before list. + * @param string $sep Optional. Separate items using this. + * @param string $after Optional. After list. + * @return false|void False on ClassicPress error. */ function the_terms( $post_id, $taxonomy, $before = '', $sep = ', ', $after = '' ) { $term_list = get_the_term_list( $post_id, $taxonomy, $before, $sep, $after ); @@ -1464,9 +1422,9 @@ function the_terms( $post_id, $taxonomy, $before = '', $sep = ', ', $after = '' /** * Filters the list of terms to display. * - * @since 2.9.0 + * @since WP-2.9.0 * - * @param string $term_list List of terms to display. + * @param array $term_list List of terms to display. * @param string $taxonomy The taxonomy name. * @param string $before String to use before the terms. * @param string $sep String to use between the terms. @@ -1476,68 +1434,52 @@ function the_terms( $post_id, $taxonomy, $before = '', $sep = ', ', $after = '' } /** - * Checks if the current post has any of given category. + * Check if the current post has any of given category. * - * The given categories are checked against the post's categories' term_ids, names and slugs. - * Categories given as integers will only be checked against the post's categories' term_ids. - * - * If no categories are given, determines if post has any categories. - * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string|int|array $category Optional. The category name/term_id/slug, - * or an array of them to check for. Default empty. - * @param int|WP_Post $post Optional. Post to check. Defaults to the current post. - * @return bool True if the current post has any of the given categories - * (or any category, if no category specified). False otherwise. + * @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). */ function has_category( $category = '', $post = null ) { return has_term( $category, 'category', $post ); } /** - * Checks if the current post has any of given tags. + * Check if the current post has any of given tags. * * The given tags are checked against the post's tags' term_ids, names and slugs. * Tags given as integers will only be checked against the post's tags' term_ids. - * * If no tags are given, determines if post has any tags. * - * For more information on this and similar theme functions, check out - * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ - * Conditional Tags} article in the Theme Developer Handbook. + * Prior to v2.7 of WordPress, tags given as integers would also be checked against the post's tags' names and slugs (in addition to term_ids) + * Prior to v2.7, this function could only be used in the ClassicPress Loop. + * As of 2.7, the function can be used anywhere if it is provided a post ID or post object. * - * @since 2.6.0 - * @since 2.7.0 Tags given as integers are only checked against - * the post's tags' term_ids, not names or slugs. - * @since 2.7.0 Can be used outside of the WordPress Loop if `$post` is provided. + * @since WP-2.6.0 * - * @param string|int|array $tag Optional. The tag name/term_id/slug, - * or an array of them to check for. Default empty. - * @param int|WP_Post $post Optional. Post to check. Defaults to the current post. - * @return bool True if the current post has any of the given tags - * (or any tag, if no tag specified). False otherwise. + * @param string|int|array $tag Optional. The tag name/term_id/slug or array of them to check for. + * @param int|object $post Optional. Post to check instead of the current post. (since WP-2.7.0) + * @return bool True if the current post has any of the given tags (or any tag, if no tag specified). */ function has_tag( $tag = '', $post = null ) { return has_term( $tag, 'post_tag', $post ); } /** - * Checks if the current post has any of given terms. + * Check if the current post has any of given terms. * * The given terms are checked against the post's terms' term_ids, names and slugs. * Terms given as integers will only be checked against the post's terms' term_ids. - * * If no terms are given, determines if post has any terms. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string|int|array $term Optional. The term name/term_id/slug, - * or an array of them to check for. Default empty. - * @param string $taxonomy Optional. Taxonomy name. Default empty. - * @param int|WP_Post $post Optional. Post to check. Defaults to the current post. - * @return bool True if the current post has any of the given terms - * (or any term, if no term specified). False otherwise. + * @param string|int|array $term Optional. The term name/term_id/slug or array of them to check for. + * @param string $taxonomy Taxonomy name + * @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 tags (or any tag, if no tag specified). */ function has_term( $term = '', $taxonomy = '', $post = null ) { $post = get_post( $post ); diff --git a/wp-includes/category.php b/wp-includes/category.php index 925b2fc..d17703d 100644 --- a/wp-includes/category.php +++ b/wp-includes/category.php @@ -7,52 +7,55 @@ */ /** - * Retrieves a list of category objects. + * Retrieve list of category objects. * - * If you set the 'taxonomy' argument to 'link_category', the link categories - * will be returned instead. - * - * @since 2.1.0 + * If you change the type to 'link' in the arguments, then the link categories + * will be returned instead. Also all categories will be updated to be backward + * compatible with pre-2.3 plugins and themes. * + * @since WP-2.1.0 * @see get_terms() Type of arguments that can be changed. * * @param string|array $args { * Optional. Arguments to retrieve categories. See get_terms() for additional options. * - * @type string $taxonomy Taxonomy to retrieve terms for. Default 'category'. + * @type string $taxonomy Taxonomy to retrieve terms for. In this case, default 'category'. * } - * @return array List of category objects. + * @return array List of categories. */ function get_categories( $args = '' ) { $defaults = array( 'taxonomy' => 'category' ); $args = wp_parse_args( $args, $defaults ); + $taxonomy = $args['taxonomy']; + /** * Filters the taxonomy used to retrieve terms when calling get_categories(). * - * @since 2.7.0 + * @since WP-2.7.0 * * @param string $taxonomy Taxonomy to retrieve terms from. * @param array $args An array of arguments. See get_terms(). */ - $args['taxonomy'] = apply_filters( 'get_categories_taxonomy', $args['taxonomy'], $args ); + $taxonomy = apply_filters( 'get_categories_taxonomy', $taxonomy, $args ); // Back compat. if ( isset( $args['type'] ) && 'link' === $args['type'] ) { _deprecated_argument( __FUNCTION__, - '3.0.0', + 'WP-3.0.0', + /* translators: 1: "type => link", 2: "taxonomy => link_category" */ sprintf( - /* translators: 1: "type => link", 2: "taxonomy => link_category" */ __( '%1$s is deprecated. Use %2$s instead.' ), 'type => link', 'taxonomy => link_category' ) ); - $args['taxonomy'] = 'link_category'; + $taxonomy = 'link_category'; + $args['taxonomy'] = $taxonomy; } - $categories = get_terms( $args ); + $categories = get_terms( $taxonomy, $args ); if ( is_wp_error( $categories ) ) { $categories = array(); @@ -78,13 +81,14 @@ function get_categories( $args = '' ) { * If you look at get_term(), then both types will be passed through several * filters and finally sanitized based on the $filter parameter value. * - * @since 1.5.1 + * The category will converted to maintain backward compatibility. * - * @param int|object $category Category ID or category row object. - * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which - * correspond to a WP_Term object, an associative array, or a numeric array, - * respectively. Default OBJECT. - * @param string $filter Optional. How to sanitize category fields. Default 'raw'. + * @since WP-1.5.1 + * + * @param int|object $category Category ID or Category row object + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to a + * WP_Term object, an associative array, or a numeric array, respectively. Default OBJECT. + * @param string $filter Optional. Default is raw or no ClassicPress defined filter will applied. * @return object|array|WP_Error|null Category data in type defined by $output parameter. * WP_Error if $category is empty, null if it does not exist. */ @@ -101,7 +105,7 @@ function get_category( $category, $output = OBJECT, $filter = 'raw' ) { } /** - * Retrieves a category based on URL containing the category slug. + * Retrieve category based on URL containing the category slug. * * Breaks the $category_path parameter up to get the category slug. * @@ -112,13 +116,12 @@ function get_category( $category, $output = OBJECT, $filter = 'raw' ) { * It is also possible that it will return a WP_Error object on failure. Check * for it when using this function. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $category_path URL containing category slugs. * @param bool $full_match Optional. Whether full path should be matched. - * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which - * correspond to a WP_Term object, an associative array, or a numeric array, - * respectively. Default OBJECT. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Term object, an associative array, or a numeric array, respectively. Default OBJECT. * @return WP_Term|array|WP_Error|null Type is based on $output value. */ function get_category_by_path( $category_path, $full_match = true, $output = OBJECT ) { @@ -135,10 +138,10 @@ function get_category_by_path( $category_path, $full_match = true, $output = OBJ } $categories = get_terms( + 'category', array( - 'taxonomy' => 'category', - 'get' => 'all', - 'slug' => $leaf_path, + 'get' => 'all', + 'slug' => $leaf_path, ) ); @@ -151,18 +154,15 @@ function get_category_by_path( $category_path, $full_match = true, $output = OBJ $curcategory = $category; while ( ( 0 != $curcategory->parent ) && ( $curcategory->parent != $curcategory->term_id ) ) { $curcategory = get_term( $curcategory->parent, 'category' ); - if ( is_wp_error( $curcategory ) ) { return $curcategory; } - $path = '/' . $curcategory->slug . $path; } if ( $path == $full_path ) { $category = get_term( $category->term_id, 'category', $output ); _make_cat_compat( $category ); - return $category; } } @@ -171,22 +171,20 @@ function get_category_by_path( $category_path, $full_match = true, $output = OBJ if ( ! $full_match ) { $category = get_term( reset( $categories )->term_id, 'category', $output ); _make_cat_compat( $category ); - return $category; } } /** - * Retrieves a category object by category slug. + * Retrieve category object by category slug. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param string $slug The category slug. - * @return object|false Category data object on success, false if not found. + * @return object Category data object */ function get_category_by_slug( $slug ) { $category = get_term_by( 'slug', $slug, 'category' ); - if ( $category ) { _make_cat_compat( $category ); } @@ -195,53 +193,49 @@ function get_category_by_slug( $slug ) { } /** - * Retrieves the ID of a category from its name. + * Retrieve the ID of a category from its name. * - * @since 1.0.0 + * @since WP-1.0.0 * * @param string $cat_name Category name. - * @return int Category ID on success, 0 if the category doesn't exist. + * @return int 0, if failure and ID of category on success. */ function get_cat_ID( $cat_name ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid $cat = get_term_by( 'name', $cat_name, 'category' ); - if ( $cat ) { return $cat->term_id; } - return 0; } /** - * Retrieves the name of a category from its ID. + * Retrieve the name of a category from its ID. * - * @since 1.0.0 + * @since WP-1.0.0 * - * @param int $cat_id Category ID. - * @return string Category name, or an empty string if the category doesn't exist. + * @param int $cat_id Category ID + * @return string Category name, or an empty string if category doesn't exist. */ function get_cat_name( $cat_id ) { $cat_id = (int) $cat_id; $category = get_term( $cat_id, 'category' ); - if ( ! $category || is_wp_error( $category ) ) { return ''; } - return $category->name; } /** - * Checks if a category is an ancestor of another category. + * Check if a category is an ancestor of another category. * - * You can use either an ID or the category object for both parameters. - * If you use an integer, the category will be retrieved. + * You can use either an id or the category object for both parameters. If you + * use an integer the category will be retrieved. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param int|object $cat1 ID or object to check if this is the parent category. * @param int|object $cat2 The child category. - * @return bool Whether $cat2 is child of $cat1. + * @return bool Whether $cat2 is child of $cat1 */ function cat_is_ancestor_of( $cat1, $cat2 ) { return term_is_ancestor_of( $cat1, $cat2, 'category' ); @@ -250,10 +244,10 @@ function cat_is_ancestor_of( $cat1, $cat2 ) { /** * Sanitizes category data based on context. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param object|array $category Category data. - * @param string $context Optional. Default 'display'. + * @param object|array $category Category data + * @param string $context Optional. Default is 'display'. * @return object|array Same type as $category with sanitized data for safe use. */ function sanitize_category( $category, $context = 'display' ) { @@ -263,13 +257,13 @@ function sanitize_category( $category, $context = 'display' ) { /** * Sanitizes data in single category key field. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param string $field Category key to sanitize. - * @param mixed $value Category value to sanitize. - * @param int $cat_id Category ID. + * @param string $field Category key to sanitize + * @param mixed $value Category value to sanitize + * @param int $cat_id Category ID * @param string $context What filter to use, 'raw', 'display', etc. - * @return mixed Value after $value has been sanitized. + * @return mixed Same type as $value after $value has been sanitized. */ function sanitize_category_field( $field, $value, $cat_id, $context ) { return sanitize_term_field( $field, $value, $cat_id, 'category', $context ); @@ -280,61 +274,51 @@ function sanitize_category_field( $field, $value, $cat_id, $context ) { /** * Retrieves all post tags. * - * @since 2.3.0 + * @since WP-2.3.0 + * @see get_terms() For list of arguments to pass. * - * @param string|array $args { - * Optional. Arguments to retrieve tags. See get_terms() for additional options. - * - * @type string $taxonomy Taxonomy to retrieve terms for. Default 'post_tag'. - * } - * @return WP_Term[]|int|WP_Error Array of 'post_tag' term objects, a count thereof, - * or WP_Error if any of the taxonomies do not exist. + * @param string|array $args Tag arguments to use when retrieving tags. + * @return array List of tags. */ function get_tags( $args = '' ) { - $defaults = array( 'taxonomy' => 'post_tag' ); - $args = wp_parse_args( $args, $defaults ); - - $tags = get_terms( $args ); + $tags = get_terms( 'post_tag', $args ); if ( empty( $tags ) ) { - $tags = array(); - } else { - /** - * Filters the array of term objects returned for the 'post_tag' taxonomy. - * - * @since 2.3.0 - * - * @param WP_Term[]|int|WP_Error $tags Array of 'post_tag' term objects, a count thereof, - * or WP_Error if any of the taxonomies do not exist. - * @param array $args An array of arguments. @see get_terms() - */ - $tags = apply_filters( 'get_tags', $tags, $args ); + $return = array(); + return $return; } + /** + * Filters the array of term objects returned for the 'post_tag' taxonomy. + * + * @since WP-2.3.0 + * + * @param array $tags Array of 'post_tag' term objects. + * @param array $args An array of arguments. @see get_terms() + */ + $tags = apply_filters( 'get_tags', $tags, $args ); return $tags; } /** - * Retrieves a post tag by tag ID or tag object. + * Retrieve post tag by tag ID or tag object. * * If you pass the $tag parameter an object, which is assumed to be the tag row - * object retrieved from the database, it will cache the tag data. + * object retrieved the database. It will cache the tag data. * - * If you pass $tag an integer of the tag ID, then that tag will be retrieved - * from the database, if it isn't already cached, and passed back. + * If you pass $tag an integer of the tag ID, then that tag will + * be retrieved from the database, if it isn't already cached, and pass it back. * - * If you look at get_term(), both types will be passed through several filters - * and finally sanitized based on the $filter parameter value. + * If you look at get_term(), then both types will be passed through several + * filters and finally sanitized based on the $filter parameter value. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param int|WP_Term|object $tag A tag ID or object. - * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which - * correspond to a WP_Term object, an associative array, or a numeric array, - * respectively. Default OBJECT. - * @param string $filter Optional. How to sanitize tag fields. Default 'raw'. - * @return WP_Term|array|WP_Error|null Tag data in type defined by $output parameter. - * WP_Error if $tag is empty, null if it does not exist. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Term object, an associative array, or a numeric array, respectively. Default OBJECT. + * @param string $filter Optional. Default is raw or no ClassicPress defined filter will applied. + * @return WP_Term|array|WP_Error|null Tag data in type defined by $output parameter. WP_Error if $tag is empty, null if it does not exist. */ function get_tag( $tag, $output = OBJECT, $filter = 'raw' ) { return get_term( $tag, 'post_tag', $output, $filter ); @@ -343,9 +327,9 @@ function get_tag( $tag, $output = OBJECT, $filter = 'raw' ) { /* Cache */ /** - * Removes the category cache data based on ID. + * Remove the category cache data based on ID. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param int $id Category ID */ @@ -354,7 +338,7 @@ function clean_category_cache( $id ) { } /** - * Updates category structure to old pre-2.3 from new taxonomy structure. + * Update category structure to old pre 2.3 from new taxonomy structure. * * This function was added for the taxonomy support to update the new category * structure with the old category one. This will maintain compatibility with @@ -367,11 +351,11 @@ function clean_category_cache( $id ) { * There is no return value, because everything is updated on the variable you * pass to it. This is one of the features with using pass by reference in PHP. * - * @since 2.3.0 - * @since 4.4.0 The `$category` parameter now also accepts a WP_Term object. + * @since WP-2.3.0 + * @since WP-4.4.0 The `$category` parameter now also accepts a WP_Term object. * @access private * - * @param array|object|WP_Term $category Category row object or array. + * @param array|object|WP_Term $category Category Row object or array */ function _make_cat_compat( &$category ) { if ( is_object( $category ) && ! is_wp_error( $category ) ) { diff --git a/wp-includes/class-IXR.php b/wp-includes/class-IXR.php index a849fb0..07edffb 100644 --- a/wp-includes/class-IXR.php +++ b/wp-includes/class-IXR.php @@ -30,7 +30,7 @@ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @package IXR - * @since 1.5.0 + * @since WP-1.5.0 * * @copyright Incutio Ltd 2010 (http://www.incutio.com) * @version 1.7.4 7th September 2010 @@ -39,22 +39,22 @@ * @license http://www.opensource.org/licenses/bsd-license.php BSD */ -require_once ABSPATH . WPINC . '/IXR/class-IXR-server.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-server.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-base64.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-base64.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-client.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-client.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-clientmulticall.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-clientmulticall.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-date.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-date.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-error.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-error.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-introspectionserver.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-introspectionserver.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-message.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-message.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-request.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-request.php' ); -require_once ABSPATH . WPINC . '/IXR/class-IXR-value.php'; +require_once( ABSPATH . WPINC . '/IXR/class-IXR-value.php' ); \ No newline at end of file diff --git a/wp-includes/class-feed.php b/wp-includes/class-feed.php index cda78b6..331b1c8 100644 --- a/wp-includes/class-feed.php +++ b/wp-includes/class-feed.php @@ -4,10 +4,9 @@ * * @package ClassicPress * @subpackage Feed - * @deprecated 4.7.0 */ -_deprecated_file( basename( __FILE__ ), '4.7.0', 'fetch_feed()' ); +_deprecated_file( basename( __FILE__ ), 'WP-4.7.0', 'fetch_feed()' ); if ( ! class_exists( 'SimplePie', false ) ) { require_once ABSPATH . WPINC . '/class-simplepie.php'; diff --git a/wp-includes/class-fix-wpcli.php b/wp-includes/class-fix-wpcli.php index eeb6b4c..37dfb21 100644 --- a/wp-includes/class-fix-wpcli.php +++ b/wp-includes/class-fix-wpcli.php @@ -1,13 +1,13 @@ 'GET', + /** + * Filters the timeout value for an HTTP request. + * + * @since WP-2.7.0 + * + * @param int $timeout_value Time in seconds until a request times out. + * Default 5. + */ + 'timeout' => apply_filters( 'http_request_timeout', 5 ), + /** + * Filters the number of redirects allowed during an HTTP request. + * + * @since WP-2.7.0 + * + * @param int $redirect_count Number of redirects allowed. Default 5. + */ + 'redirection' => apply_filters( 'http_request_redirection_count', 5 ), + /** + * Filters the version of the HTTP protocol used in a request. + * + * @since WP-2.7.0 + * + * @param string $version Version of HTTP used. Accepts '1.0' and '1.1'. + * Default '1.0'. + */ + 'httpversion' => apply_filters( 'http_request_version', '1.0' ), + + 'user-agent' => classicpress_user_agent(), + + /** + * Filters whether to pass URLs through wp_http_validate_url() in an HTTP request. + * + * @since WP-3.6.0 + * + * @param bool $pass_url Whether to pass URLs through wp_http_validate_url(). + * Default false. + */ + 'reject_unsafe_urls' => apply_filters( 'http_request_reject_unsafe_urls', false ), + 'blocking' => true, + 'headers' => array(), + 'cookies' => array(), + 'body' => null, + 'compress' => false, + 'decompress' => true, + 'sslverify' => true, + 'sslcertificates' => ABSPATH . WPINC . '/certificates/ca-bundle.crt', + 'stream' => false, + 'filename' => null, + 'limit_response_size' => null, + ); + + // Pre-parse for the HEAD checks. + $args = wp_parse_args( $args ); + + // By default, HEAD requests do not cause redirections. + if ( isset( $args['method'] ) && 'HEAD' === $args['method'] ) { + $defaults['redirection'] = 0; + } + + $parsed_args = wp_parse_args( $args, $defaults ); + /** + * Filters the arguments used in an HTTP request. + * + * @since WP-2.7.0 + * + * @param array $parsed_args An array of HTTP request arguments. + * @param string $url The request URL. + */ + $parsed_args = apply_filters( 'http_request_args', $parsed_args, $url ); + + // The transports decrement this, store a copy of the original value for loop purposes. + if ( ! isset( $parsed_args['_redirection'] ) ) { + $parsed_args['_redirection'] = $parsed_args['redirection']; + } + + /** + * Filters whether to preempt an HTTP request's return value. + * + * Returning a non-false value from the filter will short-circuit the HTTP request and return + * early with that value. A filter should return either: + * + * - An array containing 'headers', 'body', 'response', 'cookies', and 'filename' elements + * - A WP_Error instance + * - boolean false (to avoid short-circuiting the response) + * + * Returning any other value may result in unexpected behaviour. + * + * @since WP-2.9.0 + * + * @param false|array|WP_Error $preempt Whether to preempt an HTTP request's return value. Default false. + * @param array $parsed_args HTTP request arguments. + * @param string $url The request URL. + */ + $pre = apply_filters( 'pre_http_request', false, $parsed_args, $url ); + + if ( false !== $pre ) { + return $pre; + } + + if ( function_exists( 'wp_kses_bad_protocol' ) ) { + if ( $parsed_args['reject_unsafe_urls'] ) { + $url = wp_http_validate_url( $url ); + } + if ( $url ) { + $url = wp_kses_bad_protocol( $url, array( 'http', 'https', 'ssl' ) ); + } + } + + $arrURL = @parse_url( $url ); + + if ( empty( $url ) || empty( $arrURL['scheme'] ) ) { + return new WP_Error( 'http_request_failed', __( 'A valid URL was not provided.' ) ); + } + + if ( $this->block_request( $url ) ) { + return new WP_Error( 'http_request_failed', __( 'User has blocked requests through HTTP.' ) ); + } + + // If we are streaming to a file but no filename was given drop it in the WP temp dir + // and pick its name using the basename of the $url + if ( $parsed_args['stream'] ) { + if ( empty( $parsed_args['filename'] ) ) { + $parsed_args['filename'] = get_temp_dir() . basename( $url ); + } + + // Force some settings if we are streaming to a file and check for existence and perms of destination directory + $parsed_args['blocking'] = true; + if ( ! wp_is_writable( dirname( $parsed_args['filename'] ) ) ) { + return new WP_Error( 'http_request_failed', __( 'Destination directory for file streaming does not exist or is not writable.' ) ); + } + } + + if ( is_null( $parsed_args['headers'] ) ) { + $parsed_args['headers'] = array(); + } + + // WP allows passing in headers as a string, weirdly. + if ( ! is_array( $parsed_args['headers'] ) ) { + $processedHeaders = WP_Http::processHeaders( $parsed_args['headers'] ); + $parsed_args['headers'] = $processedHeaders['headers']; + } + + // Setup arguments + $headers = $parsed_args['headers']; + $data = $parsed_args['body']; + $type = $parsed_args['method']; + $options = array( + 'timeout' => $parsed_args['timeout'], + 'useragent' => $parsed_args['user-agent'], + 'blocking' => $parsed_args['blocking'], + 'hooks' => new WP_HTTP_Requests_Hooks( $url, $parsed_args ), + ); + + // Ensure redirects follow browser behaviour. + $options['hooks']->register( 'requests.before_redirect', array( get_class(), 'browser_redirect_compatibility' ) ); + + // Validate redirected URLs. + if ( function_exists( 'wp_kses_bad_protocol' ) && $parsed_args['reject_unsafe_urls'] ) { + $options['hooks']->register( 'requests.before_redirect', array( get_class(), 'validate_redirects' ) ); + } + + if ( $parsed_args['stream'] ) { + $options['filename'] = $parsed_args['filename']; + } + if ( empty( $parsed_args['redirection'] ) ) { + $options['follow_redirects'] = false; + } else { + $options['redirects'] = $parsed_args['redirection']; + } + + // Use byte limit, if we can + if ( isset( $parsed_args['limit_response_size'] ) ) { + $options['max_bytes'] = $parsed_args['limit_response_size']; + } + + // If we've got cookies, use and convert them to Requests_Cookie. + if ( ! empty( $parsed_args['cookies'] ) ) { + $options['cookies'] = WP_Http::normalize_cookies( $parsed_args['cookies'] ); + } + + // SSL certificate handling + if ( ! $parsed_args['sslverify'] ) { + $options['verify'] = false; + $options['verifyname'] = false; + } else { + $options['verify'] = $parsed_args['sslcertificates']; + } + + // All non-GET/HEAD requests should put the arguments in the form body. + if ( 'HEAD' !== $type && 'GET' !== $type ) { + $options['data_format'] = 'body'; + } + + /** + * Filters whether SSL should be verified for non-local requests. + * + * @since WP-2.8.0 + * + * @param bool $ssl_verify Whether to verify the SSL connection. Default true. + */ + $options['verify'] = apply_filters( 'https_ssl_verify', $options['verify'] ); + + // Check for proxies. + $proxy = new WP_HTTP_Proxy(); + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { + $options['proxy'] = new Requests_Proxy_HTTP( $proxy->host() . ':' . $proxy->port() ); + + if ( $proxy->use_authentication() ) { + $options['proxy']->use_authentication = true; + $options['proxy']->user = $proxy->username(); + $options['proxy']->pass = $proxy->password(); + } + } + + // Avoid issues where mbstring.func_overload is enabled + mbstring_binary_safe_encoding(); + + try { + $requests_response = Requests::request( $url, $headers, $data, $type, $options ); + + // Convert the response into an array + $http_response = new WP_HTTP_Requests_Response( $requests_response, $parsed_args['filename'] ); + $response = $http_response->to_array(); + + // Add the original object to the array. + $response['http_response'] = $http_response; + } catch ( Requests_Exception $e ) { + $response = new WP_Error( 'http_request_failed', $e->getMessage() ); + } + + reset_mbstring_encoding(); + + /** + * Fires after an HTTP API response is received and before the response is returned. + * + * @since WP-2.8.0 + * + * @param array|WP_Error $response HTTP response or WP_Error object. + * @param string $context Context under which the hook is fired. + * @param string $class HTTP transport used. + * @param array $parsed_args HTTP request arguments. + * @param string $url The request URL. + */ + do_action( 'http_api_debug', $response, 'response', 'Requests', $parsed_args, $url ); + if ( is_wp_error( $response ) ) { + return $response; + } + + if ( ! $parsed_args['blocking'] ) { + return array( + 'headers' => array(), + 'body' => '', + 'response' => array( + 'code' => false, + 'message' => false, + ), + 'cookies' => array(), + 'http_response' => null, + ); + } + + /** + * Filters the HTTP API response immediately before the response is returned. + * + * @since WP-2.9.0 + * + * @param array $response HTTP response. + * @param array $parsed_args HTTP request arguments. + * @param string $url The request URL. + */ + return apply_filters( 'http_response', $response, $parsed_args, $url ); + } + + /** + * Normalizes cookies for using in Requests. + * + * @since WP-4.6.0 + * @static + * + * @param array $cookies List of cookies to send with the request. + * @return Requests_Cookie_Jar Cookie holder object. + */ + public static function normalize_cookies( $cookies ) { + $cookie_jar = new Requests_Cookie_Jar(); + + foreach ( $cookies as $name => $value ) { + if ( $value instanceof WP_Http_Cookie ) { + $cookie_jar[ $value->name ] = new Requests_Cookie( $value->name, $value->value, $value->get_attributes() ); + } elseif ( is_scalar( $value ) ) { + $cookie_jar[ $name ] = new Requests_Cookie( $name, $value ); + } + } + + return $cookie_jar; + } + + /** + * Match redirect behaviour to browser handling. + * + * Changes 302 redirects from POST to GET to match browser handling. Per + * RFC 7231, user agents can deviate from the strict reading of the + * specification for compatibility purposes. + * + * @since WP-4.6.0 + * @static + * + * @param string $location URL to redirect to. + * @param array $headers Headers for the redirect. + * @param string|array $data Body to send with the request. + * @param array $options Redirect request options. + * @param Requests_Response $original Response object. + */ + public static function browser_redirect_compatibility( $location, $headers, $data, &$options, $original ) { + // Browser compatibility. + if ( 302 === $original->status_code ) { + $options['type'] = Requests::GET; + } + } + + /** + * Validate redirected URLs. + * + * @since WP-4.7.5 + * + * @throws Requests_Exception On unsuccessful URL validation + * @param string $location URL to redirect to. + */ + public static function validate_redirects( $location ) { + if ( ! wp_http_validate_url( $location ) ) { + throw new Requests_Exception( __( 'A valid URL was not provided.' ), 'wp_http.redirect_failed_validation' ); + } + } + + /** + * Tests which transports are capable of supporting the request. + * + * @since WP-3.2.0 + * + * @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. + */ + public function _get_first_available_transport( $args, $url = null ) { + $transports = array( 'curl', 'streams' ); + + /** + * Filters which HTTP transports are available and in what order. + * + * @since WP-3.7.0 + * + * @param array $transports Array of HTTP transports to check. Default array contains + * 'curl', and 'streams', in that order. + * @param array $args HTTP request arguments. + * @param string $url The URL to request. + */ + $request_order = apply_filters( 'http_api_transports', $transports, $args, $url ); + + // Loop over each transport on each HTTP request looking for one which will serve this request's needs. + foreach ( $request_order as $transport ) { + if ( in_array( $transport, $transports, true ) ) { + $transport = ucfirst( $transport ); + } + $class = 'WP_Http_' . $transport; + + // Check to see if this transport is a possibility, calls the transport statically. + if ( ! call_user_func( array( $class, 'test' ), $args, $url ) ) { + continue; + } + + return $class; + } + + return false; + } + + /** + * Dispatches a HTTP request to a supporting transport. + * + * Tests each transport in order to find a transport which matches the request arguments. + * Also caches the transport instance to be used later. + * + * The order for requests is cURL, and then PHP Streams. + * + * @since WP-3.2.0 + * + * @static + * + * @param string $url URL to Request + * @param array $args Request arguments + * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error + */ + private function _dispatch_request( $url, $args ) { + static $transports = array(); + + $class = $this->_get_first_available_transport( $args, $url ); + if ( ! $class ) { + return new WP_Error( 'http_failure', __( 'There are no HTTP transports available which can complete the requested request.' ) ); + } + + // Transport claims to support request, instantiate it and give it a whirl. + if ( empty( $transports[ $class ] ) ) { + $transports[ $class ] = new $class; + } + + $response = $transports[ $class ]->request( $url, $args ); + + /** This action is documented in wp-includes/class-http.php */ + do_action( 'http_api_debug', $response, 'response', $class, $args, $url ); + + if ( is_wp_error( $response ) ) { + return $response; + } + + /** + * Filters the HTTP API response immediately before the response is returned. + * + * @since WP-2.9.0 + * + * @param array $response HTTP response. + * @param array $args HTTP request arguments. + * @param string $url The request URL. + */ + return apply_filters( 'http_response', $response, $args, $url ); + } + + /** + * Uses the POST HTTP method. + * + * Used for sending data that is expected to be in the body. + * + * @since WP-2.7.0 + * + * @param string $url The request URL. + * @param string|array $args Optional. Override the defaults. + * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error + */ + public function post( $url, $args = array() ) { + $defaults = array( 'method' => 'POST' ); + $parsed_args = wp_parse_args( $args, $defaults ); + return $this->request( $url, $parsed_args ); + } + + /** + * Uses the GET HTTP method. + * + * Used for sending data that is expected to be in the body. + * + * @since WP-2.7.0 + * + * @param string $url The request URL. + * @param string|array $args Optional. Override the defaults. + * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error + */ + public function get( $url, $args = array() ) { + $defaults = array( 'method' => 'GET' ); + $parsed_args = wp_parse_args( $args, $defaults ); + return $this->request( $url, $parsed_args ); + } + + /** + * Uses the HEAD HTTP method. + * + * Used for sending data that is expected to be in the body. + * + * @since WP-2.7.0 + * + * @param string $url The request URL. + * @param string|array $args Optional. Override the defaults. + * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error + */ + public function head( $url, $args = array() ) { + $defaults = array( 'method' => 'HEAD' ); + $parsed_args = wp_parse_args( $args, $defaults ); + return $this->request( $url, $parsed_args ); + } + + /** + * Parses the responses and splits the parts into headers and body. + * + * @static + * @since WP-2.7.0 + * + * @param string $strResponse The full response string + * @return array Array with 'headers' and 'body' keys. + */ + public static function processResponse( $strResponse ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid + $res = explode( "\r\n\r\n", $strResponse, 2 ); + + return array( + 'headers' => $res[0], + 'body' => isset( $res[1] ) ? $res[1] : '', + ); + } + + /** + * Transform header string into an array. + * + * If an array is given then it is assumed to be raw header data with numeric keys with the + * headers as the values. No headers must be passed that were already processed. + * + * @static + * @since WP-2.7.0 + * + * @param string|array $headers + * @param string $url The URL that was requested + * @return array Processed string headers. If duplicate headers are encountered, + * Then a numbered array is returned as the value of that header-key. + */ + public static function processHeaders( $headers, $url = '' ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid + // Split headers, one per array element. + if ( is_string( $headers ) ) { + // Tolerate line terminator: CRLF = LF (RFC 2616 19.3). + $headers = str_replace( "\r\n", "\n", $headers ); + /* + * Unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) , + * (RFC 2616 2.2). + */ + $headers = preg_replace( '/\n[ \t]/', ' ', $headers ); + // Create the headers array. + $headers = explode( "\n", $headers ); + } + + $response = array( + 'code' => 0, + 'message' => '', + ); + + /* + * If a redirection has taken place, The headers for each page request may have been passed. + * In this case, determine the final HTTP header and parse from there. + */ + for ( $i = count( $headers ) - 1; $i >= 0; $i-- ) { + if ( ! empty( $headers[ $i ] ) && false === strpos( $headers[ $i ], ':' ) ) { + $headers = array_splice( $headers, $i ); + break; + } + } + + $cookies = array(); + $newheaders = array(); + foreach ( (array) $headers as $tempheader ) { + if ( empty( $tempheader ) ) { + continue; + } + + if ( false === strpos( $tempheader, ':' ) ) { + $stack = explode( ' ', $tempheader, 3 ); + $stack[] = ''; + list( , $response['code'], $response['message']) = $stack; + continue; + } + + list($key, $value) = explode( ':', $tempheader, 2 ); + + $key = strtolower( $key ); + $value = trim( $value ); + + if ( isset( $newheaders[ $key ] ) ) { + if ( ! is_array( $newheaders[ $key ] ) ) { + $newheaders[ $key ] = array( $newheaders[ $key ] ); + } + $newheaders[ $key ][] = $value; + } else { + $newheaders[ $key ] = $value; + } + if ( 'set-cookie' === $key ) { + $cookies[] = new WP_Http_Cookie( $value, $url ); + } + } + + // Cast the Response Code to an int + $response['code'] = intval( $response['code'] ); + + return array( + 'response' => $response, + 'headers' => $newheaders, + 'cookies' => $cookies, + ); + } + + /** + * Takes the arguments for a ::request() and checks for the cookie array. + * + * If it's found, then it upgrades any basic name => value pairs to WP_Http_Cookie instances, + * which are each parsed into strings and added to the Cookie: header (within the arguments array). + * Edits the array by reference. + * + * @since WP-2.8.0 + * @static + * + * @param array $r Full array of args passed into ::request() + */ + public static function buildCookieHeader( &$r ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid + if ( ! empty( $r['cookies'] ) ) { + // Upgrade any name => value cookie pairs to WP_HTTP_Cookie instances. + foreach ( $r['cookies'] as $name => $value ) { + if ( ! is_object( $value ) ) { + $r['cookies'][ $name ] = new WP_Http_Cookie( + array( + 'name' => $name, + 'value' => $value, + ) + ); + } + } + + $cookies_header = ''; + foreach ( (array) $r['cookies'] as $cookie ) { + $cookies_header .= $cookie->getHeaderValue() . '; '; + } + + $cookies_header = substr( $cookies_header, 0, -2 ); + $r['headers']['cookie'] = $cookies_header; + } + } + + /** + * Decodes chunk transfer-encoding, based off the HTTP 1.1 specification. + * + * Based off the HTTP http_encoding_dechunk function. + * + * @link https://tools.ietf.org/html/rfc2616#section-19.4.6 Process for chunked decoding. + * + * @since WP-2.7.0 + * @static + * + * @param string $body Body content + * @return string Chunked decoded body on success or raw body on failure. + */ + public static function chunkTransferDecode( $body ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid + // The body is not chunked encoded or is malformed. + if ( ! preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', trim( $body ) ) ) { + return $body; + } + + $parsed_body = ''; + + // We'll be altering $body, so need a backup in case of error. + $body_original = $body; + + while ( true ) { + $has_chunk = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $body, $match ); + if ( ! $has_chunk || empty( $match[1] ) ) { + return $body_original; + } + + $length = hexdec( $match[1] ); + $chunk_length = strlen( $match[0] ); + + // Parse out the chunk of data. + $parsed_body .= substr( $body, $chunk_length, $length ); + + // Remove the chunk from the raw data. + $body = substr( $body, $length + $chunk_length ); + + // End of the document. + if ( '0' === trim( $body ) ) { + return $parsed_body; + } + } + } + + /** + * Block requests through the proxy. + * + * Those who are behind a proxy and want to prevent access to certain hosts may do so. This will + * prevent plugins from working and core functionality, if you don't include api.wordpress.org. + * + * You block external URL requests by defining WP_HTTP_BLOCK_EXTERNAL as true in your wp-config.php + * file and this will only allow localhost and your site to make requests. The constant + * WP_ACCESSIBLE_HOSTS will allow additional hosts to go through for requests. The format of the + * WP_ACCESSIBLE_HOSTS constant is a comma separated list of hostnames to allow, wildcard domains + * are supported, eg *.wordpress.org will allow for all subdomains of wordpress.org to be contacted. + * + * @since WP-2.8.0 + * @link https://core.trac.wordpress.org/ticket/8927 Allow preventing external requests. + * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_ACCESSIBLE_HOSTS + * + * @staticvar array|null $accessible_hosts + * @staticvar array $wildcard_regex + * + * @param string $uri URI of url. + * @return bool True to block, false to allow. + */ + public function block_request( $uri ) { + // We don't need to block requests, because nothing is blocked. + if ( ! defined( 'WP_HTTP_BLOCK_EXTERNAL' ) || ! WP_HTTP_BLOCK_EXTERNAL ) { + return false; + } + + $check = parse_url( $uri ); + if ( ! $check ) { + return true; + } + + $home = parse_url( get_option( 'siteurl' ) ); + + // Don't block requests back to ourselves by default. + if ( 'localhost' === $check['host'] || ( isset( $home['host'] ) && $home['host'] == $check['host'] ) ) { + /** + * Filters whether to block local requests through the proxy. + * + * @since WP-2.8.0 + * + * @param bool $block Whether to block local requests through proxy. + * Default false. + */ + return apply_filters( 'block_local_requests', false ); + } + + if ( ! defined( 'WP_ACCESSIBLE_HOSTS' ) ) { + return true; + } + + static $accessible_hosts = null; + static $wildcard_regex = array(); + if ( null === $accessible_hosts ) { + $accessible_hosts = preg_split( '|,\s*|', WP_ACCESSIBLE_HOSTS ); + + if ( false !== strpos( WP_ACCESSIBLE_HOSTS, '*' ) ) { + $wildcard_regex = array(); + foreach ( $accessible_hosts as $host ) { + $wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) ); + } + $wildcard_regex = '/^(' . implode( '|', $wildcard_regex ) . ')$/i'; + } + } + + if ( ! empty( $wildcard_regex ) ) { + return ! preg_match( $wildcard_regex, $check['host'] ); + } else { + return ! in_array( $check['host'], $accessible_hosts, true ); // Inverse logic, if it's in the array, then don't block it. + } + + } + + /** + * Used as a wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7. + * + * @deprecated WP-4.4.0 Use wp_parse_url() + * @see wp_parse_url() + * + * @param string $url The URL to parse. + * @return bool|array False on failure; Array of URL components on success; + * See parse_url()'s return values. + */ + protected static function parse_url( $url ) { + _deprecated_function( __METHOD__, 'WP-4.4.0', 'wp_parse_url()' ); + return wp_parse_url( $url ); + } + + /** + * Converts a relative URL to an absolute URL relative to a given URL. + * + * If an Absolute URL is provided, no processing of that URL is done. + * + * @since WP-3.4.0 + * + * @static + * + * @param string $maybe_relative_path The URL which might be relative + * @param string $url The URL which $maybe_relative_path is relative to + * @return string An Absolute URL, in a failure condition where the URL cannot be parsed, the relative URL will be returned. + */ + public static function make_absolute_url( $maybe_relative_path, $url ) { + if ( empty( $url ) ) { + return $maybe_relative_path; + } + + $url_parts = wp_parse_url( $url ); + if ( ! $url_parts ) { + return $maybe_relative_path; + } + + $relative_url_parts = wp_parse_url( $maybe_relative_path ); + if ( ! $relative_url_parts ) { + return $maybe_relative_path; + } + + // Check for a scheme on the 'relative' url + if ( ! empty( $relative_url_parts['scheme'] ) ) { + return $maybe_relative_path; + } + + $absolute_path = $url_parts['scheme'] . '://'; + + // Schemeless URL's will make it this far, so we check for a host in the relative url and convert it to a protocol-url + if ( isset( $relative_url_parts['host'] ) ) { + $absolute_path .= $relative_url_parts['host']; + if ( isset( $relative_url_parts['port'] ) ) { + $absolute_path .= ':' . $relative_url_parts['port']; + } + } else { + $absolute_path .= $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 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, '/' ); + } + + /** + * Handles HTTP Redirects and follows them if appropriate. + * + * @since WP-3.7.0 + * @static + * + * @param string $url The URL which was requested. + * @param array $args The Arguments which were used to make the request. + * @param array $response The Response of the HTTP request. + * @return false|object False if no redirect is present, a WP_HTTP or WP_Error result otherwise. + */ + public static function handle_redirects( $url, $args, $response ) { + // If no redirects are present, or, redirects were not requested, perform no action. + if ( ! isset( $response['headers']['location'] ) || 0 === $args['_redirection'] ) { + return false; + } + + // Only perform redirections on redirection http codes. + if ( $response['response']['code'] > 399 || $response['response']['code'] < 300 ) { + return false; + } + + // Don't redirect if we've run out of redirects. + if ( $args['redirection']-- <= 0 ) { + return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) ); + } + + $redirect_location = $response['headers']['location']; + + // If there were multiple Location headers, use the last header specified. + if ( is_array( $redirect_location ) ) { + $redirect_location = array_pop( $redirect_location ); + } + + $redirect_location = WP_Http::make_absolute_url( $redirect_location, $url ); + + // POST requests should not POST to a redirected location. + if ( 'POST' === $args['method'] ) { + if ( in_array( $response['response']['code'], array( 302, 303 ), true ) ) { + $args['method'] = 'GET'; + } + } + + // Include valid cookies in the redirect process. + if ( ! empty( $response['cookies'] ) ) { + foreach ( $response['cookies'] as $cookie ) { + if ( $cookie->test( $redirect_location ) ) { + $args['cookies'][] = $cookie; + } + } + } + + return wp_remote_request( $redirect_location, $args ); + } + + /** + * Determines if a specified string represents an IP address or not. + * + * This function also detects the type of the IP address, returning either + * '4' or '6' to represent a IPv4 and IPv6 address respectively. + * This does not verify if the IP is a valid IP, only that it appears to be + * an IP address. + * + * @link http://home.deds.nl/~aeron/regex/ for IPv6 regex + * + * @since WP-3.7.0 + * @static + * + * @param string $maybe_ip A suspected IP address + * @return integer|bool Upon success, '4' or '6' to represent a IPv4 or IPv6 address, false upon failure + */ + public static function is_ip_address( $maybe_ip ) { + if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $maybe_ip ) ) { + return 4; + } + + if ( false !== strpos( $maybe_ip, ':' ) && preg_match( '/^(((?=.*(::))(?!.*\3.+\3))\3?|([\dA-F]{1,4}(\3|:\b|$)|\2))(?4){5}((?4){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i', trim( $maybe_ip, ' []' ) ) ) { + return 6; + } -_deprecated_file( basename( __FILE__ ), '5.9.0', WPINC . '/class-wp-http.php' ); + return false; + } -/** WP_Http class */ -require_once ABSPATH . WPINC . '/class-wp-http.php'; +} diff --git a/wp-includes/class-json.php b/wp-includes/class-json.php index 1b2a525..64e0485 100644 --- a/wp-includes/class-json.php +++ b/wp-includes/class-json.php @@ -1,5 +1,5 @@ * @copyright 2005 Michal Migurski * @version CVS: $Id: JSON.php 305040 2010-11-02 23:19:03Z alan_k $ - * @license https://www.opensource.org/licenses/bsd-license.php - * @link https://pear.php.net/pepr/pepr-proposal-show.php?id=198 + * @license http://www.opensource.org/licenses/bsd-license.php + * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 */ /** @@ -107,7 +107,7 @@ * // create a new instance of Services_JSON * $json = new Services_JSON(); * - * // convert a complex value to JSON notation, and send it to the browser + * // convert a complexe value to JSON notation, and send it to the browser * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); * $output = $json->encode($value); * @@ -121,22 +121,10 @@ */ class Services_JSON { - /** - * Object behavior flags. - * - * @var int - */ - public $use; - - // private - cache the mbstring lookup results.. - var $_mb_strlen = false; - var $_mb_substr = false; - var $_mb_convert_encoding = false; - /** * constructs a new JSON instance * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param int $use object behavior flags; combine with boolean-OR * @@ -158,7 +146,7 @@ class Services_JSON */ function __construct( $use = 0 ) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); $this->use = $use; $this->_mb_strlen = function_exists('mb_strlen'); @@ -166,17 +154,21 @@ function __construct( $use = 0 ) $this->_mb_substr = function_exists('mb_substr'); } - /** - * PHP4 constructor. + /** + * PHP4 constructor. * - * @deprecated 5.3.0 Use __construct() instead. + * @deprecated WP-5.3.0 Use __construct() instead. * - * @see Services_JSON::__construct() - */ - public function Services_JSON( $use = 0 ) { - _deprecated_constructor( 'Services_JSON', '5.3.0', get_class( $this ) ); - self::__construct( $use ); - } + * @see __construct() + */ + public function Services_JSON( $use = 0 ) { + _deprecated_constructor( 'Services_JSON', 'WP-5.3.0', get_class( $this ) ); + self::__construct( $use ); + } + // private - cache the mbstring lookup results.. + var $_mb_strlen = false; + var $_mb_substr = false; + var $_mb_convert_encoding = false; /** * convert a string from one UTF-16 char to one UTF-8 char @@ -185,7 +177,7 @@ public function Services_JSON( $use = 0 ) { * provides a slower PHP-only method for installations * that lack the multibye string extension. * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param string $utf16 UTF-16 character * @return string UTF-8 character @@ -193,7 +185,7 @@ public function Services_JSON( $use = 0 ) { */ function utf162utf8($utf16) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); // oh please oh please oh please oh please oh please if($this->_mb_convert_encoding) { @@ -231,9 +223,9 @@ function utf162utf8($utf16) * * Normally should be handled by mb_convert_encoding, but * provides a slower PHP-only method for installations - * that lack the multibyte string extension. + * that lack the multibye string extension. * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param string $utf8 UTF-8 character * @return string UTF-16 character @@ -241,7 +233,7 @@ function utf162utf8($utf16) */ function utf82utf16($utf8) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); // oh please oh please oh please oh please oh please if($this->_mb_convert_encoding) { @@ -277,11 +269,11 @@ function utf82utf16($utf8) /** * encodes an arbitrary variable into JSON format (and sends JSON Header) * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param mixed $var any number, boolean, string, array, or object to be encoded. * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a string, note that encode() always expects it + * if var is a strng, note that encode() always expects it * to be in ASCII or UTF-8 format! * * @return mixed JSON string representation of input var or an error if a problem occurs @@ -289,19 +281,19 @@ function utf82utf16($utf8) */ function encode($var) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); - header('Content-Type: application/json'); + header('Content-type: application/json'); return $this->encodeUnsafe($var); } /** * encodes an arbitrary variable into JSON format without JSON Header - warning - may allow XSS!!!!) * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param mixed $var any number, boolean, string, array, or object to be encoded. * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a string, note that encode() always expects it + * if var is a strng, note that encode() always expects it * to be in ASCII or UTF-8 format! * * @return mixed JSON string representation of input var or an error if a problem occurs @@ -309,9 +301,9 @@ function encode($var) */ function encodeUnsafe($var) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); - // see bug #16908 - regarding numeric locale printing + // see bug https://core.trac.wordpress.org/ticket/16908 - regarding numeric locale printing $lc = setlocale(LC_NUMERIC, 0); setlocale(LC_NUMERIC, 'C'); $ret = $this->_encode($var); @@ -322,11 +314,11 @@ function encodeUnsafe($var) /** * PRIVATE CODE that does the work of encodes an arbitrary variable into JSON format * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param mixed $var any number, boolean, string, array, or object to be encoded. * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a string, note that encode() always expects it + * if var is a strng, note that encode() always expects it * to be in ASCII or UTF-8 format! * * @return mixed JSON string representation of input var or an error if a problem occurs @@ -334,7 +326,7 @@ function encodeUnsafe($var) */ function _encode($var) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); switch (gettype($var)) { case 'boolean': @@ -569,7 +561,7 @@ function _encode($var) /** * array-walking function for use in generating JSON-formatted name-value pairs * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param string $name name of key to use * @param mixed $value reference to an array element to be encoded @@ -579,7 +571,7 @@ function _encode($var) */ function name_value($name, $value) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); $encoded_value = $this->_encode($value); @@ -587,13 +579,13 @@ function name_value($name, $value) return $encoded_value; } - return $this->_encode((string) $name) . ':' . $encoded_value; + return $this->_encode(strval($name)) . ':' . $encoded_value; } /** * reduce a string by removing leading and trailing comments and whitespace * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param $str string string value to strip of comments and whitespace * @@ -602,7 +594,7 @@ function name_value($name, $value) */ function reduce_string($str) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); $str = preg_replace(array( @@ -624,7 +616,7 @@ function reduce_string($str) /** * decodes a JSON string into appropriate variable * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param string $str JSON-formatted string * @@ -637,7 +629,7 @@ function reduce_string($str) */ function decode($str) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); $str = $this->reduce_string($str); @@ -824,7 +816,7 @@ function decode($str) $parts = array(); if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:/Uis', $slice, $parts)) { - // "name":value pair + // "name":value pair $key = $this->decode($parts[1]); $val = $this->decode(trim(substr($slice, strlen($parts[0])), ", \t\n\r\0\x0B")); if ($this->use & SERVICES_JSON_LOOSE_TYPE) { @@ -855,7 +847,7 @@ function decode($str) ($top['what'] == SERVICES_JSON_IN_STR) && (($this->strlen8($this->substr8($chrs, 0, $c)) - $this->strlen8(rtrim($this->substr8($chrs, 0, $c), '\\'))) % 2 != 1)) { // found a quote, we're in a string, and it's not escaped - // we know that it's not escaped because there is _not_ an + // we know that it's not escaped becase there is _not_ an // odd number of backslashes at the end of the string so far array_pop($stk); //print("Found end of string at {$c}: ".$this->substr8($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); @@ -916,17 +908,17 @@ function decode($str) } /** - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @todo Ultimately, this should just call PEAR::isError() */ function isError($data, $code = null) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); if (class_exists('pear')) { return PEAR::isError($data, $code); - } elseif (is_object($data) && ($data instanceof services_json_error || + } elseif (is_object($data) && (get_class($data) == 'services_json_error' || is_subclass_of($data, 'services_json_error'))) { return true; } @@ -937,14 +929,14 @@ function isError($data, $code = null) /** * Calculates length of string in bytes * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param string * @return integer length */ function strlen8( $str ) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); if ( $this->_mb_strlen ) { return mb_strlen( $str, "8bit" ); @@ -955,7 +947,7 @@ function strlen8( $str ) /** * Returns part of a string, interpreting $start and $length as number of bytes. * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. * * @param string * @param integer start @@ -964,7 +956,7 @@ function strlen8( $str ) */ function substr8( $string, $start, $length=false ) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); if ( $length === false ) { $length = $this->strlen8( $string ) - $start; @@ -981,31 +973,31 @@ function substr8( $string, $start, $length=false ) class Services_JSON_Error extends PEAR_Error { - /** - * PHP5 constructor. - * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. - */ + /** + * PHP5 constructor. + * + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. + */ function __construct($message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); parent::PEAR_Error($message, $code, $mode, $options, $userinfo); } - /** - * PHP4 constructor. - * - * @deprecated 5.3.0 Use __construct() instead. - * - * @see Services_JSON_Error::__construct() - */ - public function Services_JSON_Error($message = 'unknown error', $code = null, + /** + * PHP4 constructor. + * + * @deprecated WP-5.3.0 Use __construct() instead. + * + * @see __construct() + */ + public function Services_JSON_Error($message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null) { - _deprecated_constructor( 'Services_JSON_Error', '5.3.0', get_class( $this ) ); - self::__construct($message, $code, $mode, $options, $userinfo); - } + _deprecated_constructor( 'Services_JSON_Error', 'WP-5.3.0', get_class( $this ) ); + self::__construct($message, $code, $mode, $options, $userinfo); + } } } else { @@ -1015,29 +1007,29 @@ public function Services_JSON_Error($message = 'unknown error', $code = null, */ class Services_JSON_Error { - /** - * PHP5 constructor. - * - * @deprecated 5.3.0 Use the PHP native JSON extension instead. - */ + /** + * PHP5 constructor. + * + * @deprecated WP-5.3.0 Use the PHP native JSON extension instead. + */ function __construct( $message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null ) { - _deprecated_function( __METHOD__, '5.3.0', 'The PHP native JSON extension' ); + _deprecated_function( __METHOD__, 'WP-5.3.0', 'The PHP native JSON extension' ); } - /** - * PHP4 constructor. - * - * @deprecated 5.3.0 Use __construct() instead. - * - * @see Services_JSON_Error::__construct() - */ - public function Services_JSON_Error( $message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null ) { - _deprecated_constructor( 'Services_JSON_Error', '5.3.0', get_class( $this ) ); - self::__construct( $message, $code, $mode, $options, $userinfo ); - } + /** + * PHP4 constructor. + * + * @deprecated WP-5.3.0 Use __construct() instead. + * + * @see __construct() + */ + public function Services_JSON_Error( $message = 'unknown error', $code = null, + $mode = null, $options = null, $userinfo = null ) { + _deprecated_constructor( 'Services_JSON_Error', 'WP-5.3.0', get_class( $this ) ); + self::__construct( $message, $code, $mode, $options, $userinfo ); + } } } diff --git a/wp-includes/class-oembed.php b/wp-includes/class-oembed.php index a31d43b..df992e0 100644 --- a/wp-includes/class-oembed.php +++ b/wp-includes/class-oembed.php @@ -4,12 +4,12 @@ * * This file is deprecated, use 'wp-includes/class-wp-oembed.php' instead. * - * @deprecated 5.3.0 + * @deprecated WP-5.3.0 * @package ClassicPress * @subpackage oEmbed */ -_deprecated_file( basename( __FILE__ ), '5.3.0', WPINC . '/class-wp-oembed.php' ); +_deprecated_file( basename( __FILE__ ), 'WP-5.3.0', 'wp-includes/class-wp-oembed.php' ); /** WP_oEmbed class */ -require_once ABSPATH . WPINC . '/class-wp-oembed.php'; +require_once ABSPATH . 'wp-includes/class-wp-oembed.php'; diff --git a/wp-includes/class-phpass.php b/wp-includes/class-phpass.php index 22f282f..877f754 100644 --- a/wp-includes/class-phpass.php +++ b/wp-includes/class-phpass.php @@ -2,25 +2,17 @@ /** * Portable PHP password hashing framework. * @package phpass - * @since 2.5.0 - * @version 0.5 / ClassicPress - * @link https://www.openwall.com/phpass/ + * @since WP-2.5.0 + * @version 0.3 / ClassicPress + * @link http://www.openwall.com/phpass/ */ -# -# Portable PHP password hashing framework. -# -# Version 0.5 / WordPress. # # Written by Solar Designer in 2004-2006 and placed in # the public domain. Revised in subsequent years, still public domain. # # There's absolutely no warranty. # -# The homepage URL for this framework is: -# -# http://www.openwall.com/phpass/ -# # Please be sure to update the Version line if you edit this file in any way. # It is suggested that you leave the main version number intact, but indicate # your project name (after the slash) and add your own revision information. @@ -37,9 +29,9 @@ * Portable PHP password hashing framework. * * @package phpass - * @version 0.5 / WordPress - * @link https://www.openwall.com/phpass/ - * @since 2.5.0 + * @version 0.3 / ClassicPress + * @link http://www.openwall.com/phpass/ + * @since WP-2.5.0 */ class PasswordHash { var $itoa64; @@ -47,7 +39,10 @@ class PasswordHash { var $portable_hashes; var $random_state; - function __construct($iteration_count_log2, $portable_hashes) + /** + * PHP5 constructor. + */ + function __construct( $iteration_count_log2, $portable_hashes ) { $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; @@ -57,20 +52,20 @@ function __construct($iteration_count_log2, $portable_hashes) $this->portable_hashes = $portable_hashes; - $this->random_state = microtime(); - if (function_exists('getmypid')) - $this->random_state .= getmypid(); + $this->random_state = microtime() . uniqid(rand(), TRUE); // removed getmypid() for compatibility reasons } - function PasswordHash($iteration_count_log2, $portable_hashes) - { - self::__construct($iteration_count_log2, $portable_hashes); + /** + * PHP4 constructor. + */ + public function PasswordHash( $iteration_count_log2, $portable_hashes ) { + self::__construct( $iteration_count_log2, $portable_hashes ); } function get_random_bytes($count) { $output = ''; - if (@is_readable('/dev/urandom') && + if ( @is_readable('/dev/urandom') && ($fh = @fopen('/dev/urandom', 'rb'))) { $output = fread($fh, $count); fclose($fh); @@ -81,7 +76,8 @@ function get_random_bytes($count) for ($i = 0; $i < $count; $i += 16) { $this->random_state = md5(microtime() . $this->random_state); - $output .= md5($this->random_state, TRUE); + $output .= + pack('H*', md5($this->random_state)); } $output = substr($output, 0, $count); } @@ -125,12 +121,12 @@ function gensalt_private($input) function crypt_private($password, $setting) { $output = '*0'; - if (substr($setting, 0, 2) === $output) + if (substr($setting, 0, 2) == $output) $output = '*1'; $id = substr($setting, 0, 3); # We use "$P$", phpBB3 uses "$H$" for the same thing - if ($id !== '$P$' && $id !== '$H$') + if ($id != '$P$' && $id != '$H$') return $output; $count_log2 = strpos($this->itoa64, $setting[3]); @@ -140,19 +136,26 @@ function crypt_private($password, $setting) $count = 1 << $count_log2; $salt = substr($setting, 4, 8); - if (strlen($salt) !== 8) + if (strlen($salt) != 8) return $output; - # We were kind of forced to use MD5 here since it's the only - # cryptographic primitive that was available in all versions - # of PHP in use. To implement our own low-level crypto in PHP - # would have resulted in much worse performance and + # We're kind of forced to use MD5 here since it's the only + # cryptographic primitive available in all versions of PHP + # currently in use. To implement our own low-level crypto + # in PHP would result in much worse performance and # consequently in lower iteration counts and hashes that are # quicker to crack (by non-PHP code). - $hash = md5($salt . $password, TRUE); - do { - $hash = md5($hash . $password, TRUE); - } while (--$count); + if (PHP_VERSION >= '5') { + $hash = md5($salt . $password, TRUE); + do { + $hash = md5($hash . $password, TRUE); + } while (--$count); + } else { + $hash = pack('H*', md5($salt . $password)); + do { + $hash = pack('H*', md5($hash . $password)); + } while (--$count); + } $output = substr($setting, 0, 12); $output .= $this->encode64($hash, 16); @@ -160,6 +163,24 @@ function crypt_private($password, $setting) return $output; } + function gensalt_extended($input) + { + $count_log2 = min($this->iteration_count_log2 + 8, 24); + # This should be odd to not reveal weak DES keys, and the + # maximum valid value is (2**24 - 1) which is odd anyway. + $count = (1 << $count_log2) - 1; + + $output = '_'; + $output .= $this->itoa64[$count & 0x3f]; + $output .= $this->itoa64[($count >> 6) & 0x3f]; + $output .= $this->itoa64[($count >> 12) & 0x3f]; + $output .= $this->itoa64[($count >> 18) & 0x3f]; + + $output .= $this->encode64($input, 3); + + return $output; + } + function gensalt_blowfish($input) { # This one needs to use a different order of characters and a @@ -173,8 +194,8 @@ function gensalt_blowfish($input) $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $output = '$2a$'; - $output .= chr((int)(ord('0') + $this->iteration_count_log2 / 10)); - $output .= chr((ord('0') + $this->iteration_count_log2 % 10)); + $output .= chr(ord('0') + $this->iteration_count_log2 / 10); + $output .= chr(ord('0') + $this->iteration_count_log2 % 10); $output .= '$'; $i = 0; @@ -209,11 +230,20 @@ function HashPassword($password) $random = ''; - if (CRYPT_BLOWFISH === 1 && !$this->portable_hashes) { + if (CRYPT_BLOWFISH == 1 && !$this->portable_hashes) { $random = $this->get_random_bytes(16); $hash = crypt($password, $this->gensalt_blowfish($random)); - if (strlen($hash) === 60) + if (strlen($hash) == 60) + return $hash; + } + + if (CRYPT_EXT_DES == 1 && !$this->portable_hashes) { + if (strlen($random) < 3) + $random = $this->get_random_bytes(3); + $hash = + crypt($password, $this->gensalt_extended($random)); + if (strlen($hash) == 20) return $hash; } @@ -222,7 +252,7 @@ function HashPassword($password) $hash = $this->crypt_private($password, $this->gensalt_private($random)); - if (strlen($hash) === 34) + if (strlen($hash) == 34) return $hash; # Returning '*' on error is safe here, but would _not_ be safe @@ -238,13 +268,9 @@ function CheckPassword($password, $stored_hash) } $hash = $this->crypt_private($password, $stored_hash); - if ($hash[0] === '*') + if ($hash[0] == '*') $hash = crypt($password, $stored_hash); - # This is not constant-time. In order to keep the code simple, - # for timing safety we currently rely on the salts being - # unpredictable, which they are at least in the non-fallback - # cases (that is, when we use /dev/urandom and bcrypt). return $hash === $stored_hash; } -} +} \ No newline at end of file diff --git a/wp-includes/class-phpmailer.php b/wp-includes/class-phpmailer.php index fe054f6..015e43b 100644 --- a/wp-includes/class-phpmailer.php +++ b/wp-includes/class-phpmailer.php @@ -6,7 +6,7 @@ if ( function_exists( '_deprecated_file' ) ) { _deprecated_file( basename( __FILE__ ), - '5.5.0', + 'WP-5.5.0', WPINC . '/PHPMailer/PHPMailer.php', __( 'The PHPMailer class has been moved to wp-includes/PHPMailer subdirectory and now uses the PHPMailer\PHPMailer namespace.' ) ); diff --git a/wp-includes/class-pop3.php b/wp-includes/class-pop3.php index 7a72b1c..3c89fe5 100644 --- a/wp-includes/class-pop3.php +++ b/wp-includes/class-pop3.php @@ -11,7 +11,7 @@ * POP3 class * * @copyright 1999-2011 The SquirrelMail Project Team - * @license https://opensource.org/licenses/gpl-license.php GNU Public License + * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @package plugins * @subpackage mail_fetch */ @@ -59,9 +59,7 @@ function __construct ( $server = '', $timeout = '' ) { if(!empty($timeout)) { settype($timeout,"integer"); $this->TIMEOUT = $timeout; - if(function_exists("set_time_limit")){ - set_time_limit($timeout); - } + set_time_limit($timeout); } return true; } @@ -74,9 +72,7 @@ public function POP3( $server = '', $timeout = '' ) { } function update_timer () { - if(function_exists("set_time_limit")){ - set_time_limit($this->TIMEOUT); - } + set_time_limit($this->TIMEOUT); return true; } @@ -447,7 +443,7 @@ function send_cmd ( $cmd = "" ) // Sends a user defined command string to the // POP server and returns the results. Useful for // non-compliant or custom POP servers. - // Do NOT include the \r\n as part of your command + // Do NOT includ the \r\n as part of your command // string - it will be appended automatically. // The return value is a standard fgets() call, which diff --git a/wp-includes/class-requests.php b/wp-includes/class-requests.php index 2610e33..43647a8 100644 --- a/wp-includes/class-requests.php +++ b/wp-includes/class-requests.php @@ -9,27 +9,6 @@ * @package Requests */ -/* - * Integrators who cannot yet upgrade to the PSR-4 class names can silence deprecations - * by defining a `REQUESTS_SILENCE_PSR0_DEPRECATIONS` constant and setting it to `true`. - * The constant needs to be defined before this class is required. - */ -if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS') || REQUESTS_SILENCE_PSR0_DEPRECATIONS !== true) { - // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error - trigger_error( - 'The PSR-0 `Requests_...` class names in the Request library are deprecated.' - . ' Switch to the PSR-4 `WpOrg\Requests\...` class names at your earliest convenience.', - E_USER_DEPRECATED - ); - - // Prevent the deprecation notice from being thrown twice. - if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS')) { - define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true); - } -} - -require_once __DIR__ . '/Requests/src/Requests.php'; - /** * Requests for PHP * @@ -38,39 +17,966 @@ * Based on concepts from SimplePie_File, RequestCore and WP_Http. * * @package Requests - * - * @deprecated 6.2.0 Use `WpOrg\Requests\Requests` instead for the actual functionality and - * use `WpOrg\Requests\Autoload` for the autoloading. */ -class Requests extends WpOrg\Requests\Requests { +class Requests { + /** + * POST method + * + * @var string + */ + const POST = 'POST'; + + /** + * PUT method + * + * @var string + */ + const PUT = 'PUT'; + + /** + * GET method + * + * @var string + */ + const GET = 'GET'; + + /** + * HEAD method + * + * @var string + */ + const HEAD = 'HEAD'; + + /** + * DELETE method + * + * @var string + */ + const DELETE = 'DELETE'; + + /** + * OPTIONS method + * + * @var string + */ + const OPTIONS = 'OPTIONS'; + + /** + * TRACE method + * + * @var string + */ + const TRACE = 'TRACE'; + + /** + * PATCH method + * + * @link https://tools.ietf.org/html/rfc5789 + * @var string + */ + const PATCH = 'PATCH'; + + /** + * Default size of buffer size to read streams + * + * @var integer + */ + const BUFFER_SIZE = 1160; + + /** + * Current version of Requests + * + * @var string + */ + const VERSION = '1.7-3470169'; + + /** + * Registered transport classes + * + * @var array + */ + protected static $transports = array(); /** - * Deprecated autoloader for Requests. + * Selected transport name * - * @deprecated 6.2.0 Use the `WpOrg\Requests\Autoload::load()` method instead. + * Use {@see get_transport()} instead + * + * @var array + */ + public static $transport = array(); + + /** + * Default certificate path. + * + * @see Requests::get_certificate_path() + * @see Requests::set_certificate_path() + * + * @var string + */ + protected static $certificate_path; + + /** + * This is a static class, do not instantiate it + * + * @codeCoverageIgnore + */ + private function __construct() {} + + /** + * Autoloader for Requests + * + * Register this with {@see register_autoloader()} if you'd like to avoid + * having to create your own. + * + * (You can also use `spl_autoload_register` directly if you'd prefer.) * * @codeCoverageIgnore * * @param string $class Class name to load */ public static function autoloader($class) { - if (class_exists('WpOrg\Requests\Autoload') === false) { - require_once __DIR__ . '/Requests/src/Autoload.php'; + // Check that the class starts with "Requests" + if (strpos($class, 'Requests') !== 0) { + return; } - return WpOrg\Requests\Autoload::load($class); + $file = str_replace('_', '/', $class); + if (file_exists(dirname(__FILE__) . '/' . $file . '.php')) { + require_once(dirname(__FILE__) . '/' . $file . '.php'); + } } /** * Register the built-in autoloader * - * @deprecated 6.2.0 Include the `WpOrg\Requests\Autoload` class and - * call `WpOrg\Requests\Autoload::register()` instead. - * * @codeCoverageIgnore */ public static function register_autoloader() { - require_once __DIR__ . '/Requests/src/Autoload.php'; - WpOrg\Requests\Autoload::register(); + spl_autoload_register(array('Requests', 'autoloader')); + } + + /** + * Register a transport + * + * @param string $transport Transport class to add, must support the Requests_Transport interface + */ + public static function add_transport($transport) { + if (empty(self::$transports)) { + self::$transports = array( + 'Requests_Transport_cURL', + 'Requests_Transport_fsockopen', + ); + } + + self::$transports = array_merge(self::$transports, array($transport)); + } + + /** + * Get a working transport + * + * @throws Requests_Exception If no valid transport is found (`notransport`) + * @return Requests_Transport + */ + protected static function get_transport($capabilities = array()) { + // Caching code, don't bother testing coverage + // @codeCoverageIgnoreStart + // array of capabilities as a string to be used as an array key + ksort($capabilities); + $cap_string = serialize($capabilities); + + // Don't search for a transport if it's already been done for these $capabilities + if (isset(self::$transport[$cap_string]) && self::$transport[$cap_string] !== null) { + $class = self::$transport[$cap_string]; + return new $class(); + } + // @codeCoverageIgnoreEnd + + if (empty(self::$transports)) { + self::$transports = array( + 'Requests_Transport_cURL', + 'Requests_Transport_fsockopen', + ); + } + + // Find us a working transport + foreach (self::$transports as $class) { + if (!class_exists($class)) { + continue; + } + + $result = call_user_func(array($class, 'test'), $capabilities); + if ($result) { + self::$transport[$cap_string] = $class; + break; + } + } + if (self::$transport[$cap_string] === null) { + throw new Requests_Exception('No working transports found', 'notransport', self::$transports); + } + + $class = self::$transport[$cap_string]; + return new $class(); + } + + /**#@+ + * @see request() + * @param string $url + * @param array $headers + * @param array $options + * @return Requests_Response + */ + /** + * Send a GET request + */ + public static function get($url, $headers = array(), $options = array()) { + return self::request($url, $headers, null, self::GET, $options); + } + + /** + * Send a HEAD request + */ + public static function head($url, $headers = array(), $options = array()) { + return self::request($url, $headers, null, self::HEAD, $options); + } + + /** + * Send a DELETE request + */ + public static function delete($url, $headers = array(), $options = array()) { + return self::request($url, $headers, null, self::DELETE, $options); + } + + /** + * Send a TRACE request + */ + public static function trace($url, $headers = array(), $options = array()) { + return self::request($url, $headers, null, self::TRACE, $options); + } + /**#@-*/ + + /**#@+ + * @see request() + * @param string $url + * @param array $headers + * @param array $data + * @param array $options + * @return Requests_Response + */ + /** + * Send a POST request + */ + public static function post($url, $headers = array(), $data = array(), $options = array()) { + return self::request($url, $headers, $data, self::POST, $options); + } + /** + * Send a PUT request + */ + public static function put($url, $headers = array(), $data = array(), $options = array()) { + return self::request($url, $headers, $data, self::PUT, $options); + } + + /** + * Send an OPTIONS request + */ + public static function options($url, $headers = array(), $data = array(), $options = array()) { + return self::request($url, $headers, $data, self::OPTIONS, $options); + } + + /** + * Send a PATCH request + * + * Note: Unlike {@see post} and {@see put}, `$headers` is required, as the + * specification recommends that should send an ETag + * + * @link https://tools.ietf.org/html/rfc5789 + */ + public static function patch($url, $headers, $data = array(), $options = array()) { + return self::request($url, $headers, $data, self::PATCH, $options); + } + /**#@-*/ + + /** + * Main interface for HTTP requests + * + * This method initiates a request and sends it via a transport before + * parsing. + * + * The `$options` parameter takes an associative array with the following + * options: + * + * - `timeout`: How long should we wait for a response? + * Note: for cURL, a minimum of 1 second applies, as DNS resolution + * operates at second-resolution only. + * (float, seconds with a millisecond precision, default: 10, example: 0.01) + * - `connect_timeout`: How long should we wait while trying to connect? + * (float, seconds with a millisecond precision, default: 10, example: 0.01) + * - `useragent`: Useragent to send to the server + * (string, default: php-requests/$version) + * - `follow_redirects`: Should we follow 3xx redirects? + * (boolean, default: true) + * - `redirects`: How many times should we redirect before erroring? + * (integer, default: 10) + * - `blocking`: Should we block processing on this request? + * (boolean, default: true) + * - `filename`: File to stream the body to instead. + * (string|boolean, default: false) + * - `auth`: Authentication handler or array of user/password details to use + * for Basic authentication + * (Requests_Auth|array|boolean, default: false) + * - `proxy`: Proxy details to use for proxy by-passing and authentication + * (Requests_Proxy|array|string|boolean, default: false) + * - `max_bytes`: Limit for the response body size. + * (integer|boolean, default: false) + * - `idn`: Enable IDN parsing + * (boolean, default: true) + * - `transport`: Custom transport. Either a class name, or a + * transport object. Defaults to the first working transport from + * {@see getTransport()} + * (string|Requests_Transport, default: {@see getTransport()}) + * - `hooks`: Hooks handler. + * (Requests_Hooker, default: new Requests_Hooks()) + * - `verify`: Should we verify SSL certificates? Allows passing in a custom + * certificate file as a string. (Using true uses the system-wide root + * certificate store instead, but this may have different behaviour + * across transports.) + * (string|boolean, default: library/Requests/Transport/cacert.pem) + * - `verifyname`: Should we verify the common name in the SSL certificate? + * (boolean: default, true) + * - `data_format`: How should we send the `$data` parameter? + * (string, one of 'query' or 'body', default: 'query' for + * HEAD/GET/DELETE, 'body' for POST/PUT/OPTIONS/PATCH) + * + * @throws Requests_Exception On invalid URLs (`nonhttp`) + * + * @param string $url URL to request + * @param array $headers Extra headers to send with the request + * @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests + * @param string $type HTTP request type (use Requests constants) + * @param array $options Options for the request (see description for more information) + * @return Requests_Response + */ + public static function request($url, $headers = array(), $data = array(), $type = self::GET, $options = array()) { + if (empty($options['type'])) { + $options['type'] = $type; + } + $options = array_merge(self::get_default_options(), $options); + + self::set_defaults($url, $headers, $data, $type, $options); + + $options['hooks']->dispatch('requests.before_request', array(&$url, &$headers, &$data, &$type, &$options)); + + if (!empty($options['transport'])) { + $transport = $options['transport']; + + if (is_string($options['transport'])) { + $transport = new $transport(); + } + } + else { + $need_ssl = (0 === stripos($url, 'https://')); + $capabilities = array('ssl' => $need_ssl); + $transport = self::get_transport($capabilities); + } + $response = $transport->request($url, $headers, $data, $options); + + $options['hooks']->dispatch('requests.before_parse', array(&$response, $url, $headers, $data, $type, $options)); + + return self::parse_response($response, $url, $headers, $data, $options); + } + + /** + * Send multiple HTTP requests simultaneously + * + * The `$requests` parameter takes an associative or indexed array of + * request fields. The key of each request can be used to match up the + * request with the returned data, or with the request passed into your + * `multiple.request.complete` callback. + * + * The request fields value is an associative array with the following keys: + * + * - `url`: Request URL Same as the `$url` parameter to + * {@see Requests::request} + * (string, required) + * - `headers`: Associative array of header fields. Same as the `$headers` + * parameter to {@see Requests::request} + * (array, default: `array()`) + * - `data`: Associative array of data fields or a string. Same as the + * `$data` parameter to {@see Requests::request} + * (array|string, default: `array()`) + * - `type`: HTTP request type (use Requests constants). Same as the `$type` + * parameter to {@see Requests::request} + * (string, default: `Requests::GET`) + * - `cookies`: Associative array of cookie name to value, or cookie jar. + * (array|Requests_Cookie_Jar) + * + * If the `$options` parameter is specified, individual requests will + * inherit options from it. This can be used to use a single hooking system, + * or set all the types to `Requests::POST`, for example. + * + * In addition, the `$options` parameter takes the following global options: + * + * - `complete`: A callback for when a request is complete. Takes two + * parameters, a Requests_Response/Requests_Exception reference, and the + * ID from the request array (Note: this can also be overridden on a + * per-request basis, although that's a little silly) + * (callback) + * + * @param array $requests Requests data (see description for more information) + * @param array $options Global and default options (see {@see Requests::request}) + * @return array Responses (either Requests_Response or a Requests_Exception object) + */ + public static function request_multiple($requests, $options = array()) { + $options = array_merge(self::get_default_options(true), $options); + + if (!empty($options['hooks'])) { + $options['hooks']->register('transport.internal.parse_response', array('Requests', 'parse_multiple')); + if (!empty($options['complete'])) { + $options['hooks']->register('multiple.request.complete', $options['complete']); + } + } + + foreach ($requests as $id => &$request) { + if (!isset($request['headers'])) { + $request['headers'] = array(); + } + if (!isset($request['data'])) { + $request['data'] = array(); + } + if (!isset($request['type'])) { + $request['type'] = self::GET; + } + if (!isset($request['options'])) { + $request['options'] = $options; + $request['options']['type'] = $request['type']; + } + else { + if (empty($request['options']['type'])) { + $request['options']['type'] = $request['type']; + } + $request['options'] = array_merge($options, $request['options']); + } + + self::set_defaults($request['url'], $request['headers'], $request['data'], $request['type'], $request['options']); + + // Ensure we only hook in once + if ($request['options']['hooks'] !== $options['hooks']) { + $request['options']['hooks']->register('transport.internal.parse_response', array('Requests', 'parse_multiple')); + if (!empty($request['options']['complete'])) { + $request['options']['hooks']->register('multiple.request.complete', $request['options']['complete']); + } + } + } + unset($request); + + if (!empty($options['transport'])) { + $transport = $options['transport']; + + if (is_string($options['transport'])) { + $transport = new $transport(); + } + } + else { + $transport = self::get_transport(); + } + $responses = $transport->request_multiple($requests, $options); + + foreach ($responses as $id => &$response) { + // If our hook got messed with somehow, ensure we end up with the + // correct response + if (is_string($response)) { + $request = $requests[$id]; + self::parse_multiple($response, $request); + $request['options']['hooks']->dispatch('multiple.request.complete', array(&$response, $id)); + } + } + + return $responses; + } + + /** + * Get the default options + * + * @see Requests::request() for values returned by this method + * @param boolean $multirequest Is this a multirequest? + * @return array Default option values + */ + protected static function get_default_options($multirequest = false) { + $defaults = array( + 'timeout' => 10, + 'connect_timeout' => 10, + 'useragent' => 'php-requests/' . self::VERSION, + 'protocol_version' => 1.1, + 'redirected' => 0, + 'redirects' => 10, + 'follow_redirects' => true, + 'blocking' => true, + 'type' => self::GET, + 'filename' => false, + 'auth' => false, + 'proxy' => false, + 'cookies' => false, + 'max_bytes' => false, + 'idn' => true, + 'hooks' => null, + 'transport' => null, + 'verify' => Requests::get_certificate_path(), + 'verifyname' => true, + ); + if ($multirequest !== false) { + $defaults['complete'] = null; + } + return $defaults; + } + + /** + * Get default certificate path. + * + * @return string Default certificate path. + */ + public static function get_certificate_path() { + if ( ! empty( Requests::$certificate_path ) ) { + return Requests::$certificate_path; + } + + return dirname(__FILE__) . '/Requests/Transport/cacert.pem'; + } + + /** + * Set default certificate path. + * + * @param string $path Certificate path, pointing to a PEM file. + */ + public static function set_certificate_path( $path ) { + Requests::$certificate_path = $path; + } + + /** + * Set the default values + * + * @param string $url URL to request + * @param array $headers Extra headers to send with the request + * @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests + * @param string $type HTTP request type + * @param array $options Options for the request + * @return array $options + */ + protected static function set_defaults(&$url, &$headers, &$data, &$type, &$options) { + if (!preg_match('/^http(s)?:\/\//i', $url, $matches)) { + throw new Requests_Exception('Only HTTP(S) requests are handled.', 'nonhttp', $url); + } + + if (empty($options['hooks'])) { + $options['hooks'] = new Requests_Hooks(); + } + + if (is_array($options['auth'])) { + $options['auth'] = new Requests_Auth_Basic($options['auth']); + } + if ($options['auth'] !== false) { + $options['auth']->register($options['hooks']); + } + + if (is_string($options['proxy']) || is_array($options['proxy'])) { + $options['proxy'] = new Requests_Proxy_HTTP($options['proxy']); + } + if ($options['proxy'] !== false) { + $options['proxy']->register($options['hooks']); + } + + if (is_array($options['cookies'])) { + $options['cookies'] = new Requests_Cookie_Jar($options['cookies']); + } + elseif (empty($options['cookies'])) { + $options['cookies'] = new Requests_Cookie_Jar(); + } + if ($options['cookies'] !== false) { + $options['cookies']->register($options['hooks']); + } + + if ($options['idn'] !== false) { + $iri = new Requests_IRI($url); + $iri->host = Requests_IDNAEncoder::encode($iri->ihost); + $url = $iri->uri; + } + + // Massage the type to ensure we support it. + $type = strtoupper($type); + + if (!isset($options['data_format'])) { + if (in_array($type, array(self::HEAD, self::GET, self::DELETE))) { + $options['data_format'] = 'query'; + } + else { + $options['data_format'] = 'body'; + } + } + } + + /** + * HTTP response parser + * + * @throws Requests_Exception On missing head/body separator (`requests.no_crlf_separator`) + * @throws Requests_Exception On missing head/body separator (`noversion`) + * @throws Requests_Exception On missing head/body separator (`toomanyredirects`) + * + * @param string $headers Full response text including headers and body + * @param string $url Original request URL + * @param array $req_headers Original $headers array passed to {@link request()}, in case we need to follow redirects + * @param array $req_data Original $data array passed to {@link request()}, in case we need to follow redirects + * @param array $options Original $options array passed to {@link request()}, in case we need to follow redirects + * @return Requests_Response + */ + protected static function parse_response($headers, $url, $req_headers, $req_data, $options) { + $return = new Requests_Response(); + if (!$options['blocking']) { + return $return; + } + + $return->raw = $headers; + $return->url = $url; + + if (!$options['filename']) { + if (($pos = strpos($headers, "\r\n\r\n")) === false) { + // Crap! + throw new Requests_Exception('Missing header/body separator', 'requests.no_crlf_separator'); + } + + $headers = substr($return->raw, 0, $pos); + $return->body = substr($return->raw, $pos + strlen("\n\r\n\r")); + } + else { + $return->body = ''; + } + // Pretend CRLF = LF for compatibility (RFC 2616, section 19.3) + $headers = str_replace("\r\n", "\n", $headers); + // Unfold headers (replace [CRLF] 1*( SP | HT ) with SP) as per RFC 2616 (section 2.2) + $headers = preg_replace('/\n[ \t]/', ' ', $headers); + $headers = explode("\n", $headers); + preg_match('#^HTTP/(1\.\d)[ \t]+(\d+)#i', array_shift($headers), $matches); + if (empty($matches)) { + throw new Requests_Exception('Response could not be parsed', 'noversion', $headers); + } + $return->protocol_version = (float) $matches[1]; + $return->status_code = (int) $matches[2]; + if ($return->status_code >= 200 && $return->status_code < 300) { + $return->success = true; + } + + foreach ($headers as $header) { + list($key, $value) = explode(':', $header, 2); + $value = trim($value); + preg_replace('#(\s+)#i', ' ', $value); + $return->headers[$key] = $value; + } + if (isset($return->headers['transfer-encoding'])) { + $return->body = self::decode_chunked($return->body); + unset($return->headers['transfer-encoding']); + } + if (isset($return->headers['content-encoding'])) { + $return->body = self::decompress($return->body); + } + + //fsockopen and cURL compatibility + if (isset($return->headers['connection'])) { + unset($return->headers['connection']); + } + + $options['hooks']->dispatch('requests.before_redirect_check', array(&$return, $req_headers, $req_data, $options)); + + if ($return->is_redirect() && $options['follow_redirects'] === true) { + if (isset($return->headers['location']) && $options['redirected'] < $options['redirects']) { + if ($return->status_code === 303) { + $options['type'] = self::GET; + } + $options['redirected']++; + $location = $return->headers['location']; + if (strpos($location, 'http://') !== 0 && strpos($location, 'https://') !== 0) { + // relative redirect, for compatibility make it absolute + $location = Requests_IRI::absolutize($url, $location); + $location = $location->uri; + } + + $hook_args = array( + &$location, + &$req_headers, + &$req_data, + &$options, + $return + ); + $options['hooks']->dispatch('requests.before_redirect', $hook_args); + $redirected = self::request($location, $req_headers, $req_data, $options['type'], $options); + $redirected->history[] = $return; + return $redirected; + } + elseif ($options['redirected'] >= $options['redirects']) { + throw new Requests_Exception('Too many redirects', 'toomanyredirects', $return); + } + } + + $return->redirects = $options['redirected']; + + $options['hooks']->dispatch('requests.after_request', array(&$return, $req_headers, $req_data, $options)); + return $return; + } + + /** + * Callback for `transport.internal.parse_response` + * + * Internal use only. Converts a raw HTTP response to a Requests_Response + * while still executing a multiple request. + * + * @param string $response Full response text including headers and body (will be overwritten with Response instance) + * @param array $request Request data as passed into {@see Requests::request_multiple()} + * @return null `$response` is either set to a Requests_Response instance, or a Requests_Exception object + */ + public static function parse_multiple(&$response, $request) { + try { + $url = $request['url']; + $headers = $request['headers']; + $data = $request['data']; + $options = $request['options']; + $response = self::parse_response($response, $url, $headers, $data, $options); + } + catch (Requests_Exception $e) { + $response = $e; + } + } + + /** + * Decoded a chunked body as per RFC 2616 + * + * @see https://tools.ietf.org/html/rfc2616#section-3.6.1 + * @param string $data Chunked body + * @return string Decoded body + */ + protected static function decode_chunked($data) { + if (!preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', trim($data))) { + return $data; + } + + + + $decoded = ''; + $encoded = $data; + + while (true) { + $is_chunked = (bool) preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', $encoded, $matches); + if (!$is_chunked) { + // Looks like it's not chunked after all + return $data; + } + + $length = hexdec(trim($matches[1])); + if ($length === 0) { + // Ignore trailer headers + return $decoded; + } + + $chunk_length = strlen($matches[0]); + $decoded .= substr($encoded, $chunk_length, $length); + $encoded = substr($encoded, $chunk_length + $length + 2); + + if (trim($encoded) === '0' || empty($encoded)) { + return $decoded; + } + } + + // We'll never actually get down here + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + /** + * Convert a key => value array to a 'key: value' array for headers + * + * @param array $array Dictionary of header values + * @return array List of headers + */ + public static function flatten($array) { + $return = array(); + foreach ($array as $key => $value) { + $return[] = sprintf('%s: %s', $key, $value); + } + return $return; + } + + /** + * Convert a key => value array to a 'key: value' array for headers + * + * @codeCoverageIgnore + * @deprecated Misspelling of {@see Requests::flatten} + * @param array $array Dictionary of header values + * @return array List of headers + */ + public static function flattern($array) { + return self::flatten($array); + } + + /** + * Decompress an encoded body + * + * Implements gzip, compress and deflate. Guesses which it is by attempting + * to decode. + * + * @param string $data Compressed data in one of the above formats + * @return string Decompressed string + */ + public static function decompress($data) { + if (substr($data, 0, 2) !== "\x1f\x8b" && substr($data, 0, 2) !== "\x78\x9c") { + // Not actually compressed. Probably cURL ruining this for us. + return $data; + } + + if (function_exists('gzdecode') && ($decoded = @gzdecode($data)) !== false) { + return $decoded; + } + elseif (function_exists('gzinflate') && ($decoded = @gzinflate($data)) !== false) { + return $decoded; + } + elseif (($decoded = self::compatible_gzinflate($data)) !== false) { + return $decoded; + } + elseif (function_exists('gzuncompress') && ($decoded = @gzuncompress($data)) !== false) { + return $decoded; + } + + return $data; + } + + /** + * Decompression of deflated string while staying compatible with the majority of servers. + * + * Certain Servers will return deflated data with headers which PHP's gzinflate() + * function cannot handle out of the box. The following function has been created from + * various snippets on the gzinflate() PHP documentation. + * + * Warning: Magic numbers within. Due to the potential different formats that the compressed + * data may be returned in, some "magic offsets" are needed to ensure proper decompression + * takes place. For a simple progmatic way to determine the magic offset in use, see: + * https://core.trac.wordpress.org/ticket/18273 + * + * @since WP-2.8.1 + * @link https://core.trac.wordpress.org/ticket/18273 + * @link https://secure.php.net/manual/en/function.gzinflate.php#70875 + * @link https://secure.php.net/manual/en/function.gzinflate.php#77336 + * + * @param string $gzData String to decompress. + * @return string|bool False on failure. + */ + public static function compatible_gzinflate($gzData) { + // Compressed data might contain a full zlib header, if so strip it for + // gzinflate() + if (substr($gzData, 0, 3) == "\x1f\x8b\x08") { + $i = 10; + $flg = ord(substr($gzData, 3, 1)); + if ($flg > 0) { + if ($flg & 4) { + list($xlen) = unpack('v', substr($gzData, $i, 2)); + $i = $i + 2 + $xlen; + } + if ($flg & 8) { + $i = strpos($gzData, "\0", $i) + 1; + } + if ($flg & 16) { + $i = strpos($gzData, "\0", $i) + 1; + } + if ($flg & 2) { + $i = $i + 2; + } + } + $decompressed = self::compatible_gzinflate(substr($gzData, $i)); + if (false !== $decompressed) { + return $decompressed; + } + } + + // If the data is Huffman Encoded, we must first strip the leading 2 + // byte Huffman marker for gzinflate() + // The response is Huffman coded by many compressors such as + // java.util.zip.Deflater, Ruby’s Zlib::Deflate, and .NET's + // System.IO.Compression.DeflateStream. + // + // See https://decompres.blogspot.com/ for a quick explanation of this + // data type + $huffman_encoded = false; + + // low nibble of first byte should be 0x08 + list(, $first_nibble) = unpack('h', $gzData); + + // First 2 bytes should be divisible by 0x1F + list(, $first_two_bytes) = unpack('n', $gzData); + + if (0x08 == $first_nibble && 0 == ($first_two_bytes % 0x1F)) { + $huffman_encoded = true; + } + + if ($huffman_encoded) { + if (false !== ($decompressed = @gzinflate(substr($gzData, 2)))) { + return $decompressed; + } + } + + if ("\x50\x4b\x03\x04" == substr($gzData, 0, 4)) { + // ZIP file format header + // Offset 6: 2 bytes, General-purpose field + // Offset 26: 2 bytes, filename length + // Offset 28: 2 bytes, optional field length + // Offset 30: Filename field, followed by optional field, followed + // immediately by data + list(, $general_purpose_flag) = unpack('v', substr($gzData, 6, 2)); + + // If the file has been compressed on the fly, 0x08 bit is set of + // the general purpose field. We can use this to differentiate + // between a compressed document, and a ZIP file + $zip_compressed_on_the_fly = (0x08 == (0x08 & $general_purpose_flag)); + + if (!$zip_compressed_on_the_fly) { + // Don't attempt to decode a compressed zip file + return $gzData; + } + + // Determine the first byte of data, based on the above ZIP header + // offsets: + $first_file_start = array_sum(unpack('v2', substr($gzData, 26, 4))); + if (false !== ($decompressed = @gzinflate(substr($gzData, 30 + $first_file_start)))) { + return $decompressed; + } + return false; + } + + // Finally fall back to straight gzinflate + if (false !== ($decompressed = @gzinflate($gzData))) { + return $decompressed; + } + + // Fallback for all above failing, not expected, but included for + // debugging and preventing regressions and to track stats + if (false !== ($decompressed = @gzinflate(substr($gzData, 2)))) { + return $decompressed; + } + + return false; + } + + public static function match_domain($host, $reference) { + // Check for a direct match + if ($host === $reference) { + return true; + } + + // Calculate the valid wildcard match if the host is not an IP address + // Also validates that the host has 3 parts or more, as per Firefox's + // ruleset. + $parts = explode('.', $host); + if (ip2long($host) === false && count($parts) >= 3) { + $parts[0] = '*'; + $wildcard = implode('.', $parts); + if ($wildcard === $reference) { + return true; + } + } + + return false; } } diff --git a/wp-includes/class-simplepie.php b/wp-includes/class-simplepie.php index 903429d..8ca0fd0 100644 --- a/wp-includes/class-simplepie.php +++ b/wp-includes/class-simplepie.php @@ -19,14 +19,14 @@ /** * ClassicPress autoloader for SimplePie. * - * @since 3.5.0 + * @since WP-3.5.0 */ function wp_simplepie_autoload( $class ) { if ( 0 !== strpos( $class, 'SimplePie_' ) ) return; $file = ABSPATH . WPINC . '/' . str_replace( '_', '/', $class ) . '.php'; - include $file; + include( $file ); } /** @@ -703,7 +703,7 @@ class SimplePie * options directly into the constructor. This has been removed as of 1.3 as * it caused a lot of confusion. * - * @since 1.0 Preview Release + * @since SimplePie 1.0 Preview Release */ public function __construct() { @@ -775,7 +775,7 @@ public function __destruct() * This tells SimplePie to ignore the content-type provided by the server. * Be careful when using this option, as it will also disable autodiscovery. * - * @since 1.1 + * @since SimplePie 1.1 * @param bool $enable Force the given data/URL to be treated as a feed */ public function force_feed($enable = false) @@ -794,7 +794,7 @@ public function force_feed($enable = false) * of a string for the $url. Remember that with each additional feed comes * additional processing and resources. * - * @since 1.0 Preview Release + * @since SimplePie 1.0 Preview Release * @see set_raw_data() * @param string|array $url This is the URL (or array of URLs) that you want to parse. */ @@ -842,7 +842,7 @@ public function set_file(&$file) * to parse that data string instead of a remote feed. Any set feed URL * takes precedence. * - * @since 1.0 Beta 3 + * @since SimplePie 1.0 Beta 3 * @param string $data RSS or Atom data as a string. * @see set_feed_url() */ @@ -857,7 +857,7 @@ public function set_raw_data($data) * This allows you to change the maximum time the feed's server to respond * and send the feed back. * - * @since 1.0 Beta 3 + * @since SimplePie 1.0 Beta 3 * @param int $timeout The maximum number of seconds to spend waiting to retrieve a feed. */ public function set_timeout($timeout = 10) @@ -870,7 +870,7 @@ public function set_timeout($timeout = 10) * * This allows you to change default curl options * - * @since 1.0 Beta 3 + * @since SimplePie 1.0 Beta 3 * @param array $curl_options Curl options to add to default settings */ public function set_curl_options(array $curl_options = array()) @@ -881,7 +881,7 @@ public function set_curl_options(array $curl_options = array()) /** * Force SimplePie to use fsockopen() instead of cURL * - * @since 1.0 Beta 3 + * @since SimplePie 1.0 Beta 3 * @param bool $enable Force fsockopen() to be used */ public function force_fsockopen($enable = false) @@ -895,7 +895,7 @@ public function force_fsockopen($enable = false) * This option allows you to disable caching all-together in SimplePie. * However, disabling the cache can lead to longer load times. * - * @since 1.0 Preview Release + * @since SimplePie 1.0 Preview Release * @param bool $enable Enable caching */ public function enable_cache($enable = true) @@ -1316,7 +1316,7 @@ public function strip_comments($strip = false) * |form|@action, |img|@longdesc, |img|@src, |input|@src, |ins|@cite, * |q|@cite * - * @since 1.0 + * @since SimplePie 1.0 * @param array|null $element_attribute Element/attribute key/value pairs, null for default */ public function set_url_replacements($element_attribute = null) @@ -1855,7 +1855,7 @@ public function get_raw_data() /** * Get the character encoding used for output * - * @since Preview Release + * @since SimplePie Preview Release * @return string */ public function get_encoding() @@ -1864,7 +1864,7 @@ public function get_encoding() } /** - * Send the Content-Type header with correct encoding + * Send the content-type header with correct encoding * * This method ensures that the SimplePie-enabled page is being served with * the correct {@link http://www.iana.org/assignments/media-types/ mime-type} @@ -1886,7 +1886,7 @@ public function handle_content_type($mime = 'text/html') { if (!headers_sent()) { - $header = "Content-Type: $mime;"; + $header = "Content-type: $mime;"; if ($this->get_encoding()) { $header .= ' charset=' . $this->get_encoding(); @@ -1905,7 +1905,7 @@ public function handle_content_type($mime = 'text/html') * This returns a SIMPLEPIE_TYPE_* constant, which can be tested against * using {@link http://php.net/language.operators.bitwise bitwise operators} * - * @since 0.8 (usage changed to using constants in 1.0) + * @since SimplePie 0.8 (usage changed to using constants in 1.0) * @see SIMPLEPIE_TYPE_NONE Unknown. * @see SIMPLEPIE_TYPE_RSS_090 RSS 0.90. * @see SIMPLEPIE_TYPE_RSS_091_NETSCAPE RSS 0.91 (Netscape). @@ -2017,7 +2017,7 @@ public function get_type() * depending on whether auto-discovery was used, and whether there were * any redirects along the way. * - * @since Preview Release (previously called `get_feed_url()` since SimplePie 0.8.) + * @since SimplePie Preview Release (previously called `get_feed_url()` since SimplePie 0.8.) * @todo Support * @todo Also, |atom:link|@rel=self * @param bool $permanent Permanent mode to return only the original URL or the first redirection @@ -2073,7 +2073,7 @@ public function subscribe_url($permanent = false) * echo $file; * * - * @since 1.0 + * @since SimplePie 1.0 * @see http://simplepie.org/wiki/faq/supported_xml_namespaces * @param string $namespace The URL of the XML namespace of the elements you're trying to access * @param string $tag Tag name @@ -2121,7 +2121,7 @@ public function get_feed_tags($namespace, $tag) * * See {@see SimplePie::get_feed_tags()} for a description of the return value * - * @since 1.0 + * @since SimplePie 1.0 * @see http://simplepie.org/wiki/faq/supported_xml_namespaces * @param string $namespace The URL of the XML namespace of the elements you're trying to access * @param string $tag Tag name @@ -2178,7 +2178,7 @@ public function get_channel_tags($namespace, $tag) * * See {@see SimplePie::get_feed_tags()} for a description of the return value * - * @since 1.0 + * @since SimplePie 1.0 * @see http://simplepie.org/wiki/faq/supported_xml_namespaces * @param string $namespace The URL of the XML namespace of the elements you're trying to access * @param string $tag Tag name @@ -2280,7 +2280,7 @@ public function sanitize($data, $type, $base = '') * * Uses ``, `` or `<dc:title>` * - * @since 1.0 (previously called `get_feed_title` since 0.8) + * @since SimplePie 1.0 (previously called `get_feed_title` since 0.8) * @return string|null */ public function get_title() @@ -2320,7 +2320,7 @@ public function get_title() /** * Get a category for the feed * - * @since Unknown + * @since SimplePie Unknown Version * @param int $key The category that you want to return. Remember that arrays begin with 0, not 1 * @return SimplePie_Category|null */ @@ -2340,7 +2340,7 @@ public function get_category($key = 0) * * Uses `<atom:category>`, `<category>` or `<dc:subject>` * - * @since Unknown + * @since SimplePie Unknown Version * @return array|null List of {@see SimplePie_Category} objects */ public function get_categories() @@ -2401,7 +2401,7 @@ public function get_categories() /** * Get an author for the feed * - * @since 1.1 + * @since SimplePie 1.1 * @param int $key The author that you want to return. Remember that arrays begin with 0, not 1 * @return SimplePie_Author|null */ @@ -2421,7 +2421,7 @@ public function get_author($key = 0) * * Uses `<atom:author>`, `<author>`, `<dc:creator>` or `<itunes:author>` * - * @since 1.1 + * @since SimplePie 1.1 * @return array|null List of {@see SimplePie_Author} objects */ public function get_authors() @@ -2495,7 +2495,7 @@ public function get_authors() /** * Get a contributor for the feed * - * @since 1.1 + * @since SimplePie 1.1 * @param int $key The contrbutor that you want to return. Remember that arrays begin with 0, not 1 * @return SimplePie_Author|null */ @@ -2515,7 +2515,7 @@ public function get_contributor($key = 0) * * Uses `<atom:contributor>` * - * @since 1.1 + * @since SimplePie 1.1 * @return array|null List of {@see SimplePie_Author} objects */ public function get_contributors() @@ -2577,7 +2577,7 @@ public function get_contributors() /** * Get a single link for the feed * - * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8) + * @since SimplePie 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8) * @param int $key The link that you want to return. Remember that arrays begin with 0, not 1 * @param string $rel The relationship of the link to return * @return string|null Link URL @@ -2600,7 +2600,7 @@ public function get_link($key = 0, $rel = 'alternate') * Identical to {@see get_link()} with key 0 * * @see get_link - * @since 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8) + * @since SimplePie 1.0 (previously called `get_feed_link` since Preview Release, `get_feed_permalink()` since 0.8) * @internal Added for parity between the parent-level and the item/entry-level. * @return string|null Link URL */ @@ -2614,7 +2614,7 @@ public function get_permalink() * * Uses `<atom:link>` or `<link>` * - * @since Beta 2 + * @since SimplePie Beta 2 * @param string $rel The relationship of links to return * @return array|null Links found for the feed (strings) */ @@ -2687,7 +2687,7 @@ public function get_links($rel = 'alternate') $link_headers = $this->data['headers']['link']; if (is_string($link_headers)) { $link_headers = array($link_headers); - } + } $matches = preg_filter('/<([^>]+)>; rel='.preg_quote($rel).'/', '$1', $link_headers); if (!empty($matches)) { return $matches; @@ -2713,7 +2713,7 @@ public function get_all_discovered_feeds() * Uses `<atom:subtitle>`, `<atom:tagline>`, `<description>`, * `<dc:description>`, `<itunes:summary>` or `<itunes:subtitle>` * - * @since 1.0 (previously called `get_feed_description()` since 0.8) + * @since SimplePie 1.0 (previously called `get_feed_description()` since 0.8) * @return string|null */ public function get_description() @@ -2763,7 +2763,7 @@ public function get_description() * * Uses `<atom:rights>`, `<atom:copyright>` or `<dc:rights>` * - * @since 1.0 (previously called `get_feed_copyright()` since 0.8) + * @since SimplePie 1.0 (previously called `get_feed_copyright()` since 0.8) * @return string|null */ public function get_copyright() @@ -2797,7 +2797,7 @@ public function get_copyright() * * Uses `<language>`, `<dc:language>`, or @xml_lang * - * @since 1.0 (previously called `get_feed_language()` since 0.8) + * @since SimplePie 1.0 (previously called `get_feed_language()` since 0.8) * @return string|null */ public function get_language() @@ -2841,7 +2841,7 @@ public function get_language() * * Uses `<geo:lat>` or `<georss:point>` * - * @since 1.0 + * @since SimplePie 1.0 * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo * @link http://www.georss.org/ GeoRSS * @return string|null @@ -2868,7 +2868,7 @@ public function get_latitude() * * Uses `<geo:long>`, `<geo:lon>` or `<georss:point>` * - * @since 1.0 + * @since SimplePie 1.0 * @link http://www.w3.org/2003/01/geo/ W3C WGS84 Basic Geo * @link http://www.georss.org/ GeoRSS * @return string|null @@ -3074,7 +3074,7 @@ public function get_item_quantity($max = 0) * {@link http://php.net/foreach foreach()} loops. * * @see get_item_quantity() - * @since Beta 2 + * @since SimplePie Beta 2 * @param int $key The item that you want to return. Remember that arrays begin with 0, not 1 * @return SimplePie_Item|null */ @@ -3097,7 +3097,7 @@ public function get_item($key = 0) * {@link http://php.net/foreach foreach()} loops. * * @see get_item_quantity - * @since Beta 2 + * @since SimplePie Beta 2 * @param int $start Index to start at * @param int $end Number of items to return. 0 for all items after `$start` * @return SimplePie_Item[]|null List of {@see SimplePie_Item} objects diff --git a/wp-includes/class-snoopy.php b/wp-includes/class-snoopy.php index e82c673..0613b05 100644 --- a/wp-includes/class-snoopy.php +++ b/wp-includes/class-snoopy.php @@ -3,7 +3,7 @@ /** * Deprecated. Use WP_HTTP (http.php) instead. */ -_deprecated_file( basename( __FILE__ ), '3.0.0', WPINC . '/http.php' ); +_deprecated_file( basename( __FILE__ ), 'WP-3.0.0', WPINC . '/http.php' ); if ( ! class_exists( 'Snoopy', false ) ) : /************************************************* @@ -53,7 +53,7 @@ class Snoopy var $cookies = array(); // array of cookies to pass // $cookies["username"]="joe"; var $rawheaders = array(); // array of raw headers to send - // $rawheaders["Content-Type"]="text/html"; + // $rawheaders["Content-type"]="text/html"; var $maxredirs = 5; // http redirection depth maximum. 0 = disallow var $lastredirectaddr = ""; // contains address of last redirected address @@ -825,13 +825,13 @@ function _httprequest($url,$fp,$URI,$http_method,$content_type="",$body="") $headers .= $headerKey.": ".$headerVal."\r\n"; } if(!empty($content_type)) { - $headers .= "Content-Type: $content_type"; + $headers .= "Content-type: $content_type"; if ($content_type == "multipart/form-data") $headers .= "; boundary=".$this->_mime_boundary; $headers .= "\r\n"; } if(!empty($body)) - $headers .= "Content-Length: ".strlen($body)."\r\n"; + $headers .= "Content-length: ".strlen($body)."\r\n"; if(!empty($this->user) || !empty($this->pass)) $headers .= "Authorization: Basic ".base64_encode($this->user.":".$this->pass)."\r\n"; @@ -990,12 +990,12 @@ function _httpsrequest($url,$URI,$http_method,$content_type="",$body="") } if(!empty($content_type)) { if ($content_type == "multipart/form-data") - $headers[] = "Content-Type: $content_type; boundary=".$this->_mime_boundary; + $headers[] = "Content-type: $content_type; boundary=".$this->_mime_boundary; else - $headers[] = "Content-Type: $content_type"; + $headers[] = "Content-type: $content_type"; } if(!empty($body)) - $headers[] = "Content-Length: ".strlen($body); + $headers[] = "Content-length: ".strlen($body); if(!empty($this->user) || !empty($this->pass)) $headers[] = "Authorization: BASIC ".base64_encode($this->user.":".$this->pass); diff --git a/wp-includes/class-walker-category-dropdown.php b/wp-includes/class-walker-category-dropdown.php index 5162aff..1d7a602 100644 --- a/wp-includes/class-walker-category-dropdown.php +++ b/wp-includes/class-walker-category-dropdown.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Template - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to create an HTML dropdown list of Categories. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker */ @@ -19,7 +19,7 @@ class Walker_CategoryDropdown extends Walker { /** * What the class handles. * - * @since 2.1.0 + * @since WP-2.1.0 * @var string * * @see Walker::$tree_type @@ -29,9 +29,9 @@ class Walker_CategoryDropdown extends Walker { /** * Database fields to use. * - * @since 2.1.0 + * @since WP-2.1.0 * @todo Decouple this - * @var string[] + * @var array * * @see Walker::$db_fields */ @@ -43,23 +43,19 @@ class Walker_CategoryDropdown extends Walker { /** * Starts the element output. * - * @since 2.1.0 - * @since 5.9.0 Renamed `$category` to `$data_object` and `$id` to `$current_object_id` - * to match parent class for PHP 8 named parameter support. + * @since WP-2.1.0 * * @see Walker::start_el() * - * @param string $output Used to append additional content (passed by reference). - * @param WP_Term $data_object Category data object. - * @param int $depth Depth of category. Used for padding. - * @param array $args Uses 'selected', 'show_count', and 'value_field' keys, if they exist. - * See wp_dropdown_categories(). - * @param int $current_object_id Optional. ID of the current category. Default 0. + * @param string $output Used to append additional content (passed by reference). + * @param object $category Category data object. + * @param int $depth Depth of category. Used for padding. + * @param array $args Uses 'selected', 'show_count', and 'value_field' keys, if they exist. + * See wp_dropdown_categories(). + * @param int $id Optional. ID of the current category. Default 0 (unused). */ - public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) { - // Restores the more descriptive, specific name for use within this method. - $category = $data_object; - $pad = str_repeat( ' ', $depth * 3 ); + public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) { + $pad = str_repeat( ' ', $depth * 3 ); /** This filter is documented in wp-includes/category-template.php */ $cat_name = apply_filters( 'list_cats', $category->name, $category ); @@ -74,7 +70,7 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ // Type-juggling causes false matches, so we force everything to a string. if ( (string) $category->{$value_field} === (string) $args['selected'] ) { - $output .= ' selected'; + $output .= ' selected="selected"'; } $output .= '>'; $output .= $pad . $cat_name; diff --git a/wp-includes/class-walker-category.php b/wp-includes/class-walker-category.php index 467bafc..e483357 100644 --- a/wp-includes/class-walker-category.php +++ b/wp-includes/class-walker-category.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Template - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to create an HTML list of categories. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker */ @@ -19,7 +19,7 @@ class Walker_Category extends Walker { /** * What the class handles. * - * @since 2.1.0 + * @since WP-2.1.0 * @var string * * @see Walker::$tree_type @@ -29,8 +29,8 @@ class Walker_Category extends Walker { /** * Database fields to use. * - * @since 2.1.0 - * @var string[] + * @since WP-2.1.0 + * @var array * * @see Walker::$db_fields * @todo Decouple this @@ -43,7 +43,7 @@ class Walker_Category extends Walker { /** * Starts the list before the elements are added. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker::start_lvl() * @@ -64,7 +64,7 @@ public function start_lvl( &$output, $depth = 0, $args = array() ) { /** * Ends the list of after the elements are added. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker::end_lvl() * @@ -85,77 +85,44 @@ public function end_lvl( &$output, $depth = 0, $args = array() ) { /** * Starts the element output. * - * @since 2.1.0 - * @since 5.9.0 Renamed `$category` to `$data_object` and `$id` to `$current_object_id` - * to match parent class for PHP 8 named parameter support. + * @since WP-2.1.0 * * @see Walker::start_el() * - * @param string $output Used to append additional content (passed by reference). - * @param WP_Term $data_object Category data object. - * @param int $depth Optional. Depth of category in reference to parents. Default 0. - * @param array $args Optional. An array of arguments. See wp_list_categories(). - * Default empty array. - * @param int $current_object_id Optional. ID of the current category. Default 0. + * @param string $output Used to append additional content (passed by reference). + * @param object $category Category data object. + * @param int $depth Optional. Depth of category in reference to parents. Default 0. + * @param array $args Optional. An array of arguments. See wp_list_categories(). Default empty array. + * @param int $id Optional. ID of the current category. Default 0. */ - public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) { - // Restores the more descriptive, specific name for use within this method. - $category = $data_object; - + public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) { /** This filter is documented in wp-includes/category-template.php */ - $cat_name = apply_filters( 'list_cats', esc_attr( $category->name ), $category ); + $cat_name = apply_filters( + 'list_cats', + esc_attr( $category->name ), + $category + ); // Don't generate an element if the category name is empty. - if ( '' === $cat_name ) { + if ( ! $cat_name ) { return; } - $atts = array(); - $atts['href'] = get_term_link( $category ); - + $link = '<a href="' . esc_url( get_term_link( $category ) ) . '" '; if ( $args['use_desc_for_title'] && ! empty( $category->description ) ) { /** * Filters the category description for display. * - * @since 1.2.0 + * @since WP-1.2.0 * - * @param string $description Category description. - * @param WP_Term $category Category object. + * @param string $description Category description. + * @param object $category Category object. */ - $atts['title'] = strip_tags( apply_filters( 'category_description', $category->description, $category ) ); + $link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"'; } - /** - * Filters the HTML attributes applied to a category list item's anchor element. - * - * @since 5.2.0 - * - * @param array $atts { - * The HTML attributes applied to the list item's `<a>` element, empty strings are ignored. - * - * @type string $href The href attribute. - * @type string $title The title attribute. - * } - * @param WP_Term $category Term data object. - * @param int $depth Depth of category, used for padding. - * @param array $args An array of arguments. - * @param int $current_object_id ID of the current category. - */ - $atts = apply_filters( 'category_list_link_attributes', $atts, $category, $depth, $args, $current_object_id ); - - $attributes = ''; - foreach ( $atts as $attr => $value ) { - if ( is_scalar( $value ) && '' !== $value && false !== $value ) { - $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); - $attributes .= ' ' . $attr . '="' . $value . '"'; - } - } - - $link = sprintf( - '<a%s>%s</a>', - $attributes, - $cat_name - ); + $link .= '>'; + $link .= $cat_name . '</a>'; if ( ! empty( $args['feed_image'] ) || ! empty( $args['feed'] ) ) { $link .= ' '; @@ -164,10 +131,9 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ $link .= '('; } - $link .= '<a href="' . esc_url( get_term_feed_link( $category, $category->taxonomy, $args['feed_type'] ) ) . '"'; + $link .= '<a href="' . esc_url( get_term_feed_link( $category->term_id, $category->taxonomy, $args['feed_type'] ) ) . '"'; if ( empty( $args['feed'] ) ) { - /* translators: %s: Category name. */ $alt = ' alt="' . sprintf( __( 'Feed for all posts filed under %s' ), $cat_name ) . '"'; } else { $alt = ' alt="' . $args['feed'] . '"'; @@ -180,7 +146,7 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ if ( empty( $args['feed_image'] ) ) { $link .= $name; } else { - $link .= "<img src='" . esc_url( $args['feed_image'] ) . "'$alt" . '>'; + $link .= "<img src='" . $args['feed_image'] . "'$alt" . ' />'; } $link .= '</a>'; @@ -202,8 +168,8 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ if ( ! empty( $args['current_category'] ) ) { // 'current_category' can be an array, so we use `get_terms()`. $_current_terms = get_terms( + $category->taxonomy, array( - 'taxonomy' => $category->taxonomy, 'include' => $args['current_category'], 'hide_empty' => false, ) @@ -212,7 +178,6 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ foreach ( $_current_terms as $_current_term ) { if ( $category->term_id == $_current_term->term_id ) { $css_classes[] = 'current-cat'; - $link = str_replace( '<a', '<a aria-current="page"', $link ); } elseif ( $category->term_id == $_current_term->parent ) { $css_classes[] = 'current-cat-parent'; } @@ -229,46 +194,45 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ /** * Filters the list of CSS classes to include with each category in the list. * - * @since 4.2.0 + * @since WP-4.2.0 * * @see wp_list_categories() * - * @param string[] $css_classes An array of CSS classes to be applied to each list item. - * @param WP_Term $category Category data object. - * @param int $depth Depth of page, used for padding. - * @param array $args An array of wp_list_categories() arguments. + * @param array $css_classes An array of CSS classes to be applied to each list item. + * @param object $category Category data object. + * @param int $depth Depth of page, used for padding. + * @param array $args An array of wp_list_categories() arguments. */ $css_classes = implode( ' ', apply_filters( 'category_css_class', $css_classes, $category, $depth, $args ) ); - $css_classes = $css_classes ? ' class="' . esc_attr( $css_classes ) . '"' : ''; - $output .= $css_classes; + $output .= ' class="' . $css_classes . '"'; $output .= ">$link\n"; } elseif ( isset( $args['separator'] ) ) { $output .= "\t$link" . $args['separator'] . "\n"; } else { - $output .= "\t$link<br>\n"; + $output .= "\t$link<br />\n"; } } /** * Ends the element output, if needed. * - * @since 2.1.0 - * @since 5.9.0 Renamed `$page` to `$data_object` to match parent class for PHP 8 named parameter support. + * @since WP-2.1.0 * * @see Walker::end_el() * - * @param string $output Used to append additional content (passed by reference). - * @param object $data_object Category data object. Not used. - * @param int $depth Optional. Depth of category. Not used. - * @param array $args Optional. An array of arguments. Only uses 'list' for whether should - * append to output. See wp_list_categories(). Default empty array. + * @param string $output Used to append additional content (passed by reference). + * @param object $page Not used. + * @param int $depth Optional. Depth of category. Not used. + * @param array $args Optional. An array of arguments. Only uses 'list' for whether should append + * to output. See wp_list_categories(). Default empty array. */ - public function end_el( &$output, $data_object, $depth = 0, $args = array() ) { + public function end_el( &$output, $page, $depth = 0, $args = array() ) { if ( 'list' !== $args['style'] ) { return; } $output .= "</li>\n"; } + } diff --git a/wp-includes/class-walker-comment.php b/wp-includes/class-walker-comment.php index c7e4001..fe6f573 100644 --- a/wp-includes/class-walker-comment.php +++ b/wp-includes/class-walker-comment.php @@ -4,14 +4,13 @@ * * @package ClassicPress * @subpackage Comments - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core walker class used to create an HTML list of comments. * - * @since 2.7.0 - * @since CP-2.0.0 Default to HTML5. Removed obsolete markup function. + * @since WP-2.7.0 * * @see Walker */ @@ -20,7 +19,7 @@ class Walker_Comment extends Walker { /** * What the class handles. * - * @since 2.7.0 + * @since WP-2.7.0 * @var string * * @see Walker::$tree_type @@ -30,8 +29,8 @@ class Walker_Comment extends Walker { /** * Database fields to use. * - * @since 2.7.0 - * @var string[] + * @since WP-2.7.0 + * @var array * * @see Walker::$db_fields * @todo Decouple this @@ -44,7 +43,7 @@ class Walker_Comment extends Walker { /** * Starts the list before the elements are added. * - * @since 2.7.0 + * @since WP-2.7.0 * * @see Walker::start_lvl() * @global int $comment_depth @@ -72,7 +71,7 @@ public function start_lvl( &$output, $depth = 0, $args = array() ) { /** * Ends the list of items after the elements are added. * - * @since 2.7.0 + * @since WP-2.7.0 * * @see Walker::end_lvl() * @global int $comment_depth @@ -117,7 +116,7 @@ public function end_lvl( &$output, $depth = 0, $args = array() ) { * 2 * 2.2 * - * @since 2.7.0 + * @since WP-2.7.0 * * @see Walker::display_element() * @see wp_list_comments() @@ -151,31 +150,26 @@ public function display_element( $element, &$children_elements, $max_depth, $dep unset( $children_elements[ $id ] ); } + } /** * Starts the element output. * - * @since 2.7.0 - * @since 5.9.0 Renamed `$comment` to `$data_object` and `$id` to `$current_object_id` - * to match parent class for PHP 8 named parameter support. - * @since CP-2.0.0 Default to 'html' output for comments. + * @since WP-2.7.0 * * @see Walker::start_el() * @see wp_list_comments() * @global int $comment_depth - * @global WP_Comment $comment Global comment object. + * @global WP_Comment $comment * - * @param string $output Used to append additional content. Passed by reference. - * @param WP_Comment $data_object Comment data object. - * @param int $depth Optional. Depth of the current comment in reference to parents. Default 0. - * @param array $args Optional. An array of arguments. Default empty array. - * @param int $current_object_id Optional. ID of the current comment. Default 0. + * @param string $output Used to append additional content. Passed by reference. + * @param WP_Comment $comment Comment data object. + * @param int $depth Optional. Depth of the current comment in reference to parents. Default 0. + * @param array $args Optional. An array of arguments. Default empty array. + * @param int $id Optional. ID of the current comment. Default 0 (unused). */ - public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) { - // Restores the more descriptive, specific name for use within this method. - $comment = $data_object; - + public function start_el( &$output, $comment, $depth = 0, $args = array(), $id = 0 ) { $depth++; $GLOBALS['comment_depth'] = $depth; $GLOBALS['comment'] = $comment; @@ -187,48 +181,38 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ return; } - if ( 'comment' === $comment->comment_type ) { - add_filter( 'comment_text', array( $this, 'filter_comment_text' ), 40, 2 ); - } - if ( ( 'pingback' === $comment->comment_type || 'trackback' === $comment->comment_type ) && $args['short_ping'] ) { ob_start(); $this->ping( $comment, $depth, $args ); $output .= ob_get_clean(); - } else { + } elseif ( 'html5' === $args['format'] ) { ob_start(); $this->html5_comment( $comment, $depth, $args ); $output .= ob_get_clean(); - } - - if ( 'comment' === $comment->comment_type ) { - remove_filter( 'comment_text', array( $this, 'filter_comment_text' ), 40 ); + } else { + ob_start(); + $this->comment( $comment, $depth, $args ); + $output .= ob_get_clean(); } } /** * Ends the element output, if needed. * - * @since 2.7.0 - * @since 5.9.0 Renamed `$comment` to `$data_object` to match parent class for PHP 8 named parameter support. + * @since WP-2.7.0 * * @see Walker::end_el() * @see wp_list_comments() * - * @param string $output Used to append additional content. Passed by reference. - * @param WP_Comment $data_object Comment data object. - * @param int $depth Optional. Depth of the current comment. Default 0. - * @param array $args Optional. An array of arguments. Default empty array. + * @param string $output Used to append additional content. Passed by reference. + * @param WP_Comment $comment The current comment object. Default current comment. + * @param int $depth Optional. Depth of the current comment. Default 0. + * @param array $args Optional. An array of arguments. Default empty array. */ - public function end_el( &$output, $data_object, $depth = 0, $args = array() ) { + public function end_el( &$output, $comment, $depth = 0, $args = array() ) { if ( ! empty( $args['end-callback'] ) ) { ob_start(); - call_user_func( - $args['end-callback'], - $data_object, // The current comment object. - $args, - $depth - ); + call_user_func( $args['end-callback'], $comment, $args, $depth ); $output .= ob_get_clean(); return; } @@ -242,7 +226,7 @@ public function end_el( &$output, $data_object, $depth = 0, $args = array() ) { /** * Outputs a pingback comment. * - * @since 3.6.0 + * @since WP-3.6.0 * * @see wp_list_comments() * @@ -261,33 +245,97 @@ protected function ping( $comment, $depth, $args ) { } /** - * Filters the comment text. + * Outputs a single comment. * - * Removes links from the pending comment's text if the commenter did not consent - * to the comment cookies. + * @since WP-3.6.0 * - * @since 5.4.2 + * @see wp_list_comments() * - * @param string $comment_text Text of the current comment. - * @param WP_Comment|null $comment The comment object. Null if not found. - * @return string Filtered text of the current comment. + * @param WP_Comment $comment Comment to display. + * @param int $depth Depth of the current comment. + * @param array $args An array of arguments. */ - public function filter_comment_text( $comment_text, $comment ) { - $commenter = wp_get_current_commenter(); - $show_pending_links = ! empty( $commenter['comment_author'] ); - - if ( $comment && '0' == $comment->comment_approved && ! $show_pending_links ) { - $comment_text = wp_kses( $comment_text, array() ); + protected function comment( $comment, $depth, $args ) { + if ( 'div' === $args['style'] ) { + $tag = 'div'; + $add_below = 'comment'; + } else { + $tag = 'li'; + $add_below = 'div-comment'; } + ?> + <<?php echo $tag; ?> <?php comment_class( $this->has_children ? 'parent' : '', $comment ); ?> id="comment-<?php comment_ID(); ?>"> + <?php if ( 'div' !== $args['style'] ) : ?> + <div id="div-comment-<?php comment_ID(); ?>" class="comment-body"> + <?php endif; ?> + <div class="comment-author vcard"> + <?php + if ( 0 != $args['avatar_size'] ) { + echo get_avatar( $comment, $args['avatar_size'] );} + ?> + <?php + /* translators: %s: comment author link */ + printf( + __( '%s <span class="says">says:</span>' ), + sprintf( '<cite class="fn">%s</cite>', get_comment_author_link( $comment ) ) + ); + ?> + </div> + <?php if ( '0' == $comment->comment_approved ) : ?> + <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></em> + <br /> + <?php endif; ?> + + <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment, $args ) ); ?>"> + <?php + /* translators: 1: comment date, 2: comment time */ + printf( __( '%1$s at %2$s' ), get_comment_date( '', $comment ), get_comment_time() ); + ?> + </a> + <?php + edit_comment_link( __( '(Edit)' ), '  ', '' ); + ?> + </div> + + <?php + comment_text( + $comment, + array_merge( + $args, + array( + 'add_below' => $add_below, + 'depth' => $depth, + 'max_depth' => $args['max_depth'], + ) + ) + ); + ?> - return $comment_text; + <?php + comment_reply_link( + array_merge( + $args, + array( + 'add_below' => $add_below, + 'depth' => $depth, + 'max_depth' => $args['max_depth'], + 'before' => '<div class="reply">', + 'after' => '</div>', + ) + ) + ); + ?> + + <?php if ( 'div' !== $args['style'] ) : ?> + </div> + <?php endif; ?> + <?php } /** * Outputs a comment in the HTML5 format. * - * @since 3.6.0 - * @since CP-2.0.0 Comment author and metadata are moved to template functions and called via hooks. + * @since WP-3.6.0 * * @see wp_list_comments() * @@ -297,45 +345,38 @@ public function filter_comment_text( $comment_text, $comment ) { */ protected function html5_comment( $comment, $depth, $args ) { $tag = ( 'div' === $args['style'] ) ? 'div' : 'li'; - - $commenter = wp_get_current_commenter(); - $show_pending_links = ! empty( $commenter['comment_author'] ); - - if ( $commenter['comment_author_email'] ) { - $moderation_note = __( 'Your comment is awaiting moderation.' ); - } else { - $moderation_note = __( 'Your comment is awaiting moderation. This is a preview; your comment will be visible after it has been approved.' ); - } ?> <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( $this->has_children ? 'parent' : '', $comment ); ?>> <article id="div-comment-<?php comment_ID(); ?>" class="comment-body"> <footer class="comment-meta"> <div class="comment-author vcard"> - <?php - /** - * Hook for including comment author data. - * Default action `display_comment_author_data` in wp-includes/comment-template.php includes comment author's name and avatar. - * - * @since CP-2.0.0 - */ - do_action( 'comment_author_data', $comment, $args, $show_pending_links ); - ?> + <?php + if ( 0 != $args['avatar_size'] ) { + echo get_avatar( $comment, $args['avatar_size'] );} + ?> + <?php + /* translators: %s: comment author link */ + printf( + __( '%s <span class="says">says:</span>' ), + sprintf( '<b class="fn">%s</b>', get_comment_author_link( $comment ) ) + ); + ?> </div><!-- .comment-author --> <div class="comment-metadata"> - <?php - /** - * Hook for including comment metadata. - * Default action `display_comment_metadata` in wp-includes/comment-template.php includes a comment's date and an edit link. - * - * @since CP-2.0.0 - */ - do_action( 'comment_metadata', $comment, $args ); - ?> + <a href="<?php echo esc_url( get_comment_link( $comment, $args ) ); ?>"> + <time datetime="<?php comment_time( 'c' ); ?>"> + <?php + /* translators: 1: comment date, 2: comment time */ + printf( __( '%1$s at %2$s' ), get_comment_date( '', $comment ), get_comment_time() ); + ?> + </time> + </a> + <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?> </div><!-- .comment-metadata --> <?php if ( '0' == $comment->comment_approved ) : ?> - <em class="comment-awaiting-moderation"><?php echo $moderation_note; ?></em> + <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></p> <?php endif; ?> </footer><!-- .comment-meta --> @@ -344,20 +385,18 @@ protected function html5_comment( $comment, $depth, $args ) { </div><!-- .comment-content --> <?php - if ( '1' == $comment->comment_approved || $show_pending_links ) { - comment_reply_link( - array_merge( - $args, - array( - 'add_below' => 'div-comment', - 'depth' => $depth, - 'max_depth' => $args['max_depth'], - 'before' => '<div class="reply">', - 'after' => '</div>', - ) + comment_reply_link( + array_merge( + $args, + array( + 'add_below' => 'div-comment', + 'depth' => $depth, + 'max_depth' => $args['max_depth'], + 'before' => '<div class="reply">', + 'after' => '</div>', ) - ); - } + ) + ); ?> </article><!-- .comment-body --> <?php diff --git a/wp-includes/class-walker-nav-menu.php b/wp-includes/class-walker-nav-menu.php index b7eb8a8..40c85fe 100644 --- a/wp-includes/class-walker-nav-menu.php +++ b/wp-includes/class-walker-nav-menu.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Nav_Menus - * @since 4.6.0 + * @since WP-4.6.0 */ /** * Core class used to implement an HTML list of nav menu items. * - * @since 3.0.0 + * @since WP-3.0.0 * * @see Walker */ @@ -18,7 +18,7 @@ class Walker_Nav_Menu extends Walker { /** * What the class handles. * - * @since 3.0.0 + * @since WP-3.0.0 * @var string * * @see Walker::$tree_type @@ -28,9 +28,9 @@ class Walker_Nav_Menu extends Walker { /** * Database fields to use. * - * @since 3.0.0 + * @since WP-3.0.0 * @todo Decouple this. - * @var string[] + * @var array * * @see Walker::$db_fields */ @@ -42,7 +42,7 @@ class Walker_Nav_Menu extends Walker { /** * Starts the list before the elements are added. * - * @since 3.0.0 + * @since WP-3.0.0 * * @see Walker::start_lvl() * @@ -50,7 +50,7 @@ class Walker_Nav_Menu extends Walker { * @param int $depth Depth of menu item. Used for padding. * @param stdClass $args An object of wp_nav_menu() arguments. */ - public function start_lvl( &$output, $depth = 0, $args = null ) { + public function start_lvl( &$output, $depth = 0, $args = array() ) { if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) { $t = ''; $n = ''; @@ -66,13 +66,13 @@ public function start_lvl( &$output, $depth = 0, $args = null ) { /** * Filters the CSS class(es) applied to a menu list element. * - * @since 4.8.0 + * @since WP-4.8.0 * - * @param string[] $classes Array of the CSS classes that are applied to the menu `<ul>` element. + * @param array $classes The CSS classes that are applied to the menu `<ul>` element. * @param stdClass $args An object of `wp_nav_menu()` arguments. * @param int $depth Depth of menu item. Used for padding. */ - $class_names = implode( ' ', apply_filters( 'nav_menu_submenu_css_class', $classes, $args, $depth ) ); + $class_names = join( ' ', apply_filters( 'nav_menu_submenu_css_class', $classes, $args, $depth ) ); $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; $output .= "{$n}{$indent}<ul$class_names>{$n}"; @@ -81,7 +81,7 @@ public function start_lvl( &$output, $depth = 0, $args = null ) { /** * Ends the list of after the elements are added. * - * @since 3.0.0 + * @since WP-3.0.0 * * @see Walker::end_lvl() * @@ -89,7 +89,7 @@ public function start_lvl( &$output, $depth = 0, $args = null ) { * @param int $depth Depth of menu item. Used for padding. * @param stdClass $args An object of wp_nav_menu() arguments. */ - public function end_lvl( &$output, $depth = 0, $args = null ) { + public function end_lvl( &$output, $depth = 0, $args = array() ) { if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) { $t = ''; $n = ''; @@ -104,23 +104,18 @@ public function end_lvl( &$output, $depth = 0, $args = null ) { /** * Starts the element output. * - * @since 3.0.0 - * @since 4.4.0 The {@see 'nav_menu_item_args'} filter was added. - * @since 5.9.0 Renamed `$item` to `$data_object` and `$id` to `$current_object_id` - * to match parent class for PHP 8 named parameter support. + * @since WP-3.0.0 + * @since WP-4.4.0 The {@see 'nav_menu_item_args'} filter was added. * * @see Walker::start_el() * - * @param string $output Used to append additional content (passed by reference). - * @param WP_Post $data_object Menu item data object. - * @param int $depth Depth of menu item. Used for padding. - * @param stdClass $args An object of wp_nav_menu() arguments. - * @param int $current_object_id Optional. ID of the current menu item. Default 0. + * @param string $output Used to append additional content (passed by reference). + * @param WP_Post $item Menu item data object. + * @param int $depth Depth of menu item. Used for padding. + * @param stdClass $args An object of wp_nav_menu() arguments. + * @param int $id Current item ID. */ - public function start_el( &$output, $data_object, $depth = 0, $args = null, $current_object_id = 0 ) { - // Restores the more descriptive, specific name for use within this method. - $menu_item = $data_object; - + public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) { $t = ''; $n = ''; @@ -130,119 +125,100 @@ public function start_el( &$output, $data_object, $depth = 0, $args = null, $cur } $indent = ( $depth ) ? str_repeat( $t, $depth ) : ''; - $classes = empty( $menu_item->classes ) ? array() : (array) $menu_item->classes; - $classes[] = 'menu-item-' . $menu_item->ID; + $classes = empty( $item->classes ) ? array() : (array) $item->classes; + $classes[] = 'menu-item-' . $item->ID; /** * Filters the arguments for a single nav menu item. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param stdClass $args An object of wp_nav_menu() arguments. - * @param WP_Post $menu_item Menu item data object. - * @param int $depth Depth of menu item. Used for padding. + * @param stdClass $args An object of wp_nav_menu() arguments. + * @param WP_Post $item Menu item data object. + * @param int $depth Depth of menu item. Used for padding. */ - $args = apply_filters( 'nav_menu_item_args', $args, $menu_item, $depth ); + $args = apply_filters( 'nav_menu_item_args', $args, $item, $depth ); /** - * Filters the CSS classes applied to a menu item's list item element. + * Filters the CSS class(es) applied to a menu item's list item element. * - * @since 3.0.0 - * @since 4.1.0 The `$depth` parameter was added. + * @since WP-3.0.0 + * @since WP-4.1.0 The `$depth` parameter was added. * - * @param string[] $classes Array of the CSS classes that are applied to the menu item's `<li>` element. - * @param WP_Post $menu_item The current menu item object. - * @param stdClass $args An object of wp_nav_menu() arguments. - * @param int $depth Depth of menu item. Used for padding. + * @param array $classes The CSS classes that are applied to the menu item's `<li>` element. + * @param WP_Post $item The current menu item. + * @param stdClass $args An object of wp_nav_menu() arguments. + * @param int $depth Depth of menu item. Used for padding. */ - $class_names = implode( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $menu_item, $args, $depth ) ); + $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) ); $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; /** - * Filters the ID attribute applied to a menu item's list item element. + * Filters the ID applied to a menu item's list item element. * - * @since 3.0.1 - * @since 4.1.0 The `$depth` parameter was added. + * @since WP-3.0.1 + * @since WP-4.1.0 The `$depth` parameter was added. * - * @param string $menu_item_id The ID attribute applied to the menu item's `<li>` element. - * @param WP_Post $menu_item The current menu item. - * @param stdClass $args An object of wp_nav_menu() arguments. - * @param int $depth Depth of menu item. Used for padding. + * @param string $menu_id The ID that is applied to the menu item's `<li>` element. + * @param WP_Post $item The current menu item. + * @param stdClass $args An object of wp_nav_menu() arguments. + * @param int $depth Depth of menu item. Used for padding. */ - $id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $menu_item->ID, $menu_item, $args, $depth ); + $id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args, $depth ); $id = $id ? ' id="' . esc_attr( $id ) . '"' : ''; $output .= $indent . '<li' . $id . $class_names . '>'; - $atts = array(); - $atts['title'] = ! empty( $menu_item->attr_title ) ? $menu_item->attr_title : ''; - $atts['target'] = ! empty( $menu_item->target ) ? $menu_item->target : ''; - - if ( ! empty( $menu_item->target ) && '_blank' === $menu_item->target ) { - $atts['rel'] = 'noopener'; - } elseif ( ! empty( $menu_item->xfn ) ) { - $atts['rel'] = $menu_item->xfn; - } - - if ( ! empty( $menu_item->url ) ) { - if ( get_privacy_policy_url() === $menu_item->url ) { - if ( ! empty( $menu_item->target && '_blank' === $menu_item->target && ! empty( $menu_item->xfn ) ) ) { - $atts['rel'] = 'nofollow privacy-policy'; - } else { - $atts['rel'] = empty( $atts['rel'] ) ? 'privacy-policy' : $atts['rel'] . ' privacy-policy'; - } - } - - $atts['href'] = $menu_item->url; - } else { - $atts['href'] = ''; - } - - $atts['aria-current'] = ! empty( $menu_item->current ) ? 'page' : ''; + $atts = array(); + $atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : ''; + $atts['target'] = ! empty( $item->target ) ? $item->target : ''; + $atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : ''; + $atts['href'] = ! empty( $item->url ) ? $item->url : ''; + $atts['aria-current'] = $item->current ? 'page' : ''; /** * Filters the HTML attributes applied to a menu item's anchor element. * - * @since 3.6.0 - * @since 4.1.0 The `$depth` parameter was added. + * @since WP-3.6.0 + * @since WP-4.1.0 The `$depth` parameter was added. * * @param array $atts { * The HTML attributes applied to the menu item's `<a>` element, empty strings are ignored. * - * @type string $title Title attribute. - * @type string $target Target attribute. - * @type string $rel The rel attribute. - * @type string $href The href attribute. - * @type string $aria-current The aria-current attribute. + * @type string $title Title attribute. + * @type string $target Target attribute. + * @type string $rel The rel attribute. + * @type string $href The href attribute. + * @type string $aria_current The aria-current attribute. * } - * @param WP_Post $menu_item The current menu item object. - * @param stdClass $args An object of wp_nav_menu() arguments. - * @param int $depth Depth of menu item. Used for padding. + * @param WP_Post $item The current menu item. + * @param stdClass $args An object of wp_nav_menu() arguments. + * @param int $depth Depth of menu item. Used for padding. */ - $atts = apply_filters( 'nav_menu_link_attributes', $atts, $menu_item, $args, $depth ); + $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth ); $attributes = ''; foreach ( $atts as $attr => $value ) { - if ( is_scalar( $value ) && '' !== $value && false !== $value ) { + if ( ! empty( $value ) ) { $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); $attributes .= ' ' . $attr . '="' . $value . '"'; } } /** This filter is documented in wp-includes/post-template.php */ - $title = apply_filters( 'the_title', $menu_item->title, $menu_item->ID ); + $title = apply_filters( 'the_title', $item->title, $item->ID ); /** * Filters a menu item's title. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param string $title The menu item's title. - * @param WP_Post $menu_item The current menu item object. - * @param stdClass $args An object of wp_nav_menu() arguments. - * @param int $depth Depth of menu item. Used for padding. + * @param string $title The menu item's title. + * @param WP_Post $item The current menu item. + * @param stdClass $args An object of wp_nav_menu() arguments. + * @param int $depth Depth of menu item. Used for padding. */ - $title = apply_filters( 'nav_menu_item_title', $title, $menu_item, $args, $depth ); + $title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth ); $item_output = $args->before; $item_output .= '<a' . $attributes . '>'; @@ -257,30 +233,29 @@ public function start_el( &$output, $data_object, $depth = 0, $args = null, $cur * the menu item's title, the closing `</a>`, and `$args->after`. Currently, there is * no filter for modifying the opening and closing `<li>` for a menu item. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $item_output The menu item's starting HTML output. - * @param WP_Post $menu_item Menu item data object. + * @param WP_Post $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @param stdClass $args An object of wp_nav_menu() arguments. */ - $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $menu_item, $depth, $args ); + $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); } /** * Ends the element output, if needed. * - * @since 3.0.0 - * @since 5.9.0 Renamed `$item` to `$data_object` to match parent class for PHP 8 named parameter support. + * @since WP-3.0.0 * * @see Walker::end_el() * - * @param string $output Used to append additional content (passed by reference). - * @param WP_Post $data_object Menu item data object. Not used. - * @param int $depth Depth of page. Not Used. - * @param stdClass $args An object of wp_nav_menu() arguments. + * @param string $output Used to append additional content (passed by reference). + * @param WP_Post $item Page data object. Not used. + * @param int $depth Depth of page. Not Used. + * @param stdClass $args An object of wp_nav_menu() arguments. */ - public function end_el( &$output, $data_object, $depth = 0, $args = null ) { + public function end_el( &$output, $item, $depth = 0, $args = array() ) { if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) { $t = ''; $n = ''; @@ -290,4 +265,5 @@ public function end_el( &$output, $data_object, $depth = 0, $args = null ) { } $output .= "</li>{$n}"; } -} + +} // Walker_Nav_Menu diff --git a/wp-includes/class-walker-page-dropdown.php b/wp-includes/class-walker-page-dropdown.php index ba282ce..972db50 100644 --- a/wp-includes/class-walker-page-dropdown.php +++ b/wp-includes/class-walker-page-dropdown.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Post - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to create an HTML drop-down list of pages. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker */ @@ -19,7 +19,7 @@ class Walker_PageDropdown extends Walker { /** * What the class handles. * - * @since 2.1.0 + * @since WP-2.1.0 * @var string * * @see Walker::$tree_type @@ -29,8 +29,8 @@ class Walker_PageDropdown extends Walker { /** * Database fields to use. * - * @since 2.1.0 - * @var string[] + * @since WP-2.1.0 + * @var array * * @see Walker::$db_fields * @todo Decouple this @@ -43,26 +43,21 @@ class Walker_PageDropdown extends Walker { /** * Starts the element output. * - * @since 2.1.0 - * @since 5.9.0 Renamed `$page` to `$data_object` and `$id` to `$current_object_id` - * to match parent class for PHP 8 named parameter support. + * @since WP-2.1.0 * * @see Walker::start_el() * - * @param string $output Used to append additional content. Passed by reference. - * @param WP_Post $data_object Page data object. - * @param int $depth Optional. Depth of page in reference to parent pages. - * Used for padding. Default 0. - * @param array $args Optional. Uses 'selected' argument for selected page to - * set selected HTML attribute for option element. Uses - * 'value_field' argument to fill "value" attribute. - * See wp_dropdown_pages(). Default empty array. - * @param int $current_object_id Optional. ID of the current page. Default 0. + * @param string $output Used to append additional content. Passed by reference. + * @param WP_Post $page Page data object. + * @param int $depth Optional. Depth of page in reference to parent pages. Used for padding. + * Default 0. + * @param array $args Optional. Uses 'selected' argument for selected page to set selected HTML + * attribute for option element. Uses 'value_field' argument to fill "value" + * attribute. See wp_dropdown_pages(). Default empty array. + * @param int $id Optional. ID of the current page. Default 0 (unused). */ - public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) { - // Restores the more descriptive, specific name for use within this method. - $page = $data_object; - $pad = str_repeat( ' ', $depth * 3 ); + public function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) { + $pad = str_repeat( ' ', $depth * 3 ); if ( ! isset( $args['value_field'] ) || ! isset( $page->{$args['value_field']} ) ) { $args['value_field'] = 'ID'; @@ -70,23 +65,23 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ $output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $page->{$args['value_field']} ) . '"'; if ( $page->ID == $args['selected'] ) { - $output .= ' selected'; + $output .= ' selected="selected"'; } $output .= '>'; $title = $page->post_title; if ( '' === $title ) { - /* translators: %d: ID of a post. */ + /* translators: %d: ID of a post */ $title = sprintf( __( '#%d (no title)' ), $page->ID ); } /** * Filters the page title when creating an HTML drop-down list of pages. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string $title Page title. - * @param WP_Post $page Page data object. + * @param string $title Page title. + * @param object $page Page data object. */ $title = apply_filters( 'list_pages', $title, $page ); diff --git a/wp-includes/class-walker-page.php b/wp-includes/class-walker-page.php index 975ca2f..7a4787b 100644 --- a/wp-includes/class-walker-page.php +++ b/wp-includes/class-walker-page.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Template - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core walker class used to create an HTML list of pages. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker */ @@ -19,7 +19,7 @@ class Walker_Page extends Walker { /** * What the class handles. * - * @since 2.1.0 + * @since WP-2.1.0 * @var string * * @see Walker::$tree_type @@ -29,8 +29,8 @@ class Walker_Page extends Walker { /** * Database fields to use. * - * @since 2.1.0 - * @var string[] + * @since WP-2.1.0 + * @var array * * @see Walker::$db_fields * @todo Decouple this. @@ -43,7 +43,7 @@ class Walker_Page extends Walker { /** * Outputs the beginning of the current level in the tree before elements are output. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker::start_lvl() * @@ -67,7 +67,7 @@ public function start_lvl( &$output, $depth = 0, $args = array() ) { /** * Outputs the end of the current level in the tree after elements are output. * - * @since 2.1.0 + * @since WP-2.1.0 * * @see Walker::end_lvl() * @@ -92,21 +92,15 @@ public function end_lvl( &$output, $depth = 0, $args = array() ) { * Outputs the beginning of the current element in the tree. * * @see Walker::start_el() - * @since 2.1.0 - * @since 5.9.0 Renamed `$page` to `$data_object` and `$current_page` to `$current_object_id` - * to match parent class for PHP 8 named parameter support. + * @since WP-2.1.0 * - * @param string $output Used to append additional content. Passed by reference. - * @param WP_Post $data_object Page data object. - * @param int $depth Optional. Depth of page. Used for padding. Default 0. - * @param array $args Optional. Array of arguments. Default empty array. - * @param int $current_object_id Optional. ID of the current page. Default 0. + * @param string $output Used to append additional content. Passed by reference. + * @param WP_Post $page Page data object. + * @param int $depth Optional. Depth of page. Used for padding. Default 0. + * @param array $args Optional. Array of arguments. Default empty array. + * @param int $current_page Optional. Page ID. Default 0. */ - public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) { - // Restores the more descriptive, specific name for use within this method. - $page = $data_object; - $current_page_id = $current_object_id; - + public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) { if ( isset( $args['item_spacing'] ) && 'preserve' === $args['item_spacing'] ) { $t = "\t"; $n = "\n"; @@ -126,14 +120,14 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ $css_class[] = 'page_item_has_children'; } - if ( ! empty( $current_page_id ) ) { - $_current_page = get_post( $current_page_id ); + if ( ! empty( $current_page ) ) { + $_current_page = get_post( $current_page ); if ( $_current_page && in_array( $page->ID, $_current_page->ancestors, true ) ) { $css_class[] = 'current_page_ancestor'; } - if ( $page->ID == $current_page_id ) { + if ( $page->ID == $current_page ) { $css_class[] = 'current_page_item'; } elseif ( $_current_page && $page->ID === $_current_page->post_parent ) { $css_class[] = 'current_page_parent'; @@ -145,21 +139,21 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ /** * Filters the list of CSS classes to include with each page item in the list. * - * @since 2.8.0 + * @since WP-2.8.0 * * @see wp_list_pages() * - * @param string[] $css_class An array of CSS classes to be applied to each list item. - * @param WP_Post $page Page data object. - * @param int $depth Depth of page, used for padding. - * @param array $args An array of arguments. - * @param int $current_page_id ID of the current page. + * @param array $css_class An array of CSS classes to be applied + * to each list item. + * @param WP_Post $page Page data object. + * @param int $depth Depth of page, used for padding. + * @param array $args An array of arguments. + * @param int $current_page ID of the current page. */ - $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page_id ) ); - $css_classes = $css_classes ? ' class="' . esc_attr( $css_classes ) . '"' : ''; + $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) ); if ( '' === $page->post_title ) { - /* translators: %d: ID of a post. */ + /* translators: %d: ID of a post */ $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID ); } @@ -168,36 +162,36 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ $atts = array(); $atts['href'] = get_permalink( $page->ID ); - $atts['aria-current'] = ( $page->ID == $current_page_id ) ? 'page' : ''; + $atts['aria-current'] = ( $page->ID == $current_page ) ? 'page' : ''; /** * Filters the HTML attributes applied to a page menu item's anchor element. * - * @since 4.8.0 + * @since WP-4.8.0 * * @param array $atts { * The HTML attributes applied to the menu item's `<a>` element, empty strings are ignored. * * @type string $href The href attribute. - * @type string $aria-current The aria-current attribute. + * @type string $aria_current The aria-current attribute. * } - * @param WP_Post $page Page data object. - * @param int $depth Depth of page, used for padding. - * @param array $args An array of arguments. - * @param int $current_page_id ID of the current page. + * @param WP_Post $page Page data object. + * @param int $depth Depth of page, used for padding. + * @param array $args An array of arguments. + * @param int $current_page ID of the current page. */ - $atts = apply_filters( 'page_menu_link_attributes', $atts, $page, $depth, $args, $current_page_id ); + $atts = apply_filters( 'page_menu_link_attributes', $atts, $page, $depth, $args, $current_page ); $attributes = ''; foreach ( $atts as $attr => $value ) { - if ( is_scalar( $value ) && '' !== $value && false !== $value ) { - $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); + if ( ! empty( $value ) ) { + $value = esc_attr( $value ); $attributes .= ' ' . $attr . '="' . $value . '"'; } } $output .= $indent . sprintf( - '<li%s><a%s>%s%s%s</a>', + '<li class="%s"><a%s>%s%s%s</a>', $css_classes, $attributes, $args['link_before'], @@ -221,17 +215,16 @@ public function start_el( &$output, $data_object, $depth = 0, $args = array(), $ /** * Outputs the end of the current element in the tree. * - * @since 2.1.0 - * @since 5.9.0 Renamed `$page` to `$data_object` to match parent class for PHP 8 named parameter support. + * @since WP-2.1.0 * * @see Walker::end_el() * - * @param string $output Used to append additional content. Passed by reference. - * @param WP_Post $data_object Page data object. Not used. - * @param int $depth Optional. Depth of page. Default 0 (unused). - * @param array $args Optional. Array of arguments. Default empty array. + * @param string $output Used to append additional content. Passed by reference. + * @param WP_Post $page Page data object. Not used. + * @param int $depth Optional. Depth of page. Default 0 (unused). + * @param array $args Optional. Array of arguments. Default empty array. */ - public function end_el( &$output, $data_object, $depth = 0, $args = array() ) { + public function end_el( &$output, $page, $depth = 0, $args = array() ) { if ( isset( $args['item_spacing'] ) && 'preserve' === $args['item_spacing'] ) { $t = "\t"; $n = "\n"; @@ -241,4 +234,5 @@ public function end_el( &$output, $data_object, $depth = 0, $args = array() ) { } $output .= "</li>{$n}"; } + } diff --git a/wp-includes/class-wp-admin-bar.php b/wp-includes/class-wp-admin-bar.php index 7062bce..5117d47 100644 --- a/wp-includes/class-wp-admin-bar.php +++ b/wp-includes/class-wp-admin-bar.php @@ -4,23 +4,20 @@ * * @package ClassicPress * @subpackage Toolbar - * @since 3.1.0 + * @since WP-3.1.0 */ /** * Core class used to implement the Toolbar API. * - * @since 3.1.0 + * @since WP-3.1.0 */ -#[AllowDynamicProperties] class WP_Admin_Bar { private $nodes = array(); private $bound = false; public $user; /** - * @since 3.3.0 - * * @param string $name * @return string|array|void */ @@ -30,18 +27,15 @@ public function __get( $name ) { return is_ssl() ? 'https://' : 'http://'; case 'menu': - _deprecated_argument( 'WP_Admin_Bar', '3.3.0', 'Modify admin bar nodes with WP_Admin_Bar::get_node(), WP_Admin_Bar::add_node(), and WP_Admin_Bar::remove_node(), not the <code>menu</code> property.' ); + _deprecated_argument( 'WP_Admin_Bar', 'WP-3.3.0', 'Modify admin bar nodes with WP_Admin_Bar::get_node(), WP_Admin_Bar::add_node(), and WP_Admin_Bar::remove_node(), not the <code>menu</code> property.' ); return array(); // Sorry, folks. } } /** - * Initializes the admin bar. - * - * @since 3.1.0 */ public function initialize() { - $this->user = new stdClass(); + $this->user = new stdClass; if ( is_user_logged_in() ) { /* Populate settings we need for the menu based on the current user. */ @@ -63,7 +57,7 @@ public function initialize() { if ( current_theme_supports( 'admin-bar' ) ) { /** - * To remove the default padding styles from WordPress for the Toolbar, use the following code: + * To remove the default padding styles from ClassicPress for the Toolbar, use the following code: * add_theme_support( 'admin-bar', array( 'callback' => '__return_false' ) ); */ $admin_bar_args = get_theme_support( 'admin-bar' ); @@ -82,28 +76,20 @@ public function initialize() { /** * Fires after WP_Admin_Bar is initialized. * - * @since 3.1.0 + * @since WP-3.1.0 */ do_action( 'admin_bar_init' ); } /** - * Adds a node (menu item) to the admin bar menu. - * - * @since 3.3.0 - * - * @param array $node The attributes that define the node. + * @param array $node */ public function add_menu( $node ) { $this->add_node( $node ); } /** - * Removes a node from the admin bar. - * - * @since 3.1.0 - * - * @param string $id The menu slug to remove. + * @param string $id */ public function remove_menu( $id ) { $this->remove_node( $id ); @@ -112,8 +98,8 @@ public function remove_menu( $id ) { /** * Adds a node to the menu. * - * @since 3.1.0 - * @since 4.5.0 Added the ability to pass 'lang' and 'dir' meta data. + * @since WP-3.1.0 + * @since WP-4.5.0 Added the ability to pass 'lang' and 'dir' meta data. * * @param array $args { * Arguments for adding a node. @@ -128,9 +114,9 @@ public function remove_menu( $id ) { * } */ public function add_node( $args ) { - // Shim for old method signature: add_node( $parent_id, $menu_obj, $args ). - if ( func_num_args() >= 3 && is_string( $args ) ) { - $args = array_merge( array( 'parent' => $args ), func_get_arg( 2 ) ); + // Shim for old method signature: add_node( $parent_id, $menu_obj, $args ) + if ( func_num_args() >= 3 && is_string( func_get_arg( 0 ) ) ) { + $args = array_merge( array( 'parent' => func_get_arg( 0 ) ), func_get_arg( 2 ) ); } if ( is_object( $args ) ) { @@ -143,7 +129,7 @@ public function add_node( $args ) { return; } - _doing_it_wrong( __METHOD__, __( 'The menu ID should not be empty.' ), '3.3.0' ); + _doing_it_wrong( __METHOD__, __( 'The menu ID should not be empty.' ), 'WP-3.3.0' ); // Deprecated: Generate an ID from the title. $args['id'] = esc_attr( sanitize_title( trim( $args['title'] ) ) ); } @@ -185,8 +171,6 @@ public function add_node( $args ) { } /** - * @since 3.3.0 - * * @param array $args */ final protected function _set_node( $args ) { @@ -196,10 +180,8 @@ final protected function _set_node( $args ) { /** * Gets a node. * - * @since 3.3.0 - * * @param string $id - * @return object|void Node. + * @return object Node. */ final public function get_node( $id ) { $node = $this->_get_node( $id ); @@ -209,8 +191,6 @@ final public function get_node( $id ) { } /** - * @since 3.3.0 - * * @param string $id * @return object|void */ @@ -229,8 +209,6 @@ final protected function _get_node( $id ) { } /** - * @since 3.3.0 - * * @return array|void */ final public function get_nodes() { @@ -246,8 +224,6 @@ final public function get_nodes() { } /** - * @since 3.3.0 - * * @return array|void */ final protected function _get_nodes() { @@ -259,11 +235,9 @@ final protected function _get_nodes() { } /** - * Adds a group to a toolbar menu node. - * - * Groups can be used to organize toolbar items into distinct sections of a toolbar menu. + * Add a group to a menu node. * - * @since 3.3.0 + * @since WP-3.3.0 * * @param array $args { * Array of arguments for adding a group. @@ -283,8 +257,6 @@ final public function add_group( $args ) { /** * Remove a node. * - * @since 3.1.0 - * * @param string $id The ID of the item. */ public function remove_node( $id ) { @@ -292,8 +264,6 @@ public function remove_node( $id ) { } /** - * @since 3.3.0 - * * @param string $id */ final protected function _unset_node( $id ) { @@ -301,7 +271,6 @@ final protected function _unset_node( $id ) { } /** - * @since 3.1.0 */ public function render() { $root = $this->_bind(); @@ -311,8 +280,6 @@ public function render() { } /** - * @since 3.3.0 - * * @return object|void */ final protected function _bind() { @@ -449,24 +416,34 @@ final protected function _bind() { } /** - * @since 3.3.0 * + * @global bool $is_IE * @param object $root */ final protected function _render( $root ) { + global $is_IE; + // Add browser classes. // We have to do this here since admin bar shows on the front end. $class = 'nojq nojs'; - if ( wp_is_mobile() ) { + if ( $is_IE ) { + if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE 7' ) ) { + $class .= ' ie7'; + } elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE 8' ) ) { + $class .= ' ie8'; + } elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE 9' ) ) { + $class .= ' ie9'; + } + } elseif ( wp_is_mobile() ) { $class .= ' mobile'; } ?> <div id="wpadminbar" class="<?php echo $class; ?>"> - <?php if ( ! is_admin() && ! did_action( 'wp_body_open' ) ) { ?> + <?php if ( ! is_admin() ) { ?> <a class="screen-reader-shortcut" href="#wp-toolbar" tabindex="1"><?php _e( 'Skip to toolbar' ); ?></a> <?php } ?> - <div class="quicklinks" id="wp-toolbar" role="navigation" aria-label="<?php esc_attr_e( 'Toolbar' ); ?>"> + <div class="quicklinks" id="wp-toolbar" role="navigation" aria-label="<?php esc_attr_e( 'Toolbar' ); ?>" tabindex="0"> <?php foreach ( $root->children as $group ) { $this->_render_group( $group ); @@ -482,8 +459,6 @@ final protected function _render( $root ) { } /** - * @since 3.3.0 - * * @param object $node */ final protected function _render_container( $node ) { @@ -499,8 +474,6 @@ final protected function _render_container( $node ) { } /** - * @since 3.3.0 - * * @param object $node */ final protected function _render_group( $node ) { @@ -526,8 +499,6 @@ final protected function _render_group( $node ) { } /** - * @since 3.3.0 - * * @param object $node */ final protected function _render_item( $node ) { @@ -535,17 +506,14 @@ final protected function _render_item( $node ) { return; } - $is_parent = ! empty( $node->children ); - $has_link = ! empty( $node->href ); - $is_root_top_item = 'root-default' === $node->parent; - $is_top_secondary_item = 'top-secondary' === $node->parent; + $is_parent = ! empty( $node->children ); + $has_link = ! empty( $node->href ); // Allow only numeric values, then casted to integers, and allow a tabindex value of `0` for a11y. $tabindex = ( isset( $node->meta['tabindex'] ) && is_numeric( $node->meta['tabindex'] ) ) ? (int) $node->meta['tabindex'] : ''; $aria_attributes = ( '' !== $tabindex ) ? ' tabindex="' . $tabindex . '"' : ''; $menuclass = ''; - $arrow = ''; if ( $is_parent ) { $menuclass = 'menupop '; @@ -556,11 +524,6 @@ final protected function _render_item( $node ) { $menuclass .= $node->meta['class']; } - // Print the arrow icon for the menu children with children. - if ( ! $is_root_top_item && ! $is_top_secondary_item && $is_parent ) { - $arrow = '<span class="wp-admin-bar-arrow" aria-hidden="true"></span>'; - } - if ( $menuclass ) { $menuclass = ' class="' . esc_attr( trim( $menuclass ) ) . '"'; } @@ -571,7 +534,7 @@ final protected function _render_item( $node ) { $attributes = array( 'onclick', 'target', 'title', 'rel', 'lang', 'dir' ); echo "<a class='ab-item'$aria_attributes href='" . esc_url( $node->href ) . "'"; } else { - $attributes = array( 'onclick', 'target', 'title', 'rel', 'lang', 'dir' ); + $attributes = array( 'title', 'lang', 'dir' ); echo '<div class="ab-item ab-empty-item"' . $aria_attributes; } @@ -587,7 +550,7 @@ final protected function _render_item( $node ) { } } - echo ">{$arrow}{$node->title}"; + echo ">{$node->title}"; if ( $has_link ) { echo '</a>'; @@ -613,8 +576,8 @@ final protected function _render_item( $node ) { /** * Renders toolbar items recursively. * - * @since 3.1.0 - * @deprecated 3.3.0 Use WP_Admin_Bar::_render_item() or WP_Admin_bar::render() instead. + * @since WP-3.1.0 + * @deprecated WP-3.3.0 Use WP_Admin_Bar::_render_item() or WP_Admin_bar::render() instead. * @see WP_Admin_Bar::_render_item() * @see WP_Admin_Bar::render() * @@ -622,23 +585,19 @@ final protected function _render_item( $node ) { * @param object $node */ public function recursive_render( $id, $node ) { - _deprecated_function( __METHOD__, '3.3.0', 'WP_Admin_bar::render(), WP_Admin_Bar::_render_item()' ); + _deprecated_function( __METHOD__, 'WP-3.3.0', 'WP_Admin_bar::render(), WP_Admin_Bar::_render_item()' ); $this->_render_item( $node ); } /** - * Adds menus to the admin bar. - * - * @since 3.1.0 */ public function add_menus() { - // User-related, aligned right. + // User related, aligned right. add_action( 'admin_bar_menu', 'wp_admin_bar_my_account_menu', 0 ); add_action( 'admin_bar_menu', 'wp_admin_bar_search_menu', 4 ); add_action( 'admin_bar_menu', 'wp_admin_bar_my_account_item', 7 ); - add_action( 'admin_bar_menu', 'wp_admin_bar_recovery_mode_menu', 8 ); - // Site-related. + // Site related. add_action( 'admin_bar_menu', 'wp_admin_bar_sidebar_toggle', 0 ); add_action( 'admin_bar_menu', 'wp_admin_bar_wp_menu', 10 ); add_action( 'admin_bar_menu', 'wp_admin_bar_my_sites_menu', 20 ); @@ -646,7 +605,7 @@ public function add_menus() { add_action( 'admin_bar_menu', 'wp_admin_bar_customize_menu', 40 ); add_action( 'admin_bar_menu', 'wp_admin_bar_updates_menu', 50 ); - // Content-related. + // Content related. if ( ! is_network_admin() && ! is_user_admin() ) { add_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu', 60 ); add_action( 'admin_bar_menu', 'wp_admin_bar_new_content_menu', 70 ); @@ -658,7 +617,7 @@ public function add_menus() { /** * Fires after menus are added to the menu bar. * - * @since 3.1.0 + * @since WP-3.1.0 */ do_action( 'add_admin_bar_menus' ); } diff --git a/wp-includes/class-wp-ajax-response.php b/wp-includes/class-wp-ajax-response.php index a0706be..2977c53 100644 --- a/wp-includes/class-wp-ajax-response.php +++ b/wp-includes/class-wp-ajax-response.php @@ -3,14 +3,13 @@ * Send XML response back to Ajax request. * * @package ClassicPress - * @since 2.1.0 + * @since WP-2.1.0 */ -#[AllowDynamicProperties] class WP_Ajax_Response { /** * Store XML responses to send. * - * @since 2.1.0 + * @since WP-2.1.0 * @var array */ public $responses = array(); @@ -18,8 +17,7 @@ class WP_Ajax_Response { /** * Constructor - Passes args to WP_Ajax_Response::add(). * - * @since 2.1.0 - * + * @since WP-2.1.0 * @see WP_Ajax_Response::add() * * @param string|array $args Optional. Will be passed to add() method. @@ -41,7 +39,7 @@ public function __construct( $args = '' ) { * </$what> * </response> * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string|array $args { * Optional. An array or string of XML response arguments. @@ -56,7 +54,7 @@ public function __construct( $args = '' ) { * @type int|false $old_id The previous response ID. Used as the value for the response type * `old_id` attribute. False hides the attribute. Default false. * @type string $position Value of the response type `position` attribute. Accepts 1 (bottom), - * -1 (top), HTML ID (after), or -HTML ID (before). Default 1 (bottom). + * -1 (top), html ID (after), or -html ID (before). Default 1 (bottom). * @type string|WP_Error $data The response content/message. Also accepts a WP_Error object if the * ID does not exist. Default empty. * @type array $supplemental An array of extra strings that will be output within a `<supplemental>` @@ -92,7 +90,7 @@ public function add( $args = '' ) { $response = ''; if ( is_wp_error( $data ) ) { foreach ( (array) $data->get_error_codes() as $code ) { - $response .= "<wp_error code='$code'><![CDATA[" . $data->get_error_message( $code ) . ']]></wp_error>'; + $response .= "<wp_error code='$code'><![CDATA[" . $data->get_error_message( $code ) . ']]></wp_error>'; $error_data = $data->get_error_data( $code ); if ( ! $error_data ) { continue; @@ -131,7 +129,7 @@ public function add( $args = '' ) { $action = $_POST['action']; } $x = ''; - $x .= "<response action='{$action}_$id'>"; // The action attribute in the xml output is formatted like a nonce action. + $x .= "<response action='{$action}_$id'>"; // The action attribute in the xml output is formatted like a nonce action $x .= "<$what id='$id' " . ( false === $old_id ? '' : "old_id='$old_id' " ) . "position='$position'>"; $x .= $response; $x .= $s; @@ -147,7 +145,7 @@ public function add( $args = '' ) { * * Sets the content type header to text/xml. * - * @since 2.1.0 + * @since WP-2.1.0 */ public function send() { header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ) ); diff --git a/wp-includes/class-wp-application-passwords.php b/wp-includes/class-wp-application-passwords.php deleted file mode 100644 index 57b6928..0000000 --- a/wp-includes/class-wp-application-passwords.php +++ /dev/null @@ -1,414 +0,0 @@ -<?php -/** - * WP_Application_Passwords class - * - * @package ClassicPress - * @since 5.6.0 - */ - -/** - * Class for displaying, modifying, and sanitizing application passwords. - * - * @package WordPress - */ -#[AllowDynamicProperties] -class WP_Application_Passwords { - - /** - * The application passwords user meta key. - * - * @since 5.6.0 - * - * @var string - */ - const USERMETA_KEY_APPLICATION_PASSWORDS = '_application_passwords'; - - /** - * The option name used to store whether application passwords are in use. - * - * @since 5.6.0 - * - * @var string - */ - const OPTION_KEY_IN_USE = 'using_application_passwords'; - - /** - * The generated application password length. - * - * @since 5.6.0 - * - * @var int - */ - const PW_LENGTH = 24; - - /** - * Checks if application passwords are being used by the site. - * - * This returns true if at least one application password has ever been created. - * - * @since 5.6.0 - * - * @return bool - */ - public static function is_in_use() { - $network_id = get_main_network_id(); - return (bool) get_network_option( $network_id, self::OPTION_KEY_IN_USE ); - } - - /** - * Creates a new application password. - * - * @since 5.6.0 - * @since 5.7.0 Returns WP_Error if application name already exists. - * - * @param int $user_id User ID. - * @param array $args { - * Arguments used to create the application password. - * - * @type string $name The name of the application password. - * @type string $app_id A UUID provided by the application to uniquely identify it. - * } - * @return array|WP_Error The first key in the array is the new password, the second is its detailed information. - * A WP_Error instance is returned on error. - */ - public static function create_new_application_password( $user_id, $args = array() ) { - if ( ! empty( $args['name'] ) ) { - $args['name'] = sanitize_text_field( $args['name'] ); - } - - if ( empty( $args['name'] ) ) { - return new WP_Error( 'application_password_empty_name', __( 'An application name is required to create an application password.' ), array( 'status' => 400 ) ); - } - - if ( self::application_name_exists_for_user( $user_id, $args['name'] ) ) { - return new WP_Error( 'application_password_duplicate_name', __( 'Each application name should be unique.' ), array( 'status' => 409 ) ); - } - - $new_password = wp_generate_password( static::PW_LENGTH, false ); - $hashed_password = wp_hash_password( $new_password ); - - $new_item = array( - 'uuid' => wp_generate_uuid4(), - 'app_id' => empty( $args['app_id'] ) ? '' : $args['app_id'], - 'name' => $args['name'], - 'password' => $hashed_password, - 'created' => time(), - 'last_used' => null, - 'last_ip' => null, - ); - - $passwords = static::get_user_application_passwords( $user_id ); - $passwords[] = $new_item; - $saved = static::set_user_application_passwords( $user_id, $passwords ); - - if ( ! $saved ) { - return new WP_Error( 'db_error', __( 'Could not save application password.' ) ); - } - - $network_id = get_main_network_id(); - if ( ! get_network_option( $network_id, self::OPTION_KEY_IN_USE ) ) { - update_network_option( $network_id, self::OPTION_KEY_IN_USE, true ); - } - - /** - * Fires when an application password is created. - * - * @since 5.6.0 - * - * @param int $user_id The user ID. - * @param array $new_item { - * The details about the created password. - * - * @type string $uuid The unique identifier for the application password. - * @type string $app_id A UUID provided by the application to uniquely identify it. - * @type string $name The name of the application password. - * @type string $password A one-way hash of the password. - * @type int $created Unix timestamp of when the password was created. - * @type null $last_used Null. - * @type null $last_ip Null. - * } - * @param string $new_password The unhashed generated application password. - * @param array $args { - * Arguments used to create the application password. - * - * @type string $name The name of the application password. - * @type string $app_id A UUID provided by the application to uniquely identify it. - * } - */ - do_action( 'wp_create_application_password', $user_id, $new_item, $new_password, $args ); - - return array( $new_password, $new_item ); - } - - /** - * Gets a user's application passwords. - * - * @since 5.6.0 - * - * @param int $user_id User ID. - * @return array { - * The list of app passwords. - * - * @type array ...$0 { - * @type string $uuid The unique identifier for the application password. - * @type string $app_id A UUID provided by the application to uniquely identify it. - * @type string $name The name of the application password. - * @type string $password A one-way hash of the password. - * @type int $created Unix timestamp of when the password was created. - * @type int|null $last_used The Unix timestamp of the GMT date the application password was last used. - * @type string|null $last_ip The IP address the application password was last used by. - * } - * } - */ - public static function get_user_application_passwords( $user_id ) { - $passwords = get_user_meta( $user_id, static::USERMETA_KEY_APPLICATION_PASSWORDS, true ); - - if ( ! is_array( $passwords ) ) { - return array(); - } - - $save = false; - - foreach ( $passwords as $i => $password ) { - if ( ! isset( $password['uuid'] ) ) { - $passwords[ $i ]['uuid'] = wp_generate_uuid4(); - $save = true; - } - } - - if ( $save ) { - static::set_user_application_passwords( $user_id, $passwords ); - } - - return $passwords; - } - - /** - * Gets a user's application password with the given UUID. - * - * @since 5.6.0 - * - * @param int $user_id User ID. - * @param string $uuid The password's UUID. - * @return array|null The application password if found, null otherwise. - */ - public static function get_user_application_password( $user_id, $uuid ) { - $passwords = static::get_user_application_passwords( $user_id ); - - foreach ( $passwords as $password ) { - if ( $password['uuid'] === $uuid ) { - return $password; - } - } - - return null; - } - - /** - * Checks if an application password with the given name exists for this user. - * - * @since 5.7.0 - * - * @param int $user_id User ID. - * @param string $name Application name. - * @return bool Whether the provided application name exists. - */ - public static function application_name_exists_for_user( $user_id, $name ) { - $passwords = static::get_user_application_passwords( $user_id ); - - foreach ( $passwords as $password ) { - if ( strtolower( $password['name'] ) === strtolower( $name ) ) { - return true; - } - } - - return false; - } - - /** - * Updates an application password. - * - * @since 5.6.0 - * - * @param int $user_id User ID. - * @param string $uuid The password's UUID. - * @param array $update Information about the application password to update. - * @return true|WP_Error True if successful, otherwise a WP_Error instance is returned on error. - */ - public static function update_application_password( $user_id, $uuid, $update = array() ) { - $passwords = static::get_user_application_passwords( $user_id ); - - foreach ( $passwords as &$item ) { - if ( $item['uuid'] !== $uuid ) { - continue; - } - - if ( ! empty( $update['name'] ) ) { - $update['name'] = sanitize_text_field( $update['name'] ); - } - - $save = false; - - if ( ! empty( $update['name'] ) && $item['name'] !== $update['name'] ) { - $item['name'] = $update['name']; - $save = true; - } - - if ( $save ) { - $saved = static::set_user_application_passwords( $user_id, $passwords ); - - if ( ! $saved ) { - return new WP_Error( 'db_error', __( 'Could not save application password.' ) ); - } - } - - /** - * Fires when an application password is updated. - * - * @since 5.6.0 - * - * @param int $user_id The user ID. - * @param array $item The updated app password details. - * @param array $update The information to update. - */ - do_action( 'wp_update_application_password', $user_id, $item, $update ); - - return true; - } - - return new WP_Error( 'application_password_not_found', __( 'Could not find an application password with that id.' ) ); - } - - /** - * Records that an application password has been used. - * - * @since 5.6.0 - * - * @param int $user_id User ID. - * @param string $uuid The password's UUID. - * @return true|WP_Error True if the usage was recorded, a WP_Error if an error occurs. - */ - public static function record_application_password_usage( $user_id, $uuid ) { - $passwords = static::get_user_application_passwords( $user_id ); - - foreach ( $passwords as &$password ) { - if ( $password['uuid'] !== $uuid ) { - continue; - } - - // Only record activity once a day. - if ( $password['last_used'] + DAY_IN_SECONDS > time() ) { - return true; - } - - $password['last_used'] = time(); - $password['last_ip'] = $_SERVER['REMOTE_ADDR']; - - $saved = static::set_user_application_passwords( $user_id, $passwords ); - - if ( ! $saved ) { - return new WP_Error( 'db_error', __( 'Could not save application password.' ) ); - } - - return true; - } - - // Specified application password not found! - return new WP_Error( 'application_password_not_found', __( 'Could not find an application password with that id.' ) ); - } - - /** - * Deletes an application password. - * - * @since 5.6.0 - * - * @param int $user_id User ID. - * @param string $uuid The password's UUID. - * @return true|WP_Error Whether the password was successfully found and deleted, a WP_Error otherwise. - */ - public static function delete_application_password( $user_id, $uuid ) { - $passwords = static::get_user_application_passwords( $user_id ); - - foreach ( $passwords as $key => $item ) { - if ( $item['uuid'] === $uuid ) { - unset( $passwords[ $key ] ); - $saved = static::set_user_application_passwords( $user_id, $passwords ); - - if ( ! $saved ) { - return new WP_Error( 'db_error', __( 'Could not delete application password.' ) ); - } - - /** - * Fires when an application password is deleted. - * - * @since 5.6.0 - * - * @param int $user_id The user ID. - * @param array $item The data about the application password. - */ - do_action( 'wp_delete_application_password', $user_id, $item ); - - return true; - } - } - - return new WP_Error( 'application_password_not_found', __( 'Could not find an application password with that id.' ) ); - } - - /** - * Deletes all application passwords for the given user. - * - * @since 5.6.0 - * - * @param int $user_id User ID. - * @return int|WP_Error The number of passwords that were deleted or a WP_Error on failure. - */ - public static function delete_all_application_passwords( $user_id ) { - $passwords = static::get_user_application_passwords( $user_id ); - - if ( $passwords ) { - $saved = static::set_user_application_passwords( $user_id, array() ); - - if ( ! $saved ) { - return new WP_Error( 'db_error', __( 'Could not delete application passwords.' ) ); - } - - foreach ( $passwords as $item ) { - /** This action is documented in wp-includes/class-wp-application-passwords.php */ - do_action( 'wp_delete_application_password', $user_id, $item ); - } - - return count( $passwords ); - } - - return 0; - } - - /** - * Sets a user's application passwords. - * - * @since 5.6.0 - * - * @param int $user_id User ID. - * @param array $passwords Application passwords. - * - * @return bool - */ - protected static function set_user_application_passwords( $user_id, $passwords ) { - return update_user_meta( $user_id, static::USERMETA_KEY_APPLICATION_PASSWORDS, $passwords ); - } - - /** - * Sanitizes and then splits a password into smaller chunks. - * - * @since 5.6.0 - * - * @param string $raw_password The raw application password. - * @return string The chunked password. - */ - public static function chunk_password( $raw_password ) { - $raw_password = preg_replace( '/[^a-z\d]/i', '', $raw_password ); - - return trim( chunk_split( $raw_password, 4, ' ' ) ); - } -} diff --git a/wp-includes/class-wp-comment-query.php b/wp-includes/class-wp-comment-query.php index f20cd62..666beea 100644 --- a/wp-includes/class-wp-comment-query.php +++ b/wp-includes/class-wp-comment-query.php @@ -4,23 +4,22 @@ * * @package ClassicPress * @subpackage Comments - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used for querying comments. * - * @since 3.1.0 + * @since WP-3.1.0 * * @see WP_Comment_Query::__construct() for accepted arguments. */ -#[AllowDynamicProperties] class WP_Comment_Query { /** * SQL for database query. * - * @since 4.0.1 + * @since WP-4.0.1 * @var string */ public $request; @@ -28,15 +27,15 @@ class WP_Comment_Query { /** * Metadata query container * - * @since 3.5.0 - * @var WP_Meta_Query A meta query instance. + * @since WP-3.5.0 + * @var object WP_Meta_Query */ public $meta_query = false; /** * Metadata query clauses. * - * @since 4.4.0 + * @since WP-4.4.0 * @var array */ protected $meta_query_clauses; @@ -44,7 +43,7 @@ class WP_Comment_Query { /** * SQL query clauses. * - * @since 4.4.0 + * @since WP-4.4.0 * @var array */ protected $sql_clauses = array( @@ -61,7 +60,7 @@ class WP_Comment_Query { * * Stored after the {@see 'comments_clauses'} filter is run on the compiled WHERE sub-clauses. * - * @since 4.4.2 + * @since WP-4.4.2 * @var string */ protected $filtered_where_clause; @@ -69,15 +68,15 @@ class WP_Comment_Query { /** * Date query container * - * @since 3.7.0 - * @var WP_Date_Query A date query instance. + * @since WP-3.7.0 + * @var object WP_Date_Query */ public $date_query = false; /** * Query vars set by the user. * - * @since 3.1.0 + * @since WP-3.1.0 * @var array */ public $query_vars; @@ -85,7 +84,7 @@ class WP_Comment_Query { /** * Default values for query vars. * - * @since 4.2.0 + * @since WP-4.2.0 * @var array */ public $query_var_defaults; @@ -93,15 +92,15 @@ class WP_Comment_Query { /** * List of comments located by the query. * - * @since 4.0.0 - * @var int[]|WP_Comment[] + * @since WP-4.0.0 + * @var array */ public $comments; /** * The amount of found comments for the current query. * - * @since 4.4.0 + * @since WP-4.4.0 * @var int */ public $found_comments = 0; @@ -109,7 +108,7 @@ class WP_Comment_Query { /** * The number of pages. * - * @since 4.4.0 + * @since WP-4.4.0 * @var int */ public $max_num_pages = 0; @@ -117,15 +116,15 @@ class WP_Comment_Query { /** * Make private/protected methods readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $name Method to call. - * @param array $arguments Arguments to pass when calling. + * @param callable $name Method to call. + * @param array $arguments Arguments to pass when calling. * @return mixed|false Return value of the callback, false otherwise. */ public function __call( $name, $arguments ) { if ( 'get_search_sql' === $name ) { - return $this->get_search_sql( ...$arguments ); + return call_user_func_array( array( $this, $name ), $arguments ); } return false; } @@ -135,139 +134,119 @@ public function __call( $name, $arguments ) { * * Sets up the comment query, based on the query vars passed. * - * @since 4.2.0 - * @since 4.4.0 `$parent__in` and `$parent__not_in` were added. - * @since 4.4.0 Order by `comment__in` was added. `$update_comment_meta_cache`, `$no_found_rows`, + * @since WP-4.2.0 + * @since WP-4.4.0 `$parent__in` and `$parent__not_in` were added. + * @since WP-4.4.0 Order by `comment__in` was added. `$update_comment_meta_cache`, `$no_found_rows`, * `$hierarchical`, and `$update_comment_post_cache` were added. - * @since 4.5.0 Introduced the `$author_url` argument. - * @since 4.6.0 Introduced the `$cache_domain` argument. - * @since 4.9.0 Introduced the `$paged` argument. - * @since 5.1.0 Introduced the `$meta_compare_key` argument. - * @since 5.3.0 Introduced the `$meta_type_key` argument. + * @since WP-4.5.0 Introduced the `$author_url` argument. + * @since WP-4.6.0 Introduced the `$cache_domain` argument. + * @since WP-4.9.0 Introduced the `$paged` argument. * * @param string|array $query { * Optional. Array or query string of comment query parameters. Default empty. * - * @type string $author_email Comment author email address. Default empty. - * @type string $author_url Comment author URL. Default empty. - * @type int[] $author__in Array of author IDs to include comments for. Default empty. - * @type int[] $author__not_in Array of author IDs to exclude comments for. Default empty. - * @type int[] $comment__in Array of comment IDs to include. Default empty. - * @type int[] $comment__not_in Array of comment IDs to exclude. Default empty. - * @type bool $count Whether to return a comment count (true) or array of - * comment objects (false). Default false. - * @type array $date_query Date query clauses to limit comments by. See WP_Date_Query. - * Default null. - * @type string $fields Comment fields to return. Accepts 'ids' for comment IDs - * only or empty for all fields. Default empty. - * @type array $include_unapproved Array of IDs or email addresses of users whose unapproved - * comments will be returned by the query regardless of - * `$status`. Default empty. - * @type int $karma Karma score to retrieve matching comments for. - * Default empty. - * @type string|string[] $meta_key Meta key or keys to filter by. - * @type string|string[] $meta_value Meta value or values to filter by. - * @type string $meta_compare MySQL operator used for comparing the meta value. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_compare_key MySQL operator used for comparing the meta key. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type MySQL data type that the meta_value column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type_key MySQL data type that the meta_key column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type array $meta_query An associative array of WP_Meta_Query arguments. - * See WP_Meta_Query::__construct() for accepted values. - * @type int $number Maximum number of comments to retrieve. - * Default empty (no limit). - * @type int $paged When used with `$number`, defines the page of results to return. - * When used with `$offset`, `$offset` takes precedence. Default 1. - * @type int $offset Number of comments to offset the query. Used to build - * LIMIT clause. Default 0. - * @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. - * Default: true. - * @type string|array $orderby Comment status or array of statuses. To use 'meta_value' - * or 'meta_value_num', `$meta_key` must also be defined. - * To sort by a specific `$meta_query` clause, use that - * clause's array key. Accepts: - * - 'comment_agent' - * - 'comment_approved' - * - 'comment_author' - * - 'comment_author_email' - * - 'comment_author_IP' - * - 'comment_author_url' - * - 'comment_content' - * - 'comment_date' - * - 'comment_date_gmt' - * - 'comment_ID' - * - 'comment_karma' - * - 'comment_parent' - * - 'comment_post_ID' - * - 'comment_type' - * - 'user_id' - * - 'comment__in' - * - 'meta_value' - * - 'meta_value_num' - * - The value of `$meta_key` - * - The array keys of `$meta_query` - * - false, an empty array, or 'none' to disable `ORDER BY` clause. - * Default: 'comment_date_gmt'. - * @type string $order How to order retrieved comments. Accepts 'ASC', 'DESC'. - * Default: 'DESC'. - * @type int $parent Parent ID of comment to retrieve children of. - * Default empty. - * @type int[] $parent__in Array of parent IDs of comments to retrieve children for. - * Default empty. - * @type int[] $parent__not_in Array of parent IDs of comments *not* to retrieve - * children for. Default empty. - * @type int[] $post_author__in Array of author IDs to retrieve comments for. - * Default empty. - * @type int[] $post_author__not_in Array of author IDs *not* to retrieve comments for. - * Default empty. - * @type int $post_id Limit results to those affiliated with a given post ID. - * Default 0. - * @type int[] $post__in Array of post IDs to include affiliated comments for. - * Default empty. - * @type int[] $post__not_in Array of post IDs to exclude affiliated comments for. - * Default empty. - * @type int $post_author Post author ID to limit results by. Default empty. - * @type string|string[] $post_status Post status or array of post statuses to retrieve - * affiliated comments for. Pass 'any' to match any value. - * Default empty. - * @type string|string[] $post_type Post type or array of post types to retrieve affiliated - * comments for. Pass 'any' to match any value. Default empty. - * @type string $post_name Post name to retrieve affiliated comments for. - * Default empty. - * @type int $post_parent Post parent ID to retrieve affiliated comments for. - * Default empty. - * @type string $search Search term(s) to retrieve matching comments for. - * Default empty. - * @type string|array $status Comment statuses to limit results by. Accepts an array - * or space/comma-separated list of 'hold' (`comment_status=0`), - * 'approve' (`comment_status=1`), 'all', or a custom - * comment status. Default 'all'. - * @type string|string[] $type Include comments of a given type, or array of types. - * Accepts 'comment', 'pings' (includes 'pingback' and - * 'trackback'), or any custom type string. Default empty. - * @type string[] $type__in Include comments from a given array of comment types. - * Default empty. - * @type string[] $type__not_in Exclude comments from a given array of comment types. - * Default empty. - * @type int $user_id Include comments for a specific user ID. Default empty. - * @type bool|string $hierarchical Whether to include comment descendants in the results. - * - 'threaded' returns a tree, with each comment's children - * stored in a `children` property on the `WP_Comment` object. - * - 'flat' returns a flat array of found comments plus - * their children. - * - Boolean `false` leaves out descendants. - * The parameter is ignored (forced to `false`) when - * `$fields` is 'ids' or 'counts'. Accepts 'threaded', - * 'flat', or false. Default: false. - * @type string $cache_domain Unique cache key to be produced when this query is stored in - * an object cache. Default is 'core'. - * @type bool $update_comment_meta_cache Whether to prime the metadata cache for found comments. - * Default true. - * @type bool $update_comment_post_cache Whether to prime the cache for comment posts. - * Default false. + * @type string $author_email Comment author email address. Default empty. + * @type string $author_url Comment author URL. Default empty. + * @type array $author__in Array of author IDs to include comments for. Default empty. + * @type array $author__not_in Array of author IDs to exclude comments for. Default empty. + * @type array $comment__in Array of comment IDs to include. Default empty. + * @type array $comment__not_in Array of comment IDs to exclude. Default empty. + * @type bool $count Whether to return a comment count (true) or array of + * comment objects (false). Default false. + * @type array $date_query Date query clauses to limit comments by. See WP_Date_Query. + * Default null. + * @type string $fields Comment fields to return. Accepts 'ids' for comment IDs + * only or empty for all fields. Default empty. + * @type int $ID Currently unused. + * @type array $include_unapproved Array of IDs or email addresses of users whose unapproved + * comments will be returned by the query regardless of + * `$status`. Default empty. + * @type int $karma Karma score to retrieve matching comments for. + * Default empty. + * @type string $meta_key Include comments with a matching comment meta key. + * Default empty. + * @type string $meta_value Include comments with a matching comment meta value. + * Requires `$meta_key` to be set. Default empty. + * @type array $meta_query Meta query clauses to limit retrieved comments by. + * See WP_Meta_Query. Default empty. + * @type int $number Maximum number of comments to retrieve. + * Default empty (no limit). + * @type int $paged When used with $number, defines the page of results to return. + * When used with $offset, $offset takes precedence. Default 1. + * @type int $offset Number of comments to offset the query. Used to build + * LIMIT clause. Default 0. + * @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. + * Default: true. + * @type string|array $orderby Comment status or array of statuses. To use 'meta_value' + * or 'meta_value_num', `$meta_key` must also be defined. + * To sort by a specific `$meta_query` clause, use that + * clause's array key. Accepts 'comment_agent', + * 'comment_approved', 'comment_author', + * 'comment_author_email', 'comment_author_IP', + * 'comment_author_url', 'comment_content', 'comment_date', + * 'comment_date_gmt', 'comment_ID', 'comment_karma', + * 'comment_parent', 'comment_post_ID', 'comment_type', + * 'user_id', 'comment__in', 'meta_value', 'meta_value_num', + * the value of $meta_key, and the array keys of + * `$meta_query`. Also accepts false, an empty array, or + * 'none' to disable `ORDER BY` clause. + * Default: 'comment_date_gmt'. + * @type string $order How to order retrieved comments. Accepts 'ASC', 'DESC'. + * Default: 'DESC'. + * @type int $parent Parent ID of comment to retrieve children of. + * Default empty. + * @type array $parent__in Array of parent IDs of comments to retrieve children for. + * Default empty. + * @type array $parent__not_in Array of parent IDs of comments *not* to retrieve + * children for. Default empty. + * @type array $post_author__in Array of author IDs to retrieve comments for. + * Default empty. + * @type array $post_author__not_in Array of author IDs *not* to retrieve comments for. + * Default empty. + * @type int $post_ID Currently unused. + * @type int $post_id Limit results to those affiliated with a given post ID. + * Default 0. + * @type array $post__in Array of post IDs to include affiliated comments for. + * Default empty. + * @type array $post__not_in Array of post IDs to exclude affiliated comments for. + * Default empty. + * @type int $post_author Post author ID to limit results by. Default empty. + * @type string|array $post_status Post status or array of post statuses to retrieve + * affiliated comments for. Pass 'any' to match any value. + * Default empty. + * @type string $post_type Post type or array of post types to retrieve affiliated + * comments for. Pass 'any' to match any value. Default empty. + * @type string $post_name Post name to retrieve affiliated comments for. + * Default empty. + * @type int $post_parent Post parent ID to retrieve affiliated comments for. + * Default empty. + * @type string $search Search term(s) to retrieve matching comments for. + * Default empty. + * @type string $status Comment status to limit results by. Accepts 'hold' + * (`comment_status=0`), 'approve' (`comment_status=1`), + * 'all', or a custom comment status. Default 'all'. + * @type string|array $type Include comments of a given type, or array of types. + * Accepts 'comment', 'pings' (includes 'pingback' and + * 'trackback'), or anycustom type string. Default empty. + * @type array $type__in Include comments from a given array of comment types. + * Default empty. + * @type array $type__not_in Exclude comments from a given array of comment types. + * Default empty. + * @type int $user_id Include comments for a specific user ID. Default empty. + * @type bool|string $hierarchical Whether to include comment descendants in the results. + * 'threaded' returns a tree, with each comment's children + * stored in a `children` property on the `WP_Comment` + * object. 'flat' returns a flat array of found comments plus + * their children. Pass `false` to leave out descendants. + * The parameter is ignored (forced to `false`) when + * `$fields` is 'ids' or 'counts'. Accepts 'threaded', + * 'flat', or false. Default: false. + * @type string $cache_domain Unique cache key to be produced when this query is stored in + * an object cache. Default is 'core'. + * @type bool $update_comment_meta_cache Whether to prime the metadata cache for found comments. + * Default true. + * @type bool $update_comment_post_cache Whether to prime the cache for comment posts. + * Default false. * } */ public function __construct( $query = '' ) { @@ -312,7 +291,7 @@ public function __construct( $query = '' ) { 'meta_key' => '', 'meta_value' => '', 'meta_query' => '', - 'date_query' => null, // See WP_Date_Query. + 'date_query' => null, // See WP_Date_Query 'hierarchical' => false, 'cache_domain' => 'core', 'update_comment_meta_cache' => true, @@ -327,7 +306,8 @@ public function __construct( $query = '' ) { /** * Parse arguments passed to the comment query with default query parameters. * - * @since 4.2.0 Extracted from WP_Comment_Query::query(). + * @since WP-4.2.0 Extracted from WP_Comment_Query::query(). + * * * @param string|array $query WP_Comment_Query arguments. See WP_Comment_Query::__construct() */ @@ -341,22 +321,22 @@ public function parse_query( $query = '' ) { /** * Fires after the comment query vars have been parsed. * - * @since 4.2.0 + * @since WP-4.2.0 * - * @param WP_Comment_Query $query The WP_Comment_Query instance (passed by reference). + * @param WP_Comment_Query $this The WP_Comment_Query instance (passed by reference). */ do_action_ref_array( 'parse_comment_query', array( &$this ) ); } /** - * Sets up the WordPress query for retrieving comments. + * Sets up the ClassicPress query for retrieving comments. * - * @since 3.1.0 - * @since 4.1.0 Introduced 'comment__in', 'comment__not_in', 'post_author__in', + * @since WP-3.1.0 + * @since WP-4.1.0 Introduced 'comment__in', 'comment__not_in', 'post_author__in', * 'post_author__not_in', 'author__in', 'author__not_in', 'post__in', * 'post__not_in', 'include_unapproved', 'type__in', and 'type__not_in' * arguments to $query_vars. - * @since 4.2.0 Moved parsing to WP_Comment_Query::parse_query(). + * @since WP-4.2.0 Moved parsing to WP_Comment_Query::parse_query(). * * @param string|array $query Array or URL query string of parameters. * @return array|int List of comments, or number of comments when 'count' is passed as a query var. @@ -369,27 +349,27 @@ public function query( $query ) { /** * Get a list of comments matching the query vars. * - * @since 4.2.0 + * @since WP-4.2.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @return int|int[]|WP_Comment[] List of comments or number of found comments if `$count` argument is true. + * @return int|array List of comments or number of found comments if `$count` argument is true. */ public function get_comments() { global $wpdb; $this->parse_query(); - // Parse meta query. + // Parse meta query $this->meta_query = new WP_Meta_Query(); $this->meta_query->parse_query_vars( $this->query_vars ); /** * Fires before comments are retrieved. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param WP_Comment_Query $query Current instance of WP_Comment_Query (passed by reference). + * @param WP_Comment_Query $this Current instance of WP_Comment_Query (passed by reference). */ do_action_ref_array( 'pre_get_comments', array( &$this ) ); @@ -399,54 +379,12 @@ public function get_comments() { $this->meta_query_clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this ); } - $comment_data = null; - - /** - * Filters the comments data before the query takes place. - * - * Return a non-null value to bypass WordPress' default comment queries. - * - * The expected return type from this filter depends on the value passed - * in the request query vars: - * - When `$this->query_vars['count']` is set, the filter should return - * the comment count as an integer. - * - When `'ids' === $this->query_vars['fields']`, the filter should return - * an array of comment IDs. - * - Otherwise the filter should return an array of WP_Comment objects. - * - * Note that if the filter returns an array of comment data, it will be assigned - * to the `comments` property of the current WP_Comment_Query instance. - * - * Filtering functions that require pagination information are encouraged to set - * the `found_comments` and `max_num_pages` properties of the WP_Comment_Query object, - * passed to the filter by reference. If WP_Comment_Query does not perform a database - * query, it will not have enough information to generate these values itself. - * - * @since 5.3.0 - * @since 5.6.0 The returned array of comment data is assigned to the `comments` property - * of the current WP_Comment_Query instance. - * - * @param array|int|null $comment_data Return an array of comment data to short-circuit WP's comment query, - * the comment count as an integer if `$this->query_vars['count']` is set, - * or null to allow WP to run its normal queries. - * @param WP_Comment_Query $query The WP_Comment_Query instance, passed by reference. - */ - $comment_data = apply_filters_ref_array( 'comments_pre_query', array( $comment_data, &$this ) ); - - if ( null !== $comment_data ) { - if ( is_array( $comment_data ) && ! $this->query_vars['count'] ) { - $this->comments = $comment_data; - } - - return $comment_data; - } - /* * Only use the args defined in the query_var_defaults to compute the key, - * but ignore 'fields', 'update_comment_meta_cache', 'update_comment_post_cache' which does not affect query results. + * but ignore 'fields', which does not affect query results. */ $_args = wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ); - unset( $_args['fields'], $_args['update_comment_meta_cache'], $_args['update_comment_post_cache'] ); + unset( $_args['fields'] ); $key = md5( serialize( $_args ) ); $last_changed = wp_cache_get_last_changed( 'comment' ); @@ -476,21 +414,17 @@ public function get_comments() { // If querying for a count only, there's nothing more to do. if ( $this->query_vars['count'] ) { // $comment_ids is actually a count in this case. - return (int) $comment_ids; + return intval( $comment_ids ); } $comment_ids = array_map( 'intval', $comment_ids ); - if ( $this->query_vars['update_comment_meta_cache'] ) { - wp_lazyload_comment_meta( $comment_ids ); - } - if ( 'ids' === $this->query_vars['fields'] ) { $this->comments = $comment_ids; return $this->comments; } - _prime_comment_caches( $comment_ids, false ); + _prime_comment_caches( $comment_ids, $this->query_vars['update_comment_meta_cache'] ); // Fetch full comment objects from the primed cache. $_comments = array(); @@ -514,10 +448,10 @@ public function get_comments() { /** * Filters the comment query results. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param WP_Comment[] $_comments An array of comments. - * @param WP_Comment_Query $query Current instance of WP_Comment_Query (passed by reference). + * @param array $_comments An array of comments. + * @param WP_Comment_Query $this Current instance of WP_Comment_Query (passed by reference). */ $_comments = apply_filters_ref_array( 'the_comments', array( $_comments, &$this ) ); @@ -535,11 +469,9 @@ public function get_comments() { /** * Used internally to get a list of comment IDs matching the query vars. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @return int|array A single count of comment IDs if a count query. An array of comment IDs if a full query. + * @global wpdb $wpdb ClassicPress database abstraction object. */ protected function get_comment_ids() { global $wpdb; @@ -549,11 +481,9 @@ protected function get_comment_ids() { // 'status' accepts an array or a comma-separated string. $status_clauses = array(); - $statuses = wp_parse_list( $this->query_vars['status'] ); - - // Empty 'status' should be interpreted as 'all'. - if ( empty( $statuses ) ) { - $statuses = array( 'all' ); + $statuses = $this->query_vars['status']; + if ( ! is_array( $statuses ) ) { + $statuses = preg_split( '/[\s,]+/', $statuses ); } // 'any' overrides other statuses. @@ -586,23 +516,22 @@ protected function get_comment_ids() { // User IDs or emails whose unapproved comments are included, regardless of $status. if ( ! empty( $this->query_vars['include_unapproved'] ) ) { - $include_unapproved = wp_parse_list( $this->query_vars['include_unapproved'] ); + $include_unapproved = $this->query_vars['include_unapproved']; - $unapproved_ids = array(); - $unapproved_emails = array(); + // Accepts arrays or comma-separated strings. + if ( ! is_array( $include_unapproved ) ) { + $include_unapproved = preg_split( '/[\s,]+/', $include_unapproved ); + } + + $unapproved_ids = $unapproved_emails = array(); foreach ( $include_unapproved as $unapproved_identifier ) { - // Numeric values are assumed to be user IDs. + // Numeric values are assumed to be user ids. if ( is_numeric( $unapproved_identifier ) ) { $approved_clauses[] = $wpdb->prepare( "( user_id = %d AND comment_approved = '0' )", $unapproved_identifier ); - } else { + // Otherwise we match against email addresses. - if ( ! empty( $_GET['unapproved'] ) && ! empty( $_GET['moderation-hash'] ) ) { - // Only include requested comment. - $approved_clauses[] = $wpdb->prepare( "( comment_author_email = %s AND comment_approved = '0' AND {$wpdb->comments}.comment_ID = %d )", $unapproved_identifier, (int) $_GET['unapproved'] ); - } else { - // Include all of the author's unapproved comments. - $approved_clauses[] = $wpdb->prepare( "( comment_author_email = %s AND comment_approved = '0' )", $unapproved_identifier ); - } + } else { + $approved_clauses[] = $wpdb->prepare( "( comment_author_email = %s AND comment_approved = '0' )", $unapproved_identifier ); } } } @@ -780,7 +709,7 @@ protected function get_comment_ids() { foreach ( $_raw_types as $type ) { switch ( $type ) { - // An empty translates to 'all', for backward compatibility. + // An empty translates to 'all', for backward compatibility case '': case 'all': break; @@ -788,7 +717,6 @@ protected function get_comment_ids() { case 'comment': case 'comments': $comment_types[ $operator ][] = "''"; - $comment_types[ $operator ][] = "'comment'"; break; case 'pings': @@ -823,8 +751,8 @@ protected function get_comment_ids() { $this->sql_clauses['where']['user_id'] = $wpdb->prepare( 'user_id = %d', $this->query_vars['user_id'] ); } - // Falsey search strings are ignored. - if ( isset( $this->query_vars['search'] ) && strlen( $this->query_vars['search'] ) ) { + // Falsy search strings are ignored. + if ( strlen( $this->query_vars['search'] ) ) { $search_sql = $this->get_search_sql( $this->query_vars['search'], array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' ) @@ -843,7 +771,7 @@ protected function get_comment_ids() { $join_posts_table = true; foreach ( $post_fields as $field_name => $field_value ) { // $field_value may be an array. - $esses = array_fill( 0, count( (array) $field_value ), '%s' ); + $esses = array_fill( 0, count( (array) $field_value ), '%s' ); // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value ); @@ -866,7 +794,7 @@ protected function get_comment_ids() { $join_posts_table = true; - $esses = array_fill( 0, count( $q_values ), '%s' ); + $esses = array_fill( 0, count( $q_values ), '%s' ); // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare $this->sql_clauses['where'][ $field_name ] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $q_values ); @@ -914,23 +842,20 @@ protected function get_comment_ids() { } if ( ! empty( $this->query_vars['date_query'] ) && is_array( $this->query_vars['date_query'] ) ) { - $this->date_query = new WP_Date_Query( $this->query_vars['date_query'], 'comment_date' ); - - // Strip leading 'AND'. + $this->date_query = new WP_Date_Query( $this->query_vars['date_query'], 'comment_date' ); $this->sql_clauses['where']['date_query'] = preg_replace( '/^\s*AND\s*/', '', $this->date_query->get_sql() ); } $where = implode( ' AND ', $this->sql_clauses['where'] ); $pieces = array( 'fields', 'join', 'where', 'orderby', 'limits', 'groupby' ); - /** * Filters the comment query clauses. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string[] $clauses An associative array of comment query clauses. - * @param WP_Comment_Query $query Current instance of WP_Comment_Query (passed by reference). + * @param array $pieces A compacted array of comment query clauses. + * @param WP_Comment_Query $this Current instance of WP_Comment_Query (passed by reference). */ $clauses = apply_filters_ref_array( 'comments_clauses', array( compact( $pieces ), &$this ) ); @@ -966,17 +891,10 @@ protected function get_comment_ids() { $this->sql_clauses['orderby'] = $orderby; $this->sql_clauses['limits'] = $limits; - $this->request = " - {$this->sql_clauses['select']} - {$this->sql_clauses['from']} - {$where} - {$this->sql_clauses['groupby']} - {$this->sql_clauses['orderby']} - {$this->sql_clauses['limits']} - "; + $this->request = "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} {$this->sql_clauses['orderby']} {$this->sql_clauses['limits']}"; if ( $this->query_vars['count'] ) { - return (int) $wpdb->get_var( $this->request ); + return intval( $wpdb->get_var( $this->request ) ); } else { $comment_ids = $wpdb->get_col( $this->request ); return array_map( 'intval', $comment_ids ); @@ -987,9 +905,9 @@ protected function get_comment_ids() { * Populates found_comments and max_num_pages properties for the current * query if the limit clause was used. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. */ private function set_found_comments() { global $wpdb; @@ -998,7 +916,7 @@ private function set_found_comments() { /** * Filters the query used to retrieve found comment count. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $found_comments_query SQL query. Default 'SELECT FOUND_ROWS()'. * @param WP_Comment_Query $comment_query The `WP_Comment_Query` instance. @@ -1015,11 +933,11 @@ private function set_found_comments() { * Instead of calling `get_children()` separately on each child comment, we do a single set of queries to fetch * the descendant trees for all matched top-level comments. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param WP_Comment[] $comments Array of top-level comments whose descendants should be filled in. + * @param array $comments Array of top-level comments whose descendants should be filled in. * @return array */ protected function fill_descendants( $comments ) { @@ -1039,20 +957,14 @@ protected function fill_descendants( $comments ) { // Parent-child relationships may be cached. Only query for those that are not. $child_ids = array(); $uncached_parent_ids = array(); - $_parent_ids = $levels[ $level ]; - if ( $_parent_ids ) { - $cache_keys = array(); - foreach ( $_parent_ids as $parent_id ) { - $cache_keys[ $parent_id ] = "get_comment_child_ids:$parent_id:$key:$last_changed"; - } - $cache_data = wp_cache_get_multiple( array_values( $cache_keys ), 'comment-queries' ); - foreach ( $_parent_ids as $parent_id ) { - $parent_child_ids = $cache_data[ $cache_keys[ $parent_id ] ]; - if ( false !== $parent_child_ids ) { - $child_ids = array_merge( $child_ids, $parent_child_ids ); - } else { - $uncached_parent_ids[] = $parent_id; - } + $_parent_ids = $levels[ $level ]; + foreach ( $_parent_ids as $parent_id ) { + $cache_key = "get_comment_child_ids:$parent_id:$key:$last_changed"; + $parent_child_ids = wp_cache_get( $cache_key, 'comment' ); + if ( false !== $parent_child_ids ) { + $child_ids = array_merge( $child_ids, $parent_child_ids ); + } else { + $uncached_parent_ids[] = $parent_id; } } @@ -1077,12 +989,10 @@ protected function fill_descendants( $comments ) { $child_ids[] = $level_comment->comment_ID; } - $data = array(); foreach ( $parent_map as $parent_id => $children ) { - $cache_key = "get_comment_child_ids:$parent_id:$key:$last_changed"; - $data[ $cache_key ] = $children; + $cache_key = "get_comment_child_ids:$parent_id:$key:$last_changed"; + wp_cache_set( $cache_key, $children, 'comment' ); } - wp_cache_set_multiple( $data, 'comment' ); } $level++; @@ -1137,24 +1047,24 @@ protected function fill_descendants( $comments ) { } /** - * Used internally to generate an SQL string for searching across multiple columns. + * Used internally to generate an SQL string for searching across multiple columns * - * @since 3.1.0 + * @since WP-3.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param string $search Search string. - * @param string[] $columns Array of columns to search. - * @return string Search SQL. + * @param string $string + * @param array $cols + * @return string */ - protected function get_search_sql( $search, $columns ) { + protected function get_search_sql( $string, $cols ) { global $wpdb; - $like = '%' . $wpdb->esc_like( $search ) . '%'; + $like = '%' . $wpdb->esc_like( $string ) . '%'; $searches = array(); - foreach ( $columns as $column ) { - $searches[] = $wpdb->prepare( "$column LIKE %s", $like ); + foreach ( $cols as $col ) { + $searches[] = $wpdb->prepare( "$col LIKE %s", $like ); } return ' AND (' . implode( ' OR ', $searches ) . ')'; @@ -1163,9 +1073,9 @@ protected function get_search_sql( $search, $columns ) { /** * Parse and sanitize 'orderby' keys passed to the comment query. * - * @since 4.2.0 + * @since WP-4.2.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $orderby Alias for the field to order by. * @return string|false Value to used in the ORDER clause. False otherwise. @@ -1226,7 +1136,7 @@ protected function parse_orderby( $orderby ) { /** * Parse an 'order' query variable and cast it to ASC or DESC as necessary. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param string $order The 'order' query variable. * @return string The sanitized 'order' query variable. diff --git a/wp-includes/class-wp-comment.php b/wp-includes/class-wp-comment.php index 493cc9d..faf6c9b 100644 --- a/wp-includes/class-wp-comment.php +++ b/wp-includes/class-wp-comment.php @@ -4,41 +4,36 @@ * * @package ClassicPress * @subpackage Comments - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to organize comments as instantiated objects with defined members. * - * @since 4.4.0 + * @since WP-4.4.0 */ -#[AllowDynamicProperties] final class WP_Comment { /** * Comment ID. * - * A numeric string, for compatibility reasons. - * - * @since 4.4.0 - * @var string + * @since WP-4.4.0 + * @var int */ public $comment_ID; /** * ID of the post the comment is associated with. * - * A numeric string, for compatibility reasons. - * - * @since 4.4.0 - * @var string + * @since WP-4.4.0 + * @var int */ public $comment_post_ID = 0; /** * Comment author name. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_author = ''; @@ -46,7 +41,7 @@ final class WP_Comment { /** * Comment author email address. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_author_email = ''; @@ -54,7 +49,7 @@ final class WP_Comment { /** * Comment author URL. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_author_url = ''; @@ -62,7 +57,7 @@ final class WP_Comment { /** * Comment author IP address (IPv4 format). * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_author_IP = ''; @@ -70,7 +65,7 @@ final class WP_Comment { /** * Comment date in YYYY-MM-DD HH:MM:SS format. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_date = '0000-00-00 00:00:00'; @@ -78,7 +73,7 @@ final class WP_Comment { /** * Comment GMT date in YYYY-MM-DD HH::MM:SS format. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_date_gmt = '0000-00-00 00:00:00'; @@ -86,7 +81,7 @@ final class WP_Comment { /** * Comment content. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_content; @@ -94,17 +89,15 @@ final class WP_Comment { /** * Comment karma count. * - * A numeric string, for compatibility reasons. - * - * @since 4.4.0 - * @var string + * @since WP-4.4.0 + * @var int */ public $comment_karma = 0; /** * Comment approval status. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_approved = '1'; @@ -112,7 +105,7 @@ final class WP_Comment { /** * Comment author HTTP user agent. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $comment_agent = ''; @@ -120,36 +113,31 @@ final class WP_Comment { /** * Comment type. * - * @since 4.4.0 - * @since 5.5.0 Default value changed to `comment`. + * @since WP-4.4.0 * @var string */ - public $comment_type = 'comment'; + public $comment_type = ''; /** * Parent comment ID. * - * A numeric string, for compatibility reasons. - * - * @since 4.4.0 - * @var string + * @since WP-4.4.0 + * @var int */ public $comment_parent = 0; /** * Comment author ID. * - * A numeric string, for compatibility reasons. - * - * @since 4.4.0 - * @var string + * @since WP-4.4.0 + * @var int */ public $user_id = 0; /** * Comment children. * - * @since 4.4.0 + * @since WP-4.4.0 * @var array */ protected $children; @@ -157,7 +145,7 @@ final class WP_Comment { /** * Whether children have been populated for this comment object. * - * @since 4.4.0 + * @since WP-4.4.0 * @var bool */ protected $populated_children = false; @@ -165,7 +153,7 @@ final class WP_Comment { /** * Post fields. * - * @since 4.4.0 + * @since WP-4.4.0 * @var array */ protected $post_fields = array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_content_filtered', 'post_parent', 'guid', 'menu_order', 'post_type', 'post_mime_type', 'comment_count' ); @@ -173,9 +161,10 @@ final class WP_Comment { /** * Retrieves a WP_Comment instance. * - * @since 4.4.0 + * @since WP-4.4.0 + * @static * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $id Comment ID. * @return WP_Comment|false Comment object, otherwise false. @@ -208,7 +197,7 @@ public static function get_instance( $id ) { * * Populates properties with object vars. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param WP_Comment $comment Comment object. */ @@ -221,7 +210,7 @@ public function __construct( $comment ) { /** * Convert object to array. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return array Object as array. */ @@ -232,7 +221,7 @@ public function to_array() { /** * Get the children of a comment. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $args { * Array of arguments used to pass to get_comments() and determine format. @@ -263,7 +252,7 @@ public function to_array() { * `$meta_query`. Also accepts false, an empty array, or * 'none' to disable `ORDER BY` clause. * } - * @return WP_Comment[] Array of `WP_Comment` objects. + * @return array Array of `WP_Comment` objects. */ public function get_children( $args = array() ) { $defaults = array( @@ -306,7 +295,7 @@ public function get_children( $args = array() ) { * * Used by `WP_Comment_Query` when bulk-filling descendants. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param WP_Comment $child Child comment. */ @@ -317,10 +306,10 @@ public function add_child( WP_Comment $child ) { /** * Get a child comment by ID. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $child_id ID of the child. - * @return WP_Comment|false Returns the comment object if found, otherwise false. + * @return WP_Comment|bool Returns the comment object if found, otherwise false. */ public function get_child( $child_id ) { if ( isset( $this->children[ $child_id ] ) ) { @@ -336,7 +325,7 @@ public function get_child( $child_id ) { * This flag is important for ensuring that calling `get_children()` on a childless comment will not trigger * unneeded database queries. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param bool $set Whether the comment's children have already been populated. */ @@ -349,7 +338,7 @@ public function populated_children( $set ) { * * If `$name` matches a post field, the comment post will be loaded and the post's value checked. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $name Property name. * @return bool @@ -366,7 +355,7 @@ public function __isset( $name ) { * * If `$name` matches a post field, the comment post will be loaded and the post's value returned. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $name * @return mixed diff --git a/wp-includes/class-wp-customize-control.php b/wp-includes/class-wp-customize-control.php index e76f74d..eac2f82 100644 --- a/wp-includes/class-wp-customize-control.php +++ b/wp-includes/class-wp-customize-control.php @@ -4,15 +4,14 @@ * * @package ClassicPress * @subpackage Customize - * @since 3.4.0 + * @since WP-3.4.0 */ /** * Customize Control class. * - * @since 3.4.0 + * @since WP-3.4.0 */ -#[AllowDynamicProperties] class WP_Customize_Control { /** @@ -20,7 +19,9 @@ class WP_Customize_Control { * * Used when sorting two instances whose priorities are equal. * - * @since 4.1.0 + * @since WP-4.1.0 + * + * @static * @var int */ protected static $instance_count = 0; @@ -28,7 +29,7 @@ class WP_Customize_Control { /** * Order in which this instance was created in relation to other instances. * - * @since 4.1.0 + * @since WP-4.1.0 * @var int */ public $instance_number; @@ -36,7 +37,7 @@ class WP_Customize_Control { /** * Customizer manager. * - * @since 3.4.0 + * @since WP-3.4.0 * @var WP_Customize_Manager */ public $manager; @@ -44,7 +45,7 @@ class WP_Customize_Control { /** * Control ID. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $id; @@ -52,7 +53,7 @@ class WP_Customize_Control { /** * All settings tied to the control. * - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ public $settings; @@ -60,8 +61,8 @@ class WP_Customize_Control { /** * The primary setting for the control (if there is one). * - * @since 3.4.0 - * @var string|WP_Customize_Setting|null + * @since WP-3.4.0 + * @var string */ public $setting = 'default'; @@ -71,7 +72,7 @@ class WP_Customize_Control { * Normally this is empty and the capability is derived from the capabilities * of the associated `$settings`. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $capability; @@ -79,7 +80,7 @@ class WP_Customize_Control { /** * Order priority to load the control in Customizer. * - * @since 3.4.0 + * @since WP-3.4.0 * @var int */ public $priority = 10; @@ -87,7 +88,7 @@ class WP_Customize_Control { /** * Section the control belongs to. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $section = ''; @@ -95,7 +96,7 @@ class WP_Customize_Control { /** * Label for the control. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $label = ''; @@ -103,7 +104,7 @@ class WP_Customize_Control { /** * Description for the control. * - * @since 4.0.0 + * @since WP-4.0.0 * @var string */ public $description = ''; @@ -111,7 +112,7 @@ class WP_Customize_Control { /** * List of choices for 'radio' or 'select' type controls, where values are the keys, and labels are the values. * - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ public $choices = array(); @@ -121,7 +122,7 @@ class WP_Customize_Control { * * Not used for 'checkbox', 'radio', 'select', 'textarea', or 'dropdown-pages' control types. * - * @since 4.0.0 + * @since WP-4.0.0 * @var array */ public $input_attrs = array(); @@ -129,14 +130,14 @@ class WP_Customize_Control { /** * Show UI for adding new content, currently only used for the dropdown-pages control. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $allow_addition = false; /** * @deprecated It is better to just call the json() method - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ public $json = array(); @@ -144,7 +145,7 @@ class WP_Customize_Control { /** * Control's Type. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $type = 'text'; @@ -152,7 +153,7 @@ class WP_Customize_Control { /** * Callback. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see WP_Customize_Control::active() * @@ -168,14 +169,14 @@ class WP_Customize_Control { * * Supplied `$args` override class property defaults. * - * If `$args['settings']` is not defined, use the `$id` as the setting ID. + * If `$args['settings']` is not defined, use the $id as the setting ID. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param WP_Customize_Manager $manager Customizer bootstrap instance. * @param string $id Control ID. * @param array $args { - * Optional. Array of properties for the new Control object. Default empty array. + * Optional. Arguments to override class property defaults. * * @type int $instance_number Order in which this instance was created in relation * to other instances. @@ -185,8 +186,6 @@ class WP_Customize_Control { * be used. * @type string $setting The primary setting for the control (if there is one). * Default 'default'. - * @type string $capability Capability required to use this control. Normally this is empty - * and the capability is derived from `$settings`. * @type int $priority Order priority to load the control. Default 10. * @type string $section Section the control belongs to. Default empty. * @type string $label Label for the control. Default empty. @@ -198,14 +197,11 @@ class WP_Customize_Control { * attribute names are the keys and values are the values. Not * used for 'checkbox', 'radio', 'select', 'textarea', or * 'dropdown-pages' control types. Default empty array. - * @type bool $allow_addition Show UI for adding new content, currently only used for the - * dropdown-pages control. Default false. * @type array $json Deprecated. Use WP_Customize_Control::json() instead. * @type string $type Control type. Core controls include 'text', 'checkbox', * 'textarea', 'radio', 'select', and 'dropdown-pages'. Additional * input types such as 'email', 'url', 'number', 'hidden', and * 'date' are supported implicitly. Default 'text'. - * @type callable $active_callback Active callback. * } */ public function __construct( $manager, $id, $args = array() ) { @@ -244,14 +240,14 @@ public function __construct( $manager, $id, $args = array() ) { /** * Enqueue control related scripts/styles. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function enqueue() {} /** * Check whether control is active to current Customizer preview. * - * @since 4.0.0 + * @since WP-4.0.0 * * @return bool Whether the control is active to the current preview. */ @@ -262,7 +258,7 @@ final public function active() { /** * Filters response of WP_Customize_Control::active(). * - * @since 4.0.0 + * @since WP-4.0.0 * * @param bool $active Whether the Customizer control is active. * @param WP_Customize_Control $control WP_Customize_Control instance. @@ -278,7 +274,7 @@ final public function active() { * Subclasses can override this with their specific logic, or they may * provide an 'active_callback' argument to the constructor. * - * @since 4.0.0 + * @since WP-4.0.0 * * @return true Always true. */ @@ -290,7 +286,7 @@ public function active_callback() { * Fetch a setting's value. * Grabs the main setting by default. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $setting_key * @return mixed The requested setting's value, if the setting exists. @@ -304,7 +300,7 @@ final public function value( $setting_key = 'default' ) { /** * Refresh the parameters passed to the JavaScript via JSON. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function to_json() { $this->json['settings'] = array(); @@ -329,7 +325,7 @@ public function to_json() { /** * Get the data to export to the client via JSON. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return array Array of parameters passed to the JavaScript. */ @@ -346,7 +342,7 @@ public function json() { * the associated section does not exist or if its capability check returns * false. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return bool False if theme doesn't support the control or user doesn't have the required permissions, otherwise true. */ @@ -372,7 +368,7 @@ final public function check_capabilities() { /** * Get the control's content for insertion into the Customizer pane. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return string Contents of the control. */ @@ -385,7 +381,7 @@ final public function get_content() { /** * Check capabilities and render the control. * - * @since 3.4.0 + * @since WP-3.4.0 * @uses WP_Customize_Control::render() */ final public function maybe_render() { @@ -396,9 +392,9 @@ final public function maybe_render() { /** * Fires just before the current Customizer control is rendered. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Control $control WP_Customize_Control instance. + * @param WP_Customize_Control $this WP_Customize_Control instance. */ do_action( 'customize_render_control', $this ); @@ -408,9 +404,9 @@ final public function maybe_render() { * The dynamic portion of the hook name, `$this->id`, refers to * the control ID. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Control $control WP_Customize_Control instance. + * @param WP_Customize_Control $this WP_Customize_Control instance. */ do_action( "customize_render_control_{$this->id}", $this ); @@ -420,7 +416,7 @@ final public function maybe_render() { /** * Renders the control wrapper and calls $this->render_content() for the internals. * - * @since 3.4.0 + * @since WP-3.4.0 */ protected function render() { $id = 'customize-control-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id ); @@ -434,8 +430,8 @@ protected function render() { /** * Get the data link attribute for a setting. * - * @since 3.4.0 - * @since 4.9.0 Return a `data-customize-setting-key-link` attribute if a setting is not registered for the supplied setting key. + * @since WP-3.4.0 + * @since WP-4.9.0 Return a `data-customize-setting-key-link` attribute if a setting is not registered for the supplied setting key. * * @param string $setting_key * @return string Data link parameter, a `data-customize-setting-link` attribute if the `$setting_key` refers to a pre-registered setting, @@ -452,7 +448,7 @@ public function get_link( $setting_key = 'default' ) { /** * Render the data link attribute for the control's input element. * - * @since 3.4.0 + * @since WP-3.4.0 * @uses WP_Customize_Control::get_link() * * @param string $setting_key @@ -464,7 +460,7 @@ public function link( $setting_key = 'default' ) { /** * Render the custom attributes for the control's input element. * - * @since 4.0.0 + * @since WP-4.0.0 */ public function input_attrs() { foreach ( $this->input_attrs as $attr => $value ) { @@ -482,7 +478,7 @@ public function input_attrs() { * * Control content can alternately be rendered in JS. See WP_Customize_Control::print_template(). * - * @since 3.4.0 + * @since WP-3.4.0 */ protected function render_content() { $input_id = '_customize-input-' . $this->id; @@ -499,7 +495,7 @@ protected function render_content() { value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->link(); ?> <?php checked( $this->value() ); ?> - > + /> <label for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_html( $this->label ); ?></label> <?php if ( ! empty( $this->description ) ) : ?> <span id="<?php echo esc_attr( $description_id ); ?>" class="description customize-control-description"><?php echo $this->description; ?></span> @@ -531,7 +527,7 @@ protected function render_content() { name="<?php echo esc_attr( $name ); ?>" <?php $this->link(); ?> <?php checked( $this->value(), $value ); ?> - > + /> <label for="<?php echo esc_attr( $input_id . '-radio-' . $value ); ?>"><?php echo esc_html( $label ); ?></label> </span> <?php endforeach; ?> @@ -628,18 +624,13 @@ protected function render_content() { <?php if ( $this->allow_addition && current_user_can( 'publish_pages' ) && current_user_can( 'edit_theme_options' ) ) : // Currently tied to menus functionality. ?> <button type="button" class="button-link add-new-toggle"> <?php - /* translators: %s: Add New Page label. */ + /* translators: %s: add new page label */ printf( __( '+ %s' ), get_post_type_object( 'page' )->labels->add_new_item ); ?> </button> <div class="new-content-item"> - <label for="create-input-<?php echo esc_attr( $this->id ); ?>"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'New page title' ); - ?> - </span></label> - <input type="text" id="create-input-<?php echo esc_attr( $this->id ); ?>" class="create-item-input" placeholder="<?php esc_attr_e( 'New page title…' ); ?>"> + <label for="create-input-<?php echo $this->id; ?>"><span class="screen-reader-text"><?php _e( 'New page title' ); ?></span></label> + <input type="text" id="create-input-<?php echo $this->id; ?>" class="create-item-input" placeholder="<?php esc_attr_e( 'New page title…' ); ?>"> <button type="button" class="button add-content"><?php _e( 'Add' ); ?></button> </div> <?php endif; ?> @@ -662,7 +653,7 @@ protected function render_content() { value="<?php echo esc_attr( $this->value() ); ?>" <?php endif; ?> <?php $this->link(); ?> - > + /> <?php break; } @@ -677,11 +668,11 @@ protected function render_content() { * In the future, this will also print the template for the control's container * element and be override-able. * - * @since 4.1.0 + * @since WP-4.1.0 */ final public function print_template() { ?> - <script type="text/html" id="tmpl-customize-control-<?php echo esc_attr( $this->type ); ?>-content"> + <script type="text/html" id="tmpl-customize-control-<?php echo $this->type; ?>-content"> <?php $this->content_template(); ?> </script> <?php @@ -695,9 +686,10 @@ final public function print_template() { * * @see WP_Customize_Control::print_template() * - * @since 4.1.0 + * @since WP-4.1.0 */ protected function content_template() {} + } /** @@ -779,10 +771,10 @@ protected function content_template() {} * WP_Customize_Nav_Menu_Name_Control class. * * As this file is deprecated, it will trigger a deprecation notice if instantiated. In a subsequent - * release, the require_once here will be removed and _deprecated_file() will be called if file is + * release, the require_once() here will be removed and _deprecated_file() will be called if file is * required at all. * - * @deprecated 4.9.0 This file is no longer used due to new menu creation UX. + * @deprecated WP-4.9.0 This file is no longer used due to new menu creation UX. */ require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-name-control.php'; diff --git a/wp-includes/class-wp-customize-manager.php b/wp-includes/class-wp-customize-manager.php index 9b3f8bb..6adeb84 100644 --- a/wp-includes/class-wp-customize-manager.php +++ b/wp-includes/class-wp-customize-manager.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 3.4.0 + * @since WP-3.4.0 */ /** @@ -18,14 +18,13 @@ * Serves as a factory for Customize Controls and Settings, and * instantiates default Customize Controls and Settings. * - * @since 3.4.0 + * @since WP-3.4.0 */ -#[AllowDynamicProperties] final class WP_Customize_Manager { /** * An instance of the theme being previewed. * - * @since 3.4.0 + * @since WP-3.4.0 * @var WP_Theme */ protected $theme; @@ -33,7 +32,7 @@ final class WP_Customize_Manager { /** * The directory name of the previously active theme (within the theme_root). * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ protected $original_stylesheet; @@ -41,7 +40,7 @@ final class WP_Customize_Manager { /** * Whether this is a Customizer pageload. * - * @since 3.4.0 + * @since WP-3.4.0 * @var bool */ protected $previewing = false; @@ -49,7 +48,7 @@ final class WP_Customize_Manager { /** * Methods and properties dealing with managing widgets in the Customizer. * - * @since 3.9.0 + * @since WP-3.9.0 * @var WP_Customize_Widgets */ public $widgets; @@ -57,7 +56,7 @@ final class WP_Customize_Manager { /** * Methods and properties dealing with managing nav menus in the Customizer. * - * @since 4.3.0 + * @since WP-4.3.0 * @var WP_Customize_Nav_Menus */ public $nav_menus; @@ -65,7 +64,7 @@ final class WP_Customize_Manager { /** * Methods and properties dealing with selective refresh in the Customizer preview. * - * @since 4.5.0 + * @since WP-4.5.0 * @var WP_Customize_Selective_Refresh */ public $selective_refresh; @@ -73,7 +72,7 @@ final class WP_Customize_Manager { /** * Registered instances of WP_Customize_Setting. * - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ protected $settings = array(); @@ -81,7 +80,7 @@ final class WP_Customize_Manager { /** * Sorted top-level instances of WP_Customize_Panel and WP_Customize_Section. * - * @since 4.0.0 + * @since WP-4.0.0 * @var array */ protected $containers = array(); @@ -89,7 +88,7 @@ final class WP_Customize_Manager { /** * Registered instances of WP_Customize_Panel. * - * @since 4.0.0 + * @since WP-4.0.0 * @var array */ protected $panels = array(); @@ -97,7 +96,7 @@ final class WP_Customize_Manager { /** * List of core components. * - * @since 4.5.0 + * @since WP-4.5.0 * @var array */ protected $components = array( 'widgets', 'nav_menus' ); @@ -105,7 +104,7 @@ final class WP_Customize_Manager { /** * Registered instances of WP_Customize_Section. * - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ protected $sections = array(); @@ -113,7 +112,7 @@ final class WP_Customize_Manager { /** * Registered instances of WP_Customize_Control. * - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ protected $controls = array(); @@ -121,7 +120,7 @@ final class WP_Customize_Manager { /** * Panel types that may be rendered from JS templates. * - * @since 4.3.0 + * @since WP-4.3.0 * @var array */ protected $registered_panel_types = array(); @@ -129,7 +128,7 @@ final class WP_Customize_Manager { /** * Section types that may be rendered from JS templates. * - * @since 4.3.0 + * @since WP-4.3.0 * @var array */ protected $registered_section_types = array(); @@ -137,7 +136,7 @@ final class WP_Customize_Manager { /** * Control types that may be rendered from JS templates. * - * @since 4.1.0 + * @since WP-4.1.0 * @var array */ protected $registered_control_types = array(); @@ -145,7 +144,7 @@ final class WP_Customize_Manager { /** * Initial URL being previewed. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ protected $preview_url; @@ -153,7 +152,7 @@ final class WP_Customize_Manager { /** * URL to link the user to when closing the Customizer. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ protected $return_url; @@ -161,15 +160,15 @@ final class WP_Customize_Manager { /** * Mapping of 'panel', 'section', 'control' to the ID which should be autofocused. * - * @since 4.4.0 - * @var string[] + * @since WP-4.4.0 + * @var array */ protected $autofocus = array(); /** * Messenger channel. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ protected $messenger_channel; @@ -177,7 +176,7 @@ final class WP_Customize_Manager { /** * Whether the autosave revision of the changeset should be loaded. * - * @since 4.9.0 + * @since WP-4.9.0 * @var bool */ protected $autosaved = false; @@ -185,7 +184,7 @@ final class WP_Customize_Manager { /** * Whether the changeset branching is allowed. * - * @since 4.9.0 + * @since WP-4.9.0 * @var bool */ protected $branching = true; @@ -193,7 +192,7 @@ final class WP_Customize_Manager { /** * Whether settings should be previewed. * - * @since 4.9.0 + * @since WP-4.9.0 * @var bool */ protected $settings_previewed = true; @@ -201,7 +200,7 @@ final class WP_Customize_Manager { /** * Whether a starter content changeset was saved. * - * @since 4.9.0 + * @since WP-4.9.0 * @var bool */ protected $saved_starter_content_changeset = false; @@ -216,7 +215,7 @@ final class WP_Customize_Manager { /** * Changeset UUID. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ private $_changeset_uuid; @@ -224,7 +223,7 @@ final class WP_Customize_Manager { /** * Changeset post ID. * - * @since 4.7.0 + * @since WP-4.7.0 * @var int|false */ private $_changeset_post_id; @@ -232,16 +231,16 @@ final class WP_Customize_Manager { /** * Changeset data loaded from a customize_changeset post. * - * @since 4.7.0 - * @var array|null + * @since WP-4.7.0 + * @var array */ private $_changeset_data; /** * Constructor. * - * @since 3.4.0 - * @since 4.7.0 Added `$args` parameter. + * @since WP-3.4.0 + * @since WP-4.7.0 Added $args param. * * @param array $args { * Args. @@ -271,8 +270,7 @@ public function __construct( $args = array() ) { $args['changeset_uuid'] = wp_generate_uuid4(); } - // The theme and messenger_channel should be supplied via $args, - // but they are also looked at in the $_REQUEST global here for back-compat. + // The theme and messenger_channel should be supplied via $args, but they are also looked at in the $_REQUEST global here for back-compat. if ( ! isset( $args['theme'] ) ) { if ( isset( $_REQUEST['customize_theme'] ) ) { $args['theme'] = wp_unslash( $_REQUEST['customize_theme'] ); @@ -319,6 +317,7 @@ public function __construct( $args = array() ) { require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-name-control.php'; require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-locations-control.php'; require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-auto-add-control.php'; + require_once ABSPATH . WPINC . '/customize/class-wp-customize-new-menu-control.php'; // @todo Remove in WP-5.0. See https://core.trac.wordpress.org/ticket/42364. require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menus-panel.php'; @@ -326,6 +325,7 @@ public function __construct( $args = array() ) { require_once ABSPATH . WPINC . '/customize/class-wp-customize-themes-section.php'; require_once ABSPATH . WPINC . '/customize/class-wp-customize-sidebar-section.php'; require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-section.php'; + require_once ABSPATH . WPINC . '/customize/class-wp-customize-new-menu-section.php'; // @todo Remove in WP-5.0. See https://core.trac.wordpress.org/ticket/42364. require_once ABSPATH . WPINC . '/customize/class-wp-customize-custom-css-setting.php'; require_once ABSPATH . WPINC . '/customize/class-wp-customize-filter-setting.php'; @@ -342,12 +342,12 @@ public function __construct( $args = array() ) { * during the {@see 'plugins_loaded'} action, so it cannot be added * in a theme. * - * @since 4.4.0 + * @since WP-4.4.0 * * @see WP_Customize_Manager::__construct() * - * @param string[] $components Array of core components to load. - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param array $components List of core components to load. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ $components = apply_filters( 'customize_loaded_components', $this->components, $this ); @@ -385,7 +385,7 @@ public function __construct( $args = array() ) { add_action( 'wp_ajax_customize_dismiss_autosave_or_lock', array( $this, 'handle_dismiss_autosave_or_lock_request' ) ); add_action( 'customize_register', array( $this, 'register_controls' ) ); - add_action( 'customize_register', array( $this, 'register_dynamic_settings' ), 11 ); // Allow code to create settings first. + add_action( 'customize_register', array( $this, 'register_dynamic_settings' ), 11 ); // allow code to create settings first add_action( 'customize_controls_init', array( $this, 'prepare_controls' ) ); add_action( 'customize_controls_enqueue_scripts', array( $this, 'enqueue_control_scripts' ) ); @@ -402,16 +402,16 @@ public function __construct( $args = array() ) { // Add theme update notices. if ( current_user_can( 'install_themes' ) || current_user_can( 'update_themes' ) ) { - require_once ABSPATH . 'wp-admin/includes/update.php'; + require_once ABSPATH . '/wp-admin/includes/update.php'; add_action( 'customize_controls_print_footer_scripts', 'wp_print_admin_notice_templates' ); } } /** - * Returns true if it's an Ajax request. + * Return true if it's an Ajax request. * - * @since 3.4.0 - * @since 4.2.0 Added `$action` param. + * @since WP-3.4.0 + * @since WP-4.2.0 Added `$action` param. * * @param string|null $action Whether the supplied Ajax action is being run. * @return bool True if it's an Ajax request, false otherwise. @@ -436,10 +436,10 @@ public function doing_ajax( $action = null ) { * Custom wp_die wrapper. Returns either the standard message for UI * or the Ajax message. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param string|WP_Error $ajax_message Ajax return. - * @param string $message Optional. UI message. + * @param mixed $ajax_message Ajax return + * @param mixed $message UI message */ protected function wp_die( $ajax_message, $message = null ) { if ( $this->doing_ajax() ) { @@ -477,15 +477,15 @@ protected function wp_die( $ajax_message, $message = null ) { } /** - * Returns the Ajax wp_die() handler if it's a customized request. + * Return the Ajax wp_die() handler if it's a customized request. * - * @since 3.4.0 - * @deprecated 4.7.0 + * @since WP-3.4.0 + * @deprecated WP-4.7.0 * * @return callable Die handler. */ public function wp_die_handler() { - _deprecated_function( __METHOD__, '4.7.0' ); + _deprecated_function( __METHOD__, 'WP-4.7.0' ); if ( $this->doing_ajax() || isset( $_POST['customized'] ) ) { return '_ajax_wp_die_handler'; @@ -495,18 +495,18 @@ public function wp_die_handler() { } /** - * Starts preview and customize theme. + * Start preview and customize theme. * - * Check if customize query variable exist. Init filters to filter the active theme. + * Check if customize query variable exist. Init filters to filter the current theme. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @global string $pagenow The filename of the current screen. + * @global string $pagenow */ public function setup_theme() { global $pagenow; - // Check permissions for customize.php access since this method is called before customize.php can run any code. + // Check permissions for customize.php access since this method is called before customize.php can run any code, if ( 'customize.php' === $pagenow && ! current_user_can( 'customize' ) ) { if ( ! is_user_logged_in() ) { auth_redirect(); @@ -528,7 +528,7 @@ public function setup_theme() { /* * Clear incoming post data if the user lacks a CSRF token (nonce). Note that the customizer * application will inject the customize_preview_nonce query parameter into all Ajax requests. - * For similar behavior elsewhere in WordPress, see rest_cookie_check_errors() which logs out + * For similar behavior elsewhere in ClassicPress, see rest_cookie_check_errors() which logs out * a user when a valid nonce isn't present. */ $has_post_data_nonce = ( @@ -565,8 +565,8 @@ public function setup_theme() { // Once the theme is loaded, we'll validate it. add_action( 'after_setup_theme', array( $this, 'after_setup_theme' ) ); } else { - // If the requested theme is not the active theme and the user doesn't have - // the switch_themes cap, bail. + // If the requested theme is not the active theme and the user doesn't have the + // switch_themes cap, bail. if ( ! current_user_can( 'switch_themes' ) ) { $this->wp_die( -1, __( 'Sorry, you are not allowed to edit theme options on this site.' ) ); } @@ -598,7 +598,7 @@ public function setup_theme() { } /** - * Establishes the loaded changeset. + * Establish the loaded changeset. * * This method runs right at after_setup_theme and applies the 'customize_changeset_branching' filter to determine * whether concurrent changesets are allowed. Then if the Customizer is not initialized with a `changeset_uuid` param, @@ -606,9 +606,8 @@ public function setup_theme() { * changeset will be loaded by default. Otherwise, if there are no existing saved changesets or if changeset branching is * enabled, then a new UUID will be generated. * - * @since 4.9.0 - * - * @global string $pagenow The filename of the current screen. + * @since WP-4.9.0 + * @global string $pagenow */ public function establish_loaded_changeset() { global $pagenow; @@ -649,7 +648,7 @@ public function establish_loaded_changeset() { /** * Callback to validate a theme once it is loaded * - * @since 3.4.0 + * @since WP-3.4.0 */ public function after_setup_theme() { $doing_ajax_or_is_customized = ( $this->doing_ajax() || isset( $_POST['customized'] ) ); @@ -663,7 +662,7 @@ public function after_setup_theme() { * If the theme to be previewed isn't the active theme, add filter callbacks * to swap it out at runtime. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function start_previewing_theme() { // Bail if we're already previewing. @@ -690,19 +689,19 @@ public function start_previewing_theme() { /** * Fires once the Customizer theme preview has started. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ do_action( 'start_previewing_theme', $this ); } /** - * Stops previewing the selected theme. + * Stop previewing the selected theme. * - * Removes filters to change the active theme. + * Removes filters to change the current theme. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function stop_previewing_theme() { if ( ! $this->is_preview() ) { @@ -728,9 +727,9 @@ public function stop_previewing_theme() { /** * Fires once the Customizer theme preview has stopped. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ do_action( 'stop_previewing_theme', $this ); } @@ -738,8 +737,7 @@ public function stop_previewing_theme() { /** * Gets whether settings are or will be previewed. * - * @since 4.9.0 - * + * @since WP-4.9.0 * @see WP_Customize_Setting::preview() * * @return bool @@ -751,8 +749,7 @@ public function settings_previewed() { /** * Gets whether data from a changeset's autosaved revision should be loaded if it exists. * - * @since 4.9.0 - * + * @since WP-4.9.0 * @see WP_Customize_Manager::changeset_data() * * @return bool Is using autosaved changeset revision. @@ -764,8 +761,7 @@ public function autosaved() { /** * Whether the changeset branching is allowed. * - * @since 4.9.0 - * + * @since WP-4.9.0 * @see WP_Customize_Manager::establish_loaded_changeset() * * @return bool Is changeset branching. @@ -787,11 +783,11 @@ public function branching() { * initial auto-drafts and then once initially saved, autosave revisions on top of that * user's specific post. * - * Since linear changesets are deemed to be more suitable for the majority of WordPress users, - * they are the default. For WordPress sites that have heavy site management in the Customizer + * Since linear changesets are deemed to be more suitable for the majority of ClassicPress users, + * they are the default. For ClassicPress sites that have heavy site management in the Customizer * by multiple users then branching changesets should be enabled by means of this filter. * - * @since 4.9.0 + * @since WP-4.9.0 * * @param bool $allow_branching Whether branching is allowed. If `false`, the default, * then only one saved changeset exists at a time. @@ -803,10 +799,9 @@ public function branching() { } /** - * Gets the changeset UUID. - * - * @since 4.7.0 + * Get the changeset UUID. * + * @since WP-4.7.0 * @see WP_Customize_Manager::establish_loaded_changeset() * * @return string UUID. @@ -819,9 +814,9 @@ public function changeset_uuid() { } /** - * Gets the theme being customized. + * Get the theme being customized. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return WP_Theme */ @@ -833,9 +828,9 @@ public function theme() { } /** - * Gets the registered settings. + * Get the registered settings. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return array */ @@ -844,9 +839,9 @@ public function settings() { } /** - * Gets the registered controls. + * Get the registered controls. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return array */ @@ -855,9 +850,9 @@ public function controls() { } /** - * Gets the registered containers. + * Get the registered containers. * - * @since 4.0.0 + * @since WP-4.0.0 * * @return array */ @@ -866,9 +861,9 @@ public function containers() { } /** - * Gets the registered sections. + * Get the registered sections. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return array */ @@ -877,9 +872,9 @@ public function sections() { } /** - * Gets the registered panels. + * Get the registered panels. * - * @since 4.0.0 + * @since WP-4.0.0 * * @return array Panels. */ @@ -890,7 +885,7 @@ public function panels() { /** * Checks if the current theme is active. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return bool */ @@ -899,14 +894,13 @@ public function is_theme_active() { } /** - * Registers styles/scripts and initialize the preview of each setting + * Register styles/scripts and initialize the preview of each setting * - * @since 3.4.0 + * @since WP-3.4.0 */ public function wp_loaded() { - // Unconditionally register core types for panels, sections, and controls - // in case plugin unhooks all customize_register actions. + // Unconditionally register core types for panels, sections, and controls in case plugin unhooks all customize_register actions. $this->register_panel_type( 'WP_Customize_Panel' ); $this->register_panel_type( 'WP_Customize_Themes_Panel' ); $this->register_section_type( 'WP_Customize_Section' ); @@ -925,11 +919,11 @@ public function wp_loaded() { $this->register_control_type( 'WP_Customize_Date_Time_Control' ); /** - * Fires once WordPress has loaded, allowing scripts and styles to be initialized. + * Fires once ClassicPress has loaded, allowing scripts and styles to be initialized. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ do_action( 'customize_register', $this ); @@ -950,14 +944,14 @@ public function wp_loaded() { * * Instead, the JS will sniff out the location header. * - * @since 3.4.0 - * @deprecated 4.7.0 + * @since WP-3.4.0 + * @deprecated WP-4.7.0 * * @param int $status Status. * @return int */ public function wp_redirect_status( $status ) { - _deprecated_function( __FUNCTION__, '4.7.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.7.0' ); if ( $this->is_preview() && ! is_admin() ) { return 200; @@ -967,9 +961,9 @@ public function wp_redirect_status( $status ) { } /** - * Finds the changeset post ID for a given changeset UUID. + * Find the changeset post ID for a given changeset UUID. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param string $uuid Changeset UUID. * @return int|null Returns post ID on success and null on failure. @@ -1005,9 +999,9 @@ public function find_changeset_post_id( $uuid ) { } /** - * Gets changeset posts. + * Get changeset posts. * - * @since 4.9.0 + * @since WP-4.9.0 * * @param array $args { * Args to pass into `get_posts()` to query changesets. @@ -1052,9 +1046,9 @@ protected function get_changeset_posts( $args = array() ) { } /** - * Dismisses all of the current user's auto-drafts (other than the present one). + * Dismiss all of the current user's auto-drafts (other than the present one). * - * @since 4.9.0 + * @since WP-4.9.0 * @return int The number of auto-drafts that were dismissed. */ protected function dismiss_user_auto_draft_changesets() { @@ -1078,9 +1072,9 @@ protected function dismiss_user_auto_draft_changesets() { } /** - * Gets the changeset post ID for the loaded changeset. + * Get the changeset post id for the loaded changeset. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return int|null Post ID on success or null if there is no post yet saved. */ @@ -1099,9 +1093,9 @@ public function changeset_post_id() { } /** - * Gets the data stored in a changeset post. + * Get the data stored in a changeset post. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param int $post_id Changeset post ID. * @return array|WP_Error Changeset data or WP_Error on error. @@ -1122,9 +1116,8 @@ protected function get_changeset_post_data( $post_id ) { return new WP_Error( 'wrong_post_type' ); } $changeset_data = json_decode( $changeset_post->post_content, true ); - $last_error = json_last_error(); - if ( $last_error ) { - return new WP_Error( 'json_parse_error', '', $last_error ); + if ( function_exists( 'json_last_error' ) && json_last_error() ) { + return new WP_Error( 'json_parse_error', '', json_last_error() ); } if ( ! is_array( $changeset_data ) ) { return new WP_Error( 'expected_array' ); @@ -1133,10 +1126,10 @@ protected function get_changeset_post_data( $post_id ) { } /** - * Gets changeset data. + * Get changeset data. * - * @since 4.7.0 - * @since 4.9.0 This will return the changeset's data with a user's autosave revision merged on top, if one exists and $autosaved is true. + * @since WP-4.7.0 + * @since WP-4.9.0 This will return the changeset's data with a user's autosave revision merged on top, if one exists and $autosaved is true. * * @return array Changeset data. */ @@ -1174,19 +1167,19 @@ public function changeset_data() { /** * Starter content setting IDs. * - * @since 4.7.0 + * @since WP-4.7.0 * @var array */ protected $pending_starter_content_settings_ids = array(); /** - * Imports theme starter content into the customized state. + * Import theme starter content into the customized state. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $starter_content Starter content. Defaults to `get_theme_starter_content()`. */ - public function import_theme_starter_content( $starter_content = array() ) { + function import_theme_starter_content( $starter_content = array() ) { if ( empty( $starter_content ) ) { $starter_content = get_theme_starter_content(); } @@ -1201,7 +1194,7 @@ public function import_theme_starter_content( $starter_content = array() ) { * However, when doing an explicit save it is currently possible for * nav menus and nav menu items specifically to lose their starter_content * flags, thus resulting in duplicates being created since they fail - * to get re-used. See #40146. + * to get re-used. See https://core.trac.wordpress.org/ticket/40146. */ if ( 'auto-draft' !== get_post_status( $this->changeset_post_id() ) ) { return; @@ -1238,7 +1231,7 @@ public function import_theme_starter_content( $starter_content = array() ) { $widget_numbers = array_keys( $settings ); if ( count( $widget_numbers ) > 0 ) { $widget_numbers[] = 1; - $max_widget_numbers[ $id_base ] = max( ...$widget_numbers ); + $max_widget_numbers[ $id_base ] = call_user_func_array( 'max', $widget_numbers ); } else { $max_widget_numbers[ $id_base ] = 1; } @@ -1464,7 +1457,7 @@ public function import_theme_starter_content( $starter_content = array() ) { preg_match( '#^nav_menu\[(?P<nav_menu_id>-?\d+)\]$#', $setting_id, $matches ) ); if ( $can_reuse ) { - $nav_menu_term_id = (int) $matches['nav_menu_id']; + $nav_menu_term_id = intval( $matches['nav_menu_id'] ); $nav_menu_setting_id = $setting_id; $reused_nav_menu_setting_ids[] = $setting_id; break; @@ -1525,27 +1518,7 @@ public function import_theme_starter_content( $starter_content = array() ) { // Options. foreach ( $options as $name => $value ) { - - // Serialize the value to check for post symbols. - $value = maybe_serialize( $value ); - - if ( is_serialized( $value ) ) { - if ( preg_match( '/s:\d+:"{{(?P<symbol>.+)}}"/', $value, $matches ) ) { - if ( isset( $posts[ $matches['symbol'] ] ) ) { - $symbol_match = $posts[ $matches['symbol'] ]['ID']; - } elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) { - $symbol_match = $attachment_ids[ $matches['symbol'] ]; - } - - // If we have any symbol matches, update the values. - if ( isset( $symbol_match ) ) { - // Replace found string matches with post IDs. - $value = str_replace( $matches[0], "i:{$symbol_match}", $value ); - } else { - continue; - } - } - } elseif ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) ) { + if ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) ) { if ( isset( $posts[ $matches['symbol'] ] ) ) { $value = $posts[ $matches['symbol'] ]['ID']; } elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) { @@ -1555,9 +1528,6 @@ public function import_theme_starter_content( $starter_content = array() ) { } } - // Unserialize values after checking for post symbols, so they can be properly referenced. - $value = maybe_unserialize( $value ); - if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) { $this->set_post_value( $name, $value ); $this->pending_starter_content_settings_ids[] = $name; @@ -1566,28 +1536,7 @@ public function import_theme_starter_content( $starter_content = array() ) { // Theme mods. foreach ( $theme_mods as $name => $value ) { - - // Serialize the value to check for post symbols. - $value = maybe_serialize( $value ); - - // Check if value was serialized. - if ( is_serialized( $value ) ) { - if ( preg_match( '/s:\d+:"{{(?P<symbol>.+)}}"/', $value, $matches ) ) { - if ( isset( $posts[ $matches['symbol'] ] ) ) { - $symbol_match = $posts[ $matches['symbol'] ]['ID']; - } elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) { - $symbol_match = $attachment_ids[ $matches['symbol'] ]; - } - - // If we have any symbol matches, update the values. - if ( isset( $symbol_match ) ) { - // Replace found string matches with post IDs. - $value = str_replace( $matches[0], "i:{$symbol_match}", $value ); - } else { - continue; - } - } - } elseif ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) ) { + if ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) ) { if ( isset( $posts[ $matches['symbol'] ] ) ) { $value = $posts[ $matches['symbol'] ]['ID']; } elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) { @@ -1597,9 +1546,6 @@ public function import_theme_starter_content( $starter_content = array() ) { } } - // Unserialize values after checking for post symbols, so they can be properly referenced. - $value = maybe_unserialize( $value ); - // Handle header image as special case since setting has a legacy format. if ( 'header_image' === $name ) { $name = 'header_image_data'; @@ -1633,11 +1579,11 @@ public function import_theme_starter_content( $starter_content = array() ) { } /** - * Prepares starter content attachments. + * Prepare starter content attachments. * * Ensure that the attachments are valid and that they have slugs and file name/path. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $attachments Attachments. * @return array Prepared attachments. @@ -1648,7 +1594,7 @@ protected function prepare_starter_content_attachments( $attachments ) { return $prepared_attachments; } - // Such is The WordPress Way. + // Such is The ClassicPress Way. require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/media.php'; require_once ABSPATH . 'wp-admin/includes/image.php'; @@ -1695,9 +1641,9 @@ protected function prepare_starter_content_attachments( $attachments ) { } /** - * Saves starter content changeset. + * Save starter content changeset. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function _save_starter_content_changeset() { @@ -1717,7 +1663,7 @@ public function _save_starter_content_changeset() { } /** - * Gets dirty pre-sanitized setting values in the current customized state. + * Get dirty pre-sanitized setting values in the current customized state. * * The returned array consists of a merge of three sources: * 1. If the theme is not currently active, then the base array is any stashed @@ -1732,8 +1678,8 @@ public function _save_starter_content_changeset() { * the value returned will come from the current changeset post and from the * incoming post data. * - * @since 4.1.1 - * @since 4.7.0 Added `$args` parameter and merging with changeset values and stashed theme mods. + * @since WP-4.1.1 + * @since WP-4.7.0 Added $args param and merging with changeset values and stashed theme mods. * * @param array $args { * Args. @@ -1770,7 +1716,7 @@ public function unsanitized_post_values( $args = array() ) { } if ( isset( $setting_params['type'] ) && 'theme_mod' === $setting_params['type'] ) { - // Ensure that theme mods values are only used if they were saved under the active theme. + // Ensure that theme mods values are only used if they were saved under the current theme. $namespace_pattern = '/^(?P<stylesheet>.+?)::(?P<setting_id>.+)$/'; if ( preg_match( $namespace_pattern, $setting_id, $matches ) && $this->get_stylesheet() === $matches['stylesheet'] ) { $values[ $matches['setting_id'] ] = $setting_params['value']; @@ -1806,46 +1752,43 @@ public function unsanitized_post_values( $args = array() ) { * sourced from `$_POST['customized']`. Nevertheless, the value returned will come * from the current changeset post and from the incoming post data. * - * @since 3.4.0 - * @since 4.1.1 Introduced the `$default_value` parameter. - * @since 4.6.0 `$default_value` is now returned early when the setting post value is invalid. + * @since WP-3.4.0 + * @since WP-4.1.1 Introduced the `$default` parameter. + * @since WP-4.6.0 `$default` is now returned early when the setting post value is invalid. * * @see WP_REST_Server::dispatch() * @see WP_REST_Request::sanitize_params() * @see WP_REST_Request::has_valid_params() * - * @param WP_Customize_Setting $setting A WP_Customize_Setting derived object. - * @param mixed $default_value Value returned if `$setting` has no post value (added in 4.2.0) - * or the post value is invalid (added in 4.6.0). - * @return string|mixed Sanitized value or the `$default_value` provided. + * @param WP_Customize_Setting $setting A WP_Customize_Setting derived object. + * @param mixed $default Value returned $setting has no post value (added in WP-4.2.0) + * or the post value is invalid (added in WP-4.6.0). + * @return string|mixed $post_value Sanitized value or the $default provided. */ - public function post_value( $setting, $default_value = null ) { + public function post_value( $setting, $default = null ) { $post_values = $this->unsanitized_post_values(); if ( ! array_key_exists( $setting->id, $post_values ) ) { - return $default_value; + return $default; } - $value = $post_values[ $setting->id ]; $valid = $setting->validate( $value ); if ( is_wp_error( $valid ) ) { - return $default_value; + return $default; } - $value = $setting->sanitize( $value ); if ( is_null( $value ) || is_wp_error( $value ) ) { - return $default_value; + return $default; } - return $value; } /** - * Overrides a setting's value in the current customized state. + * Override a setting's value in the current customized state. * * The name "post_value" is a carry-over from when the customized state was * exclusively sourced from `$_POST['customized']`. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param string $setting_id ID for the WP_Customize_Setting instance. * @param mixed $value Post value. @@ -1855,40 +1798,40 @@ public function set_post_value( $setting_id, $value ) { $this->_post_values[ $setting_id ] = $value; /** - * Announces when a specific setting's unsanitized post value has been set. + * Announce when a specific setting's unsanitized post value has been set. * * Fires when the WP_Customize_Manager::set_post_value() method is called. * * The dynamic portion of the hook name, `$setting_id`, refers to the setting ID. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param mixed $value Unsanitized setting post value. - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param mixed $value Unsanitized setting post value. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ do_action( "customize_post_value_set_{$setting_id}", $value, $this ); /** - * Announces when any setting's unsanitized post value has been set. + * Announce when any setting's unsanitized post value has been set. * * Fires when the WP_Customize_Manager::set_post_value() method is called. * * This is useful for `WP_Customize_Setting` instances to watch * in order to update a cached previewed value. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $setting_id Setting ID. * @param mixed $value Unsanitized setting post value. - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ do_action( 'customize_post_value_set', $setting_id, $value, $this ); } /** - * Prints JavaScript settings. + * Print JavaScript settings. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function customize_preview_init() { @@ -1897,14 +1840,14 @@ public function customize_preview_init() { * and natural URLs with transaction UUIDs added, we need to ensure that * the responses are never cached by proxies. In practice, this will not * be needed if the user is logged-in anyway. But if anonymous access is - * allowed then the auth cookies would not be sent and WordPress would + * allowed then the auth cookies would not be sent and ClassicPress would * not send no-cache headers by default. */ if ( ! headers_sent() ) { nocache_headers(); header( 'X-Robots: noindex, nofollow, noarchive' ); } - add_filter( 'wp_robots', 'wp_robots_no_robots' ); + add_action( 'wp_head', 'wp_no_robots' ); add_filter( 'wp_headers', array( $this, 'filter_iframe_security_headers' ) ); /* @@ -1913,14 +1856,7 @@ public function customize_preview_init() { * that the user's session has expired and they need to re-authenticate. */ if ( $this->messenger_channel && ! current_user_can( 'customize' ) ) { - $this->wp_die( - -1, - sprintf( - /* translators: %s: customize_messenger_channel */ - __( 'Unauthorized. You may remove the %s param to preview as frontend.' ), - '<code>customize_messenger_channel<code>' - ) - ); + $this->wp_die( -1, __( 'Unauthorized. You may remove the customize_messenger_channel param to preview as frontend.' ) ); return; } @@ -1939,32 +1875,32 @@ public function customize_preview_init() { * Fires once the Customizer preview has initialized and JavaScript * settings have been printed. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ do_action( 'customize_preview_init', $this ); } /** - * Filters the X-Frame-Options and Content-Security-Policy headers to ensure frontend can load in customizer. + * Filter the X-Frame-Options and Content-Security-Policy headers to ensure frontend can load in customizer. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $headers Headers. * @return array Headers. */ public function filter_iframe_security_headers( $headers ) { - $headers['X-Frame-Options'] = 'SAMEORIGIN'; - $headers['Content-Security-Policy'] = "frame-ancestors 'self'"; + $customize_url = admin_url( 'customize.php' ); + $headers['X-Frame-Options'] = 'ALLOW-FROM ' . $customize_url; + $headers['Content-Security-Policy'] = 'frame-ancestors ' . preg_replace( '#^(\w+://[^/]+).+?$#', '$1', $customize_url ); return $headers; } /** - * Adds customize state query params to a given URL if preview is allowed. - * - * @since 4.7.0 + * Add customize state query params to a given URL if preview is allowed. * + * @since WP-4.7.0 * @see wp_redirect() * @see WP_Customize_Manager::get_allowed_url() * @@ -2005,40 +1941,40 @@ public function add_state_query_params( $url ) { } /** - * Prevents sending a 404 status when returning the response for the customize + * Prevent sending a 404 status when returning the response for the customize * preview, since it causes the jQuery Ajax to fail. Send 200 instead. * - * @since 4.0.0 - * @deprecated 4.7.0 + * @since WP-4.0.0 + * @deprecated WP-4.7.0 */ public function customize_preview_override_404_status() { - _deprecated_function( __METHOD__, '4.7.0' ); + _deprecated_function( __METHOD__, 'WP-4.7.0' ); } /** - * Prints base element for preview frame. + * Print base element for preview frame. * - * @since 3.4.0 - * @deprecated 4.7.0 + * @since WP-3.4.0 + * @deprecated WP-4.7.0 */ public function customize_preview_base() { - _deprecated_function( __METHOD__, '4.7.0' ); + _deprecated_function( __METHOD__, 'WP-4.7.0' ); } /** - * Prints a workaround to handle HTML5 tags in IE < 9. + * Print a workaround to handle HTML5 tags in IE < 9. * - * @since 3.4.0 - * @deprecated 4.7.0 Customizer no longer supports IE8, so all supported browsers recognize HTML5. + * @since WP-3.4.0 + * @deprecated WP-4.7.0 Customizer no longer supports IE8, so all supported browsers recognize HTML5. */ public function customize_preview_html5() { - _deprecated_function( __FUNCTION__, '4.7.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.7.0' ); } /** - * Prints CSS for loading indicators for the Customizer preview. + * Print CSS for loading indicators for the Customizer preview. * - * @since 4.2.0 + * @since WP-4.2.0 */ public function customize_preview_loading_style() { ?> @@ -2065,12 +2001,12 @@ public function customize_preview_loading_style() { } /** - * Removes customize_messenger_channel query parameter from the preview window when it is not in an iframe. + * Remove customize_messenger_channel query parameter from the preview window when it is not in an iframe. * * This ensures that the admin bar will be shown. It also ensures that link navigation will * work as expected since the parent frame is not being sent the URL to navigate to. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function remove_frameless_preview_messenger_channel() { if ( ! $this->messenger_channel ) { @@ -2102,9 +2038,9 @@ public function remove_frameless_preview_messenger_channel() { } /** - * Prints JavaScript settings for preview frame. + * Print JavaScript settings for preview frame. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function customize_preview_settings() { $post_values = $this->unsanitized_post_values( array( 'exclude_changeset' => true ) ); @@ -2112,7 +2048,7 @@ public function customize_preview_settings() { $exported_setting_validities = array_map( array( $this, 'prepare_setting_validity_for_js' ), $setting_validities ); // Note that the REQUEST_URI is not passed into home_url() since this breaks subdirectory installations. - $self_url = empty( $_SERVER['REQUEST_URI'] ) ? home_url( '/' ) : sanitize_url( wp_unslash( $_SERVER['REQUEST_URI'] ) ); + $self_url = empty( $_SERVER['REQUEST_URI'] ) ? home_url( '/' ) : esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ); $state_query_params = array( 'customize_theme', 'customize_changeset_uuid', @@ -2134,7 +2070,7 @@ public function customize_preview_settings() { $allowed_hosts[] = $host; } - $switched_locale = switch_to_user_locale( get_current_user_id() ); + $switched_locale = switch_to_locale( get_user_locale() ); $l10n = array( 'shiftClickToEdit' => __( 'Shift-click to edit this element.' ), 'linkUnpreviewable' => __( 'This link is not live-previewable.' ), @@ -2159,7 +2095,7 @@ public function customize_preview_settings() { ), 'url' => array( 'self' => $self_url, - 'allowed' => array_map( 'sanitize_url', $this->get_allowed_urls() ), + 'allowed' => array_map( 'esc_url_raw', $this->get_allowed_urls() ), 'allowedHosts' => array_unique( $allowed_hosts ), 'isCrossDomain' => $this->is_cross_domain(), ), @@ -2195,7 +2131,7 @@ public function customize_preview_settings() { } ?> - <script> + <script type="text/javascript"> var _wpCustomizeSettings = <?php echo wp_json_encode( $settings ); ?>; _wpCustomizeSettings.values = {}; (function( v ) { @@ -2223,33 +2159,32 @@ public function customize_preview_settings() { /** * Prints a signature so we can ensure the Customizer was properly executed. * - * @since 3.4.0 - * @deprecated 4.7.0 + * @since WP-3.4.0 + * @deprecated WP-4.7.0 */ public function customize_preview_signature() { - _deprecated_function( __METHOD__, '4.7.0' ); + _deprecated_function( __METHOD__, 'WP-4.7.0' ); } /** * Removes the signature in case we experience a case where the Customizer was not properly executed. * - * @since 3.4.0 - * @deprecated 4.7.0 + * @since WP-3.4.0 + * @deprecated WP-4.7.0 * - * @param callable|null $callback Optional. Value passed through for {@see 'wp_die_handler'} filter. - * Default null. - * @return callable|null Value passed through for {@see 'wp_die_handler'} filter. + * @param mixed $return Value passed through for {@see 'wp_die_handler'} filter. + * @return mixed Value passed through for {@see 'wp_die_handler'} filter. */ - public function remove_preview_signature( $callback = null ) { - _deprecated_function( __METHOD__, '4.7.0' ); + public function remove_preview_signature( $return = null ) { + _deprecated_function( __METHOD__, 'WP-4.7.0' ); - return $callback; + return $return; } /** - * Determines whether it is a theme preview or not. + * Is it a theme preview? * - * @since 3.4.0 + * @since WP-3.4.0 * * @return bool True if it's a preview, false if not. */ @@ -2258,9 +2193,9 @@ public function is_preview() { } /** - * Retrieves the template name of the previewed theme. + * Retrieve the template name of the previewed theme. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Template name. */ @@ -2269,9 +2204,9 @@ public function get_template() { } /** - * Retrieves the stylesheet name of the previewed theme. + * Retrieve the stylesheet name of the previewed theme. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Stylesheet name. */ @@ -2280,9 +2215,9 @@ public function get_stylesheet() { } /** - * Retrieves the template root of the previewed theme. + * Retrieve the template root of the previewed theme. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Theme root. */ @@ -2291,9 +2226,9 @@ public function get_template_root() { } /** - * Retrieves the stylesheet root of the previewed theme. + * Retrieve the stylesheet root of the previewed theme. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Theme root. */ @@ -2302,11 +2237,11 @@ public function get_stylesheet_root() { } /** - * Filters the active theme and return the name of the previewed theme. + * Filters the current theme and return the name of the previewed theme. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param mixed $current_theme {@internal Parameter is not used} + * @param $current_theme {@internal Parameter is not used} * @return string Theme name. */ public function current_theme( $current_theme ) { @@ -2321,7 +2256,7 @@ public function current_theme( $current_theme ) { * to values that pass validation, and values that become null or `WP_Error` * after sanitizing are marked invalid. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_REST_Request::has_valid_params() * @see WP_Customize_Setting::validate() @@ -2364,7 +2299,7 @@ public function validate_setting_values( $setting_values, $options = array() ) { if ( ! is_wp_error( $validity ) ) { /** This filter is documented in wp-includes/class-wp-customize-setting.php */ $late_validity = apply_filters( "customize_validate_{$setting->id}", new WP_Error(), $unsanitized_value, $setting ); - if ( is_wp_error( $late_validity ) && $late_validity->has_errors() ) { + if ( is_wp_error( $late_validity ) && ! empty( $late_validity->errors ) ) { $validity = $late_validity; } } @@ -2390,7 +2325,7 @@ public function validate_setting_values( $setting_values, $options = array() ) { * Converts `WP_Error` instance into array suitable for passing into the * `wp.customize.Notification` JS model. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param true|WP_Error $validity Setting validity. * @return true|array If `$validity` was a WP_Error, the error codes will be array-mapped @@ -2402,7 +2337,7 @@ public function prepare_setting_validity_for_js( $validity ) { $notification = array(); foreach ( $validity->errors as $error_code => $error_messages ) { $notification[ $error_code ] = array( - 'message' => implode( ' ', $error_messages ), + 'message' => join( ' ', $error_messages ), 'data' => $validity->get_error_data( $error_code ), ); } @@ -2413,10 +2348,10 @@ public function prepare_setting_validity_for_js( $validity ) { } /** - * Handles customize_save WP Ajax request to save/update a changeset. + * Handle customize_save WP Ajax request to save/update a changeset. * - * @since 3.4.0 - * @since 4.7.0 The semantics of this method have changed to update a changeset, optionally to also change the status and other attributes. + * @since WP-3.4.0 + * @since WP-4.7.0 The semantics of this method have changed to update a changeset, optionally to also change the status and other attributes. */ public function save() { if ( ! is_user_logged_in() ) { @@ -2561,7 +2496,7 @@ public function save() { $this->dismiss_user_auto_draft_changesets(); } - // Note that if the changeset status was publish, then it will get set to Trash if revisions are not supported. + // Note that if the changeset status was publish, then it will get set to trash if revisions are not supported. $response['changeset_status'] = $changeset_post->post_status; if ( $is_publish && 'trash' === $response['changeset_status'] ) { $response['changeset_status'] = 'publish'; @@ -2593,11 +2528,11 @@ public function save() { * * This filter does not apply if there was a nonce or authentication failure. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param array $response Additional information passed back to the 'saved' * event on `wp.customize`. - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ $response = apply_filters( 'customize_save_response', $response, $this ); @@ -2609,9 +2544,9 @@ public function save() { } /** - * Saves the post for the loaded changeset. + * Save the post for the loaded changeset. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $args { * Args for changeset post. @@ -2627,7 +2562,7 @@ public function save() { * * @return array|WP_Error Returns array on success and WP_Error with array data on error. */ - public function save_changeset_post( $args = array() ) { + function save_changeset_post( $args = array() ) { $args = array_merge( array( @@ -2763,9 +2698,9 @@ public function save_changeset_post( $args = array() ) { * at this point to catch any settings registered after `customize_register`. * The dynamic portion of the hook name, `$this->ID` refers to the setting ID. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ do_action( 'customize_save_validation_before', $this ); @@ -2790,7 +2725,7 @@ public function save_changeset_post( $args = array() ) { if ( $update_transactionally && $invalid_setting_count > 0 ) { $response = array( 'setting_validities' => $setting_validities, - /* translators: %s: Number of invalid settings. */ + /* translators: %s: number of invalid settings */ 'message' => sprintf( _n( 'Unable to save due to %s invalid setting.', 'Unable to save due to %s invalid settings.', $invalid_setting_count ), number_format_i18n( $invalid_setting_count ) ), ); return new WP_Error( 'transaction_fail', '', $response ); @@ -2877,7 +2812,7 @@ public function save_changeset_post( $args = array() ) { * * Plugins may amend additional data (such as additional meta for settings) into the changeset with this filter. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $data Updated changeset data, mapping setting IDs to arrays containing a $value item and optionally other metadata. * @param array $context { @@ -2904,9 +2839,13 @@ public function save_changeset_post( $args = array() ) { } // Gather the data for wp_insert_post()/wp_update_post(). - $post_array = array( - // JSON_UNESCAPED_SLASHES is only to improve readability as slashes needn't be escaped in storage. - 'post_content' => wp_json_encode( $data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT ), + $json_options = 0; + if ( defined( 'JSON_UNESCAPED_SLASHES' ) ) { + $json_options |= JSON_UNESCAPED_SLASHES; // Introduced in PHP 5.4. This is only to improve readability as slashes needn't be escaped in storage. + } + $json_options |= JSON_PRETTY_PRINT; // Also introduced in PHP 5.4, but WP defines constant for back compat. See https://core.trac.wordpress.org/ticket/30139. + $post_array = array( + 'post_content' => wp_json_encode( $data, $json_options ), ); if ( $args['title'] ) { $post_array['post_title'] = $args['title']; @@ -2952,17 +2891,13 @@ public function save_changeset_post( $args = array() ) { if ( $args['autosave'] && 'auto-draft' !== get_post_status( $changeset_post_id ) ) { // See _wp_translate_postdata() for why this is required as it will use the edit_post meta capability. add_filter( 'map_meta_cap', array( $this, 'grant_edit_post_capability_for_changeset' ), 10, 4 ); - $post_array['post_ID'] = $post_array['ID']; $post_array['post_type'] = 'customize_changeset'; - - $r = wp_create_post_autosave( wp_slash( $post_array ) ); - + $r = wp_create_post_autosave( wp_slash( $post_array ) ); remove_filter( 'map_meta_cap', array( $this, 'grant_edit_post_capability_for_changeset' ), 10 ); } else { $post_array['edit_date'] = true; // Prevent date clearing. - - $r = wp_update_post( wp_slash( $post_array ), true ); + $r = wp_update_post( wp_slash( $post_array ), true ); // Delete autosave revision for user when the changeset is updated. if ( ! empty( $args['user_id'] ) ) { @@ -2978,6 +2913,7 @@ public function save_changeset_post( $args = array() ) { $this->_changeset_post_id = $r; // Update cached post ID for the loaded changeset. } } + remove_filter( 'wp_insert_post_data', array( $this, 'preserve_insert_changeset_post_content' ), 5 ); $this->_changeset_data = null; // Reset so WP_Customize_Manager::changeset_data() will re-populate with updated contents. @@ -2997,7 +2933,7 @@ public function save_changeset_post( $args = array() ) { } /** - * Preserves the initial JSON post_content passed to save into the post. + * Preserve the initial JSON post_content passed to save into the post. * * This is needed to prevent KSES and other {@see 'content_save_pre'} filters * from corrupting JSON data. @@ -3018,7 +2954,7 @@ public function save_changeset_post( $args = array() ) { * intact even when another user updates the changeset to modify another field * when they do not have unfiltered_html. * - * @since 5.4.1 + * @since WP-4.9.14 * * @param array $data An array of slashed and processed post data. * @param array $postarr An array of sanitized (and slashed) but otherwise unmodified post data. @@ -3042,17 +2978,16 @@ public function preserve_insert_changeset_post_content( $data, $postarr, $unsani } /** - * Trashes or deletes a changeset post. + * Trash or delete a changeset post. * * The following re-formulates the logic from `wp_trash_post()` as done in * `wp_publish_post()`. The reason for bypassing `wp_trash_post()` is that it * will mutate the the `post_content` and the `post_name` when they should be * untouched. * - * @since 4.9.0 - * + * @since WP-4.9.0 + * @global wpdb $wpdb ClassicPress database abstraction object. * @see wp_trash_post() - * @global wpdb $wpdb WordPress database abstraction object. * * @param int|WP_Post $post The changeset post. * @return mixed A WP_Post object for the trashed post or an empty value on failure. @@ -3095,9 +3030,6 @@ public function trash_changeset_post( $post ) { $post->post_status = $new_status; wp_transition_post_status( $new_status, $old_status, $post ); - /** This action is documented in wp-includes/post.php */ - do_action( "edit_post_{$post->post_type}", $post->ID, $post ); - /** This action is documented in wp-includes/post.php */ do_action( 'edit_post', $post->ID, $post ); @@ -3110,8 +3042,6 @@ public function trash_changeset_post( $post ) { /** This action is documented in wp-includes/post.php */ do_action( 'wp_insert_post', $post->ID, $post, true ); - wp_after_insert_post( get_post( $post_id ), true, $post ); - wp_trash_post_comments( $post_id ); /** This action is documented in wp-includes/post.php */ @@ -3121,9 +3051,9 @@ public function trash_changeset_post( $post ) { } /** - * Handles request to trash a changeset. + * Handle request to trash a changeset. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function handle_changeset_trash_request() { if ( ! is_user_logged_in() ) { @@ -3155,27 +3085,13 @@ public function handle_changeset_trash_request() { return; } - if ( $changeset_post_id ) { - if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->delete_post, $changeset_post_id ) ) { - wp_send_json_error( - array( - 'code' => 'changeset_trash_unauthorized', - 'message' => __( 'Unable to trash changes.' ), - ) - ); - } - - $lock_user = (int) wp_check_post_lock( $changeset_post_id ); - - if ( $lock_user && get_current_user_id() !== $lock_user ) { - wp_send_json_error( - array( - 'code' => 'changeset_locked', - 'message' => __( 'Changeset is being edited by other user.' ), - 'lockUser' => $this->get_lock_user_data( $lock_user ), - ) - ); - } + if ( $changeset_post_id && ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->delete_post, $changeset_post_id ) ) { + wp_send_json_error( + array( + 'code' => 'changeset_trash_unauthorized', + 'message' => __( 'Unable to trash changes.' ), + ) + ); } if ( 'trash' === get_post_status( $changeset_post_id ) ) { @@ -3206,25 +3122,24 @@ public function handle_changeset_trash_request() { } /** - * Re-maps 'edit_post' meta cap for a customize_changeset post to be the same as 'customize' maps. + * Re-map 'edit_post' meta cap for a customize_changeset post to be the same as 'customize' maps. * * There is essentially a "meta meta" cap in play here, where 'edit_post' meta cap maps to * the 'customize' meta cap which then maps to 'edit_theme_options'. This is currently * required in core for `wp_create_post_autosave()` because it will call * `_wp_translate_postdata()` which in turn will check if a user can 'edit_post', but the * the caps for the customize_changeset post type are all mapping to the meta capability. - * This should be able to be removed once #40922 is addressed in core. - * - * @since 4.9.0 + * This should be able to be removed once https://core.trac.wordpress.org/ticket/40922 is addressed in core. * + * @since WP-4.9.0 * @link https://core.trac.wordpress.org/ticket/40922 * @see WP_Customize_Manager::save_changeset_post() * @see _wp_translate_postdata() * - * @param string[] $caps Array of the user's capabilities. - * @param string $cap Capability name. - * @param int $user_id The user ID. - * @param array $args Adds the context to the cap. Typically the object ID. + * @param array $caps Returns the user's actual capabilities. + * @param string $cap Capability name. + * @param int $user_id The user ID. + * @param array $args Adds the context to the cap. Typically the object ID. * @return array Capabilities. */ public function grant_edit_post_capability_for_changeset( $caps, $cap, $user_id, $args ) { @@ -3238,10 +3153,10 @@ public function grant_edit_post_capability_for_changeset( $caps, $cap, $user_id, /** * Marks the changeset post as being currently edited by the current user. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @param int $changeset_post_id Changeset post ID. - * @param bool $take_over Whether to take over the changeset. Default false. + * @param int $changeset_post_id Changeset post id. + * @param bool $take_over Take over the changeset, default is false. */ public function set_changeset_lock( $changeset_post_id, $take_over = false ) { if ( $changeset_post_id ) { @@ -3263,20 +3178,19 @@ public function set_changeset_lock( $changeset_post_id, $take_over = false ) { /** * Refreshes changeset lock with the current time if current user edited the changeset before. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @param int $changeset_post_id Changeset post ID. + * @param int $changeset_post_id Changeset post id. */ public function refresh_changeset_lock( $changeset_post_id ) { if ( ! $changeset_post_id ) { return; } - $lock = get_post_meta( $changeset_post_id, '_edit_lock', true ); $lock = explode( ':', $lock ); if ( $lock && ! empty( $lock[1] ) ) { - $user_id = (int) $lock[1]; + $user_id = intval( $lock[1] ); $current_user_id = get_current_user_id(); if ( $user_id === $current_user_id ) { $lock = sprintf( '%s:%s', time(), $user_id ); @@ -3286,29 +3200,24 @@ public function refresh_changeset_lock( $changeset_post_id ) { } /** - * Filters heartbeat settings for the Customizer. - * - * @since 4.9.0 - * - * @global string $pagenow The filename of the current screen. + * Filter heartbeat settings for the Customizer. * + * @since WP-4.9.0 * @param array $settings Current settings to filter. * @return array Heartbeat settings. */ public function add_customize_screen_to_heartbeat_settings( $settings ) { global $pagenow; - if ( 'customize.php' === $pagenow ) { $settings['screenId'] = 'customize'; } - return $settings; } /** - * Gets lock user data. + * Get lock user data. * - * @since 4.9.0 + * @since WP-4.9.0 * * @param int $user_id User ID. * @return array|null User data formatted for client. @@ -3317,13 +3226,10 @@ protected function get_lock_user_data( $user_id ) { if ( ! $user_id ) { return null; } - $lock_user = get_userdata( $user_id ); - if ( ! $lock_user ) { return null; } - return array( 'id' => $lock_user->ID, 'name' => $lock_user->display_name, @@ -3332,9 +3238,9 @@ protected function get_lock_user_data( $user_id ) { } /** - * Checks locked changeset with heartbeat API. + * Check locked changeset with heartbeat API. * - * @since 4.9.0 + * @since WP-4.9.0 * * @param array $response The Heartbeat response. * @param array $data The $_POST data sent. @@ -3371,7 +3277,7 @@ public function check_changeset_lock_with_heartbeat( $response, $data, $screen_i /** * Removes changeset lock when take over request is sent via Ajax. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function handle_override_changeset_lock_request() { if ( ! $this->is_preview() ) { @@ -3413,9 +3319,9 @@ public function handle_override_changeset_lock_request() { } /** - * Determines whether a changeset revision should be made. + * Whether a changeset revision should be made. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ protected $store_changeset_revision; @@ -3425,15 +3331,16 @@ public function handle_override_changeset_lock_request() { * * Note that this will not be called while a changeset post remains in auto-draft status. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param bool $post_has_changed Whether the post has changed. - * @param WP_Post $latest_revision The latest revision post object. + * @param WP_Post $last_revision The last revision post object. * @param WP_Post $post The post object. + * * @return bool Whether a revision should be made. */ - public function _filter_revision_post_has_changed( $post_has_changed, $latest_revision, $post ) { - unset( $latest_revision ); + public function _filter_revision_post_has_changed( $post_has_changed, $last_revision, $post ) { + unset( $last_revision ); if ( 'customize_changeset' === $post->post_type ) { $post_has_changed = $this->store_changeset_revision; } @@ -3441,9 +3348,9 @@ public function _filter_revision_post_has_changed( $post_has_changed, $latest_re } /** - * Publishes the values of a changeset. + * Publish changeset values. * - * This will publish the values contained in a changeset, even changesets that do not + * This will the values contained in a changeset, even changesets that do not * correspond to current manager instance. This is called by * `_wp_customize_publish_changeset()` when a customize_changeset post is * transitioned to the `publish` status. As such, this method should not be @@ -3453,10 +3360,9 @@ public function _filter_revision_post_has_changed( $post_has_changed, $latest_re * theme, the theme must first be switched to (via `switch_theme()`) before * invoking this method. * - * @since 4.7.0 - * + * @since WP-4.7.0 * @see _wp_customize_publish_changeset() - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb * * @param int $changeset_post_id ID for customize_changeset post. Defaults to the changeset for the current manager instance. * @return true|WP_Error True or error info. @@ -3531,7 +3437,7 @@ public function _publish_changeset_values( $changeset_post_id ) { * Fires once the theme has switched in the Customizer, but before settings * have been saved. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param WP_Customize_Manager $manager WP_Customize_Manager instance. */ @@ -3584,7 +3490,7 @@ public function _publish_changeset_values( $changeset_post_id ) { /** * Fires after Customize settings have been saved. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param WP_Customize_Manager $manager WP_Customize_Manager instance. */ @@ -3631,9 +3537,9 @@ public function _publish_changeset_values( $changeset_post_id ) { } /** - * Updates stashed theme mod settings. + * Update stashed theme mod settings. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $inactive_theme_mod_settings Mapping of stylesheet to arrays of theme mod settings. * @return array|false Returns array of updated stashed theme mods or false if the update failed or there were no changes. @@ -3668,9 +3574,9 @@ protected function update_stashed_theme_mod_settings( $inactive_theme_mod_settin } /** - * Refreshes nonces for the current preview. + * Refresh nonces for the current preview. * - * @since 4.2.0 + * @since WP-4.2.0 */ public function refresh_nonces() { if ( ! $this->is_preview() ) { @@ -3681,9 +3587,9 @@ public function refresh_nonces() { } /** - * Deletes a given auto-draft changeset or the autosave revision for a given changeset or delete changeset lock. + * Delete a given auto-draft changeset or the autosave revision for a given changeset or delete changeset lock. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function handle_dismiss_autosave_or_lock_request() { // Calls to dismiss_user_auto_draft_changesets() and wp_get_post_autosave() require non-zero get_current_user_id(). @@ -3749,19 +3655,32 @@ public function handle_dismiss_autosave_or_lock_request() { } /** - * Adds a customize setting. - * - * @since 3.4.0 - * @since 4.5.0 Return added WP_Customize_Setting instance. + * Add a customize setting. * - * @see WP_Customize_Setting::__construct() - * @link https://developer.wordpress.org/themes/customize-api + * @since WP-3.4.0 + * @since WP-4.5.0 Return added WP_Customize_Setting instance. * * @param WP_Customize_Setting|string $id Customize Setting object, or ID. - * @param array $args Optional. Array of properties for the new Setting object. - * See WP_Customize_Setting::__construct() for information - * on accepted arguments. Default empty array. - * @return WP_Customize_Setting The instance of the setting that was added. + * @param array $args { + * Optional. Array of properties for the new WP_Customize_Setting. Default empty array. + * + * @type string $type Type of the setting. Default 'theme_mod'. + * Default 160. + * @type string $capability Capability required for the setting. Default 'edit_theme_options' + * @type string|array $theme_supports Theme features required to support the panel. Default is none. + * @type string $default Default value for the setting. Default is empty string. + * @type string $transport Options for rendering the live preview of changes in Theme Customizer. + * Using 'refresh' makes the change visible by reloading the whole preview. + * Using 'postMessage' allows a custom JavaScript to handle live changes. + * @link https://developer.wordpress.org/themes/customize-api + * Default is 'refresh' + * @type callable $validate_callback Server-side validation callback for the setting's value. + * @type callable $sanitize_callback Callback to filter a Customize setting value in un-slashed form. + * @type callable $sanitize_js_callback Callback to convert a Customize PHP setting value to a value that is + * JSON serializable. + * @type bool $dirty Whether or not the setting is initially dirty when created. + * } + * @return WP_Customize_Setting The instance of the setting that was added. */ public function add_setting( $id, $args = array() ) { if ( $id instanceof WP_Customize_Setting ) { @@ -3783,15 +3702,15 @@ public function add_setting( $id, $args = array() ) { } /** - * Registers any dynamically-created settings, such as those from $_POST['customized'] + * Register any dynamically-created settings, such as those from $_POST['customized'] * that have no corresponding setting created. * * This is a mechanism to "wake up" settings that have been dynamically created - * on the front end and have been sent to WordPress in `$_POST['customized']`. When WP + * on the front end and have been sent to ClassicPress in `$_POST['customized']`. When WP * loads, the dynamically-created settings then will get created and previewed * even though they are not directly created statically with code. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param array $setting_ids The setting IDs to add. * @return array The WP_Customize_Setting objects added. @@ -3799,7 +3718,7 @@ public function add_setting( $id, $args = array() ) { public function add_dynamic_settings( $setting_ids ) { $new_settings = array(); foreach ( $setting_ids as $setting_id ) { - // Skip settings already created. + // Skip settings already created if ( $this->get_setting( $setting_id ) ) { continue; } @@ -3814,7 +3733,7 @@ public function add_dynamic_settings( $setting_ids ) { * to override the default false value with an array of args to pass to * the WP_Customize_Setting constructor. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param false|array $setting_args The arguments to the WP_Customize_Setting constructor. * @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`. @@ -3827,7 +3746,7 @@ public function add_dynamic_settings( $setting_ids ) { /** * Allow non-statically created settings to be constructed with custom WP_Customize_Setting subclass. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param string $setting_class WP_Customize_Setting or a subclass. * @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`. @@ -3844,9 +3763,9 @@ public function add_dynamic_settings( $setting_ids ) { } /** - * Retrieves a customize setting. + * Retrieve a customize setting. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $id Customize Setting ID. * @return WP_Customize_Setting|void The setting, if set. @@ -3858,11 +3777,9 @@ public function get_setting( $id ) { } /** - * Removes a customize setting. - * - * Note that removing the setting doesn't destroy the WP_Customize_Setting instance or remove its filters. + * Remove a customize setting. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $id Customize Setting ID. */ @@ -3871,18 +3788,24 @@ public function remove_setting( $id ) { } /** - * Adds a customize panel. - * - * @since 4.0.0 - * @since 4.5.0 Return added WP_Customize_Panel instance. + * Add a customize panel. * - * @see WP_Customize_Panel::__construct() + * @since WP-4.0.0 + * @since WP-4.5.0 Return added WP_Customize_Panel instance. * - * @param WP_Customize_Panel|string $id Customize Panel object, or ID. - * @param array $args Optional. Array of properties for the new Panel object. - * See WP_Customize_Panel::__construct() for information - * on accepted arguments. Default empty array. - * @return WP_Customize_Panel The instance of the panel that was added. + * @param WP_Customize_Panel|string $id Customize Panel object, or Panel ID. + * @param array $args { + * Optional. Array of properties for the new Panel object. Default empty array. + * @type int $priority Priority of the panel, defining the display order of panels and sections. + * Default 160. + * @type string $capability Capability required for the panel. Default `edit_theme_options` + * @type string|array $theme_supports Theme features required to support the panel. + * @type string $title Title of the panel to show in UI. + * @type string $description Description to show in the UI. + * @type string $type Type of the panel. + * @type callable $active_callback Active callback. + * } + * @return WP_Customize_Panel The instance of the panel that was added. */ public function add_panel( $id, $args = array() ) { if ( $id instanceof WP_Customize_Panel ) { @@ -3896,9 +3819,9 @@ public function add_panel( $id, $args = array() ) { } /** - * Retrieves a customize panel. + * Retrieve a customize panel. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $id Panel ID to get. * @return WP_Customize_Panel|void Requested panel instance, if set. @@ -3910,41 +3833,33 @@ public function get_panel( $id ) { } /** - * Removes a customize panel. - * - * Note that removing the panel doesn't destroy the WP_Customize_Panel instance or remove its filters. + * Remove a customize panel. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $id Panel ID to remove. */ public function remove_panel( $id ) { // Removing core components this way is _doing_it_wrong(). if ( in_array( $id, $this->components, true ) ) { - _doing_it_wrong( - __METHOD__, - sprintf( - /* translators: 1: Panel ID, 2: Link to 'customize_loaded_components' filter reference. */ - __( 'Removing %1$s manually will cause PHP warnings. Use the %2$s filter instead.' ), - $id, - sprintf( - '<a href="%1$s">%2$s</a>', - esc_url( 'https://developer.wordpress.org/reference/hooks/customize_loaded_components/' ), - '<code>customize_loaded_components</code>' - ) - ), - '4.5.0' + /* translators: 1: panel id, 2: link to 'customize_loaded_components' filter reference */ + $message = sprintf( + __( 'Removing %1$s manually will cause PHP warnings. Use the %2$s filter instead.' ), + $id, + '<a href="' . esc_url( 'https://developer.wordpress.org/reference/hooks/customize_loaded_components/' ) . '"><code>customize_loaded_components</code></a>' ); + + _doing_it_wrong( __METHOD__, $message, 'WP-4.5.0' ); } unset( $this->panels[ $id ] ); } /** - * Registers a customize panel type. + * Register a customize panel type. * * Registered types are eligible to be rendered via JS and created dynamically. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Panel * @@ -3955,9 +3870,9 @@ public function register_panel_type( $panel ) { } /** - * Renders JS templates for all registered panel types. + * Render JS templates for all registered panel types. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function render_panel_templates() { foreach ( $this->registered_panel_types as $panel_type ) { @@ -3967,18 +3882,26 @@ public function render_panel_templates() { } /** - * Adds a customize section. - * - * @since 3.4.0 - * @since 4.5.0 Return added WP_Customize_Section instance. - * - * @see WP_Customize_Section::__construct() - * - * @param WP_Customize_Section|string $id Customize Section object, or ID. - * @param array $args Optional. Array of properties for the new Section object. - * See WP_Customize_Section::__construct() for information - * on accepted arguments. Default empty array. - * @return WP_Customize_Section The instance of the section that was added. + * Add a customize section. + * + * @since WP-3.4.0 + * @since WP-4.5.0 Return added WP_Customize_Section instance. + * + * @param WP_Customize_Section|string $id Customize Section object, or Section ID. + * @param array $args { + * Optional. Array of properties for the new Section object. Default empty array. + * @type int $priority Priority of the section, defining the display order of panels and sections. + * Default 160. + * @type string $panel The panel this section belongs to (if any). Default empty. + * @type string $capability Capability required for the section. Default 'edit_theme_options' + * @type string|array $theme_supports Theme features required to support the section. + * @type string $title Title of the section to show in UI. + * @type string $description Description to show in the UI. + * @type string $type Type of the section. + * @type callable $active_callback Active callback. + * @type bool $description_hidden Hide the description behind a help icon, instead of inline above the first control. Default false. + * } + * @return WP_Customize_Section The instance of the section that was added. */ public function add_section( $id, $args = array() ) { if ( $id instanceof WP_Customize_Section ) { @@ -3992,9 +3915,9 @@ public function add_section( $id, $args = array() ) { } /** - * Retrieves a customize section. + * Retrieve a customize section. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $id Section ID. * @return WP_Customize_Section|void The section, if set. @@ -4006,11 +3929,9 @@ public function get_section( $id ) { } /** - * Removes a customize section. + * Remove a customize section. * - * Note that removing the section doesn't destroy the WP_Customize_Section instance or remove its filters. - * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $id Section ID. */ @@ -4019,11 +3940,11 @@ public function remove_section( $id ) { } /** - * Registers a customize section type. + * Register a customize section type. * * Registered types are eligible to be rendered via JS and created dynamically. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Section * @@ -4034,9 +3955,9 @@ public function register_section_type( $section ) { } /** - * Renders JS templates for all registered section types. + * Render JS templates for all registered section types. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function render_section_templates() { foreach ( $this->registered_section_types as $section_type ) { @@ -4046,18 +3967,33 @@ public function render_section_templates() { } /** - * Adds a customize control. - * - * @since 3.4.0 - * @since 4.5.0 Return added WP_Customize_Control instance. + * Add a customize control. * - * @see WP_Customize_Control::__construct() + * @since WP-3.4.0 + * @since WP-4.5.0 Return added WP_Customize_Control instance. * * @param WP_Customize_Control|string $id Customize Control object, or ID. - * @param array $args Optional. Array of properties for the new Control object. - * See WP_Customize_Control::__construct() for information - * on accepted arguments. Default empty array. - * @return WP_Customize_Control The instance of the control that was added. + * @param array $args { + * Optional. Array of properties for the new Control object. Default empty array. + * + * @type array $settings All settings tied to the control. If undefined, defaults to `$setting`. + * IDs in the array correspond to the ID of a registered `WP_Customize_Setting`. + * @type string $setting The primary setting for the control (if there is one). Default is 'default'. + * @type string $capability Capability required to use this control. Normally derived from `$settings`. + * @type int $priority Order priority to load the control. Default 10. + * @type string $section The section this control belongs to. Default empty. + * @type string $label Label for the control. Default empty. + * @type string $description Description for the control. Default empty. + * @type array $choices List of choices for 'radio' or 'select' type controls, where values + * are the keys, and labels are the values. Default empty array. + * @type array $input_attrs List of custom input attributes for control output, where attribute + * names are the keys and values are the values. Default empty array. + * @type bool $allow_addition Show UI for adding new content, currently only used for the + * dropdown-pages control. Default false. + * @type string $type The type of the control. Default 'text'. + * @type callback $active_callback Active callback. + * } + * @return WP_Customize_Control The instance of the control that was added. */ public function add_control( $id, $args = array() ) { if ( $id instanceof WP_Customize_Control ) { @@ -4071,9 +4007,9 @@ public function add_control( $id, $args = array() ) { } /** - * Retrieves a customize control. + * Retrieve a customize control. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $id ID of the control. * @return WP_Customize_Control|void The control object, if set. @@ -4085,11 +4021,9 @@ public function get_control( $id ) { } /** - * Removes a customize control. + * Remove a customize control. * - * Note that removing the control doesn't destroy the WP_Customize_Control instance or remove its filters. - * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $id ID of the control. */ @@ -4098,11 +4032,11 @@ public function remove_control( $id ) { } /** - * Registers a customize control type. + * Register a customize control type. * * Registered types are eligible to be rendered via JS and created dynamically. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param string $control Name of a custom control which is a subclass of * WP_Customize_Control. @@ -4112,9 +4046,9 @@ public function register_control_type( $control ) { } /** - * Renders JS templates for all registered control types. + * Render JS templates for all registered control types. * - * @since 4.1.0 + * @since WP-4.1.0 */ public function render_control_templates() { if ( $this->branching() ) { @@ -4285,12 +4219,7 @@ public function render_control_templates() { <li class="notice notice-{{ data.type || 'info' }} {{ data.alt ? 'notice-alt' : '' }} {{ data.dismissible ? 'is-dismissible' : '' }} {{ data.containerClasses || '' }}" data-code="{{ data.code }}" data-type="{{ data.type }}"> <div class="notification-message">{{{ data.message || data.code }}}</div> <# if ( data.dismissible ) { #> - <button type="button" class="notice-dismiss"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Dismiss' ); - ?> - </span></button> + <button type="button" class="notice-dismiss"><span class="screen-reader-text"><?php _e( 'Dismiss' ); ?></span></button> <# } #> </li> </script> @@ -4357,20 +4286,10 @@ public function render_control_templates() { <p class="description customize-control-description"><?php esc_html_e( 'See how changes would look live on your website, and share the preview with people who can\'t access the Customizer.' ); ?></p> <div class="customize-control-notifications-container"></div> <div class="preview-link-wrapper"> - <label for="{{ elementPrefix }}customize-preview-link-input" class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - esc_html_e( 'Preview Link' ); - ?> - </label> + <label for="{{ elementPrefix }}customize-preview-link-input" class="screen-reader-text"><?php esc_html_e( 'Preview Link' ); ?></label> <a href="" target=""> <span class="preview-control-element" data-component="url"></span> - <span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( '(opens in a new tab)' ); - ?> - </span> + <span class="screen-reader-text"><?php _e( '(opens in a new window)' ); ?></span> </a> <input id="{{ elementPrefix }}customize-preview-link-input" readonly tabindex="-1" class="preview-control-element" data-component="input"> <button class="customize-copy-preview-link preview-control-element button button-secondary" data-component="button" data-copy-text="<?php esc_attr_e( 'Copy' ); ?>" data-copied-text="<?php esc_attr_e( 'Copied' ); ?>" ><?php esc_html_e( 'Copy' ); ?></button> @@ -4399,15 +4318,15 @@ public function render_control_templates() { /** * Helper function to compare two objects by priority, ensuring sort stability via instance_number. * - * @since 3.4.0 - * @deprecated 4.7.0 Use wp_list_sort() + * @since WP-3.4.0 + * @deprecated WP-4.7.0 Use wp_list_sort() * * @param WP_Customize_Panel|WP_Customize_Section|WP_Customize_Control $a Object A. * @param WP_Customize_Panel|WP_Customize_Section|WP_Customize_Control $b Object B. * @return int */ protected function _cmp_priority( $a, $b ) { - _deprecated_function( __METHOD__, '4.7.0', 'wp_list_sort' ); + _deprecated_function( __METHOD__, 'WP-4.7.0', 'wp_list_sort' ); if ( $a->priority === $b->priority ) { return $a->instance_number - $b->instance_number; @@ -4417,13 +4336,13 @@ protected function _cmp_priority( $a, $b ) { } /** - * Prepares panels, sections, and controls. + * Prepare panels, sections, and controls. * * For each, check if required related components exist, * whether the user has the necessary capabilities, * and sort by priority. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function prepare_controls() { @@ -4529,9 +4448,9 @@ public function prepare_controls() { } /** - * Enqueues scripts for customize controls. + * Enqueue scripts for customize controls. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function enqueue_control_scripts() { foreach ( $this->controls as $control ) { @@ -4551,9 +4470,9 @@ public function enqueue_control_scripts() { } /** - * Determines whether the user agent is iOS. + * Determine whether the user agent is iOS. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return bool Whether the user agent is iOS. */ @@ -4562,18 +4481,18 @@ public function is_ios() { } /** - * Gets the template string for the Customizer pane document title. + * Get the template string for the Customizer pane document title. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return string The template string for the document title. */ public function get_document_title_template() { if ( $this->is_theme_active() ) { - /* translators: %s: Document title from the preview. */ + /* translators: %s: document title from the preview */ $document_title_tmpl = __( 'Customize: %s' ); } else { - /* translators: %s: Document title from the preview. */ + /* translators: %s: document title from the preview */ $document_title_tmpl = __( 'Live Preview: %s' ); } $document_title_tmpl = html_entity_decode( $document_title_tmpl, ENT_QUOTES, 'UTF-8' ); // Because exported to JS and assigned to document.title. @@ -4581,23 +4500,23 @@ public function get_document_title_template() { } /** - * Sets the initial URL to be previewed. + * Set the initial URL to be previewed. * * URL is validated. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $preview_url URL to be previewed. */ public function set_preview_url( $preview_url ) { - $preview_url = sanitize_url( $preview_url ); + $preview_url = esc_url_raw( $preview_url ); $this->preview_url = wp_validate_redirect( $preview_url, home_url( '/' ) ); } /** - * Gets the initial URL to be previewed. + * Get the initial URL to be previewed. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return string URL being previewed. */ @@ -4613,7 +4532,7 @@ public function get_preview_url() { /** * Determines whether the admin and the frontend are on different domains. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return bool Whether cross-domain. */ @@ -4625,7 +4544,7 @@ public function is_cross_domain() { } /** - * Gets URLs allowed to be previewed. + * Get URLs allowed to be previewed. * * If the front end and the admin are served from the same domain, load the * preview over ssl if the Customizer is being loaded over ssl. This avoids @@ -4634,9 +4553,9 @@ public function is_cross_domain() { * ssl certs. Domain mapping plugins can allow other urls in these conditions * using the customize_allowed_urls filter. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @return array Allowed URLs. + * @returns array Allowed URLs. */ public function get_allowed_urls() { $allowed_urls = array( home_url( '/' ) ); @@ -4648,9 +4567,9 @@ public function get_allowed_urls() { /** * Filters the list of URLs allowed to be clicked and followed in the Customizer preview. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param string[] $allowed_urls An array of allowed URLs. + * @param array $allowed_urls An array of allowed URLs. */ $allowed_urls = array_unique( apply_filters( 'customize_allowed_urls', $allowed_urls ) ); @@ -4658,9 +4577,9 @@ public function get_allowed_urls() { } /** - * Gets messenger channel. + * Get messenger channel. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return string Messenger channel. */ @@ -4669,53 +4588,34 @@ public function get_messenger_channel() { } /** - * Sets URL to link the user to when closing the Customizer. + * Set URL to link the user to when closing the Customizer. * * URL is validated. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $return_url URL for return link. */ public function set_return_url( $return_url ) { - $return_url = sanitize_url( $return_url ); + $return_url = esc_url_raw( $return_url ); $return_url = remove_query_arg( wp_removable_query_args(), $return_url ); $return_url = wp_validate_redirect( $return_url ); $this->return_url = $return_url; } /** - * Gets URL to link the user to when closing the Customizer. + * Get URL to link the user to when closing the Customizer. * - * @since 4.4.0 - * - * @global array $_registered_pages + * @since WP-4.4.0 * * @return string URL for link to close Customizer. */ public function get_return_url() { - global $_registered_pages; - $referer = wp_get_referer(); $excluded_referer_basenames = array( 'customize.php', 'wp-login.php' ); if ( $this->return_url ) { $return_url = $this->return_url; - - $return_url_basename = wp_basename( parse_url( $this->return_url, PHP_URL_PATH ) ); - $return_url_query = parse_url( $this->return_url, PHP_URL_QUERY ); - - if ( 'themes.php' === $return_url_basename && $return_url_query ) { - parse_str( $return_url_query, $query_vars ); - - /* - * If the return URL is a page added by a theme to the Appearance menu via add_submenu_page(), - * verify that it belongs to the active theme, otherwise fall back to the Themes screen. - */ - if ( isset( $query_vars['page'] ) && ! isset( $_registered_pages[ "appearance_page_{$query_vars['page']}" ] ) ) { - $return_url = admin_url( 'themes.php' ); - } - } } elseif ( $referer && ! in_array( wp_basename( parse_url( $referer, PHP_URL_PATH ) ), $excluded_referer_basenames, true ) ) { $return_url = $referer; } elseif ( $this->preview_url ) { @@ -4723,21 +4623,20 @@ public function get_return_url() { } else { $return_url = home_url( '/' ); } - return $return_url; } /** - * Sets the autofocused constructs. + * Set the autofocused constructs. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $autofocus { * Mapping of 'panel', 'section', 'control' to the ID which should be autofocused. * - * @type string $control ID for control to be autofocused. - * @type string $section ID for section to be autofocused. - * @type string $panel ID for panel to be autofocused. + * @type string [$control] ID for control to be autofocused. + * @type string [$section] ID for section to be autofocused. + * @type string [$panel] ID for panel to be autofocused. * } */ public function set_autofocus( $autofocus ) { @@ -4745,16 +4644,16 @@ public function set_autofocus( $autofocus ) { } /** - * Gets the autofocused constructs. + * Get the autofocused constructs. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @return string[] { + * @return array { * Mapping of 'panel', 'section', 'control' to the ID which should be autofocused. * - * @type string $control ID for control to be autofocused. - * @type string $section ID for section to be autofocused. - * @type string $panel ID for panel to be autofocused. + * @type string [$control] ID for control to be autofocused. + * @type string [$section] ID for section to be autofocused. + * @type string [$panel] ID for panel to be autofocused. * } */ public function get_autofocus() { @@ -4762,9 +4661,9 @@ public function get_autofocus() { } /** - * Gets nonces for the Customizer. + * Get nonces for the Customizer. * - * @since 4.5.0 + * @since WP-4.5.0 * * @return array Nonces. */ @@ -4781,11 +4680,11 @@ public function get_nonces() { /** * Filters nonces for Customizer. * - * @since 4.2.0 + * @since WP-4.2.0 * - * @param string[] $nonces Array of refreshed nonces for save and - * preview actions. - * @param WP_Customize_Manager $manager WP_Customize_Manager instance. + * @param array $nonces Array of refreshed nonces for save and + * preview actions. + * @param WP_Customize_Manager $this WP_Customize_Manager instance. */ $nonces = apply_filters( 'customize_refresh_nonces', $nonces, $this ); @@ -4793,9 +4692,9 @@ public function get_nonces() { } /** - * Prints JavaScript settings for parent window. + * Print JavaScript settings for parent window. * - * @since 4.4.0 + * @since WP-4.4.0 */ public function customize_pane_settings() { @@ -4910,15 +4809,15 @@ public function customize_pane_settings() { '_canInstall' => current_user_can( 'install_themes' ), ), 'url' => array( - 'preview' => sanitize_url( $this->get_preview_url() ), - 'return' => sanitize_url( $this->get_return_url() ), - 'parent' => sanitize_url( admin_url() ), - 'activated' => sanitize_url( home_url( '/' ) ), - 'ajax' => sanitize_url( admin_url( 'admin-ajax.php', 'relative' ) ), - 'allowed' => array_map( 'sanitize_url', $this->get_allowed_urls() ), + 'preview' => esc_url_raw( $this->get_preview_url() ), + 'return' => esc_url_raw( $this->get_return_url() ), + 'parent' => esc_url_raw( admin_url() ), + 'activated' => esc_url_raw( home_url( '/' ) ), + 'ajax' => esc_url_raw( admin_url( 'admin-ajax.php', 'relative' ) ), + 'allowed' => array_map( 'esc_url_raw', $this->get_allowed_urls() ), 'isCrossDomain' => $this->is_cross_domain(), - 'home' => sanitize_url( home_url( '/' ) ), - 'login' => sanitize_url( $login_url ), + 'home' => esc_url_raw( home_url( '/' ) ), + 'login' => esc_url_raw( $login_url ), ), 'browser' => array( 'mobile' => wp_is_mobile(), @@ -4932,16 +4831,16 @@ public function customize_pane_settings() { 'previewableDevices' => $this->get_previewable_devices(), 'l10n' => array( 'confirmDeleteTheme' => __( 'Are you sure you want to delete this theme?' ), - /* translators: %d: Number of theme search results, which cannot currently consider singular vs. plural forms. */ + /* translators: %d: number of theme search results, which cannot currently consider singular vs. plural forms */ 'themeSearchResults' => __( '%d themes found' ), - /* translators: %d: Number of themes being displayed, which cannot currently consider singular vs. plural forms. */ + /* translators: %d: number of themes being displayed, which cannot currently consider singular vs. plural forms */ 'announceThemeCount' => __( 'Displaying %d themes' ), - /* translators: %s: Theme name. */ + /* translators: %s: theme name */ 'announceThemeDetails' => __( 'Showing details for theme: %s' ), ), ); - // Temporarily disable installation in Customizer. See #42184. + // Temporarily disable installation in Customizer. See https://core.trac.wordpress.org/ticket/42184. $filesystem_method = get_filesystem_method(); ob_start(); $filesystem_credentials_are_stored = request_filesystem_credentials( self_admin_url() ); @@ -4970,7 +4869,7 @@ public function customize_pane_settings() { } ?> - <script> + <script type="text/javascript"> var _wpCustomizeSettings = <?php echo wp_json_encode( $settings ); ?>; _wpCustomizeSettings.initialClientTimestamp = _.now(); _wpCustomizeSettings.controls = {}; @@ -5010,7 +4909,7 @@ public function customize_pane_settings() { /** * Returns a list of devices to allow previewing. * - * @since 4.5.0 + * @since WP-4.5.0 * * @return array List of devices with labels and default setting. */ @@ -5031,7 +4930,7 @@ public function get_previewable_devices() { /** * Filters the available devices to allow previewing in the Customizer. * - * @since 4.5.0 + * @since WP-4.5.0 * * @see WP_Customize_Manager::get_previewable_devices() * @@ -5043,9 +4942,9 @@ public function get_previewable_devices() { } /** - * Registers some default controls. + * Register some default controls. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function register_controls() { @@ -5191,8 +5090,8 @@ public function register_controls() { array( 'label' => __( 'Site Icon' ), 'description' => sprintf( - '<p>' . __( 'Site Icons are what you see in browser tabs, bookmark bars, and within the ClassicPress mobile apps. Upload one here!' ) . '</p>' . - /* translators: %s: Site icon size in pixels. */ + '<p>' . __( 'Site Icons are what you see in browser tabs and bookmark bars. Upload one here!' ) . '</p>' . + /* translators: %s: site icon size in pixels */ '<p>' . __( 'Site Icons should be square and at least %s pixels.' ) . '</p>', '<strong>512 × 512</strong>' ), @@ -5269,8 +5168,8 @@ public function register_controls() { ) ); - // Input type: checkbox. - // With custom value. + // Input type: checkbox + // With custom value $this->add_control( 'display_header_text', array( @@ -5293,8 +5192,8 @@ public function register_controls() { ) ); - // Input type: color. - // With sanitize_callback. + // Input type: Color + // With sanitize_callback $this->add_setting( 'background_color', array( @@ -5327,21 +5226,21 @@ public function register_controls() { $height = absint( get_theme_support( 'custom-header', 'height' ) ); if ( $width && $height ) { $control_description = sprintf( - /* translators: 1: .mp4, 2: Header size in pixels. */ + /* translators: 1: .mp4, 2: header size in pixels */ __( 'Upload your video in %1$s format and minimize its file size for best results. Your theme recommends dimensions of %2$s pixels.' ), '<code>.mp4</code>', sprintf( '<strong>%s × %s</strong>', $width, $height ) ); } elseif ( $width ) { $control_description = sprintf( - /* translators: 1: .mp4, 2: Header width in pixels. */ + /* translators: 1: .mp4, 2: header width in pixels */ __( 'Upload your video in %1$s format and minimize its file size for best results. Your theme recommends a width of %2$s pixels.' ), '<code>.mp4</code>', sprintf( '<strong>%s</strong>', $width ) ); } else { $control_description = sprintf( - /* translators: 1: .mp4, 2: Header height in pixels. */ + /* translators: 1: .mp4, 2: header height in pixels */ __( 'Upload your video in %1$s format and minimize its file size for best results. Your theme recommends a height of %2$s pixels.' ), '<code>.mp4</code>', sprintf( '<strong>%s</strong>', $height ) @@ -5559,7 +5458,7 @@ public function register_controls() { 'section' => 'background_image', 'type' => 'select', 'choices' => array( - 'auto' => _x( 'Original', 'Original Size' ), + 'auto' => __( 'Original' ), 'contain' => __( 'Fit to Screen' ), 'cover' => __( 'Fill Screen' ), ), @@ -5689,10 +5588,10 @@ public function register_controls() { $section_description .= __( 'Add your own CSS code here to customize the appearance and layout of your site.' ); $section_description .= sprintf( ' <a href="%1$s" class="external-link" target="_blank">%2$s<span class="screen-reader-text"> %3$s</span></a>', - esc_url( __( 'https://wordpress.org/documentation/article/css/' ) ), + esc_url( __( 'https://codex.wordpress.org/CSS' ) ), __( 'Learn more about CSS' ), - /* translators: Hidden accessibility text. */ - __( '(opens in a new tab)' ) + /* translators: accessibility text */ + __( '(opens in a new window)' ) ); $section_description .= '</p>'; @@ -5700,20 +5599,20 @@ public function register_controls() { $section_description .= '<ul>'; $section_description .= '<li id="editor-keyboard-trap-help-2">' . __( 'In the editing area, the Tab key enters a tab character.' ) . '</li>'; $section_description .= '<li id="editor-keyboard-trap-help-3">' . __( 'To move away from this area, press the Esc key followed by the Tab key.' ) . '</li>'; - $section_description .= '<li id="editor-keyboard-trap-help-4">' . __( 'Screen reader users: when in forms mode, you may need to press the Esc key twice.' ) . '</li>'; + $section_description .= '<li id="editor-keyboard-trap-help-4">' . __( 'Screen reader users: when in forms mode, you may need to press the escape key twice.' ) . '</li>'; $section_description .= '</ul>'; if ( 'false' !== wp_get_current_user()->syntax_highlighting ) { $section_description .= '<p>'; $section_description .= sprintf( - /* translators: 1: Link to user profile, 2: Additional link attributes, 3: Accessibility text. */ + /* translators: 1: link to user profile, 2: additional link attributes, 3: accessibility text */ __( 'The edit field automatically highlights code syntax. You can disable this in your <a href="%1$s" %2$s>user profile%3$s</a> to work in plain text mode.' ), esc_url( get_edit_profile_url() ), 'class="external-link" target="_blank"', sprintf( '<span class="screen-reader-text"> %s</span>', - /* translators: Hidden accessibility text. */ - __( '(opens in a new tab)' ) + /* translators: accessibility text */ + __( '(opens in a new window)' ) ) ); $section_description .= '</p>'; @@ -5761,13 +5660,13 @@ public function register_controls() { } /** - * Returns whether there are published pages. + * Return whether there are published pages. * * Used as active callback for static front page section and controls. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @return bool Whether there are published (or to be published) pages. + * @returns bool Whether there are published (or to be published) pages. */ public function has_published_pages() { @@ -5779,21 +5678,13 @@ public function has_published_pages() { } } } - - return 0 !== count( - get_pages( - array( - 'number' => 1, - 'hierarchical' => 0, - ) - ) - ); + return 0 !== count( get_pages() ); } /** - * Adds settings from the POST data that were not added with code, e.g. dynamically-created settings for Widgets + * Add settings from the POST data that were not added with code, e.g. dynamically-created settings for Widgets * - * @since 4.2.0 + * @since WP-4.2.0 * * @see add_dynamic_settings() */ @@ -5803,9 +5694,9 @@ public function register_dynamic_settings() { } /** - * Loads themes into the theme browsing/installation UI. + * Load themes into the theme browsing/installation UI. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function handle_load_themes_request() { check_ajax_referer( 'switch_themes', 'nonce' ); @@ -5845,11 +5736,10 @@ public function handle_load_themes_request() { if ( 'installed' === $theme_action ) { // Load all installed themes from wp_prepare_themes_for_js(). - $themes = array( 'themes' => array() ); - foreach ( wp_prepare_themes_for_js() as $theme ) { - $theme['type'] = 'installed'; - $theme['active'] = ( isset( $_POST['customized_theme'] ) && $_POST['customized_theme'] === $theme['id'] ); - $themes['themes'][] = $theme; + $themes = array( 'themes' => wp_prepare_themes_for_js() ); + foreach ( $themes['themes'] as &$theme ) { + $theme['type'] = 'installed'; + $theme['active'] = ( isset( $_POST['customized_theme'] ) && $_POST['customized_theme'] === $theme['id'] ); } } elseif ( 'wporg' === $theme_action ) { @@ -5861,9 +5751,6 @@ public function handle_load_themes_request() { // Arguments for all queries. $wporg_args = array( 'per_page' => 100, - 'fields' => array( - 'reviews_url' => true, // Explicitly request the reviews URL to be linked from the customizer. - ), ); $args = array_merge( $wporg_args, $args ); @@ -5872,8 +5759,6 @@ public function handle_load_themes_request() { $args['browse'] = 'new'; // Sort by latest themes by default. } - $args['fields']['tags'] = true; - // Load themes from the .org API. $themes = themes_api( 'query_themes', $args ); if ( is_wp_error( $themes ) ) { @@ -5938,7 +5823,6 @@ public function handle_load_themes_request() { $theme->authorAndUri = wp_kses( $theme->author['display_name'], $themes_allowedtags ); $theme->compatibleWP = is_wp_version_compatible( $theme->requires ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName $theme->compatiblePHP = is_php_version_compatible( $theme->requires_php ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName - $theme->compatibleCP = ! array_key_exists( 'full-site-editing', $theme->tags ); if ( isset( $theme->parent ) ) { $theme->parent = $theme->parent['slug']; @@ -5958,13 +5842,13 @@ public function handle_load_themes_request() { * or modification of data loaded from `wp_prepare_themes_for_js()` * or WordPress.org via `themes_api()`. * - * @since 4.9.0 + * @since WP-4.9.0 * * @see wp_prepare_themes_for_js() * @see themes_api() * @see WP_Customize_Manager::__construct() * - * @param array|stdClass $themes Nested array or object of theme data. + * @param array $themes Nested array of theme data. * @param array $args List of arguments, such as page, search term, and tags to query for. * @param WP_Customize_Manager $manager Instance of Customize manager. */ @@ -5980,7 +5864,7 @@ public function handle_load_themes_request() { * Accepts 'blank', and otherwise uses sanitize_hex_color_no_hash(). * Returns default text color if hex color is empty. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $color * @return mixed @@ -6001,9 +5885,9 @@ public function _sanitize_header_textcolor( $color ) { /** * Callback for validating a background setting value. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param string $value Repeat value. + * @param string $value Repeat value. * @param WP_Customize_Setting $setting Setting. * @return string|WP_Error Background value or validation error. */ @@ -6033,7 +5917,7 @@ public function _sanitize_background_setting( $value, $setting ) { return new WP_Error( 'invalid_value', __( 'Invalid value for background size.' ) ); } } elseif ( 'background_image' === $setting->id || 'background_image_thumb' === $setting->id ) { - $value = empty( $value ) ? '' : sanitize_url( $value ); + $value = empty( $value ) ? '' : esc_url_raw( $value ); } else { return new WP_Error( 'unrecognized_setting', __( 'Unrecognized background setting.' ) ); } @@ -6041,13 +5925,13 @@ public function _sanitize_background_setting( $value, $setting ) { } /** - * Exports header video settings to facilitate selective refresh. + * Export header video settings to facilitate selective refresh. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param array $response Response. + * @param array $response Response. * @param WP_Customize_Selective_Refresh $selective_refresh Selective refresh component. - * @param array $partials Array of partials. + * @param array $partials Array of partials. * @return array */ public function export_header_video_settings( $response, $selective_refresh, $partials ) { @@ -6063,17 +5947,17 @@ public function export_header_video_settings( $response, $selective_refresh, $pa * * Ensures that the selected video is less than 8MB and provides an error message. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param WP_Error $validity - * @param mixed $value + * @param mixed $value * @return mixed */ public function _validate_header_video( $validity, $value ) { $video = get_attached_file( absint( $value ) ); if ( $video ) { $size = filesize( $video ); - if ( $size > 8 * MB_IN_BYTES ) { + if ( 8 < $size / pow( 1024, 2 ) ) { // Check whether the size is larger than 8MB. $validity->add( 'size_too_large', __( 'This video file is too large to use as a header video. Try a shorter video or optimize the compression settings and re-upload a file that is less than 8MB. Or, upload your video to YouTube and link it with the option below.' ) @@ -6083,7 +5967,7 @@ public function _validate_header_video( $validity, $value ) { $validity->add( 'invalid_file_type', sprintf( - /* translators: 1: .mp4, 2: .mov */ + /* translators: 1: .mp4, 2: .mov */ __( 'Only %1$s or %2$s files may be used for header video. Please convert your video file and try again, or, upload your video to YouTube and link it with the option below.' ), '<code>.mp4</code>', '<code>.mov</code>' @@ -6099,14 +5983,14 @@ public function _validate_header_video( $validity, $value ) { * * Ensures that the provided URL is supported. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param WP_Error $validity - * @param mixed $value + * @param mixed $value * @return mixed */ public function _validate_external_header_video( $validity, $value ) { - $video = sanitize_url( $value ); + $video = esc_url_raw( $value ); if ( $video ) { if ( ! preg_match( '#^https?://(?:www\.)?(?:youtube\.com/watch|youtu\.be/)#', $video ) ) { $validity->add( 'invalid_url', __( 'Please enter a valid YouTube URL.' ) ); @@ -6118,13 +6002,13 @@ public function _validate_external_header_video( $validity, $value ) { /** * Callback for sanitizing the external_header_video value. * - * @since 4.7.1 + * @since WP-4.7.1 * * @param string $value URL. * @return string Sanitized URL. */ public function _sanitize_external_header_video( $value ) { - return sanitize_url( trim( $value ) ); + return esc_url_raw( trim( $value ) ); } /** @@ -6138,7 +6022,7 @@ public function _sanitize_external_header_video( $value ) { * * @see WP_Customize_Manager::register_controls() * - * @since 4.5.0 + * @since WP-4.5.0 * * @return string Custom logo. */ diff --git a/wp-includes/class-wp-customize-nav-menus.php b/wp-includes/class-wp-customize-nav-menus.php index 858e3ad..87cc11e 100644 --- a/wp-includes/class-wp-customize-nav-menus.php +++ b/wp-includes/class-wp-customize-nav-menus.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.3.0 + * @since WP-4.3.0 */ /** @@ -12,17 +12,16 @@ * * Implements menu management in the Customizer. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Manager */ -#[AllowDynamicProperties] final class WP_Customize_Nav_Menus { /** * WP_Customize_Manager instance. * - * @since 4.3.0 + * @since WP-4.3.0 * @var WP_Customize_Manager */ public $manager; @@ -30,7 +29,7 @@ final class WP_Customize_Nav_Menus { /** * Original nav menu locations before the theme was switched. * - * @since 4.9.0 + * @since WP-4.9.0 * @var array */ protected $original_nav_menu_locations; @@ -38,9 +37,9 @@ final class WP_Customize_Nav_Menus { /** * Constructor. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @param WP_Customize_Manager $manager Customizer bootstrap instance. + * @param object $manager An instance of the WP_Customize_Manager class. */ public function __construct( $manager ) { $this->manager = $manager; @@ -74,10 +73,10 @@ public function __construct( $manager ) { /** * Adds a nonce for customizing menus. * - * @since 4.5.0 + * @since WP-4.5.0 * - * @param string[] $nonces Array of nonces. - * @return string[] Modified array of nonces. + * @param array $nonces Array of nonces. + * @return array $nonces Modified array of nonces. */ public function filter_nonces( $nonces ) { $nonces['customize-menus'] = wp_create_nonce( 'customize-menus' ); @@ -87,7 +86,7 @@ public function filter_nonces( $nonces ) { /** * Ajax handler for loading available menu items. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function ajax_load_available_items() { check_ajax_referer( 'customize-menus', 'customize-menus-nonce' ); @@ -130,74 +129,42 @@ public function ajax_load_available_items() { /** * Performs the post_type and taxonomy queries for loading available menu items. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @param string $object_type Optional. Accepts any custom object type and has built-in support for - * 'post_type' and 'taxonomy'. Default is 'post_type'. - * @param string $object_name Optional. Accepts any registered taxonomy or post type name. Default is 'page'. - * @param int $page Optional. The page number used to generate the query offset. Default is '0'. - * @return array|WP_Error An array of menu items on success, a WP_Error object on failure. + * @param string $type Optional. Accepts any custom object type and has built-in support for + * 'post_type' and 'taxonomy'. Default is 'post_type'. + * @param string $object Optional. Accepts any registered taxonomy or post type name. Default is 'page'. + * @param int $page Optional. The page number used to generate the query offset. Default is '0'. + * @return WP_Error|array Returns either a WP_Error object or an array of menu items. */ - public function load_available_items_query( $object_type = 'post_type', $object_name = 'page', $page = 0 ) { + public function load_available_items_query( $type = 'post_type', $object = 'page', $page = 0 ) { $items = array(); - if ( 'post_type' === $object_type ) { - $post_type = get_post_type_object( $object_name ); + if ( 'post_type' === $type ) { + $post_type = get_post_type_object( $object ); if ( ! $post_type ) { return new WP_Error( 'nav_menus_invalid_post_type' ); } - /* - * If we're dealing with pages, let's prioritize the Front Page, - * Posts Page and Privacy Policy Page at the top of the list. - */ - $important_pages = array(); - $suppress_page_ids = array(); - if ( 0 === $page && 'page' === $object_name ) { - // Insert Front Page or custom "Home" link. - $front_page = 'page' === get_option( 'show_on_front' ) ? (int) get_option( 'page_on_front' ) : 0; - if ( ! empty( $front_page ) ) { - $front_page_obj = get_post( $front_page ); - $important_pages[] = $front_page_obj; - $suppress_page_ids[] = $front_page_obj->ID; - } else { - // Add "Home" link. Treat as a page, but switch to custom on add. - $items[] = array( - 'id' => 'home', - 'title' => _x( 'Home', 'nav menu home label' ), - 'type' => 'custom', - 'type_label' => __( 'Custom Link' ), - 'object' => '', - 'url' => home_url(), - ); - } - - // Insert Posts Page. - $posts_page = 'page' === get_option( 'show_on_front' ) ? (int) get_option( 'page_for_posts' ) : 0; - if ( ! empty( $posts_page ) ) { - $posts_page_obj = get_post( $posts_page ); - $important_pages[] = $posts_page_obj; - $suppress_page_ids[] = $posts_page_obj->ID; - } - - // Insert Privacy Policy Page. - $privacy_policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' ); - if ( ! empty( $privacy_policy_page_id ) ) { - $privacy_policy_page = get_post( $privacy_policy_page_id ); - if ( $privacy_policy_page instanceof WP_Post && 'publish' === $privacy_policy_page->post_status ) { - $important_pages[] = $privacy_policy_page; - $suppress_page_ids[] = $privacy_policy_page->ID; - } - } - } elseif ( 'post' !== $object_name && 0 === $page && $post_type->has_archive ) { + if ( 0 === $page && 'page' === $object ) { + // Add "Home" link. Treat as a page, but switch to custom on add. + $items[] = array( + 'id' => 'home', + 'title' => _x( 'Home', 'nav menu home label' ), + 'type' => 'custom', + 'type_label' => __( 'Custom Link' ), + 'object' => '', + 'url' => home_url(), + ); + } elseif ( 'post' !== $object && 0 === $page && $post_type->has_archive ) { // Add a post type archive link. $items[] = array( - 'id' => $object_name . '-archive', + 'id' => $object . '-archive', 'title' => $post_type->labels->archives, 'type' => 'post_type_archive', 'type_label' => __( 'Post Type Archive' ), - 'object' => $object_name, - 'url' => get_post_type_archive_link( $object_name ), + 'object' => $object, + 'url' => get_post_type_archive_link( $object ), ); } @@ -212,52 +179,39 @@ public function load_available_items_query( $object_type = 'post_type', $object_ } } - $args = array( - 'numberposts' => 10, - 'offset' => 10 * $page, - 'orderby' => 'date', - 'order' => 'DESC', - 'post_type' => $object_name, - ); - - // Add suppression array to arguments for get_posts. - if ( ! empty( $suppress_page_ids ) ) { - $args['post__not_in'] = $suppress_page_ids; - } - $posts = array_merge( $posts, - $important_pages, - get_posts( $args ) + get_posts( + array( + 'numberposts' => 10, + 'offset' => 10 * $page, + 'orderby' => 'date', + 'order' => 'DESC', + 'post_type' => $object, + ) + ) ); foreach ( $posts as $post ) { $post_title = $post->post_title; if ( '' === $post_title ) { - /* translators: %d: ID of a post. */ + /* translators: %d: ID of a post */ $post_title = sprintf( __( '#%d (no title)' ), $post->ID ); } - - $post_type_label = get_post_type_object( $post->post_type )->labels->singular_name; - $post_states = get_post_states( $post ); - if ( ! empty( $post_states ) ) { - $post_type_label = implode( ',', $post_states ); - } - $items[] = array( 'id' => "post-{$post->ID}", 'title' => html_entity_decode( $post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ), 'type' => 'post_type', - 'type_label' => $post_type_label, + 'type_label' => get_post_type_object( $post->post_type )->labels->singular_name, 'object' => $post->post_type, - 'object_id' => (int) $post->ID, - 'url' => get_permalink( (int) $post->ID ), + 'object_id' => intval( $post->ID ), + 'url' => get_permalink( intval( $post->ID ) ), ); } - } elseif ( 'taxonomy' === $object_type ) { + } elseif ( 'taxonomy' === $type ) { $terms = get_terms( + $object, array( - 'taxonomy' => $object_name, 'child_of' => 0, 'exclude' => '', 'hide_empty' => false, @@ -270,7 +224,6 @@ public function load_available_items_query( $object_type = 'post_type', $object_ 'pad_counts' => false, ) ); - if ( is_wp_error( $terms ) ) { return $terms; } @@ -282,8 +235,8 @@ public function load_available_items_query( $object_type = 'post_type', $object_ 'type' => 'taxonomy', 'type_label' => get_taxonomy( $term->taxonomy )->labels->singular_name, 'object' => $term->taxonomy, - 'object_id' => (int) $term->term_id, - 'url' => get_term_link( (int) $term->term_id, $term->taxonomy ), + 'object_id' => intval( $term->term_id ), + 'url' => get_term_link( intval( $term->term_id ), $term->taxonomy ), ); } } @@ -291,14 +244,14 @@ public function load_available_items_query( $object_type = 'post_type', $object_ /** * Filters the available menu items. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @param array $items The array of menu items. - * @param string $object_type The object type. - * @param string $object_name The object name. - * @param int $page The current page number. + * @param array $items The array of menu items. + * @param string $type The object type. + * @param string $object The object name. + * @param int $page The current page number. */ - $items = apply_filters( 'customize_nav_menu_available_items', $items, $object_type, $object_name, $page ); + $items = apply_filters( 'customize_nav_menu_available_items', $items, $type, $object, $page ); return $items; } @@ -306,7 +259,7 @@ public function load_available_items_query( $object_type = 'post_type', $object_ /** * Ajax handler for searching available menu items. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function ajax_search_available_items() { check_ajax_referer( 'customize-menus', 'customize-menus-nonce' ); @@ -344,7 +297,7 @@ public function ajax_search_available_items() { * * Based on WP_Editor::wp_link_query(). * - * @since 4.3.0 + * @since WP-4.3.0 * * @param array $args Optional. Accepts 'pagenum' and 's' (search) arguments. * @return array Menu items. @@ -395,35 +348,27 @@ public function search_available_items_query( $args = array() ) { foreach ( $posts as $post ) { $post_title = $post->post_title; if ( '' === $post_title ) { - /* translators: %d: ID of a post. */ + /* translators: %d: ID of a post */ $post_title = sprintf( __( '#%d (no title)' ), $post->ID ); } - - $post_type_label = $post_type_objects[ $post->post_type ]->labels->singular_name; - $post_states = get_post_states( $post ); - if ( ! empty( $post_states ) ) { - $post_type_label = implode( ',', $post_states ); - } - $items[] = array( 'id' => 'post-' . $post->ID, 'title' => html_entity_decode( $post_title, ENT_QUOTES, get_bloginfo( 'charset' ) ), 'type' => 'post_type', - 'type_label' => $post_type_label, + 'type_label' => $post_type_objects[ $post->post_type ]->labels->singular_name, 'object' => $post->post_type, - 'object_id' => (int) $post->ID, - 'url' => get_permalink( (int) $post->ID ), + 'object_id' => intval( $post->ID ), + 'url' => get_permalink( intval( $post->ID ) ), ); } // Query taxonomy terms. $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'names' ); $terms = get_terms( + $taxonomies, array( - 'taxonomies' => $taxonomies, 'name__like' => $args['s'], 'number' => 20, - 'hide_empty' => false, 'offset' => 20 * ( $args['pagenum'] - 1 ), ) ); @@ -437,36 +382,32 @@ public function search_available_items_query( $args = array() ) { 'type' => 'taxonomy', 'type_label' => get_taxonomy( $term->taxonomy )->labels->singular_name, 'object' => $term->taxonomy, - 'object_id' => (int) $term->term_id, - 'url' => get_term_link( (int) $term->term_id, $term->taxonomy ), + 'object_id' => intval( $term->term_id ), + 'url' => get_term_link( intval( $term->term_id ), $term->taxonomy ), ); } } // Add "Home" link if search term matches. Treat as a page, but switch to custom on add. if ( isset( $args['s'] ) ) { - // Only insert custom "Home" link if there's no Front Page - $front_page = 'page' === get_option( 'show_on_front' ) ? (int) get_option( 'page_on_front' ) : 0; - if ( empty( $front_page ) ) { - $title = _x( 'Home', 'nav menu home label' ); - $matches = function_exists( 'mb_stripos' ) ? false !== mb_stripos( $title, $args['s'] ) : false !== stripos( $title, $args['s'] ); - if ( $matches ) { - $items[] = array( - 'id' => 'home', - 'title' => $title, - 'type' => 'custom', - 'type_label' => __( 'Custom Link' ), - 'object' => '', - 'url' => home_url(), - ); - } + $title = _x( 'Home', 'nav menu home label' ); + $matches = function_exists( 'mb_stripos' ) ? false !== mb_stripos( $title, $args['s'] ) : false !== stripos( $title, $args['s'] ); + if ( $matches ) { + $items[] = array( + 'id' => 'home', + 'title' => $title, + 'type' => 'custom', + 'type_label' => __( 'Custom Link' ), + 'object' => '', + 'url' => home_url(), + ); } } /** * Filters the available menu items during a search request. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param array $items The array of menu items. * @param array $args Includes 'pagenum' and 's' (search) arguments. @@ -477,9 +418,9 @@ public function search_available_items_query( $args = array() ) { } /** - * Enqueues scripts and styles for Customizer pane. + * Enqueue scripts and styles for Customizer pane. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function enqueue_scripts() { wp_enqueue_style( 'customize-nav-menus' ); @@ -489,11 +430,10 @@ public function enqueue_scripts() { $temp_nav_menu_item_setting = new WP_Customize_Nav_Menu_Item_Setting( $this->manager, 'nav_menu_item[-1]' ); $num_locations = count( get_registered_nav_menus() ); - if ( 1 === $num_locations ) { $locations_description = __( 'Your theme can display menus in one location.' ); } else { - /* translators: %s: Number of menu locations. */ + /* translators: %s: number of menu locations */ $locations_description = sprintf( _n( 'Your theme can display menus in %s location.', 'Your theme can display menus in %s locations.', $num_locations ), number_format_i18n( $num_locations ) ); } @@ -506,7 +446,7 @@ public function enqueue_scripts() { 'unnamed' => _x( '(unnamed)', 'Missing menu name.' ), 'custom_label' => __( 'Custom Link' ), 'page_label' => get_post_type_object( 'page' )->labels->singular_name, - /* translators: %s: Menu location. */ + /* translators: %s: menu location */ 'menuLocation' => _x( '(Currently set to: %s)', 'menu' ), 'locationsTitle' => 1 === $num_locations ? __( 'Menu Location' ) : __( 'Menu Locations' ), 'locationsDescription' => $locations_description, @@ -520,15 +460,13 @@ public function enqueue_scripts() { 'movedDown' => __( 'Menu item moved down' ), 'movedLeft' => __( 'Menu item moved out of submenu' ), 'movedRight' => __( 'Menu item is now a sub-item' ), - /* translators: ▸ is the unicode right-pointing triangle. %s: Section title in the Customizer. */ + /* translators: ▸ is the unicode right-pointing triangle, and %s is the section title in the Customizer */ 'customizingMenus' => sprintf( __( 'Customizing ▸ %s' ), esc_html( $this->manager->get_panel( 'nav_menus' )->title ) ), - /* translators: %s: Title of an invalid menu item. */ + /* translators: %s: title of menu item which is invalid */ 'invalidTitleTpl' => __( '%s (Invalid)' ), - /* translators: %s: Title of a menu item in draft status. */ + /* translators: %s: title of menu item in draft status */ 'pendingTitleTpl' => __( '%s (Pending)' ), - /* translators: %d: Number of menu items found. */ 'itemsFound' => __( 'Number of items found: %d' ), - /* translators: %d: Number of additional menu items found. */ 'itemsFoundMore' => __( 'Additional items found: %d' ), 'itemsLoadingMore' => __( 'Loading more results... please wait.' ), 'reorderModeOn' => __( 'Reorder mode enabled' ), @@ -554,17 +492,17 @@ public function enqueue_scripts() { 'moveUp' => __( 'Move up one' ), 'moveDown' => __( 'Move down one' ), 'moveToTop' => __( 'Move to the top' ), - /* translators: %s: Previous item name. */ + /* translators: %s: previous item name */ 'moveUnder' => __( 'Move under %s' ), - /* translators: %s: Previous item name. */ + /* translators: %s: previous item name */ 'moveOutFrom' => __( 'Move out from under %s' ), - /* translators: %s: Previous item name. */ + /* translators: %s: previous item name */ 'under' => __( 'Under %s' ), - /* translators: %s: Previous item name. */ + /* translators: %s: previous item name */ 'outFrom' => __( 'Out from under %s' ), - /* translators: 1: Item name, 2: Item position, 3: Total number of items. */ + /* translators: 1: item name, 2: item position, 3: total number of items */ 'menuFocus' => __( '%1$s. Menu item %2$d of %3$d.' ), - /* translators: 1: Item name, 2: Item position, 3: Parent item name. */ + /* translators: 1: item name, 2: item position, 3: parent item name */ 'subMenuFocus' => __( '%1$s. Sub item number %2$d under %3$s.' ), ); wp_localize_script( 'nav-menu', 'menus', $nav_menus_l10n ); @@ -577,7 +515,7 @@ public function enqueue_scripts() { * to override the default false value with an array of args to pass to * the WP_Customize_Setting constructor. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param false|array $setting_args The arguments to the WP_Customize_Setting constructor. * @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`. @@ -599,9 +537,9 @@ public function filter_dynamic_setting_args( $setting_args, $setting_id ) { } /** - * Allows non-statically created settings to be constructed with custom WP_Customize_Setting subclass. + * Allow non-statically created settings to be constructed with custom WP_Customize_Setting subclass. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param string $setting_class WP_Customize_Setting or a subclass. * @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`. @@ -620,9 +558,9 @@ public function filter_dynamic_setting_class( $setting_class, $setting_id, $sett } /** - * Adds the customizer settings and controls. + * Add the customizer settings and controls. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function customize_register() { $changeset = $this->manager->unsanitized_post_values(); @@ -652,19 +590,11 @@ public function customize_register() { // Create a panel for Menus. $description = '<p>' . __( 'This panel is used for managing navigation menus for content you have already published on your site. You can create menus and add items for existing content such as pages, posts, categories, tags, formats, or custom links.' ) . '</p>'; if ( current_theme_supports( 'widgets' ) ) { - $description .= '<p>' . sprintf( - /* translators: %s: URL to the Widgets panel of the Customizer. */ - __( 'Menus can be displayed in locations defined by your theme or in <a href="%s">widget areas</a> by adding a “Navigation Menu” widget.' ), - "javascript:wp.customize.panel( 'widgets' ).focus();" - ) . '</p>'; + /* translators: URL to the widgets panel of the customizer */ + $description .= '<p>' . sprintf( __( 'Menus can be displayed in locations defined by your theme or in <a href="%s">widget areas</a> by adding a “Navigation Menu” widget.' ), "javascript:wp.customize.panel( 'widgets' ).focus();" ) . '</p>'; } else { $description .= '<p>' . __( 'Menus can be displayed in locations defined by your theme.' ) . '</p>'; } - - /* - * Once multiple theme supports are allowed in WP_Customize_Panel, - * this panel can be restricted to themes that support menus or widgets. - */ $this->manager->add_panel( new WP_Customize_Nav_Menus_Panel( $this->manager, @@ -673,6 +603,7 @@ public function customize_register() { 'title' => __( 'Menus' ), 'description' => $description, 'priority' => 100, + // 'theme_supports' => 'menus|widgets', @todo allow multiple theme supports ) ) ); @@ -681,16 +612,15 @@ public function customize_register() { // Menu locations. $locations = get_registered_nav_menus(); $num_locations = count( $locations ); - - if ( 1 === $num_locations ) { + if ( 1 == $num_locations ) { $description = '<p>' . __( 'Your theme can display menus in one location. Select which menu you would like to use.' ) . '</p>'; } else { - /* translators: %s: Number of menu locations. */ + /* translators: %s: number of menu locations */ $description = '<p>' . sprintf( _n( 'Your theme can display menus in %s location. Select which menu you would like to use.', 'Your theme can display menus in %s locations. Select which menu appears in each location.', $num_locations ), number_format_i18n( $num_locations ) ) . '</p>'; } if ( current_theme_supports( 'widgets' ) ) { - /* translators: URL to the Widgets panel of the Customizer. */ + /* translators: URL to the widgets panel of the customizer */ $description .= '<p>' . sprintf( __( 'If your theme has widget areas, you can also add menus there. Visit the <a href="%s">Widgets panel</a> and add a “Navigation Menu widget” to display a menu in a sidebar or footer.' ), "javascript:wp.customize.panel( 'widgets' ).focus();" ) . '</p>'; } @@ -762,11 +692,6 @@ public function customize_register() { ); } - // Used to denote post states for special pages. - if ( ! function_exists( 'get_post_states' ) ) { - require_once ABSPATH . 'wp-admin/includes/template.php'; - } - // Register each menu as a Customizer section, and add each menu item to each menu. foreach ( $menus as $menu ) { $menu_id = $menu->term_id; @@ -864,12 +789,12 @@ public function customize_register() { } /** - * Gets the base10 intval. + * Get the base10 intval. * * This is used as a setting's sanitize_callback; we can't use just plain * intval because the second argument is not what intval() expects. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param mixed $value Number to convert. * @return int Integer. @@ -879,10 +804,10 @@ public function intval_base10( $value ) { } /** - * Returns an array of all the available item types. + * Return an array of all the available item types. * - * @since 4.3.0 - * @since 4.7.0 Each array item now includes a `$type_label` in addition to `$title`, `$type`, and `$object`. + * @since WP-4.3.0 + * @since WP-4.7.0 Each array item now includes a `$type_label` in addition to `$title`, `$type`, and `$object`. * * @return array The available menu item types. */ @@ -919,8 +844,8 @@ public function available_item_types() { /** * Filters the available menu item types. * - * @since 4.3.0 - * @since 4.7.0 Each array item now includes a `$type_label` in addition to `$title`, `$type`, and `$object`. + * @since WP-4.3.0 + * @since WP-4.7.0 Each array item now includes a `$type_label` in addition to `$title`, `$type`, and `$object`. * * @param array $item_types Navigation menu item types. */ @@ -930,17 +855,17 @@ public function available_item_types() { } /** - * Adds a new `auto-draft` post. + * Add a new `auto-draft` post. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $postarr { * Post array. Note that post_status is overridden to be `auto-draft`. * - * @var string $post_title Post title. Required. - * @var string $post_type Post type. Required. - * @var string $post_name Post name. - * @var string $post_content Post content. + * @var string $post_title Post title. Required. + * @var string $post_type Post type. Required. + * @var string $post_name Post name. + * @var string $post_content Post content. * } * @return WP_Post|WP_Error Inserted auto-draft post object or error. */ @@ -949,10 +874,10 @@ public function insert_auto_draft_post( $postarr ) { return new WP_Error( 'unknown_post_type', __( 'Invalid post type.' ) ); } if ( empty( $postarr['post_title'] ) ) { - return new WP_Error( 'empty_title', __( 'Empty title.' ) ); + return new WP_Error( 'empty_title', __( 'Empty title' ) ); } if ( ! empty( $postarr['post_status'] ) ) { - return new WP_Error( 'status_forbidden', __( 'Status is forbidden.' ) ); + return new WP_Error( 'status_forbidden', __( 'Status is forbidden' ) ); } /* @@ -986,7 +911,7 @@ public function insert_auto_draft_post( $postarr ) { /** * Ajax handler for adding a new auto-draft post. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function ajax_insert_auto_draft_post() { if ( ! check_ajax_referer( 'customize-menus', 'customize-menus-nonce', false ) ) { @@ -1042,7 +967,7 @@ public function ajax_insert_auto_draft_post() { } $data = array( - /* translators: 1: Post type name, 2: Error message. */ + /* translators: %1$s is the post type name and %2$s is the error message. */ 'message' => sprintf( __( '%1$s could not be created: %2$s' ), $singular_name, $error->get_error_message() ), ); wp_send_json_error( $data ); @@ -1057,11 +982,11 @@ public function ajax_insert_auto_draft_post() { } /** - * Prints the JavaScript templates used to render Menu Customizer components. + * Print the JavaScript templates used to render Menu Customizer components. * * Templates are imported into the JS use wp.template. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function print_templates() { ?> @@ -1076,7 +1001,7 @@ public function print_templates() { <button type="button" class="button-link item-add"> <span class="screen-reader-text"> <?php - /* translators: Hidden accessibility text. 1: Title of a menu item, 2: Type of a menu item. */ + /* translators: 1: Title of a menu item, 2: Type of a menu item */ printf( __( 'Add to menu: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.type_label }}' ); ?> </span> @@ -1120,7 +1045,7 @@ public function print_templates() { <script type="text/html" id="tmpl-nav-menu-create-menu-section-title"> <p class="add-new-menu-notice"> - <?php _e( 'It does not look like your site has any menus yet. Want to build one? Click the button to start.' ); ?> + <?php _e( 'It doesn’t look like your site has any menus yet. Want to build one? Click the button to start.' ); ?> </p> <p class="add-new-menu-notice"> <?php _e( 'You’ll create a menu, assign it a location, and add menu items like links to pages and categories. If your theme has multiple menu areas, you might need to create more than one.' ); ?> @@ -1135,58 +1060,38 @@ public function print_templates() { } /** - * Prints the HTML template used to render the add-menu-item frame. + * Print the html template used to render the add-menu-item frame. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function available_items_template() { ?> - <ul id="available-menu-items" class="accordion-container"> + <div id="available-menu-items" class="accordion-container"> <div class="customize-section-title"> <button type="button" class="customize-section-back" tabindex="-1"> - <span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Back' ); - ?> - </span> + <span class="screen-reader-text"><?php _e( 'Back' ); ?></span> </button> <h3> <span class="customize-action"> <?php - /* translators: ▸ is the unicode right-pointing triangle. %s: Section title in the Customizer. */ + /* translators: ▸ is the unicode right-pointing triangle, and %s is the section title in the Customizer */ printf( __( 'Customizing ▸ %s' ), esc_html( $this->manager->get_panel( 'nav_menus' )->title ) ); ?> </span> <?php _e( 'Add Menu Items' ); ?> </h3> </div> - <li id="available-menu-items-search" class="accordion-section cannot-expand"> + <div id="available-menu-items-search" class="accordion-section cannot-expand"> <div class="accordion-section-title"> - <label class="screen-reader-text" for="menu-items-search"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Search Menu Items' ); - ?> - </label> - <input type="text" id="menu-items-search" placeholder="<?php esc_attr_e( 'Search menu items…' ); ?>" aria-describedby="menu-items-search-desc"> - <p class="screen-reader-text" id="menu-items-search-desc"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'The search results will be updated as you type.' ); - ?> - </p> + <label class="screen-reader-text" for="menu-items-search"><?php _e( 'Search Menu Items' ); ?></label> + <input type="text" id="menu-items-search" placeholder="<?php esc_attr_e( 'Search menu items…' ); ?>" aria-describedby="menu-items-search-desc" /> + <p class="screen-reader-text" id="menu-items-search-desc"><?php _e( 'The search results will be updated as you type.' ); ?></p> <span class="spinner"></span> </div> <div class="search-icon" aria-hidden="true"></div> - <button type="button" class="clear-results"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Clear Results' ); - ?> - </span></button> + <button type="button" class="clear-results"><span class="screen-reader-text"><?php _e( 'Clear Results' ); ?></span></button> <ul class="accordion-section-content available-menu-items-list" data-type="search"></ul> - </li> + </div> <?php // Ensure the page post type comes first in the list. @@ -1208,84 +1113,90 @@ public function available_items_template() { $this->print_post_type_container( $item_type ); } ?> - </ul><!-- #available-menu-items --> + </div><!-- #available-menu-items --> <?php } /** - * Prints the markup for new menu items. + * Print the markup for new menu items. * * To be used in the template #available-menu-items. * - * @since 4.7.0 - * @since CP-2.0.0 - Implement HTML5 <details> tag - * - * Details and summary tags added for accessibility + * @since WP-4.7.0 * * @param array $available_item_type Menu item data to output, including title, type, and label. + * @return void */ protected function print_post_type_container( $available_item_type ) { $id = sprintf( 'available-menu-items-%s-%s', $available_item_type['type'], $available_item_type['object'] ); ?> - <li id="<?php echo esc_attr( $id ); ?>" class="accordion-section"> - <details> - <summary class="accordion-section-title"> - <?php echo esc_html( $available_item_type['title'] ); ?> - <span class="no-items"><?php _e( 'No items' ); ?></span> - </summary> - <div class="accordion-section-content"> - <?php if ( 'post_type' === $available_item_type['type'] ) : ?> - <?php $post_type_obj = get_post_type_object( $available_item_type['object'] ); ?> - <?php if ( current_user_can( $post_type_obj->cap->create_posts ) && current_user_can( $post_type_obj->cap->publish_posts ) ) : ?> - <div class="new-content-item"> - <label for="<?php echo esc_attr( 'create-item-input-' . $available_item_type['object'] ); ?>" class="screen-reader-text"><?php echo esc_html( $post_type_obj->labels->add_new_item ); ?></label> - <input type="text" id="<?php echo esc_attr( 'create-item-input-' . $available_item_type['object'] ); ?>" class="create-item-input" placeholder="<?php echo esc_attr( $post_type_obj->labels->add_new_item ); ?>"> - <button type="button" class="button add-content"><?php _e( 'Add' ); ?></button> - </div> - <?php endif; ?> + <div id="<?php echo esc_attr( $id ); ?>" class="accordion-section"> + <h4 class="accordion-section-title" role="presentation"> + <?php echo esc_html( $available_item_type['title'] ); ?> + <span class="spinner"></span> + <span class="no-items"><?php _e( 'No items' ); ?></span> + <button type="button" class="button-link" aria-expanded="false"> + <span class="screen-reader-text"> + <?php + /* translators: %s: Title of a section with menu items */ + printf( __( 'Toggle section: %s' ), esc_html( $available_item_type['title'] ) ); + ?> + </span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + </h4> + <div class="accordion-section-content"> + <?php if ( 'post_type' === $available_item_type['type'] ) : ?> + <?php $post_type_obj = get_post_type_object( $available_item_type['object'] ); ?> + <?php if ( current_user_can( $post_type_obj->cap->create_posts ) && current_user_can( $post_type_obj->cap->publish_posts ) ) : ?> + <div class="new-content-item"> + <label for="<?php echo esc_attr( 'create-item-input-' . $available_item_type['object'] ); ?>" class="screen-reader-text"><?php echo esc_html( $post_type_obj->labels->add_new_item ); ?></label> + <input type="text" id="<?php echo esc_attr( 'create-item-input-' . $available_item_type['object'] ); ?>" class="create-item-input" placeholder="<?php echo esc_attr( $post_type_obj->labels->add_new_item ); ?>"> + <button type="button" class="button add-content"><?php _e( 'Add' ); ?></button> + </div> <?php endif; ?> - <ul class="available-menu-items-list" data-type="<?php echo esc_attr( $available_item_type['type'] ); ?>" data-object="<?php echo esc_attr( $available_item_type['object'] ); ?>" data-type_label="<?php echo esc_attr( isset( $available_item_type['type_label'] ) ? $available_item_type['type_label'] : $available_item_type['type'] ); ?>"></ul> - </div> - </details> - </li> + <?php endif; ?> + <ul class="available-menu-items-list" data-type="<?php echo esc_attr( $available_item_type['type'] ); ?>" data-object="<?php echo esc_attr( $available_item_type['object'] ); ?>" data-type_label="<?php echo esc_attr( isset( $available_item_type['type_label'] ) ? $available_item_type['type_label'] : $available_item_type['type'] ); ?>"></ul> + </div> + </div> <?php } /** - * Prints the markup for available menu item custom links. + * Print the markup for available menu item custom links. * - * @since 4.7.0 - * @since CP-2.0.0 - Implement HTML5 <details> tag - * - * Details and summary tags added for accessibility + * @since WP-4.7.0 * + * @return void */ protected function print_custom_links_available_menu_item() { ?> - <li id="new-custom-menu-item" class="accordion-section"> - <details> - <summary class="accordion-section-title"> - <?php _e( 'Custom Links' ); ?> - </summary> - <div class="accordion-section-content customlinkdiv"> - <input type="hidden" value="custom" id="custom-menu-item-type" name="menu-item[-1][menu-item-type]" /> - <p id="menu-item-url-wrap" class="wp-clearfix"> - <label class="howto" for="custom-menu-item-url"><?php _e( 'URL' ); ?></label> - <input id="custom-menu-item-url" name="menu-item[-1][menu-item-url]" type="text" class="code menu-item-textbox" placeholder="https://"> - </p> - <p id="menu-item-name-wrap" class="wp-clearfix"> - <label class="howto" for="custom-menu-item-name"><?php _e( 'Link Text' ); ?></label> - <input id="custom-menu-item-name" name="menu-item[-1][menu-item-title]" type="text" class="regular-text menu-item-textbox"> - </p> - <p class="button-controls"> - <span class="add-to-menu"> - <input type="submit" class="button submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-custom-menu-item" id="custom-menu-item-submit"> - <span class="spinner"></span> - </span> - </p> - </div> - </details> - </li> + <div id="new-custom-menu-item" class="accordion-section"> + <h4 class="accordion-section-title" role="presentation"> + <?php _e( 'Custom Links' ); ?> + <button type="button" class="button-link" aria-expanded="false"> + <span class="screen-reader-text"><?php _e( 'Toggle section: Custom Links' ); ?></span> + <span class="toggle-indicator" aria-hidden="true"></span> + </button> + </h4> + <div class="accordion-section-content customlinkdiv"> + <input type="hidden" value="custom" id="custom-menu-item-type" name="menu-item[-1][menu-item-type]" /> + <p id="menu-item-url-wrap" class="wp-clearfix"> + <label class="howto" for="custom-menu-item-url"><?php _e( 'URL' ); ?></label> + <input id="custom-menu-item-url" name="menu-item[-1][menu-item-url]" type="text" class="code menu-item-textbox" value="http://"> + </p> + <p id="menu-item-name-wrap" class="wp-clearfix"> + <label class="howto" for="custom-menu-item-name"><?php _e( 'Link Text' ); ?></label> + <input id="custom-menu-item-name" name="menu-item[-1][menu-item-title]" type="text" class="regular-text menu-item-textbox"> + </p> + <p class="button-controls"> + <span class="add-to-menu"> + <input type="submit" class="button submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-custom-menu-item" id="custom-menu-item-submit"> + <span class="spinner"></span> + </span> + </p> + </div> + </div> <?php } @@ -1296,7 +1207,7 @@ protected function print_custom_links_available_menu_item() { /** * Nav menu args used for each instance, keyed by the args HMAC. * - * @since 4.3.0 + * @since WP-4.3.0 * @var array */ public $preview_nav_menu_instance_args = array(); @@ -1304,7 +1215,7 @@ protected function print_custom_links_available_menu_item() { /** * Filters arguments for dynamic nav_menu selective refresh partials. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param array|false $partial_args Partial args. * @param string $partial_id Partial ID. @@ -1332,24 +1243,24 @@ public function customize_dynamic_partial_args( $partial_args, $partial_id ) { } /** - * Adds hooks for the Customizer preview. + * Add hooks for the Customizer preview. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function customize_preview_init() { add_action( 'wp_enqueue_scripts', array( $this, 'customize_preview_enqueue_deps' ) ); add_filter( 'wp_nav_menu_args', array( $this, 'filter_wp_nav_menu_args' ), 1000 ); add_filter( 'wp_nav_menu', array( $this, 'filter_wp_nav_menu' ), 10, 2 ); - add_action( 'wp_footer', array( $this, 'export_preview_data' ), 1 ); + add_filter( 'wp_footer', array( $this, 'export_preview_data' ), 1 ); add_filter( 'customize_render_partials_response', array( $this, 'export_partial_rendered_nav_menu_instances' ) ); } /** - * Makes the auto-draft status protected so that it can be queried. + * Make the auto-draft status protected so that it can be queried. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @global stdClass[] $wp_post_statuses List of post statuses. + * @global array $wp_post_statuses List of post statuses. */ public function make_auto_draft_status_previewable() { global $wp_post_statuses; @@ -1357,12 +1268,12 @@ public function make_auto_draft_status_previewable() { } /** - * Sanitizes post IDs for posts created for nav menu items to be published. + * Sanitize post IDs for posts created for nav menu items to be published. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $value Post IDs. - * @return array Post IDs. + * @returns array Post IDs. */ public function sanitize_nav_menus_created_posts( $value ) { $post_ids = array(); @@ -1378,7 +1289,7 @@ public function sanitize_nav_menus_created_posts( $value ) { if ( ! $post_type_obj ) { continue; } - if ( ! current_user_can( $post_type_obj->cap->publish_posts ) || ! current_user_can( 'edit_post', $post_id ) ) { + if ( ! current_user_can( $post_type_obj->cap->publish_posts ) || ! current_user_can( $post_type_obj->cap->edit_post, $post_id ) ) { continue; } $post_ids[] = $post->ID; @@ -1387,14 +1298,14 @@ public function sanitize_nav_menus_created_posts( $value ) { } /** - * Publishes the auto-draft posts that were created for nav menu items. + * Publish the auto-draft posts that were created for nav menu items. * * The post IDs will have been sanitized by already by * `WP_Customize_Nav_Menu_Items::sanitize_nav_menus_created_posts()` to * remove any post IDs for which the user cannot publish or for which the * post is not an auto-draft. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param WP_Customize_Setting $setting Customizer setting object. */ @@ -1428,12 +1339,11 @@ public function save_nav_menus_created_posts( $setting ) { } /** - * Keeps track of the arguments that are being passed to wp_nav_menu(). - * - * @since 4.3.0 + * Keep track of the arguments that are being passed to wp_nav_menu(). * + * @since WP-4.3.0 * @see wp_nav_menu() - * @see WP_Customize_Widgets::filter_dynamic_sidebar_params() + * @see WP_Customize_Widgets_Partial_Refresh::filter_dynamic_sidebar_params() * * @param array $args An array containing wp_nav_menu() arguments. * @return array Arguments. @@ -1498,7 +1408,7 @@ public function filter_wp_nav_menu_args( $args ) { * * Injects attributes into container element. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_nav_menu() * @@ -1522,7 +1432,7 @@ public function filter_wp_nav_menu( $nav_menu_content, $args ) { * * Note that the array is expected to be pre-sorted. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param array $args The arguments to hash. * @return string Hashed nav menu arguments. @@ -1532,9 +1442,9 @@ public function hash_nav_menu_args( $args ) { } /** - * Enqueues scripts for the Customizer preview. + * Enqueue scripts for the Customizer preview. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function customize_preview_enqueue_deps() { wp_enqueue_script( 'customize-preview-nav-menus' ); // Note that we have overridden this. @@ -1543,7 +1453,7 @@ public function customize_preview_enqueue_deps() { /** * Exports data from PHP to JS. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function export_preview_data() { @@ -1555,9 +1465,9 @@ public function export_preview_data() { } /** - * Exports any wp_nav_menu() calls during the rendering of any partials. + * Export any wp_nav_menu() calls during the rendering of any partials. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param array $response Response. * @return array Response. @@ -1568,9 +1478,9 @@ public function export_partial_rendered_nav_menu_instances( $response ) { } /** - * Renders a specific menu via wp_nav_menu() using the supplied arguments. + * Render a specific menu via wp_nav_menu() using the supplied arguments. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_nav_menu() * diff --git a/wp-includes/class-wp-customize-panel.php b/wp-includes/class-wp-customize-panel.php index 9cf514c..89407fe 100644 --- a/wp-includes/class-wp-customize-panel.php +++ b/wp-includes/class-wp-customize-panel.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.0.0 + * @since WP-4.0.0 */ /** @@ -12,11 +12,10 @@ * * A UI container for sections, managed by the WP_Customize_Manager. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see WP_Customize_Manager */ -#[AllowDynamicProperties] class WP_Customize_Panel { /** @@ -24,7 +23,9 @@ class WP_Customize_Panel { * * Used when sorting two instances whose priorities are equal. * - * @since 4.1.0 + * @since WP-4.1.0 + * + * @static * @var int */ protected static $instance_count = 0; @@ -32,7 +33,7 @@ class WP_Customize_Panel { /** * Order in which this instance was created in relation to other instances. * - * @since 4.1.0 + * @since WP-4.1.0 * @var int */ public $instance_number; @@ -40,7 +41,7 @@ class WP_Customize_Panel { /** * WP_Customize_Manager instance. * - * @since 4.0.0 + * @since WP-4.0.0 * @var WP_Customize_Manager */ public $manager; @@ -48,7 +49,7 @@ class WP_Customize_Panel { /** * Unique identifier. * - * @since 4.0.0 + * @since WP-4.0.0 * @var string */ public $id; @@ -56,31 +57,31 @@ class WP_Customize_Panel { /** * Priority of the panel, defining the display order of panels and sections. * - * @since 4.0.0 - * @var int + * @since WP-4.0.0 + * @var integer */ public $priority = 160; /** * Capability required for the panel. * - * @since 4.0.0 + * @since WP-4.0.0 * @var string */ public $capability = 'edit_theme_options'; /** - * Theme features required to support the panel. + * Theme feature support for the panel. * - * @since 4.0.0 - * @var mixed[] + * @since WP-4.0.0 + * @var string|array */ public $theme_supports = ''; /** * Title of the panel to show in UI. * - * @since 4.0.0 + * @since WP-4.0.0 * @var string */ public $title = ''; @@ -88,7 +89,7 @@ class WP_Customize_Panel { /** * Description to show in the UI. * - * @since 4.0.0 + * @since WP-4.0.0 * @var string */ public $description = ''; @@ -96,7 +97,7 @@ class WP_Customize_Panel { /** * Auto-expand a section in a panel when the panel is expanded when the panel only has the one section. * - * @since 4.7.4 + * @since WP-4.7.4 * @var bool */ public $auto_expand_sole_section = false; @@ -104,7 +105,7 @@ class WP_Customize_Panel { /** * Customizer sections for this panel. * - * @since 4.0.0 + * @since WP-4.0.0 * @var array */ public $sections; @@ -112,7 +113,7 @@ class WP_Customize_Panel { /** * Type of this panel. * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $type = 'default'; @@ -120,7 +121,7 @@ class WP_Customize_Panel { /** * Active callback. * - * @since 4.1.0 + * @since WP-4.1.0 * * @see WP_Customize_Section::active() * @@ -136,23 +137,11 @@ class WP_Customize_Panel { * * Any supplied $args override class property defaults. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param WP_Customize_Manager $manager Customizer bootstrap instance. - * @param string $id A specific ID for the panel. - * @param array $args { - * Optional. Array of properties for the new Panel object. Default empty array. - * - * @type int $priority Priority of the panel, defining the display order - * of panels and sections. Default 160. - * @type string $capability Capability required for the panel. - * Default `edit_theme_options`. - * @type mixed[] $theme_supports Theme features required to support the panel. - * @type string $title Title of the panel to show in UI. - * @type string $description Description to show in the UI. - * @type string $type Type of the panel. - * @type callable $active_callback Active callback. - * } + * @param string $id An specific ID for the panel. + * @param array $args Panel arguments. */ public function __construct( $manager, $id, $args = array() ) { $keys = array_keys( get_object_vars( $this ) ); @@ -176,7 +165,7 @@ public function __construct( $manager, $id, $args = array() ) { /** * Check whether panel is active to current Customizer preview. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return bool Whether the panel is active to the current preview. */ @@ -187,7 +176,7 @@ final public function active() { /** * Filters response of WP_Customize_Panel::active(). * - * @since 4.1.0 + * @since WP-4.1.0 * * @param bool $active Whether the Customizer panel is active. * @param WP_Customize_Panel $panel WP_Customize_Panel instance. @@ -203,7 +192,7 @@ final public function active() { * Subclasses can override this with their specific logic, or they may * provide an 'active_callback' argument to the constructor. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return bool Always true. */ @@ -214,7 +203,7 @@ public function active_callback() { /** * Gather the parameters passed to client JavaScript via JSON. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return array The array to be exported to the client as JSON. */ @@ -232,17 +221,16 @@ public function json() { * Checks required user capabilities and whether the theme has the * feature support required by the panel. * - * @since 4.0.0 - * @since 5.9.0 Method was marked non-final. + * @since WP-4.0.0 * * @return bool False if theme doesn't support the panel or the user doesn't have the capability. */ - public function check_capabilities() { - if ( $this->capability && ! current_user_can( $this->capability ) ) { + final public function check_capabilities() { + if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) { return false; } - if ( $this->theme_supports && ! current_theme_supports( ...(array) $this->theme_supports ) ) { + if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) { return false; } @@ -252,7 +240,7 @@ public function check_capabilities() { /** * Get the panel's content template for insertion into the Customizer pane. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return string Content for the panel. */ @@ -265,7 +253,7 @@ final public function get_content() { /** * Check capabilities and render the panel. * - * @since 4.0.0 + * @since WP-4.0.0 */ final public function maybe_render() { if ( ! $this->check_capabilities() ) { @@ -275,9 +263,9 @@ final public function maybe_render() { /** * Fires before rendering a Customizer panel. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param WP_Customize_Panel $panel WP_Customize_Panel instance. + * @param WP_Customize_Panel $this WP_Customize_Panel instance. */ do_action( 'customize_render_panel', $this ); @@ -287,7 +275,7 @@ final public function maybe_render() { * The dynamic portion of the hook name, `$this->id`, refers to * the ID of the specific Customizer panel to be rendered. * - * @since 4.0.0 + * @since WP-4.0.0 */ do_action( "customize_render_panel_{$this->id}" ); @@ -299,7 +287,7 @@ final public function maybe_render() { * * Panel containers are now rendered in JS by default, see WP_Customize_Panel::print_template(). * - * @since 4.0.0 + * @since WP-4.0.0 */ protected function render() {} @@ -308,7 +296,7 @@ protected function render() {} * * Panel contents are now rendered in JS by default, see WP_Customize_Panel::print_template(). * - * @since 4.1.0 + * @since WP-4.1.0 */ protected function render_content() {} @@ -318,7 +306,7 @@ protected function render_content() {} * This function is only run for panel types that have been registered with * WP_Customize_Manager::register_panel_type(). * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Manager::register_panel_type() */ @@ -341,19 +329,14 @@ public function print_template() { * * @see WP_Customize_Panel::print_template() * - * @since 4.3.0 + * @since WP-4.3.0 */ protected function render_template() { ?> <li id="accordion-panel-{{ data.id }}" class="accordion-section control-section control-panel control-panel-{{ data.type }}"> <h3 class="accordion-section-title" tabindex="0"> {{ data.title }} - <span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Press return or enter to open this panel' ); - ?> - </span> + <span class="screen-reader-text"><?php _e( 'Press return or enter to open this panel' ); ?></span> </h3> <ul class="accordion-sub-container control-panel-content"></ul> </li> @@ -368,17 +351,12 @@ protected function render_template() { * * @see WP_Customize_Panel::print_template() * - * @since 4.3.0 + * @since WP-4.3.0 */ protected function content_template() { ?> <li class="panel-meta customize-info accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>"> - <button class="customize-panel-back" tabindex="-1"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Back' ); - ?> - </span></button> + <button class="customize-panel-back" tabindex="-1"><span class="screen-reader-text"><?php _e( 'Back' ); ?></span></button> <div class="accordion-section-title"> <span class="preview-notice"> <?php @@ -387,12 +365,7 @@ protected function content_template() { ?> </span> <# if ( data.description ) { #> - <button type="button" class="customize-help-toggle dashicons dashicons-editor-help" aria-expanded="false"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Help' ); - ?> - </span></button> + <button type="button" class="customize-help-toggle dashicons dashicons-editor-help" aria-expanded="false"><span class="screen-reader-text"><?php _e( 'Help' ); ?></span></button> <# } #> </div> <# if ( data.description ) { #> diff --git a/wp-includes/class-wp-customize-section.php b/wp-includes/class-wp-customize-section.php index c12b640..5fb5ea1 100644 --- a/wp-includes/class-wp-customize-section.php +++ b/wp-includes/class-wp-customize-section.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 3.4.0 + * @since WP-3.4.0 */ /** @@ -12,11 +12,10 @@ * * A UI container for controls, managed by the WP_Customize_Manager class. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Manager */ -#[AllowDynamicProperties] class WP_Customize_Section { /** @@ -24,7 +23,9 @@ class WP_Customize_Section { * * Used when sorting two instances whose priorities are equal. * - * @since 4.1.0 + * @since WP-4.1.0 + * + * @static * @var int */ protected static $instance_count = 0; @@ -32,7 +33,7 @@ class WP_Customize_Section { /** * Order in which this instance was created in relation to other instances. * - * @since 4.1.0 + * @since WP-4.1.0 * @var int */ public $instance_number; @@ -40,7 +41,7 @@ class WP_Customize_Section { /** * WP_Customize_Manager instance. * - * @since 3.4.0 + * @since WP-3.4.0 * @var WP_Customize_Manager */ public $manager; @@ -48,7 +49,7 @@ class WP_Customize_Section { /** * Unique identifier. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $id; @@ -56,15 +57,15 @@ class WP_Customize_Section { /** * Priority of the section which informs load order of sections. * - * @since 3.4.0 - * @var int + * @since WP-3.4.0 + * @var integer */ public $priority = 160; /** * Panel in which to show the section, making it a sub-section. * - * @since 4.0.0 + * @since WP-4.0.0 * @var string */ public $panel = ''; @@ -72,23 +73,23 @@ class WP_Customize_Section { /** * Capability required for the section. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $capability = 'edit_theme_options'; /** - * Theme features required to support the section. + * Theme feature support for the section. * - * @since 3.4.0 - * @var string|string[] + * @since WP-3.4.0 + * @var string|array */ public $theme_supports = ''; /** * Title of the section to show in UI. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $title = ''; @@ -96,7 +97,7 @@ class WP_Customize_Section { /** * Description to show in the UI. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $description = ''; @@ -104,7 +105,7 @@ class WP_Customize_Section { /** * Customizer controls for this section. * - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ public $controls; @@ -112,7 +113,7 @@ class WP_Customize_Section { /** * Type of this section. * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $type = 'default'; @@ -120,7 +121,7 @@ class WP_Customize_Section { /** * Active callback. * - * @since 4.1.0 + * @since WP-4.1.0 * * @see WP_Customize_Section::active() * @@ -134,7 +135,7 @@ class WP_Customize_Section { /** * Show the description or hide it behind the help icon. * - * @since 4.7.0 + * @since WP-4.7.0 * * @var bool Indicates whether the Section's description should be * hidden behind a help icon ("?") in the Section header, @@ -147,28 +148,11 @@ class WP_Customize_Section { * * Any supplied $args override class property defaults. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param WP_Customize_Manager $manager Customizer bootstrap instance. - * @param string $id A specific ID of the section. - * @param array $args { - * Optional. Array of properties for the new Section object. Default empty array. - * - * @type int $priority Priority of the section, defining the display order - * of panels and sections. Default 160. - * @type string $panel The panel this section belongs to (if any). - * Default empty. - * @type string $capability Capability required for the section. - * Default 'edit_theme_options' - * @type string|string[] $theme_supports Theme features required to support the section. - * @type string $title Title of the section to show in UI. - * @type string $description Description to show in the UI. - * @type string $type Type of the section. - * @type callable $active_callback Active callback. - * @type bool $description_hidden Hide the description behind a help icon, - * instead of inline above the first control. - * Default false. - * } + * @param string $id An specific ID of the section. + * @param array $args Section arguments. */ public function __construct( $manager, $id, $args = array() ) { $keys = array_keys( get_object_vars( $this ) ); @@ -192,7 +176,7 @@ public function __construct( $manager, $id, $args = array() ) { /** * Check whether section is active to current Customizer preview. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return bool Whether the section is active to the current preview. */ @@ -203,7 +187,7 @@ final public function active() { /** * Filters response of WP_Customize_Section::active(). * - * @since 4.1.0 + * @since WP-4.1.0 * * @param bool $active Whether the Customizer section is active. * @param WP_Customize_Section $section WP_Customize_Section instance. @@ -219,7 +203,7 @@ final public function active() { * Subclasses can override this with their specific logic, or they may provide * an 'active_callback' argument to the constructor. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return true Always true. */ @@ -230,7 +214,7 @@ public function active_callback() { /** * Gather the parameters passed to client JavaScript via JSON. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return array The array to be exported to the client as JSON. */ @@ -242,7 +226,7 @@ public function json() { $array['instanceNumber'] = $this->instance_number; if ( $this->panel ) { - /* translators: ▸ is the unicode right-pointing triangle. %s: Section title in the Customizer. */ + /* translators: ▸ is the unicode right-pointing triangle, and %s is the section title in the Customizer */ $array['customizeAction'] = sprintf( __( 'Customizing ▸ %s' ), esc_html( $this->manager->get_panel( $this->panel )->title ) ); } else { $array['customizeAction'] = __( 'Customizing' ); @@ -255,16 +239,16 @@ public function json() { * Checks required user capabilities and whether the theme has the * feature support required by the section. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return bool False if theme doesn't support the section or user doesn't have the capability. */ final public function check_capabilities() { - if ( $this->capability && ! current_user_can( $this->capability ) ) { + if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) { return false; } - if ( $this->theme_supports && ! current_theme_supports( ...(array) $this->theme_supports ) ) { + if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) { return false; } @@ -274,7 +258,7 @@ final public function check_capabilities() { /** * Get the section's content for insertion into the Customizer pane. * - * @since 4.1.0 + * @since WP-4.1.0 * * @return string Contents of the section. */ @@ -287,7 +271,7 @@ final public function get_content() { /** * Check capabilities and render the section. * - * @since 3.4.0 + * @since WP-3.4.0 */ final public function maybe_render() { if ( ! $this->check_capabilities() ) { @@ -297,9 +281,9 @@ final public function maybe_render() { /** * Fires before rendering a Customizer section. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Section $section WP_Customize_Section instance. + * @param WP_Customize_Section $this WP_Customize_Section instance. */ do_action( 'customize_render_section', $this ); /** @@ -308,7 +292,7 @@ final public function maybe_render() { * The dynamic portion of the hook name, `$this->id`, refers to the ID * of the specific Customizer section to be rendered. * - * @since 3.4.0 + * @since WP-3.4.0 */ do_action( "customize_render_section_{$this->id}" ); @@ -320,7 +304,7 @@ final public function maybe_render() { * * Sections are now rendered in JS by default, see WP_Customize_Section::print_template(). * - * @since 3.4.0 + * @since WP-3.4.0 */ protected function render() {} @@ -330,7 +314,7 @@ protected function render() {} * This function is only run for section types that have been registered with * WP_Customize_Manager::register_section_type(). * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Manager::render_template() */ @@ -348,7 +332,7 @@ public function print_template() { * Class variables for this section class are available in the `data` JS object; * export custom variables by overriding WP_Customize_Section::json(). * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Section::print_template() */ @@ -357,23 +341,13 @@ protected function render_template() { <li id="accordion-section-{{ data.id }}" class="accordion-section control-section control-section-{{ data.type }}"> <h3 class="accordion-section-title" tabindex="0"> {{ data.title }} - <span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Press return or enter to open this section' ); - ?> - </span> + <span class="screen-reader-text"><?php _e( 'Press return or enter to open this section' ); ?></span> </h3> <ul class="accordion-section-content"> <li class="customize-section-description-container section-meta <# if ( data.description_hidden ) { #>customize-info<# } #>"> <div class="customize-section-title"> <button class="customize-section-back" tabindex="-1"> - <span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Back' ); - ?> - </span> + <span class="screen-reader-text"><?php _e( 'Back' ); ?></span> </button> <h3> <span class="customize-action"> @@ -382,12 +356,7 @@ protected function render_template() { {{ data.title }} </h3> <# if ( data.description && data.description_hidden ) { #> - <button type="button" class="customize-help-toggle dashicons dashicons-editor-help" aria-expanded="false"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Help' ); - ?> - </span></button> + <button type="button" class="customize-help-toggle dashicons dashicons-editor-help" aria-expanded="false"><span class="screen-reader-text"><?php _e( 'Help' ); ?></span></button> <div class="description customize-section-description"> {{{ data.description }}} </div> @@ -416,3 +385,14 @@ protected function render_template() { /** WP_Customize_Nav_Menu_Section class */ require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-section.php'; + +/** + * WP_Customize_New_Menu_Section class + * + * As this file is deprecated, it will trigger a deprecation notice if instantiated. In a subsequent + * release, the require_once() here will be removed and _deprecated_file() will be called if file is + * required at all. + * + * @deprecated WP-4.9.0 This file is no longer used due to new menu creation UX. + */ +require_once ABSPATH . WPINC . '/customize/class-wp-customize-new-menu-section.php'; diff --git a/wp-includes/class-wp-customize-setting.php b/wp-includes/class-wp-customize-setting.php index 542a8d4..09df082 100644 --- a/wp-includes/class-wp-customize-setting.php +++ b/wp-includes/class-wp-customize-setting.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 3.4.0 + * @since WP-3.4.0 */ /** @@ -12,17 +12,15 @@ * * Handles saving and sanitizing of settings. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Manager - * @link https://developer.wordpress.org/themes/customize-api */ -#[AllowDynamicProperties] class WP_Customize_Setting { /** * Customizer bootstrap instance. * - * @since 3.4.0 + * @since WP-3.4.0 * @var WP_Customize_Manager */ public $manager; @@ -30,7 +28,7 @@ class WP_Customize_Setting { /** * Unique string identifier for the setting. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $id; @@ -38,7 +36,7 @@ class WP_Customize_Setting { /** * Type of customize settings. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $type = 'theme_mod'; @@ -46,34 +44,36 @@ class WP_Customize_Setting { /** * Capability required to edit this setting. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string|array */ public $capability = 'edit_theme_options'; /** - * Theme features required to support the setting. + * Feature a theme is required to support to enable this setting. * - * @since 3.4.0 - * @var string|string[] + * @since WP-3.4.0 + * @var string */ public $theme_supports = ''; /** * The default value for the setting. * - * @since 3.4.0 + * @since WP-3.4.0 * @var string */ public $default = ''; /** - * Options for rendering the live preview of changes in Customizer. + * Options for rendering the live preview of changes in Theme Customizer. * - * Set this value to 'postMessage' to enable a custom JavaScript handler to render changes to this setting + * Set this value to 'postMessage' to enable a custom Javascript handler to render changes to this setting * as opposed to reloading the whole page. * - * @since 3.4.0 + * @link https://developer.wordpress.org/themes/customize-api + * + * @since WP-3.4.0 * @var string */ public $transport = 'refresh'; @@ -81,7 +81,7 @@ class WP_Customize_Setting { /** * Server-side validation callback for the setting's value. * - * @since 4.6.0 + * @since WP-4.6.0 * @var callable */ public $validate_callback = ''; @@ -89,7 +89,7 @@ class WP_Customize_Setting { /** * Callback to filter a Customize setting value in un-slashed form. * - * @since 3.4.0 + * @since WP-3.4.0 * @var callable */ public $sanitize_callback = ''; @@ -97,8 +97,8 @@ class WP_Customize_Setting { /** * Callback to convert a Customize PHP setting value to a value that is JSON serializable. * - * @since 3.4.0 - * @var callable + * @since WP-3.4.0 + * @var string */ public $sanitize_js_callback = ''; @@ -110,7 +110,7 @@ class WP_Customize_Setting { * the preview if it has been changed. This allows the setting to be sent * from the start. * - * @since 4.2.0 + * @since WP-4.2.0 * @var bool */ public $dirty = false; @@ -118,7 +118,7 @@ class WP_Customize_Setting { /** * ID Data. * - * @since 3.4.0 + * @since WP-3.4.0 * @var array */ protected $id_data = array(); @@ -126,7 +126,7 @@ class WP_Customize_Setting { /** * Whether or not preview() was called. * - * @since 4.4.0 + * @since WP-4.4.0 * @var bool */ protected $is_previewed = false; @@ -134,7 +134,8 @@ class WP_Customize_Setting { /** * Cache of multidimensional values to improve performance. * - * @since 4.4.0 + * @since WP-4.4.0 + * @static * @var array */ protected static $aggregated_multidimensionals = array(); @@ -142,7 +143,7 @@ class WP_Customize_Setting { /** * Whether the multidimensional setting is aggregated. * - * @since 4.4.0 + * @since WP-4.4.0 * @var bool */ protected $is_multidimensional_aggregated = false; @@ -152,28 +153,12 @@ class WP_Customize_Setting { * * Any supplied $args override class property defaults. * - * @since 3.4.0 - * - * @param WP_Customize_Manager $manager Customizer bootstrap instance. - * @param string $id A specific ID of the setting. - * Can be a theme mod or option name. - * @param array $args { - * Optional. Array of properties for the new Setting object. Default empty array. - * - * @type string $type Type of the setting. Default 'theme_mod'. - * @type string $capability Capability required for the setting. Default 'edit_theme_options' - * @type string|string[] $theme_supports Theme features required to support the panel. Default is none. - * @type string $default Default value for the setting. Default is empty string. - * @type string $transport Options for rendering the live preview of changes in Customizer. - * Using 'refresh' makes the change visible by reloading the whole preview. - * Using 'postMessage' allows a custom JavaScript to handle live changes. - * Default is 'refresh'. - * @type callable $validate_callback Server-side validation callback for the setting's value. - * @type callable $sanitize_callback Callback to filter a Customize setting value in un-slashed form. - * @type callable $sanitize_js_callback Callback to convert a Customize PHP setting value to a value that is - * JSON serializable. - * @type bool $dirty Whether or not the setting is initially dirty when created. - * } + * @since WP-3.4.0 + * + * @param WP_Customize_Manager $manager + * @param string $id An specific ID of the setting. Can be a + * theme mod or option name. + * @param array $args Setting arguments. */ public function __construct( $manager, $id, $args = array() ) { $keys = array_keys( get_object_vars( $this ) ); @@ -220,7 +205,7 @@ public function __construct( $manager, $id, $args = array() ) { /** * Get parsed ID data for multidimensional setting. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return array { * ID data for multidimensional setting. @@ -239,7 +224,7 @@ final public function id_data() { * When a multidimensional setting gets aggregated, all of its preview and update * calls get combined into one call, greatly improving performance. * - * @since 4.4.0 + * @since WP-4.4.0 */ protected function aggregate_multidimensional() { $id_base = $this->id_data['base']; @@ -266,17 +251,17 @@ protected function aggregate_multidimensional() { * * This is intended only for use by unit tests. * - * @since 4.5.0 + * @since WP-4.5.0 * @ignore */ - public static function reset_aggregated_multidimensionals() { + static public function reset_aggregated_multidimensionals() { self::$aggregated_multidimensionals = array(); } /** * The ID for the current site when the preview() method was called. * - * @since 4.2.0 + * @since WP-4.2.0 * @var int */ protected $_previewed_blog_id; @@ -284,7 +269,7 @@ public static function reset_aggregated_multidimensionals() { /** * Return true if the current site is not the same as the previewed site. * - * @since 4.2.0 + * @since WP-4.2.0 * * @return bool If preview() has been called. */ @@ -299,7 +284,7 @@ public function is_current_blog_previewed() { * Original non-previewed value stored by the preview method. * * @see WP_Customize_Setting::preview() - * @since 4.1.1 + * @since WP-4.1.1 * @var mixed */ protected $_original_value; @@ -311,8 +296,8 @@ public function is_current_blog_previewed() { * post value for the setting, then this method will short-circuit since * there is no change to preview. * - * @since 3.4.0 - * @since 4.4.0 Added boolean return value. + * @since WP-3.4.0 + * @since WP-4.4.0 Added boolean return value. * * @return bool False when preview short-circuits due no change needing to be previewed. */ @@ -393,9 +378,9 @@ public function preview() { * * The dynamic portion of the hook name, `$this->id`, refers to the setting ID. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Setting $setting WP_Customize_Setting instance. + * @param WP_Customize_Setting $this WP_Customize_Setting instance. */ do_action( "customize_preview_{$this->id}", $this ); @@ -405,9 +390,9 @@ public function preview() { * * The dynamic portion of the hook name, `$this->type`, refers to the setting type. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @param WP_Customize_Setting $setting WP_Customize_Setting instance. + * @param WP_Customize_Setting $this WP_Customize_Setting instance. */ do_action( "customize_preview_{$this->type}", $this ); } @@ -424,7 +409,7 @@ public function preview() { * that `WP_Customize_Setting::_multidimensional_preview_filter()` * is called for this setting. * - * @since 4.4.0 + * @since WP-4.4.0 * * @see WP_Customize_Manager::set_post_value() * @see WP_Customize_Setting::_multidimensional_preview_filter() @@ -440,7 +425,7 @@ final public function _clear_aggregated_multidimensional_preview_applied_flag() * site is now not the same site, then this method does a no-op and returns * the original value. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param mixed $original Old value. * @return mixed New or old value. @@ -471,7 +456,7 @@ public function _preview_filter( $original ) { * For all multidimensional settings of a given type, the preview filter for * the first setting previewed will be used to apply the values for the others. * - * @since 4.4.0 + * @since WP-4.4.0 * * @see WP_Customize_Setting::$aggregated_multidimensionals * @param mixed $original Original root value. @@ -512,10 +497,9 @@ final public function _multidimensional_preview_filter( $original ) { * Checks user capabilities and theme supports, and then saves * the value of the setting. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @return void|false Void on success, false if cap check fails - * or value isn't set or is invalid. + * @return false|void False if cap check fails or value isn't set or is invalid. */ final public function save() { $value = $this->post_value(); @@ -532,9 +516,9 @@ final public function save() { * The dynamic portion of the hook name, `$id_base` refers to * the base slug of the setting name. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param WP_Customize_Setting $setting WP_Customize_Setting instance. + * @param WP_Customize_Setting $this WP_Customize_Setting instance. */ do_action( "customize_save_{$id_base}", $this ); @@ -546,21 +530,21 @@ final public function save() { * * During a save request prior to save, post_value() provides the new value while value() does not. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param mixed $default_value A default value which is used as a fallback. Default null. + * @param mixed $default A default value which is used as a fallback. Default is null. * @return mixed The default value on failure, otherwise the sanitized and validated value. */ - final public function post_value( $default_value = null ) { - return $this->manager->post_value( $this, $default_value ); + final public function post_value( $default = null ) { + return $this->manager->post_value( $this, $default ); } /** * Sanitize an input. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param string|array $value The value to sanitize. + * @param string|array $value The value to sanitize. * @return string|array|null|WP_Error Sanitized value, or `null`/`WP_Error` if invalid. */ public function sanitize( $value ) { @@ -568,10 +552,10 @@ public function sanitize( $value ) { /** * Filters a Customize setting value in un-slashed form. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param mixed $value Value of the setting. - * @param WP_Customize_Setting $setting WP_Customize_Setting instance. + * @param mixed $value Value of the setting. + * @param WP_Customize_Setting $this WP_Customize_Setting instance. */ return apply_filters( "customize_sanitize_{$this->id}", $value, $this ); } @@ -579,7 +563,7 @@ public function sanitize( $value ) { /** * Validates an input. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_REST_Request::has_valid_params() * @@ -603,15 +587,15 @@ public function validate( $value ) { * * The dynamic portion of the hook name, `$this->ID`, refers to the setting ID. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param WP_Error $validity Filtered from `true` to `WP_Error` when invalid. * @param mixed $value Value of the setting. - * @param WP_Customize_Setting $setting WP_Customize_Setting instance. + * @param WP_Customize_Setting $this WP_Customize_Setting instance. */ $validity = apply_filters( "customize_validate_{$this->id}", $validity, $value, $this ); - if ( is_wp_error( $validity ) && ! $validity->has_errors() ) { + if ( is_wp_error( $validity ) && empty( $validity->errors ) ) { $validity = true; } return $validity; @@ -620,31 +604,31 @@ public function validate( $value ) { /** * Get the root value for a setting, especially for multidimensional ones. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param mixed $default_value Value to return if root does not exist. + * @param mixed $default Value to return if root does not exist. * @return mixed */ - protected function get_root_value( $default_value = null ) { + protected function get_root_value( $default = null ) { $id_base = $this->id_data['base']; if ( 'option' === $this->type ) { - return get_option( $id_base, $default_value ); + return get_option( $id_base, $default ); } elseif ( 'theme_mod' === $this->type ) { - return get_theme_mod( $id_base, $default_value ); + return get_theme_mod( $id_base, $default ); } else { /* * Any WP_Customize_Setting subclass implementing aggregate multidimensional * will need to override this method to obtain the data from the appropriate * location. */ - return $default_value; + return $default; } } /** * Set the root value for a setting, especially for multidimensional ones. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param mixed $value Value to set as root of multidimensional setting. * @return bool Whether the multidimensional root was updated successfully. @@ -673,7 +657,7 @@ protected function set_root_value( $value ) { /** * Save the value of the setting, using the related API. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param mixed $value The value to update. * @return bool The result of saving the value. @@ -696,10 +680,10 @@ protected function update( $value ) { * * The dynamic portion of the hook name, `$this->type`, refers to the type of setting. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param mixed $value Value of the setting. - * @param WP_Customize_Setting $setting WP_Customize_Setting instance. + * @param mixed $value Value of the setting. + * @param WP_Customize_Setting $this WP_Customize_Setting instance. */ do_action( "customize_update_{$this->type}", $value, $this ); @@ -710,27 +694,27 @@ protected function update( $value ) { /** * Deprecated method. * - * @since 3.4.0 - * @deprecated 4.4.0 Deprecated in favor of update() method. + * @since WP-3.4.0 + * @deprecated WP-4.4.0 Deprecated in favor of update() method. */ protected function _update_theme_mod() { - _deprecated_function( __METHOD__, '4.4.0', __CLASS__ . '::update()' ); + _deprecated_function( __METHOD__, 'WP-4.4.0', __CLASS__ . '::update()' ); } /** * Deprecated method. * - * @since 3.4.0 - * @deprecated 4.4.0 Deprecated in favor of update() method. + * @since WP-3.4.0 + * @deprecated WP-4.4.0 Deprecated in favor of update() method. */ protected function _update_option() { - _deprecated_function( __METHOD__, '4.4.0', __CLASS__ . '::update()' ); + _deprecated_function( __METHOD__, 'WP-4.4.0', __CLASS__ . '::update()' ); } /** * Fetch the value of the setting. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return mixed The value. */ @@ -759,11 +743,11 @@ public function value() { * For settings handled as theme_mods or options, see those corresponding * functions for available hooks. * - * @since 3.4.0 - * @since 4.6.0 Added the `$this` setting instance as the second parameter. + * @since WP-3.4.0 + * @since WP-4.6.0 Added the `$this` setting instance as the second parameter. * - * @param mixed $default_value The setting default value. Default empty. - * @param WP_Customize_Setting $setting The setting instance. + * @param mixed $default The setting default value. Default empty. + * @param WP_Customize_Setting $this The setting instance. */ $value = apply_filters( "customize_value_{$id_base}", $value, $this ); } elseif ( $this->is_multidimensional_aggregated ) { @@ -783,7 +767,7 @@ public function value() { /** * Sanitize the setting's value for use in JavaScript. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return mixed The requested escaped value. */ @@ -794,10 +778,10 @@ public function js_value() { * * The dynamic portion of the hook name, `$this->id`, refers to the setting ID. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param mixed $value The setting value. - * @param WP_Customize_Setting $setting WP_Customize_Setting instance. + * @param mixed $value The setting value. + * @param WP_Customize_Setting $this WP_Customize_Setting instance. */ $value = apply_filters( "customize_sanitize_js_{$this->id}", $this->value(), $this ); @@ -811,7 +795,7 @@ public function js_value() { /** * Retrieves the data to export to the client via JSON. * - * @since 4.6.0 + * @since WP-4.6.0 * * @return array Array of parameters passed to JavaScript. */ @@ -827,16 +811,16 @@ public function json() { /** * Validate user capabilities whether the theme supports the setting. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return bool False if theme doesn't support the setting or user can't change setting, otherwise true. */ final public function check_capabilities() { - if ( $this->capability && ! current_user_can( $this->capability ) ) { + if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) { return false; } - if ( $this->theme_supports && ! current_theme_supports( ...(array) $this->theme_supports ) ) { + if ( $this->theme_supports && ! call_user_func_array( 'current_theme_supports', (array) $this->theme_supports ) ) { return false; } @@ -846,11 +830,11 @@ final public function check_capabilities() { /** * Multidimensional helper function. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param array $root - * @param array $keys - * @param bool $create Default false. + * @param $root + * @param $keys + * @param bool $create Default is false. * @return array|void Keys are 'root', 'node', and 'key'. */ final protected function multidimensional( &$root, $keys, $create = false ) { @@ -879,7 +863,7 @@ final protected function multidimensional( &$root, $keys, $create = false ) { if ( $create ) { if ( ! is_array( $node ) ) { - // Account for an array overriding a string or object value. + // account for an array overriding a string or object value $node = array(); } if ( ! isset( $node[ $last ] ) ) { @@ -901,10 +885,10 @@ final protected function multidimensional( &$root, $keys, $create = false ) { /** * Will attempt to replace a specific value in a multidimensional array. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param array $root - * @param array $keys + * @param $root + * @param $keys * @param mixed $value The value to update. * @return mixed */ @@ -927,29 +911,29 @@ final protected function multidimensional_replace( $root, $keys, $value ) { /** * Will attempt to fetch a specific value from a multidimensional array. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param array $root - * @param array $keys - * @param mixed $default_value A default value which is used as a fallback. Default null. + * @param $root + * @param $keys + * @param mixed $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_value = null ) { + 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_value; + return isset( $root ) ? $root : $default; } $result = $this->multidimensional( $root, $keys ); - return isset( $result ) ? $result['node'][ $result['key'] ] : $default_value; + 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 + * @since WP-3.4.0 * - * @param array $root - * @param array $keys + * @param $root + * @param $keys * @return bool True if value is set, false if not. */ final protected function multidimensional_isset( $root, $keys ) { diff --git a/wp-includes/class-wp-customize-widgets.php b/wp-includes/class-wp-customize-widgets.php index f99d6da..6280570 100644 --- a/wp-includes/class-wp-customize-widgets.php +++ b/wp-includes/class-wp-customize-widgets.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 3.9.0 + * @since WP-3.9.0 */ /** @@ -12,17 +12,16 @@ * * Implements widget management in the Customizer. * - * @since 3.9.0 + * @since WP-3.9.0 * * @see WP_Customize_Manager */ -#[AllowDynamicProperties] final class WP_Customize_Widgets { /** * WP_Customize_Manager instance. * - * @since 3.9.0 + * @since WP-3.9.0 * @var WP_Customize_Manager */ public $manager; @@ -30,7 +29,7 @@ final class WP_Customize_Widgets { /** * All id_bases for widgets defined in core. * - * @since 3.9.0 + * @since WP-3.9.0 * @var array */ protected $core_widget_id_bases = array( @@ -54,19 +53,19 @@ final class WP_Customize_Widgets { ); /** - * @since 3.9.0 + * @since WP-3.9.0 * @var array */ protected $rendered_sidebars = array(); /** - * @since 3.9.0 + * @since WP-3.9.0 * @var array */ protected $rendered_widgets = array(); /** - * @since 3.9.0 + * @since WP-3.9.0 * @var array */ protected $old_sidebars_widgets = array(); @@ -74,7 +73,7 @@ final class WP_Customize_Widgets { /** * Mapping of widget ID base to whether it supports selective refresh. * - * @since 4.5.0 + * @since WP-4.5.0 * @var array */ protected $selective_refreshable_widgets; @@ -82,7 +81,7 @@ final class WP_Customize_Widgets { /** * Mapping of setting type to setting ID pattern. * - * @since 4.2.0 + * @since WP-4.2.0 * @var array */ protected $setting_id_patterns = array( @@ -93,9 +92,9 @@ final class WP_Customize_Widgets { /** * Initial loader. * - * @since 3.9.0 + * @since WP-3.9.0 * - * @param WP_Customize_Manager $manager Customizer bootstrap instance. + * @param WP_Customize_Manager $manager Customize manager bootstrap instance. */ public function __construct( $manager ) { $this->manager = $manager; @@ -135,7 +134,7 @@ public function __construct( $manager ) { * If the theme does not support the customize-selective-refresh-widgets feature, * then this will always return an empty array. * - * @since 4.5.0 + * @since WP-4.5.0 * * @global WP_Widget_Factory $wp_widget_factory * @@ -159,7 +158,7 @@ public function get_selective_refreshable_widgets() { /** * Determines if a widget supports selective refresh. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param string $id_base Widget ID Base. * @return bool Whether the widget can be selective refreshed. @@ -172,7 +171,9 @@ public function is_widget_selective_refreshable( $id_base ) { /** * Retrieves the widget setting type given a setting ID. * - * @since 4.2.0 + * @since WP-4.2.0 + * + * @staticvar array $cache * * @param string $setting_id Setting ID. * @return string|void Setting type. @@ -194,7 +195,7 @@ protected function get_setting_type( $setting_id ) { * Inspects the incoming customized data for any widget settings, and dynamically adds * them up-front so widgets will be initialized properly. * - * @since 4.2.0 + * @since WP-4.2.0 */ public function register_settings() { $widget_setting_ids = array(); @@ -220,11 +221,11 @@ public function register_settings() { /** * Determines the arguments for a dynamically-created setting. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param false|array $args The arguments to the WP_Customize_Setting constructor. * @param string $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`. - * @return array|false Setting arguments, false otherwise. + * @return false|array Setting arguments, false otherwise. */ public function filter_customize_dynamic_setting_args( $args, $setting_id ) { if ( $this->get_setting_type( $setting_id ) ) { @@ -236,15 +237,15 @@ public function filter_customize_dynamic_setting_args( $args, $setting_id ) { /** * Retrieves an unslashed post value or return a default. * - * @since 3.9.0 + * @since WP-3.9.0 * - * @param string $name Post value. - * @param mixed $default_value Default post value. + * @param string $name Post value. + * @param mixed $default Default post value. * @return mixed Unslashed post value or default value. */ - protected function get_post_value( $name, $default_value = null ) { + protected function get_post_value( $name, $default = null ) { if ( ! isset( $_POST[ $name ] ) ) { - return $default_value; + return $default; } return wp_unslash( $_POST[ $name ] ); @@ -259,7 +260,7 @@ protected function get_post_value( $name, $default_value = null ) { * be passed along for storing in the sidebars_widgets theme_mod when the * theme gets switched. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global array $sidebars_widgets * @global array $_wp_sidebars_widgets @@ -275,11 +276,11 @@ public function override_sidebars_widgets_for_theme_switch() { add_filter( 'customize_value_old_sidebars_widgets_data', array( $this, 'filter_customize_value_old_sidebars_widgets_data' ) ); $this->manager->set_post_value( 'old_sidebars_widgets_data', $this->old_sidebars_widgets ); // Override any value cached in changeset. - // retrieve_widgets() looks at the global $sidebars_widgets. + // retrieve_widgets() looks at the global $sidebars_widgets $sidebars_widgets = $this->old_sidebars_widgets; $sidebars_widgets = retrieve_widgets( 'customize' ); add_filter( 'option_sidebars_widgets', array( $this, 'filter_option_sidebars_widgets_for_theme_switch' ), 1 ); - // Reset global cache var used by wp_get_sidebars_widgets(). + // reset global cache var used by wp_get_sidebars_widgets() unset( $GLOBALS['_wp_sidebars_widgets'] ); } @@ -291,7 +292,7 @@ public function override_sidebars_widgets_for_theme_switch() { * The value for old_sidebars_widgets_data gets set in the old theme's sidebars_widgets * theme_mod. * - * @since 3.9.0 + * @since WP-3.9.0 * * @see WP_Customize_Widgets::handle_theme_switch() * @@ -309,7 +310,7 @@ public function filter_customize_value_old_sidebars_widgets_data( $old_sidebars_ * and then the new sidebars_widgets here get supplied as the default value for the sidebars_widgets * option. * - * @since 3.9.0 + * @since WP-3.9.0 * * @see WP_Customize_Widgets::handle_theme_switch() * @global array $sidebars_widgets @@ -328,7 +329,7 @@ public function filter_option_sidebars_widgets_for_theme_switch( $sidebars_widge * * Note: these actions are also fired in wp_ajax_update_widget(). * - * @since 3.9.0 + * @since WP-3.9.0 */ public function customize_controls_init() { /** This action is documented in wp-admin/includes/ajax-actions.php */ @@ -344,10 +345,10 @@ public function customize_controls_init() { /** * Ensures widgets are available for all types of previews. * - * When in preview, hook to {@see 'customize_register'} for settings after WordPress is loaded + * When in preview, hook to {@see 'customize_register'} for settings after ClassicPress is loaded * so that all filters have been initialized (e.g. Widget Visibility). * - * @since 3.9.0 + * @since WP-3.9.0 */ public function schedule_customize_register() { if ( is_admin() ) { @@ -360,7 +361,7 @@ public function schedule_customize_register() { /** * Registers Customizer settings and controls for all sidebars and widgets. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global array $wp_registered_widgets * @global array $wp_registered_widget_controls @@ -418,7 +419,6 @@ public function customize_register() { 'priority' => 110, 'active_callback' => array( $this, 'is_panel_active' ), 'auto_expand_sole_section' => true, - 'theme_supports' => 'widgets', ) ); @@ -448,18 +448,17 @@ public function customize_register() { if ( $is_active_sidebar ) { $section_args = array( - 'title' => $wp_registered_sidebars[ $sidebar_id ]['name'], - 'priority' => array_search( $sidebar_id, array_keys( $wp_registered_sidebars ), true ), - 'panel' => 'widgets', - 'sidebar_id' => $sidebar_id, + 'title' => $wp_registered_sidebars[ $sidebar_id ]['name'], + 'description' => $wp_registered_sidebars[ $sidebar_id ]['description'], + 'priority' => array_search( $sidebar_id, array_keys( $wp_registered_sidebars ), true ), + 'panel' => 'widgets', + 'sidebar_id' => $sidebar_id, ); - $section_args['description'] = $wp_registered_sidebars[ $sidebar_id ]['description']; - /** * Filters Customizer widget section arguments for a given sidebar. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $section_args Array of Customizer widget section arguments. * @param string $section_id Customizer section ID. @@ -470,7 +469,7 @@ public function customize_register() { $section = new WP_Customize_Sidebar_Section( $this->manager, $section_id, $section_args ); $this->manager->add_section( $section ); - $control = new WP_Widget_Area_Customize_Control( + $control = new WP_Widget_Area_Customize_Control( $this->manager, $setting_id, array( @@ -479,10 +478,9 @@ public function customize_register() { 'priority' => count( $sidebar_widget_ids ), // place 'Add Widget' and 'Reorder' buttons at end. ) ); + $new_setting_ids[] = $setting_id; $this->manager->add_control( $control ); - - $new_setting_ids[] = $setting_id; } } @@ -527,7 +525,7 @@ public function customize_register() { /** * Determines whether the widgets panel is active, based on whether there are sidebars registered. * - * @since 4.4.0 + * @since WP-4.4.0 * * @see WP_Customize_Panel::$active_callback * @@ -542,7 +540,7 @@ public function is_panel_active() { /** * Converts a widget_id into its corresponding Customizer setting ID (option name). * - * @since 3.9.0 + * @since WP-3.9.0 * * @param string $widget_id Widget ID. * @return string Maybe-parsed widget ID. @@ -567,9 +565,9 @@ public function get_setting_id( $widget_id ) { * This method will return all Core widgets as being not wide, but this can be * overridden with the {@see 'is_wide_widget_in_customizer'} filter. * - * @since 3.9.0 + * @since WP-3.9.0 * - * @global array $wp_registered_widget_controls + * @global $wp_registered_widget_controls * * @param string $widget_id Widget ID. * @return bool Whether or not the widget is a "wide" widget. @@ -585,7 +583,7 @@ public function is_wide_widget( $widget_id ) { /** * Filters whether the given widget is considered "wide". * - * @since 3.9.0 + * @since WP-3.9.0 * * @param bool $is_wide Whether the widget is wide, Default false. * @param string $widget_id Widget ID. @@ -596,7 +594,7 @@ public function is_wide_widget( $widget_id ) { /** * Converts a widget ID into its id_base and number components. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param string $widget_id Widget ID. * @return array Array containing a widget's id_base and number components. @@ -609,9 +607,9 @@ public function parse_widget_id( $widget_id ) { if ( preg_match( '/^(.+)-(\d+)$/', $widget_id, $matches ) ) { $parsed['id_base'] = $matches[1]; - $parsed['number'] = (int) $matches[2]; + $parsed['number'] = intval( $matches[2] ); } else { - // Likely an old single widget. + // likely an old single widget $parsed['id_base'] = $widget_id; } return $parsed; @@ -620,10 +618,10 @@ public function parse_widget_id( $widget_id ) { /** * Converts a widget setting ID (option path) to its id_base and number components. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param string $setting_id Widget setting ID. - * @return array|WP_Error Array containing a widget's id_base and number components, + * @return WP_Error|array Array containing a widget's id_base and number components, * or a WP_Error object. */ public function parse_widget_setting_id( $setting_id ) { @@ -632,7 +630,7 @@ public function parse_widget_setting_id( $setting_id ) { } $id_base = $matches[2]; - $number = isset( $matches[3] ) ? (int) $matches[3] : null; + $number = isset( $matches[3] ) ? intval( $matches[3] ) : null; return compact( 'id_base', 'number' ); } @@ -641,7 +639,7 @@ public function parse_widget_setting_id( $setting_id ) { * Calls admin_print_styles-widgets.php and admin_print_styles hooks to * allow custom styles from plugins. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function print_styles() { /** This action is documented in wp-admin/admin-header.php */ @@ -655,7 +653,7 @@ public function print_styles() { * Calls admin_print_scripts-widgets.php and admin_print_scripts hooks to * allow custom scripts from plugins. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function print_scripts() { /** This action is documented in wp-admin/admin-header.php */ @@ -668,7 +666,7 @@ public function print_scripts() { /** * Enqueues scripts and styles for Customizer panel and export data to JavaScript. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global WP_Scripts $wp_scripts * @global array $wp_registered_sidebars @@ -722,11 +720,11 @@ public function enqueue_scripts() { /* * Gather all strings in PHP that may be needed by JS on the client. - * Once JS i18n is implemented (in #20491), this can be removed. + * Once JS i18n is implemented (in https://core.trac.wordpress.org/ticket/20491), this can be removed. */ $some_non_rendered_areas_messages = array(); $some_non_rendered_areas_messages[1] = html_entity_decode( - __( 'Your theme has 1 other widget area, but this particular page does not display it.' ), + __( 'Your theme has 1 other widget area, but this particular page doesn’t display it.' ), ENT_QUOTES, get_bloginfo( 'charset' ) ); @@ -734,10 +732,10 @@ public function enqueue_scripts() { for ( $non_rendered_count = 2; $non_rendered_count < $registered_sidebar_count; $non_rendered_count++ ) { $some_non_rendered_areas_messages[ $non_rendered_count ] = html_entity_decode( sprintf( - /* translators: %s: The number of other widget areas registered but not rendered. */ + /* translators: %s: the number of other widget areas registered but not rendered */ _n( - 'Your theme has %s other widget area, but this particular page does not display it.', - 'Your theme has %s other widget areas, but this particular page does not display them.', + 'Your theme has %s other widget area, but this particular page doesn’t display it.', + 'Your theme has %s other widget areas, but this particular page doesn’t display them.', $non_rendered_count ), number_format_i18n( $non_rendered_count ) @@ -750,7 +748,7 @@ public function enqueue_scripts() { if ( 1 === $registered_sidebar_count ) { $no_areas_shown_message = html_entity_decode( sprintf( - __( 'Your theme has 1 widget area, but this particular page does not display it.' ) + __( 'Your theme has 1 widget area, but this particular page doesn’t display it.' ) ), ENT_QUOTES, get_bloginfo( 'charset' ) @@ -758,10 +756,10 @@ public function enqueue_scripts() { } else { $no_areas_shown_message = html_entity_decode( sprintf( - /* translators: %s: The total number of widget areas registered. */ + /* translators: %s: the total number of widget areas registered */ _n( - 'Your theme has %s widget area, but this particular page does not display it.', - 'Your theme has %s widget areas, but this particular page does not display them.', + 'Your theme has %s widget area, but this particular page doesn’t display it.', + 'Your theme has %s widget areas, but this particular page doesn’t display them.', $registered_sidebar_count ), number_format_i18n( $registered_sidebar_count ) @@ -774,12 +772,12 @@ public function enqueue_scripts() { $settings = array( 'registeredSidebars' => array_values( $wp_registered_sidebars ), 'registeredWidgets' => $wp_registered_widgets, - 'availableWidgets' => $available_widgets, // @todo Merge this with registered_widgets. + 'availableWidgets' => $available_widgets, // @todo Merge this with registered_widgets 'l10n' => array( 'saveBtnLabel' => __( 'Apply' ), 'saveBtnTooltip' => __( 'Save and preview changes before publishing them.' ), 'removeBtnLabel' => __( 'Remove' ), - 'removeBtnTooltip' => __( 'Keep widget settings and move it to the inactive widgets' ), + 'removeBtnTooltip' => __( 'Trash widget by moving it to the inactive widgets sidebar.' ), 'error' => __( 'An error has occurred. Please reload the page and try again.' ), 'widgetMovedUp' => __( 'Widget moved up' ), 'widgetMovedDown' => __( 'Widget moved down' ), @@ -789,7 +787,7 @@ public function enqueue_scripts() { 'reorderModeOn' => __( 'Reorder mode enabled' ), 'reorderModeOff' => __( 'Reorder mode closed' ), 'reorderLabelOn' => esc_attr__( 'Reorder widgets' ), - /* translators: %d: The number of widgets found. */ + /* translators: %d: the number of widgets found */ 'widgetsFound' => __( 'Number of widgets found: %d' ), 'noWidgetsFound' => __( 'No widgets found.' ), ), @@ -801,7 +799,7 @@ public function enqueue_scripts() { ); foreach ( $settings['registeredWidgets'] as &$registered_widget ) { - unset( $registered_widget['callback'] ); // May not be JSON-serializeable. + unset( $registered_widget['callback'] ); // may not be JSON-serializeable } $wp_scripts->add_data( @@ -809,18 +807,12 @@ public function enqueue_scripts() { 'data', sprintf( 'var _wpCustomizeWidgetsSettings = %s;', wp_json_encode( $settings ) ) ); - - /* - * TODO: Update 'wp-customize-widgets' to not rely so much on things in - * 'customize-widgets'. This will let us skip most of the above and not - * enqueue 'customize-widgets' which saves bytes. - */ } /** * Renders the widget form control templates into the DOM. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function output_widget_control_templates() { ?> @@ -828,12 +820,7 @@ public function output_widget_control_templates() { <div id="available-widgets"> <div class="customize-section-title"> <button class="customize-section-back" tabindex="-1"> - <span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Back' ); - ?> - </span> + <span class="screen-reader-text"><?php _e( 'Back' ); ?></span> </button> <h3> <span class="customize-action"> @@ -846,35 +833,20 @@ public function output_widget_control_templates() { </h3> </div> <div id="available-widgets-filter"> - <label class="screen-reader-text" for="widgets-search"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Search Widgets' ); - ?> - </label> - <input type="text" id="widgets-search" placeholder="<?php esc_attr_e( 'Search widgets…' ); ?>" aria-describedby="widgets-search-desc"> + <label class="screen-reader-text" for="widgets-search"><?php _e( 'Search Widgets' ); ?></label> + <input type="text" id="widgets-search" placeholder="<?php esc_attr_e( 'Search widgets…' ); ?>" aria-describedby="widgets-search-desc" /> <div class="search-icon" aria-hidden="true"></div> - <button type="button" class="clear-results"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Clear Results' ); - ?> - </span></button> - <p class="screen-reader-text" id="widgets-search-desc"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'The search results will be updated as you type.' ); - ?> - </p> + <button type="button" class="clear-results"><span class="screen-reader-text"><?php _e( 'Clear Results' ); ?></span></button> + <p class="screen-reader-text" id="widgets-search-desc"><?php _e( 'The search results will be updated as you type.' ); ?></p> </div> - <ul id="available-widgets-list"> + <div id="available-widgets-list"> <?php foreach ( $this->get_available_widgets() as $available_widget ) : ?> - <li id="widget-tpl-<?php echo esc_attr( $available_widget['id'] ); ?>" data-widget-id="<?php echo esc_attr( $available_widget['id'] ); ?>" class="widget-tpl <?php echo esc_attr( $available_widget['id'] ); ?>" tabindex="0"> + <div id="widget-tpl-<?php echo esc_attr( $available_widget['id'] ); ?>" data-widget-id="<?php echo esc_attr( $available_widget['id'] ); ?>" class="widget-tpl <?php echo esc_attr( $available_widget['id'] ); ?>" tabindex="0"> <?php echo $available_widget['control_tpl']; ?> - </li> + </div> <?php endforeach; ?> <p class="no-widgets-found-message"><?php _e( 'No widgets found.' ); ?></p> - </ul><!-- #available-widgets-list --> + </div><!-- #available-widgets-list --> </div><!-- #available-widgets --> </div><!-- #widgets-left --> <?php @@ -884,7 +856,7 @@ public function output_widget_control_templates() { * Calls admin_print_footer_scripts and admin_print_scripts hooks to * allow custom scripts from plugins. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function print_footer_scripts() { /** This action is documented in wp-admin/admin-footer.php */ @@ -900,7 +872,7 @@ public function print_footer_scripts() { /** * Retrieves common arguments to supply when constructing a Customizer setting. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param string $id Widget setting ID. * @param array $overrides Array of setting overrides. @@ -918,13 +890,8 @@ public function get_setting_args( $id, $overrides = array() ) { $args['sanitize_js_callback'] = array( $this, 'sanitize_sidebar_widgets_js_instance' ); $args['transport'] = current_theme_supports( 'customize-selective-refresh-widgets' ) ? 'postMessage' : 'refresh'; } elseif ( preg_match( $this->setting_id_patterns['widget_instance'], $id, $matches ) ) { - $id_base = $matches['id_base']; - $args['sanitize_callback'] = function ( $value ) use ( $id_base ) { - return $this->sanitize_widget_instance( $value, $id_base ); - }; - $args['sanitize_js_callback'] = function ( $value ) use ( $id_base ) { - return $this->sanitize_widget_js_instance( $value, $id_base ); - }; + $args['sanitize_callback'] = array( $this, 'sanitize_widget_instance' ); + $args['sanitize_js_callback'] = array( $this, 'sanitize_widget_js_instance' ); $args['transport'] = $this->is_widget_selective_refreshable( $matches['id_base'] ) ? 'postMessage' : 'refresh'; } @@ -933,7 +900,7 @@ public function get_setting_args( $id, $overrides = array() ) { /** * Filters the common arguments supplied when constructing a Customizer setting. * - * @since 3.9.0 + * @since WP-3.9.0 * * @see WP_Customize_Setting * @@ -948,10 +915,10 @@ public function get_setting_args( $id, $overrides = array() ) { * * Used as the 'sanitize_callback' for each $sidebars_widgets setting. * - * @since 3.9.0 + * @since WP-3.9.0 * - * @param string[] $widget_ids Array of widget IDs. - * @return string[] Array of sanitized widget IDs. + * @param array $widget_ids Array of widget IDs. + * @return array Array of sanitized widget IDs. */ public function sanitize_sidebar_widgets( $widget_ids ) { $widget_ids = array_map( 'strval', (array) $widget_ids ); @@ -965,10 +932,11 @@ public function sanitize_sidebar_widgets( $widget_ids ) { /** * Builds up an index of all available widgets for use in Backbone models. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global array $wp_registered_widgets * @global array $wp_registered_widget_controls + * @staticvar array $available_widgets * * @see wp_list_widgets() * @@ -981,14 +949,14 @@ public function get_available_widgets() { } global $wp_registered_widgets, $wp_registered_widget_controls; - require_once ABSPATH . 'wp-admin/includes/widgets.php'; // For next_widget_id_number(). + require_once ABSPATH . '/wp-admin/includes/widgets.php'; // for next_widget_id_number() $sort = $wp_registered_widgets; usort( $sort, array( $this, '_sort_name_callback' ) ); $done = array(); foreach ( $sort as $widget ) { - if ( in_array( $widget['callback'], $done, true ) ) { // We already showed this multi-widget. + if ( in_array( $widget['callback'], $done, true ) ) { // We already showed this multi-widget continue; } @@ -1000,7 +968,7 @@ public function get_available_widgets() { } $available_widget = $widget; - unset( $available_widget['callback'] ); // Not serializable to JSON. + unset( $available_widget['callback'] ); // not serializable to JSON $args = array( 'widget_id' => $widget['id'], @@ -1058,7 +1026,7 @@ public function get_available_widgets() { /** * Naturally orders available widgets by name. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $widget_a The first widget to compare. * @param array $widget_b The second widget to compare. @@ -1071,7 +1039,7 @@ protected function _sort_name_callback( $widget_a, $widget_b ) { /** * Retrieves the widget control markup. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $args Widget control arguments. * @return string Widget control form HTML markup. @@ -1082,7 +1050,7 @@ public function get_widget_control( $args ) { $args[0]['before_widget_content'] = '<div class="widget-content">'; $args[0]['after_widget_content'] = '</div><!-- .widget-content -->'; ob_start(); - wp_widget_control( ...$args ); + call_user_func_array( 'wp_widget_control', $args ); $control_tpl = ob_get_clean(); return $control_tpl; } @@ -1090,7 +1058,7 @@ public function get_widget_control( $args ) { /** * Retrieves the widget control markup parts. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $args Widget control arguments. * @return array { @@ -1122,7 +1090,7 @@ public function get_widget_control_parts( $args ) { /** * Adds hooks for the Customizer preview. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function customize_preview_init() { add_action( 'wp_enqueue_scripts', array( $this, 'customize_preview_enqueue' ) ); @@ -1133,10 +1101,10 @@ public function customize_preview_init() { /** * Refreshes the nonce for widget updates. * - * @since 4.2.0 + * @since WP-4.2.0 * - * @param array $nonces Array of nonces. - * @return array Array of nonces. + * @param array $nonces Array of nonces. + * @return array $nonces Array of nonces. */ public function refresh_nonces( $nonces ) { $nonces['update-widget'] = wp_create_nonce( 'update-widget' ); @@ -1151,7 +1119,7 @@ public function refresh_nonces( $nonces ) { * to the value of `get_option( 'sidebars_widgets' )` before the Customizer preview * filter is added, it has to be reset after the filter has been added. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $sidebars_widgets List of widgets for the current sidebar. * @return array @@ -1166,7 +1134,7 @@ public function preview_sidebars_widgets( $sidebars_widgets ) { /** * Enqueues scripts for the Customizer preview. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function customize_preview_enqueue() { wp_enqueue_script( 'customize-preview-widgets' ); @@ -1176,15 +1144,15 @@ public function customize_preview_enqueue() { * Inserts default style for highlighted widget at early point so theme * stylesheet can override. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function print_preview_css() { ?> <style> .widget-customizer-highlighted-widget { outline: none; - -webkit-box-shadow: 0 0 2px rgba(30, 140, 190, 0.8); - box-shadow: 0 0 2px rgba(30, 140, 190, 0.8); + -webkit-box-shadow: 0 0 2px rgba(30,140,190,0.8); + box-shadow: 0 0 2px rgba(30,140,190,0.8); position: relative; z-index: 1; } @@ -1196,7 +1164,7 @@ public function print_preview_css() { * Communicates the sidebars that appeared on the page at the very end of the page, * and at the very end of the wp_footer, * - * @since 3.9.0 + * @since WP-3.9.0 * * @global array $wp_registered_sidebars * @global array $wp_registered_widgets @@ -1204,35 +1172,29 @@ public function print_preview_css() { public function export_preview_data() { global $wp_registered_sidebars, $wp_registered_widgets; - $switched_locale = switch_to_user_locale( get_current_user_id() ); - - $l10n = array( + $switched_locale = switch_to_locale( get_user_locale() ); + $l10n = array( 'widgetTooltip' => __( 'Shift-click to edit this widget.' ), ); - if ( $switched_locale ) { restore_previous_locale(); } - $rendered_sidebars = array_filter( $this->rendered_sidebars ); - $rendered_widgets = array_filter( $this->rendered_widgets ); - // Prepare Customizer settings to pass to JavaScript. $settings = array( - 'renderedSidebars' => array_fill_keys( array_keys( $rendered_sidebars ), true ), - 'renderedWidgets' => array_fill_keys( array_keys( $rendered_widgets ), true ), + 'renderedSidebars' => array_fill_keys( array_unique( $this->rendered_sidebars ), true ), + 'renderedWidgets' => array_fill_keys( array_keys( $this->rendered_widgets ), true ), 'registeredSidebars' => array_values( $wp_registered_sidebars ), 'registeredWidgets' => $wp_registered_widgets, 'l10n' => $l10n, 'selectiveRefreshableWidgets' => $this->get_selective_refreshable_widgets(), ); - foreach ( $settings['registeredWidgets'] as &$registered_widget ) { - unset( $registered_widget['callback'] ); // May not be JSON-serializeable. + unset( $registered_widget['callback'] ); // may not be JSON-serializeable } ?> - <script> + <script type="text/javascript"> var _wpWidgetCustomizerPreviewSettings = <?php echo wp_json_encode( $settings ); ?>; </script> <?php @@ -1241,7 +1203,7 @@ public function export_preview_data() { /** * Tracks the widgets that were rendered. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $widget Rendered widget to tally. */ @@ -1252,25 +1214,25 @@ public function tally_rendered_widgets( $widget ) { /** * Determine if a widget is rendered on the page. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $widget_id Widget ID to check. * @return bool Whether the widget is rendered. */ public function is_widget_rendered( $widget_id ) { - return ! empty( $this->rendered_widgets[ $widget_id ] ); + return in_array( $widget_id, $this->rendered_widgets, true ); } /** * Determines if a sidebar is rendered on the page. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $sidebar_id Sidebar ID to check. * @return bool Whether the sidebar is rendered. */ public function is_sidebar_rendered( $sidebar_id ) { - return ! empty( $this->rendered_sidebars[ $sidebar_id ] ); + return in_array( $sidebar_id, $this->rendered_sidebars, true ); } /** @@ -1280,7 +1242,7 @@ public function is_sidebar_rendered( $sidebar_id ) { * and assume that this means that the sidebar would be rendered on the template * if there were widgets populating it. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param bool $is_active Whether the sidebar is active. * @param string $sidebar_id Sidebar ID. @@ -1288,9 +1250,8 @@ public function is_sidebar_rendered( $sidebar_id ) { */ public function tally_sidebars_via_is_active_sidebar_calls( $is_active, $sidebar_id ) { if ( is_registered_sidebar( $sidebar_id ) ) { - $this->rendered_sidebars[ $sidebar_id ] = true; + $this->rendered_sidebars[] = $sidebar_id; } - /* * We may need to force this to true, and also force-true the value * for 'dynamic_sidebar_has_widgets' if we want to ensure that there @@ -1306,7 +1267,7 @@ public function tally_sidebars_via_is_active_sidebar_calls( $is_active, $sidebar * and assume this means the sidebar would be rendered on the template if * there were widgets populating it. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param bool $has_widgets Whether the current sidebar has widgets. * @param string $sidebar_id Sidebar ID. @@ -1314,7 +1275,7 @@ public function tally_sidebars_via_is_active_sidebar_calls( $is_active, $sidebar */ public function tally_sidebars_via_dynamic_sidebar_calls( $has_widgets, $sidebar_id ) { if ( is_registered_sidebar( $sidebar_id ) ) { - $this->rendered_sidebars[ $sidebar_id ] = true; + $this->rendered_sidebars[] = $sidebar_id; } /* @@ -1331,7 +1292,7 @@ public function tally_sidebars_via_dynamic_sidebar_calls( $has_widgets, $sidebar * Allows values posted back from JS to be rejected if any tampering of the * data has occurred. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param string $serialized_instance Widget instance. * @return string MAC for serialized widget instance. @@ -1346,27 +1307,19 @@ protected function get_instance_hash_key( $serialized_instance ) { * Unserialize the JS-instance for storing in the options. It's important that this filter * only get applied to an instance *once*. * - * @since 3.9.0 - * @since 5.8.0 Added the `$id_base` parameter. - * - * @global WP_Widget_Factory $wp_widget_factory + * @since WP-3.9.0 * - * @param array $value Widget instance to sanitize. - * @param string $id_base Optional. Base of the ID of the widget being sanitized. Default null. + * @param array $value Widget instance to sanitize. * @return array|void Sanitized widget instance. */ - public function sanitize_widget_instance( $value, $id_base = null ) { - global $wp_widget_factory; - + public function sanitize_widget_instance( $value ) { if ( array() === $value ) { return $value; } - if ( - empty( $value['is_widget_customizer_js_value'] ) || - empty( $value['instance_hash_key'] ) || - empty( $value['encoded_serialized_instance'] ) - ) { + if ( empty( $value['is_widget_customizer_js_value'] ) + || empty( $value['instance_hash_key'] ) + || empty( $value['encoded_serialized_instance'] ) ) { return; } @@ -1390,31 +1343,22 @@ public function sanitize_widget_instance( $value, $id_base = null ) { /** * Converts a widget instance into JSON-representable format. * - * @since 3.9.0 - * @since 5.8.0 Added the `$id_base` parameter. - * - * @global WP_Widget_Factory $wp_widget_factory + * @since WP-3.9.0 * - * @param array $value Widget instance to convert to JSON. - * @param string $id_base Optional. Base of the ID of the widget being sanitized. Default null. + * @param array $value Widget instance to convert to JSON. * @return array JSON-converted widget instance. */ - public function sanitize_widget_js_instance( $value, $id_base = null ) { - global $wp_widget_factory; - + public function sanitize_widget_js_instance( $value ) { if ( empty( $value['is_widget_customizer_js_value'] ) ) { $serialized = serialize( $value ); - $js_value = array( + $value = array( 'encoded_serialized_instance' => base64_encode( $serialized ), 'title' => empty( $value['title'] ) ? '' : $value['title'], 'is_widget_customizer_js_value' => true, 'instance_hash_key' => $this->get_instance_hash_key( $serialized ), ); - - return $js_value; } - return $value; } @@ -1424,7 +1368,7 @@ public function sanitize_widget_js_instance( $value, $id_base = null ) { * One example where this might happen is when a plugin orphans a widget * in a sidebar upon deactivation. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global array $wp_registered_widgets * @@ -1442,13 +1386,13 @@ public function sanitize_sidebar_widgets_js_instance( $widget_ids ) { * * Requires that `$_POST` be populated with the instance data. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global array $wp_registered_widget_updates * @global array $wp_registered_widget_controls * - * @param string $widget_id Widget ID. - * @return array|WP_Error Array containing the updated widget information. + * @param string $widget_id Widget ID. + * @return WP_Error|array Array containing the updated widget information. * A WP_Error object, otherwise. */ public function call_widget_update( $widget_id ) { @@ -1484,7 +1428,7 @@ public function call_widget_update( $widget_id ) { return new WP_Error( 'widget_setting_malformed' ); } - $instance = $this->sanitize_widget_instance( $sanitized_widget_setting, $parsed_id['id_base'] ); + $instance = $this->sanitize_widget_instance( $sanitized_widget_setting ); if ( is_null( $instance ) ) { $this->stop_capturing_option_updates(); return new WP_Error( 'widget_setting_unsanitized' ); @@ -1516,7 +1460,7 @@ public function call_widget_update( $widget_id ) { } } - // Clean up any input vars that were manually added. + // Clean up any input vars that were manually added foreach ( $added_input_vars as $key ) { unset( $_POST[ $key ] ); unset( $_REQUEST[ $key ] ); @@ -1550,7 +1494,7 @@ public function call_widget_update( $widget_id ) { * in place from WP_Customize_Setting::preview() will use this value * instead of the default widget instance value (an empty array). */ - $this->manager->set_post_value( $setting_id, $this->sanitize_widget_js_instance( $instance, $parsed_id['id_base'] ) ); + $this->manager->set_post_value( $setting_id, $this->sanitize_widget_js_instance( $instance ) ); // Obtain the widget control with the updated instance in place. ob_start(); @@ -1573,7 +1517,7 @@ public function call_widget_update( $widget_id ) { * * Most code here copied from wp_ajax_save_widget(). * - * @since 3.9.0 + * @since WP-3.9.0 * * @see wp_ajax_save_widget() */ @@ -1623,7 +1567,7 @@ public function wp_ajax_update_widget() { } $form = $updated_widget['form']; - $instance = $this->sanitize_widget_js_instance( $updated_widget['instance'], $id_base ); + $instance = $this->sanitize_widget_js_instance( $updated_widget['instance'] ); wp_send_json_success( compact( 'form', 'instance' ) ); } @@ -1635,7 +1579,7 @@ public function wp_ajax_update_widget() { /** * Filters arguments for dynamic widget partials. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param array|false $partial_args Partial arguments. * @param string $partial_id Partial ID. @@ -1668,7 +1612,7 @@ public function customize_dynamic_partial_args( $partial_args, $partial_id ) { /** * Adds hooks for selective refresh. * - * @since 4.5.0 + * @since WP-4.5.0 */ public function selective_refresh_init() { if ( ! current_theme_supports( 'customize-selective-refresh-widgets' ) ) { @@ -1683,15 +1627,13 @@ public function selective_refresh_init() { /** * Inject selective refresh data attributes into widget container elements. * - * @since 4.5.0 - * * @param array $params { * Dynamic sidebar params. * * @type array $args Sidebar args. * @type array $widget_args Widget args. * } - * @see WP_Customize_Nav_Menus::filter_wp_nav_menu_args() + * @see WP_Customize_Nav_Menus_Partial_Refresh::filter_wp_nav_menu_args() * * @return array Params. */ @@ -1743,9 +1685,9 @@ public function filter_dynamic_sidebar_params( $params ) { * List of the tag names seen for before_widget strings. * * This is used in the {@see 'filter_wp_kses_allowed_html'} filter to ensure that the - * data-* attributes can be allowed. + * data-* attributes can be whitelisted. * - * @since 4.5.0 + * @since WP-4.5.0 * @var array */ protected $before_widget_tags_seen = array(); @@ -1755,7 +1697,7 @@ public function filter_dynamic_sidebar_params( $params ) { * * This is needed in case the `$before_widget` is run through wp_kses() when printed. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param array $allowed_html Allowed HTML. * @return array (Maybe) modified allowed HTML. @@ -1787,7 +1729,7 @@ public function filter_wp_kses_allowed_data_attributes( $allowed_html ) { * * This helps facilitate the uncommon scenario where a single sidebar is rendered multiple times on a template. * - * @since 4.5.0 + * @since WP-4.5.0 * @var array */ protected $sidebar_instance_count = array(); @@ -1795,15 +1737,15 @@ public function filter_wp_kses_allowed_data_attributes( $allowed_html ) { /** * The current request's sidebar_instance_number context. * - * @since 4.5.0 - * @var int|null + * @since WP-4.5.0 + * @var int */ protected $context_sidebar_instance_number; /** * Current sidebar ID being rendered. * - * @since 4.5.0 + * @since WP-4.5.0 * @var array */ protected $current_dynamic_sidebar_id_stack = array(); @@ -1813,7 +1755,7 @@ public function filter_wp_kses_allowed_data_attributes( $allowed_html ) { * * Insert marker before widgets are rendered in a dynamic sidebar. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param int|string $index Index, name, or ID of the dynamic sidebar. */ @@ -1824,7 +1766,7 @@ public function start_dynamic_sidebar( $index ) { } $this->sidebar_instance_count[ $index ] += 1; if ( ! $this->manager->selective_refresh->is_render_partials_request() ) { - printf( "\n<!--dynamic_sidebar_before:%s:%d-->\n", esc_html( $index ), (int) $this->sidebar_instance_count[ $index ] ); + printf( "\n<!--dynamic_sidebar_before:%s:%d-->\n", esc_html( $index ), intval( $this->sidebar_instance_count[ $index ] ) ); } } @@ -1833,37 +1775,37 @@ public function start_dynamic_sidebar( $index ) { * * Inserts a marker after widgets are rendered in a dynamic sidebar. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param int|string $index Index, name, or ID of the dynamic sidebar. */ public function end_dynamic_sidebar( $index ) { array_shift( $this->current_dynamic_sidebar_id_stack ); if ( ! $this->manager->selective_refresh->is_render_partials_request() ) { - printf( "\n<!--dynamic_sidebar_after:%s:%d-->\n", esc_html( $index ), (int) $this->sidebar_instance_count[ $index ] ); + printf( "\n<!--dynamic_sidebar_after:%s:%d-->\n", esc_html( $index ), intval( $this->sidebar_instance_count[ $index ] ) ); } } /** * Current sidebar being rendered. * - * @since 4.5.0 - * @var string|null + * @since WP-4.5.0 + * @var string */ protected $rendering_widget_id; /** * Current widget being rendered. * - * @since 4.5.0 - * @var string|null + * @since WP-4.5.0 + * @var string */ protected $rendering_sidebar_id; /** * Filters sidebars_widgets to ensure the currently-rendered widget is the only widget in the current sidebar. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param array $sidebars_widgets Sidebars widgets. * @return array Filtered sidebars widgets. @@ -1876,7 +1818,7 @@ public function filter_sidebars_widgets_for_rendering_widget( $sidebars_widgets /** * Renders a specific widget using the supplied sidebar arguments. * - * @since 4.5.0 + * @since WP-4.5.0 * * @see dynamic_sidebar() * @@ -1903,7 +1845,7 @@ public function render_widget_partial( $partial, $context ) { $this->rendering_sidebar_id = $context['sidebar_id']; if ( isset( $context['sidebar_instance_number'] ) ) { - $this->context_sidebar_instance_number = (int) $context['sidebar_instance_number']; + $this->context_sidebar_instance_number = intval( $context['sidebar_instance_number'] ); } // Filter sidebars_widgets so that only the queried widget is in the sidebar. @@ -1929,13 +1871,13 @@ public function render_widget_partial( $partial, $context ) { } // - // Option Update Capturing. + // Option Update Capturing // /** * List of captured widget option updates. * - * @since 3.9.0 + * @since WP-3.9.0 * @var array $_captured_options Values updated while option capture is happening. */ protected $_captured_options = array(); @@ -1943,7 +1885,7 @@ public function render_widget_partial( $partial, $context ) { /** * Whether option capture is currently happening. * - * @since 3.9.0 + * @since WP-3.9.0 * @var bool $_is_current Whether option capture is currently happening or not. */ protected $_is_capturing_option_updates = false; @@ -1951,7 +1893,7 @@ public function render_widget_partial( $partial, $context ) { /** * Determines whether the captured option update should be ignored. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param string $option_name Option name. * @return bool Whether the option capture is ignored. @@ -1963,7 +1905,7 @@ protected function is_option_capture_ignored( $option_name ) { /** * Retrieves captured widget option updates. * - * @since 3.9.0 + * @since WP-3.9.0 * * @return array Array of captured options. */ @@ -1974,17 +1916,17 @@ protected function get_captured_options() { /** * Retrieves the option that was captured from being saved. * - * @since 4.2.0 + * @since WP-4.2.0 * - * @param string $option_name Option name. - * @param mixed $default_value Optional. Default value to return if the option does not exist. Default false. + * @param string $option_name Option name. + * @param mixed $default Optional. Default value to return if the option does not exist. Default false. * @return mixed Value set for the option. */ - protected function get_captured_option( $option_name, $default_value = false ) { + protected function get_captured_option( $option_name, $default = false ) { if ( array_key_exists( $option_name, $this->_captured_options ) ) { $value = $this->_captured_options[ $option_name ]; } else { - $value = $default_value; + $value = $default; } return $value; } @@ -1992,7 +1934,7 @@ protected function get_captured_option( $option_name, $default_value = false ) { /** * Retrieves the number of captured widget option updates. * - * @since 3.9.0 + * @since WP-3.9.0 * * @return int Number of updated options. */ @@ -2003,7 +1945,7 @@ protected function count_captured_options() { /** * Begins keeping track of changes to widget options, caching new values. * - * @since 3.9.0 + * @since WP-3.9.0 */ protected function start_capturing_option_updates() { if ( $this->_is_capturing_option_updates ) { @@ -2018,7 +1960,7 @@ protected function start_capturing_option_updates() { /** * Pre-filters captured option values before updating. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param mixed $new_value The new option value. * @param string $option_name Name of the option. @@ -2027,7 +1969,7 @@ protected function start_capturing_option_updates() { */ public function capture_filter_pre_update_option( $new_value, $option_name, $old_value ) { if ( $this->is_option_capture_ignored( $option_name ) ) { - return $new_value; + return; } if ( ! isset( $this->_captured_options[ $option_name ] ) ) { @@ -2042,7 +1984,7 @@ public function capture_filter_pre_update_option( $new_value, $option_name, $old /** * Pre-filters captured option values before retrieving. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param mixed $value Value to return instead of the option value. * @return mixed Filtered option value. @@ -2054,7 +1996,7 @@ public function capture_filter_pre_get_option( $value ) { $value = $this->_captured_options[ $option_name ]; /** This filter is documented in wp-includes/option.php */ - $value = apply_filters( 'option_' . $option_name, $value, $option_name ); + $value = apply_filters( 'option_' . $option_name, $value ); } return $value; @@ -2063,7 +2005,7 @@ public function capture_filter_pre_get_option( $value ) { /** * Undoes any changes to the options since options capture began. * - * @since 3.9.0 + * @since WP-3.9.0 */ protected function stop_capturing_option_updates() { if ( ! $this->_is_capturing_option_updates ) { @@ -2085,11 +2027,11 @@ protected function stop_capturing_option_updates() { * * See the {@see 'customize_dynamic_setting_args'} filter. * - * @since 3.9.0 - * @deprecated 4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. + * @since WP-3.9.0 + * @deprecated WP-4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. */ public function setup_widget_addition_previews() { - _deprecated_function( __METHOD__, '4.2.0', 'customize_dynamic_setting_args' ); + _deprecated_function( __METHOD__, 'WP-4.2.0', 'customize_dynamic_setting_args' ); } /** @@ -2097,11 +2039,11 @@ public function setup_widget_addition_previews() { * * See the {@see 'customize_dynamic_setting_args'} filter. * - * @since 3.9.0 - * @deprecated 4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. + * @since WP-3.9.0 + * @deprecated WP-4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. */ public function prepreview_added_sidebars_widgets() { - _deprecated_function( __METHOD__, '4.2.0', 'customize_dynamic_setting_args' ); + _deprecated_function( __METHOD__, 'WP-4.2.0', 'customize_dynamic_setting_args' ); } /** @@ -2109,11 +2051,11 @@ public function prepreview_added_sidebars_widgets() { * * See the {@see 'customize_dynamic_setting_args'} filter. * - * @since 3.9.0 - * @deprecated 4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. + * @since WP-3.9.0 + * @deprecated WP-4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. */ public function prepreview_added_widget_instance() { - _deprecated_function( __METHOD__, '4.2.0', 'customize_dynamic_setting_args' ); + _deprecated_function( __METHOD__, 'WP-4.2.0', 'customize_dynamic_setting_args' ); } /** @@ -2121,10 +2063,10 @@ public function prepreview_added_widget_instance() { * * See the {@see 'customize_dynamic_setting_args'} filter. * - * @since 3.9.0 - * @deprecated 4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. + * @since WP-3.9.0 + * @deprecated WP-4.2.0 Deprecated in favor of the {@see 'customize_dynamic_setting_args'} filter. */ public function remove_prepreview_filters() { - _deprecated_function( __METHOD__, '4.2.0', 'customize_dynamic_setting_args' ); + _deprecated_function( __METHOD__, 'WP-4.2.0', 'customize_dynamic_setting_args' ); } } diff --git a/wp-includes/class-wp-date-query.php b/wp-includes/class-wp-date-query.php index cf3bddc..50801a6 100644 --- a/wp-includes/class-wp-date-query.php +++ b/wp-includes/class-wp-date-query.php @@ -12,16 +12,15 @@ * * @link https://developer.wordpress.org/reference/classes/wp_query/ * - * @since 3.7.0 + * @since WP-3.7.0 */ -#[AllowDynamicProperties] class WP_Date_Query { /** * Array of date queries. * * See WP_Date_Query::__construct() for information on date query arguments. * - * @since 3.7.0 + * @since WP-3.7.0 * @var array */ public $queries = array(); @@ -29,7 +28,7 @@ class WP_Date_Query { /** * The default relation between top-level queries. Can be either 'AND' or 'OR'. * - * @since 3.7.0 + * @since WP-3.7.0 * @var string */ public $relation = 'AND'; @@ -37,7 +36,7 @@ class WP_Date_Query { /** * The column to query against. Can be changed via the query arguments. * - * @since 3.7.0 + * @since WP-3.7.0 * @var string */ public $column = 'post_date'; @@ -45,16 +44,16 @@ class WP_Date_Query { /** * The value comparison operator. Can be changed via the query arguments. * - * @since 3.7.0 - * @var string + * @since WP-3.7.0 + * @var array */ public $compare = '='; /** * Supported time-related parameter keys. * - * @since 4.1.0 - * @var string[] + * @since WP-4.1.0 + * @var array */ public $time_keys = array( 'after', 'before', 'year', 'month', 'monthnum', 'week', 'w', 'dayofyear', 'day', 'dayofweek', 'dayofweek_iso', 'hour', 'minute', 'second' ); @@ -66,23 +65,23 @@ class WP_Date_Query { * 'compare'. When 'compare' is 'IN' or 'NOT IN', arrays are accepted; when 'compare' is 'BETWEEN' or 'NOT * BETWEEN', arrays of two valid values are required. See individual argument descriptions for accepted values. * - * @since 3.7.0 - * @since 4.0.0 The $inclusive logic was updated to include all times within the date range. - * @since 4.1.0 Introduced 'dayofweek_iso' time type parameter. + * @since WP-3.7.0 + * @since WP-4.0.0 The $inclusive logic was updated to include all times within the date range. + * @since WP-4.1.0 Introduced 'dayofweek_iso' time type parameter. * - * @param array $date_query { + * @param array $date_query { * Array of date query clauses. * - * @type array ...$0 { + * @type array { * @type string $column Optional. The column to query against. If undefined, inherits the value of - * the `$default_column` parameter. See WP_Date_Query::validate_column() and - * the {@see 'date_query_valid_columns'} filter for the list of accepted values. + * the `$default_column` parameter. Accepts 'post_date', 'post_date_gmt', + * 'post_modified','post_modified_gmt', 'comment_date', 'comment_date_gmt'. * Default 'post_date'. * @type string $compare Optional. The comparison operator. Accepts '=', '!=', '>', '>=', '<', '<=', * 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. Default '='. * @type string $relation Optional. The boolean relationship between the date queries. Accepts 'OR' or 'AND'. * Default 'OR'. - * @type array ...$0 { + * @type array { * Optional. An array of first-order clause parameters, or another fully-formed date query. * * @type string|array $before { @@ -105,62 +104,66 @@ class WP_Date_Query { * @type string $day Optional when passing array.The day of the month. Accepts numbers 1-31. * Default (string:empty)|(array:last day of month). * } - * @type string $column Optional. Used to add a clause comparing a column other than - * the column specified in the top-level `$column` parameter. - * See WP_Date_Query::validate_column() and - * the {@see 'date_query_valid_columns'} filter for the list - * of accepted values. Default is the value of top-level `$column`. + * @type string $column Optional. Used to add a clause comparing a column other than the + * column specified in the top-level `$column` parameter. Accepts + * 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt', + * 'comment_date', 'comment_date_gmt'. Default is the value of + * top-level `$column`. * @type string $compare Optional. The comparison operator. Accepts '=', '!=', '>', '>=', * '<', '<=', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'. 'IN', * 'NOT IN', 'BETWEEN', and 'NOT BETWEEN'. Comparisons support * arrays in some time-related parameters. Default '='. * @type bool $inclusive Optional. Include results from dates specified in 'before' or * 'after'. Default false. - * @type int|int[] $year Optional. The four-digit year number. Accepts any four-digit year + * @type int|array $year Optional. The four-digit year number. Accepts any four-digit year * or an array of years if `$compare` supports it. Default empty. - * @type int|int[] $month Optional. The two-digit month number. Accepts numbers 1-12 or an + * @type int|array $month Optional. The two-digit month number. Accepts numbers 1-12 or an * array of valid numbers if `$compare` supports it. Default empty. - * @type int|int[] $week Optional. The week number of the year. Accepts numbers 0-53 or an + * @type int|array $week Optional. The week number of the year. Accepts numbers 0-53 or an * array of valid numbers if `$compare` supports it. Default empty. - * @type int|int[] $dayofyear Optional. The day number of the year. Accepts numbers 1-366 or an + * @type int|array $dayofyear Optional. The day number of the year. Accepts numbers 1-366 or an * array of valid numbers if `$compare` supports it. - * @type int|int[] $day Optional. The day of the month. Accepts numbers 1-31 or an array + * @type int|array $day Optional. The day of the month. Accepts numbers 1-31 or an array * of valid numbers if `$compare` supports it. Default empty. - * @type int|int[] $dayofweek Optional. The day number of the week. Accepts numbers 1-7 (1 is + * @type int|array $dayofweek Optional. The day number of the week. Accepts numbers 1-7 (1 is * Sunday) or an array of valid numbers if `$compare` supports it. * Default empty. - * @type int|int[] $dayofweek_iso Optional. The day number of the week (ISO). Accepts numbers 1-7 + * @type int|array $dayofweek_iso Optional. The day number of the week (ISO). Accepts numbers 1-7 * (1 is Monday) or an array of valid numbers if `$compare` supports it. * Default empty. - * @type int|int[] $hour Optional. The hour of the day. Accepts numbers 0-23 or an array + * @type int|array $hour Optional. The hour of the day. Accepts numbers 0-23 or an array * of valid numbers if `$compare` supports it. Default empty. - * @type int|int[] $minute Optional. The minute of the hour. Accepts numbers 0-59 or an array + * @type int|array $minute Optional. The minute of the hour. Accepts numbers 0-60 or an array * of valid numbers if `$compare` supports it. Default empty. - * @type int|int[] $second Optional. The second of the minute. Accepts numbers 0-59 or an + * @type int|array $second Optional. The second of the minute. Accepts numbers 0-60 or an * array of valid numbers if `$compare` supports it. Default empty. * } * } * } - * @param string $default_column Optional. Default column to query against. See WP_Date_Query::validate_column() - * and the {@see 'date_query_valid_columns'} filter for the list of accepted values. - * Default 'post_date'. + * @param string $default_column Optional. Default column to query against. Default 'post_date'. + * Accepts 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt', + * 'comment_date', 'comment_date_gmt'. */ public function __construct( $date_query, $default_column = 'post_date' ) { - if ( empty( $date_query ) || ! is_array( $date_query ) ) { - return; - } - - if ( isset( $date_query['relation'] ) ) { - $this->relation = $this->sanitize_relation( $date_query['relation'] ); + if ( isset( $date_query['relation'] ) && 'OR' === strtoupper( $date_query['relation'] ) ) { + $this->relation = 'OR'; } else { $this->relation = 'AND'; } + if ( ! is_array( $date_query ) ) { + return; + } + // Support for passing time-based keys in the top level of the $date_query array. - if ( ! isset( $date_query[0] ) ) { + if ( ! isset( $date_query[0] ) && ! empty( $date_query ) ) { $date_query = array( $date_query ); } + if ( empty( $date_query ) ) { + return; + } + if ( ! empty( $date_query['column'] ) ) { $date_query['column'] = esc_sql( $date_query['column'] ); } else { @@ -178,12 +181,14 @@ public function __construct( $date_query, $default_column = 'post_date' ) { * Recursive-friendly query sanitizer. * * Ensures that each query-level clause has a 'relation' key, and that - * each first-order clause contains all the necessary keys from `$defaults`. + * each first-order clause contains all the necessary keys from + * `$defaults`. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $queries * @param array $parent_query + * * @return array Sanitized queries. */ public function sanitize_query( $queries, $parent_query = null ) { @@ -220,9 +225,6 @@ public function sanitize_query( $queries, $parent_query = null ) { $this->validate_date_values( $queries ); } - // Sanitize the relation parameter. - $queries['relation'] = $this->sanitize_relation( $queries['relation'] ); - foreach ( $queries as $key => $q ) { if ( ! is_array( $q ) || in_array( $key, $this->time_keys, true ) ) { // This is a first-order query. Trust the values and sanitize when building SQL. @@ -237,14 +239,14 @@ public function sanitize_query( $queries, $parent_query = null ) { } /** - * Determines whether this is a first-order clause. + * Determine whether this is a first-order clause. * * Checks to see if the current clause has any time-related keys. * If so, it's first-order. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @param array $query Query clause. + * @param array $query Query clause. * @return bool True if this is a first-order clause. */ protected function is_first_order_clause( $query ) { @@ -255,7 +257,7 @@ protected function is_first_order_clause( $query ) { /** * Determines and validates what comparison operator to use. * - * @since 3.7.0 + * @since WP-3.7.0 * * @param array $query A date query or a date subquery. * @return string The comparison operator. @@ -277,10 +279,10 @@ public function get_compare( $query ) { * continue (though of course no items will be found for impossible dates). * This method only generates debug notices for these cases. * - * @since 4.1.0 + * @since WP- 4.1.0 * - * @param array $date_query The date_query array. - * @return bool True if all values in the query are valid, false if one or more fail. + * @param array $date_query The date_query array. + * @return bool True if all values in the query are valid, false if one or more fail. */ public function validate_date_values( $date_query = array() ) { if ( empty( $date_query ) ) { @@ -319,7 +321,7 @@ public function validate_date_values( $date_query = array() ) { $max_days_of_year = gmdate( 'z', mktime( 0, 0, 0, 12, 31, $_year ) ) + 1; } else { - // Otherwise we use the max of 366 (leap-year). + // otherwise we use the max of 366 (leap-year) $max_days_of_year = 366; } @@ -400,7 +402,7 @@ public function validate_date_values( $date_query = array() ) { if ( ! is_numeric( $_value ) || ! $is_between ) { $error = sprintf( - /* translators: Date query invalid date message. 1: Invalid value, 2: Type of value, 3: Minimum valid value, 4: Maximum valid value. */ + /* translators: Date query invalid date message: 1: invalid value, 2: type of value, 3: minimum valid value, 4: maximum valid value */ __( 'Invalid value %1$s for %2$s. Expected value should be between %3$s and %4$s.' ), '<code>' . esc_html( $_value ) . '</code>', '<code>' . esc_html( $key ) . '</code>', @@ -408,7 +410,7 @@ public function validate_date_values( $date_query = array() ) { '<code>' . esc_html( $check['max'] ) . '</code>' ); - _doing_it_wrong( __CLASS__, $error, '4.1.0' ); + _doing_it_wrong( __CLASS__, $error, 'WP-4.1.0' ); $valid = false; } @@ -429,8 +431,8 @@ public function validate_date_values( $date_query = array() ) { if ( $day_exists && $month_exists && $year_exists ) { // 1. Checking day, month, year combination. if ( ! wp_checkdate( $date_query['month'], $date_query['day'], $date_query['year'], sprintf( '%s-%s-%s', $date_query['year'], $date_query['month'], $date_query['day'] ) ) ) { + /* translators: 1: year, 2: month, 3: day of month */ $day_month_year_error_msg = sprintf( - /* translators: 1: Year, 2: Month, 3: Day of month. */ __( 'The following values do not describe a valid date: year %1$s, month %2$s, day %3$s.' ), '<code>' . esc_html( $date_query['year'] ) . '</code>', '<code>' . esc_html( $date_query['month'] ) . '</code>', @@ -445,8 +447,8 @@ public function validate_date_values( $date_query = array() ) { * We use 2012 because, as a leap year, it's the most permissive. */ if ( ! wp_checkdate( $date_query['month'], $date_query['day'], 2012, sprintf( '2012-%s-%s', $date_query['month'], $date_query['day'] ) ) ) { + /* translators: 1: month, 2: day of month */ $day_month_year_error_msg = sprintf( - /* translators: 1: Month, 2: Day of month. */ __( 'The following values do not describe a valid date: month %1$s, day %2$s.' ), '<code>' . esc_html( $date_query['month'] ) . '</code>', '<code>' . esc_html( $date_query['day'] ) . '</code>' @@ -457,7 +459,7 @@ public function validate_date_values( $date_query = array() ) { } if ( ! empty( $day_month_year_error_msg ) ) { - _doing_it_wrong( __CLASS__, $day_month_year_error_msg, '4.1.0' ); + _doing_it_wrong( __CLASS__, $day_month_year_error_msg, 'WP-4.1.0' ); } return $valid; @@ -466,14 +468,12 @@ public function validate_date_values( $date_query = array() ) { /** * Validates a column name parameter. * - * Column names without a table prefix (like 'post_date') are checked against a list of - * allowed and known tables, and then, if found, have a table prefix (such as 'wp_posts.') - * prepended. Prefixed column names (such as 'wp_posts.post_date') bypass this allowed - * check, and are only sanitized to remove illegal characters. + * Column names without a table prefix (like 'post_date') are checked against a whitelist of + * known tables, and then, if found, have a table prefix (such as 'wp_posts.') prepended. + * Prefixed column names (such as 'wp_posts.post_date') bypass this whitelist check, + * and are only sanitized to remove illegal characters. * - * @since 3.7.0 - * - * @global wpdb $wpdb WordPress database abstraction object. + * @since WP-3.7.0 * * @param string $column The user-supplied column name. * @return string A validated column name value. @@ -498,14 +498,13 @@ public function validate_column( $column ) { /** * Filters the list of valid date query columns. * - * @since 3.7.0 - * @since 4.1.0 Added 'user_registered' to the default recognized columns. - * @since 4.6.0 Added 'registered' and 'last_updated' to the default recognized columns. + * @since WP-3.7.0 + * @since WP-4.1.0 Added 'user_registered' to the default recognized columns. * * @param string[] $valid_columns An array of valid date query columns. Defaults * are 'post_date', 'post_date_gmt', 'post_modified', * 'post_modified_gmt', 'comment_date', 'comment_date_gmt', - * 'user_registered', 'registered', 'last_updated'. + * 'user_registered' */ if ( ! in_array( $column, apply_filters( 'date_query_valid_columns', $valid_columns ), true ) ) { $column = 'post_date'; @@ -545,9 +544,9 @@ public function validate_column( $column ) { } /** - * Generates WHERE clause to be appended to a main query. + * Generate WHERE clause to be appended to a main query. * - * @since 3.7.0 + * @since WP-3.7.0 * * @return string MySQL WHERE clause. */ @@ -559,23 +558,23 @@ public function get_sql() { /** * Filters the date query WHERE clause. * - * @since 3.7.0 + * @since WP-3.7.0 * * @param string $where WHERE clause of the date query. - * @param WP_Date_Query $query The WP_Date_Query instance. + * @param WP_Date_Query $this The WP_Date_Query instance. */ return apply_filters( 'get_date_sql', $where, $this ); } /** - * Generates SQL clauses to be appended to a main query. + * Generate SQL clauses to be appended to a main query. * * Called by the public WP_Date_Query::get_sql(), this method is abstracted * out to maintain parity with the other Query classes. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to the main query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -593,12 +592,12 @@ protected function get_sql_clauses() { } /** - * Generates SQL clauses for a single query array. + * Generate SQL clauses for a single query array. * * If nested subqueries are found, this method recurses the tree to * produce the properly nested SQL. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $query Query to parse. * @param int $depth Optional. Number of tree levels deep we currently are. @@ -682,10 +681,10 @@ protected function get_sql_for_query( $query, $depth = 0 ) { * A wrapper for get_sql_for_clause(), included here for backward * compatibility while retaining the naming convention across Query classes. * - * @since 3.7.0 + * @since WP- 3.7.0 * - * @param array $query Date query arguments. - * @return string[] { + * @param array $query Date query arguments. + * @return array { * Array containing JOIN and WHERE SQL clauses to append to the main query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -699,13 +698,11 @@ protected function get_sql_for_subquery( $query ) { /** * Turns a first-order date query into SQL for a WHERE clause. * - * @since 4.1.0 - * - * @global wpdb $wpdb WordPress database abstraction object. + * @since WP- 4.1.0 * - * @param array $query Date query clause. - * @param array $parent_query Parent query of the current date query. - * @return string[] { + * @param array $query Date query clause. + * @param array $parent_query Parent query of the current date query. + * @return array { * Array containing JOIN and WHERE SQL clauses to append to the main query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -754,7 +751,7 @@ protected function get_sql_for_clause( $query, $parent_query ) { 'WEEKDAY' => array( 'dayofweek_iso' ), ); - // Check of the possible date units and add them to the query. + // Check of the possible date units and add them to the query foreach ( $date_units as $sql_part => $query_parts ) { foreach ( $query_parts as $query_part ) { if ( isset( $query[ $query_part ] ) ) { @@ -804,10 +801,10 @@ protected function get_sql_for_clause( $query, $parent_query ) { /** * Builds and validates a value string based on the comparison operator. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @param string $compare The compare operator to use. - * @param string|array $value The value. + * @param string $compare The compare operator to use + * @param string|array $value The value * @return string|false|int The value to be used in SQL or false on error. */ public function build_value( $compare, $value ) { @@ -862,18 +859,20 @@ public function build_value( $compare, $value ) { * * You can pass an array of values (year, month, etc.) with missing parameter values being defaulted to * either the maximum or minimum values (controlled by the $default_to parameter). Alternatively you can - * pass a string that will be passed to date_create(). + * pass a string that will be run through strtotime(). * - * @since 3.7.0 + * @since WP-3.7.0 * - * @param string|array $datetime An array of parameters or a strotime() string. + * @param string|array $datetime An array of parameters or a strotime() string * @param bool $default_to_max Whether to round up incomplete dates. Supported by values * of $datetime that are arrays, or string values that are a * subset of MySQL date format ('Y', 'Y-m', 'Y-m-d', 'Y-m-d H:i'). * Default: false. - * @return string|false A MySQL format date/time or false on failure. + * @return string|false A MySQL format date/time or false on failure */ public function build_mysql_datetime( $datetime, $default_to_max = false ) { + $now = current_time( 'timestamp' ); + if ( ! is_array( $datetime ) ) { /* @@ -883,54 +882,46 @@ public function build_mysql_datetime( $datetime, $default_to_max = false ) { if ( preg_match( '/^(\d{4})$/', $datetime, $matches ) ) { // Y $datetime = array( - 'year' => (int) $matches[1], + 'year' => intval( $matches[1] ), ); } elseif ( preg_match( '/^(\d{4})\-(\d{2})$/', $datetime, $matches ) ) { // Y-m $datetime = array( - 'year' => (int) $matches[1], - 'month' => (int) $matches[2], + 'year' => intval( $matches[1] ), + 'month' => intval( $matches[2] ), ); } elseif ( preg_match( '/^(\d{4})\-(\d{2})\-(\d{2})$/', $datetime, $matches ) ) { // Y-m-d $datetime = array( - 'year' => (int) $matches[1], - 'month' => (int) $matches[2], - 'day' => (int) $matches[3], + 'year' => intval( $matches[1] ), + 'month' => intval( $matches[2] ), + 'day' => intval( $matches[3] ), ); } elseif ( preg_match( '/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2})$/', $datetime, $matches ) ) { // Y-m-d H:i $datetime = array( - 'year' => (int) $matches[1], - 'month' => (int) $matches[2], - 'day' => (int) $matches[3], - 'hour' => (int) $matches[4], - 'minute' => (int) $matches[5], + 'year' => intval( $matches[1] ), + 'month' => intval( $matches[2] ), + 'day' => intval( $matches[3] ), + 'hour' => intval( $matches[4] ), + 'minute' => intval( $matches[5] ), ); } // If no match is found, we don't support default_to_max. if ( ! is_array( $datetime ) ) { - $wp_timezone = wp_timezone(); - - // Assume local timezone if not provided. - $dt = date_create( $datetime, $wp_timezone ); - - if ( false === $dt ) { - return gmdate( 'Y-m-d H:i:s', false ); - } - - return $dt->setTimezone( $wp_timezone )->format( 'Y-m-d H:i:s' ); + // @todo Timezone issues here possibly + return gmdate( 'Y-m-d H:i:s', strtotime( $datetime, $now ) ); } } $datetime = array_map( 'absint', $datetime ); if ( ! isset( $datetime['year'] ) ) { - $datetime['year'] = current_time( 'Y' ); + $datetime['year'] = gmdate( 'Y', $now ); } if ( ! isset( $datetime['month'] ) ) { @@ -963,21 +954,19 @@ public function build_mysql_datetime( $datetime, $default_to_max = false ) { * However if multiple values are passed, a pseudo-decimal time will be created * in order to be able to accurately compare against. * - * @since 3.7.0 - * - * @global wpdb $wpdb WordPress database abstraction object. + * @since WP-3.7.0 * - * @param string $column The column to query against. Needs to be pre-validated! - * @param string $compare The comparison operator. Needs to be pre-validated! - * @param int|null $hour Optional. An hour value (0-23). - * @param int|null $minute Optional. A minute value (0-59). - * @param int|null $second Optional. A second value (0-59). + * @param string $column The column to query against. Needs to be pre-validated! + * @param string $compare The comparison operator. Needs to be pre-validated! + * @param int|null $hour Optional. An hour value (0-23). + * @param int|null $minute Optional. A minute value (0-59). + * @param int|null $second Optional. A second value (0-59). * @return string|false A query part or false on failure. */ public function build_time_query( $column, $compare, $hour = null, $minute = null, $second = null ) { global $wpdb; - // Have to have at least one. + // Have to have at least one if ( ! isset( $hour ) && ! isset( $minute ) && ! isset( $second ) ) { return false; } @@ -1004,7 +993,7 @@ public function build_time_query( $column, $compare, $hour = null, $minute = nul return implode( ' AND ', $return ); } - // Cases where just one unit is set. + // Cases where just one unit is set if ( isset( $hour ) && ! isset( $minute ) && ! isset( $second ) ) { $value = $this->build_value( $compare, $hour ); if ( false !== $value ) { @@ -1022,7 +1011,7 @@ public function build_time_query( $column, $compare, $hour = null, $minute = nul } } - // Single units were already handled. Since hour & second isn't allowed, minute must to be set. + // Single units were already handled. since WP-hour & second isn't allowed, minute must to be set. if ( ! isset( $minute ) ) { return false; } @@ -1030,7 +1019,7 @@ public function build_time_query( $column, $compare, $hour = null, $minute = nul $format = ''; $time = ''; - // Hour. + // Hour if ( null !== $hour ) { $format .= '%H.'; $time .= sprintf( '%02d', $hour ) . '.'; @@ -1039,7 +1028,7 @@ public function build_time_query( $column, $compare, $hour = null, $minute = nul $time .= '0.'; } - // Minute. + // Minute $format .= '%i'; $time .= sprintf( '%02d', $minute ); @@ -1050,20 +1039,4 @@ public function build_time_query( $column, $compare, $hour = null, $minute = nul return $wpdb->prepare( "DATE_FORMAT( $column, %s ) $compare %f", $format, $time ); } - - /** - * Sanitizes a 'relation' operator. - * - * @since 6.0.3 - * - * @param string $relation Raw relation key from the query argument. - * @return string Sanitized relation ('AND' or 'OR'). - */ - public function sanitize_relation( $relation ) { - if ( 'OR' === strtoupper( $relation ) ) { - return 'OR'; - } else { - return 'AND'; - } - } } diff --git a/wp-includes/class-wp-dependencies.php b/wp-includes/class-wp-dependencies.php deleted file mode 100644 index e61407d..0000000 --- a/wp-includes/class-wp-dependencies.php +++ /dev/null @@ -1,493 +0,0 @@ -<?php -/** - * Dependencies API: WP_Dependencies base class - * - * @since 2.6.0 - * - * @package ClassicPress - * @subpackage Dependencies - */ - -/** - * Core base class extended to register items. - * - * @since 2.6.0 - * - * @see _WP_Dependency - */ -#[AllowDynamicProperties] -class WP_Dependencies { - /** - * An array of all registered dependencies keyed by handle. - * - * @since 2.6.8 - * - * @var _WP_Dependency[] - */ - public $registered = array(); - - /** - * An array of handles of queued dependencies. - * - * @since 2.6.8 - * - * @var string[] - */ - public $queue = array(); - - /** - * An array of handles of dependencies to queue. - * - * @since 2.6.0 - * - * @var string[] - */ - public $to_do = array(); - - /** - * An array of handles of dependencies already queued. - * - * @since 2.6.0 - * - * @var string[] - */ - public $done = array(); - - /** - * An array of additional arguments passed when a handle is registered. - * - * Arguments are appended to the item query string. - * - * @since 2.6.0 - * - * @var array - */ - public $args = array(); - - /** - * An array of dependency groups to enqueue. - * - * Each entry is keyed by handle and represents the integer group level or boolean - * false if the handle has no group. - * - * @since 2.8.0 - * - * @var (int|false)[] - */ - public $groups = array(); - - /** - * A handle group to enqueue. - * - * @since 2.8.0 - * - * @deprecated 4.5.0 - * @var int - */ - public $group = 0; - - /** - * Cached lookup array of flattened queued items and dependencies. - * - * @since 5.4.0 - * - * @var array - */ - private $all_queued_deps; - - /** - * List of assets enqueued before details were registered. - * - * @since 5.9.0 - * - * @var array - */ - private $queued_before_register = array(); - - /** - * Processes the items and dependencies. - * - * Processes the items passed to it or the queue, and their dependencies. - * - * @since 2.6.0 - * @since 2.8.0 Added the `$group` parameter. - * - * @param string|string[]|false $handles Optional. Items to be processed: queue (false), - * single item (string), or multiple items (array of strings). - * Default false. - * @param int|false $group Optional. Group level: level (int), no group (false). - * @return string[] Array of handles of items that have been processed. - */ - public function do_items( $handles = false, $group = false ) { - /* - * If nothing is passed, print the queue. If a string is passed, - * print that item. If an array is passed, print those items. - */ - $handles = false === $handles ? $this->queue : (array) $handles; - $this->all_deps( $handles ); - - foreach ( $this->to_do as $key => $handle ) { - if ( ! in_array( $handle, $this->done, true ) && isset( $this->registered[ $handle ] ) ) { - /* - * Attempt to process the item. If successful, - * add the handle to the done array. - * - * Unset the item from the to_do array. - */ - if ( $this->do_item( $handle, $group ) ) { - $this->done[] = $handle; - } - - unset( $this->to_do[ $key ] ); - } - } - - return $this->done; - } - - /** - * Processes a dependency. - * - * @since 2.6.0 - * @since 5.5.0 Added the `$group` parameter. - * - * @param string $handle Name of the item. Should be unique. - * @param int|false $group Optional. Group level: level (int), no group (false). - * Default false. - * @return bool True on success, false if not set. - */ - public function do_item( $handle, $group = false ) { - return isset( $this->registered[ $handle ] ); - } - - /** - * Determines dependencies. - * - * Recursively builds an array of items to process taking - * dependencies into account. Does NOT catch infinite loops. - * - * @since 2.1.0 - * @since 2.6.0 Moved from `WP_Scripts`. - * @since 2.8.0 Added the `$group` parameter. - * - * @param string|string[] $handles Item handle (string) or item handles (array of strings). - * @param bool $recursion Optional. Internal flag that function is calling itself. - * Default false. - * @param int|false $group Optional. Group level: level (int), no group (false). - * Default false. - * @return bool True on success, false on failure. - */ - public function all_deps( $handles, $recursion = false, $group = false ) { - $handles = (array) $handles; - if ( ! $handles ) { - return false; - } - - foreach ( $handles as $handle ) { - $handle_parts = explode( '?', $handle ); - $handle = $handle_parts[0]; - $queued = in_array( $handle, $this->to_do, true ); - - if ( in_array( $handle, $this->done, true ) ) { // Already done. - continue; - } - - $moved = $this->set_group( $handle, $recursion, $group ); - $new_group = $this->groups[ $handle ]; - - if ( $queued && ! $moved ) { // Already queued and in the right group. - continue; - } - - $keep_going = true; - if ( ! isset( $this->registered[ $handle ] ) ) { - $keep_going = false; // Item doesn't exist. - } elseif ( $this->registered[ $handle ]->deps && array_diff( $this->registered[ $handle ]->deps, array_keys( $this->registered ) ) ) { - $keep_going = false; // Item requires dependencies that don't exist. - } elseif ( $this->registered[ $handle ]->deps && ! $this->all_deps( $this->registered[ $handle ]->deps, true, $new_group ) ) { - $keep_going = false; // Item requires dependencies that don't exist. - } - - if ( ! $keep_going ) { // Either item or its dependencies don't exist. - if ( $recursion ) { - return false; // Abort this branch. - } else { - continue; // We're at the top level. Move on to the next one. - } - } - - if ( $queued ) { // Already grabbed it and its dependencies. - continue; - } - - if ( isset( $handle_parts[1] ) ) { - $this->args[ $handle ] = $handle_parts[1]; - } - - $this->to_do[] = $handle; - } - - return true; - } - - /** - * Register an item. - * - * Registers the item if no item of that name already exists. - * - * @since 2.1.0 - * @since 2.6.0 Moved from `WP_Scripts`. - * - * @param string $handle Name of the item. Should be unique. - * @param string|false $src Full URL of the item, or path of the item relative - * to the WordPress root directory. If source is set to false, - * the item is an alias of other items it depends on. - * @param string[] $deps Optional. An array of registered item handles this item depends on. - * Default empty array. - * @param string|bool|null $ver Optional. String specifying item version number, if it has one, - * which is added to the URL as a query string for cache busting purposes. - * If version is set to false, a version number is automatically added - * equal to current installed WordPress version. - * If set to null, no version is added. - * @param mixed $args Optional. Custom property of the item. NOT the class property $args. - * Examples: $media, $in_footer. - * @return bool Whether the item has been registered. True on success, false on failure. - */ - public function add( $handle, $src, $deps = array(), $ver = false, $args = null ) { - if ( isset( $this->registered[ $handle ] ) ) { - return false; - } - $this->registered[ $handle ] = new _WP_Dependency( $handle, $src, $deps, $ver, $args ); - - // If the item was enqueued before the details were registered, enqueue it now. - if ( array_key_exists( $handle, $this->queued_before_register ) ) { - if ( ! is_null( $this->queued_before_register[ $handle ] ) ) { - $this->enqueue( $handle . '?' . $this->queued_before_register[ $handle ] ); - } else { - $this->enqueue( $handle ); - } - - unset( $this->queued_before_register[ $handle ] ); - } - - return true; - } - - /** - * Add extra item data. - * - * Adds data to a registered item. - * - * @since 2.6.0 - * - * @param string $handle Name of the item. Should be unique. - * @param string $key The data key. - * @param mixed $value The data value. - * @return bool True on success, false on failure. - */ - public function add_data( $handle, $key, $value ) { - if ( ! isset( $this->registered[ $handle ] ) ) { - return false; - } - - return $this->registered[ $handle ]->add_data( $key, $value ); - } - - /** - * Get extra item data. - * - * Gets data associated with a registered item. - * - * @since 3.3.0 - * - * @param string $handle Name of the item. Should be unique. - * @param string $key The data key. - * @return mixed Extra item data (string), false otherwise. - */ - public function get_data( $handle, $key ) { - if ( ! isset( $this->registered[ $handle ] ) ) { - return false; - } - - if ( ! isset( $this->registered[ $handle ]->extra[ $key ] ) ) { - return false; - } - - return $this->registered[ $handle ]->extra[ $key ]; - } - - /** - * Un-register an item or items. - * - * @since 2.1.0 - * @since 2.6.0 Moved from `WP_Scripts`. - * - * @param string|string[] $handles Item handle (string) or item handles (array of strings). - */ - public function remove( $handles ) { - foreach ( (array) $handles as $handle ) { - unset( $this->registered[ $handle ] ); - } - } - - /** - * Queue an item or items. - * - * Decodes handles and arguments, then queues handles and stores - * arguments in the class property $args. For example in extending - * classes, $args is appended to the item url as a query string. - * Note $args is NOT the $args property of items in the $registered array. - * - * @since 2.1.0 - * @since 2.6.0 Moved from `WP_Scripts`. - * - * @param string|string[] $handles Item handle (string) or item handles (array of strings). - */ - public function enqueue( $handles ) { - foreach ( (array) $handles as $handle ) { - $handle = explode( '?', $handle ); - - if ( ! in_array( $handle[0], $this->queue, true ) && isset( $this->registered[ $handle[0] ] ) ) { - $this->queue[] = $handle[0]; - - // Reset all dependencies so they must be recalculated in recurse_deps(). - $this->all_queued_deps = null; - - if ( isset( $handle[1] ) ) { - $this->args[ $handle[0] ] = $handle[1]; - } - } elseif ( ! isset( $this->registered[ $handle[0] ] ) ) { - $this->queued_before_register[ $handle[0] ] = null; // $args - - if ( isset( $handle[1] ) ) { - $this->queued_before_register[ $handle[0] ] = $handle[1]; - } - } - } - } - - /** - * Dequeue an item or items. - * - * Decodes handles and arguments, then dequeues handles - * and removes arguments from the class property $args. - * - * @since 2.1.0 - * @since 2.6.0 Moved from `WP_Scripts`. - * - * @param string|string[] $handles Item handle (string) or item handles (array of strings). - */ - public function dequeue( $handles ) { - foreach ( (array) $handles as $handle ) { - $handle = explode( '?', $handle ); - $key = array_search( $handle[0], $this->queue, true ); - - if ( false !== $key ) { - // Reset all dependencies so they must be recalculated in recurse_deps(). - $this->all_queued_deps = null; - - unset( $this->queue[ $key ] ); - unset( $this->args[ $handle[0] ] ); - } elseif ( array_key_exists( $handle[0], $this->queued_before_register ) ) { - unset( $this->queued_before_register[ $handle[0] ] ); - } - } - } - - /** - * Recursively search the passed dependency tree for a handle. - * - * @since 4.0.0 - * - * @param string[] $queue An array of queued _WP_Dependency handles. - * @param string $handle Name of the item. Should be unique. - * @return bool Whether the handle is found after recursively searching the dependency tree. - */ - protected function recurse_deps( $queue, $handle ) { - if ( isset( $this->all_queued_deps ) ) { - return isset( $this->all_queued_deps[ $handle ] ); - } - - $all_deps = array_fill_keys( $queue, true ); - $queues = array(); - $done = array(); - - while ( $queue ) { - foreach ( $queue as $queued ) { - if ( ! isset( $done[ $queued ] ) && isset( $this->registered[ $queued ] ) ) { - $deps = $this->registered[ $queued ]->deps; - if ( $deps ) { - $all_deps += array_fill_keys( $deps, true ); - array_push( $queues, $deps ); - } - $done[ $queued ] = true; - } - } - $queue = array_pop( $queues ); - } - - $this->all_queued_deps = $all_deps; - - return isset( $this->all_queued_deps[ $handle ] ); - } - - /** - * Query the list for an item. - * - * @since 2.1.0 - * @since 2.6.0 Moved from `WP_Scripts`. - * - * @param string $handle Name of the item. Should be unique. - * @param string $status Optional. Status of the item to query. Default 'registered'. - * @return bool|_WP_Dependency Found, or object Item data. - */ - public function query( $handle, $status = 'registered' ) { - switch ( $status ) { - case 'registered': - case 'scripts': // Back compat. - if ( isset( $this->registered[ $handle ] ) ) { - return $this->registered[ $handle ]; - } - return false; - - case 'enqueued': - case 'queue': // Back compat. - if ( in_array( $handle, $this->queue, true ) ) { - return true; - } - return $this->recurse_deps( $this->queue, $handle ); - - case 'to_do': - case 'to_print': // Back compat. - return in_array( $handle, $this->to_do, true ); - - case 'done': - case 'printed': // Back compat. - return in_array( $handle, $this->done, true ); - } - - return false; - } - - /** - * Set item group, unless already in a lower group. - * - * @since 2.8.0 - * - * @param string $handle Name of the item. Should be unique. - * @param bool $recursion Internal flag that calling function was called recursively. - * @param int|false $group Group level: level (int), no group (false). - * @return bool Not already in the group or a lower group. - */ - public function set_group( $handle, $recursion, $group ) { - $group = (int) $group; - - if ( isset( $this->groups[ $handle ] ) && $this->groups[ $handle ] <= $group ) { - return false; - } - - $this->groups[ $handle ] = $group; - - return true; - } -} diff --git a/wp-includes/class-wp-dependency.php b/wp-includes/class-wp-dependency.php index b14a67e..464e046 100644 --- a/wp-includes/class-wp-dependency.php +++ b/wp-includes/class-wp-dependency.php @@ -2,7 +2,7 @@ /** * Dependencies API: _WP_Dependency class * - * @since 4.7.0 + * @since WP-4.7.0 * * @package ClassicPress * @subpackage Dependencies @@ -14,33 +14,30 @@ * Helper class to register a handle and associated data. * * @access private - * @since 2.6.0 + * @since WP-2.6.0 */ -#[AllowDynamicProperties] class _WP_Dependency { /** * The handle name. * - * @since 2.6.0 - * @var string + * @since WP-2.6.0 + * @var null */ public $handle; /** * The handle source. * - * If source is set to false, the item is an alias of other items it depends on. - * - * @since 2.6.0 - * @var string|false + * @since WP-2.6.0 + * @var null */ public $src; /** * An array of handle dependencies. * - * @since 2.6.0 - * @var string[] + * @since WP-2.6.0 + * @var array */ public $deps = array(); @@ -49,7 +46,7 @@ class _WP_Dependency { * * Used for cache-busting. * - * @since 2.6.0 + * @since WP-2.6.0 * @var bool|string */ public $ver = false; @@ -57,46 +54,26 @@ class _WP_Dependency { /** * Additional arguments for the handle. * - * @since 2.6.0 - * @var array + * @since WP-2.6.0 + * @var null */ public $args = null; // Custom property, such as $in_footer or $media. /** * Extra data to supply to the handle. * - * @since 2.6.0 + * @since WP-2.6.0 * @var array */ public $extra = array(); - /** - * Translation textdomain set for this dependency. - * - * @since 5.0.0 - * @var string - */ - public $textdomain; - - /** - * Translation path set for this dependency. - * - * @since 5.0.0 - * @var string - */ - public $translations_path; - /** * Setup dependencies. * - * @since 2.6.0 - * @since 5.3.0 Formalized the existing `...$args` parameter by adding it - * to the function signature. - * - * @param mixed ...$args Dependency information. + * @since WP-2.6.0 */ - public function __construct( ...$args ) { - list( $this->handle, $this->src, $this->deps, $this->ver, $this->args ) = $args; + public function __construct() { + list( $this->handle, $this->src, $this->deps, $this->ver, $this->args ) = func_get_args(); if ( ! is_array( $this->deps ) ) { $this->deps = array(); } @@ -105,7 +82,7 @@ public function __construct( ...$args ) { /** * Add handle data. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param string $name The data key to add. * @param mixed $data The data value to add. @@ -119,21 +96,4 @@ public function add_data( $name, $data ) { return true; } - /** - * Sets the translation domain for this dependency. - * - * @since 5.0.0 - * - * @param string $domain The translation textdomain. - * @param string $path Optional. The full file path to the directory containing translation files. - * @return bool False if $domain is not a string, true otherwise. - */ - public function set_translations( $domain, $path = '' ) { - if ( ! is_string( $domain ) ) { - return false; - } - $this->textdomain = $domain; - $this->translations_path = $path; - return true; - } } diff --git a/wp-includes/class-wp-editor.php b/wp-includes/class-wp-editor.php index 73f80e9..141a7ab 100644 --- a/wp-includes/class-wp-editor.php +++ b/wp-includes/class-wp-editor.php @@ -3,12 +3,11 @@ * Facilitates adding of the ClassicPress editor as used on the Write and Edit screens. * * @package ClassicPress - * @since 3.3.0 + * @since WP-3.3.0 * * Private, not included by default. See wp_editor() in wp-includes/general-template.php. */ -#[AllowDynamicProperties] final class _WP_Editors { public static $mce_locale; @@ -26,6 +25,7 @@ final class _WP_Editors { private static $has_medialib = false; private static $editor_buttons_css = true; private static $drag_drop_upload = false; + private static $old_dfw_compat = false; private static $translation; private static $tinymce_scripts_printed = false; private static $link_dialog_printed = false; @@ -35,10 +35,8 @@ private function __construct() {} /** * Parse default arguments for the editor instance. * - * @since 3.3.0 - * - * @param string $editor_id HTML ID for the textarea and TinyMCE and Quicktags instances. - * Should not contain square brackets. + * @static + * @param string $editor_id ID for the current editor instance. * @param array $settings { * Array of editor arguments. * @@ -59,7 +57,8 @@ private function __construct() {} * @type string $editor_class Extra classes to add to the editor textarea element. Default empty. * @type bool $teeny Whether to output the minimal editor config. Examples include * Press This and the Comment editor. Default false. - * @type bool $dfw Deprecated in 4.1. Unused. + * @type bool $dfw Deprecated in WP-4.1. Since WP-4.3 used only to enqueue wp-fullscreen-stub.js + * for backward compatibility. * @type bool|array $tinymce Whether to load TinyMCE. Can be used to pass settings directly to * TinyMCE using an array. Default true. * @type bool|array $quicktags Whether to load Quicktags. Can be used to pass settings directly to @@ -72,13 +71,12 @@ public static function parse_settings( $editor_id, $settings ) { /** * Filters the wp_editor() settings. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @see _WP_Editors::parse_settings() + * @see _WP_Editors()::parse_settings() * * @param array $settings Array of editor arguments. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param string $editor_id ID for the current editor instance. */ $settings = apply_filters( 'wp_editor_settings', $settings, $editor_id ); @@ -96,6 +94,7 @@ public static function parse_settings( $editor_id, $settings ) { 'editor_css' => '', 'editor_class' => '', 'teeny' => false, + 'dfw' => false, '_content_editor_dfw' => false, 'tinymce' => true, 'quicktags' => true, @@ -107,7 +106,7 @@ public static function parse_settings( $editor_id, $settings ) { if ( self::$this_tinymce ) { if ( false !== strpos( $editor_id, '[' ) ) { self::$this_tinymce = false; - _deprecated_argument( 'wp_editor()', '3.9.0', 'TinyMCE editor IDs cannot have brackets.' ); + _deprecated_argument( 'wp_editor()', 'WP-3.9.0', 'TinyMCE editor IDs cannot have brackets.' ); } } @@ -121,6 +120,10 @@ public static function parse_settings( $editor_id, $settings ) { self::$has_quicktags = true; } + if ( $set['dfw'] ) { + self::$old_dfw_compat = true; + } + if ( empty( $set['editor_height'] ) ) { return $set; } @@ -146,12 +149,10 @@ public static function parse_settings( $editor_id, $settings ) { /** * Outputs the HTML for a single instance of the editor. * - * @since 3.3.0 - * - * @param string $content Initial content for the editor. - * @param string $editor_id HTML ID for the textarea and TinyMCE and Quicktags instances. - * Should not contain square brackets. - * @param array $settings See _WP_Editors::parse_settings() for description. + * @static + * @param string $content The initial content of the editor. + * @param string $editor_id ID for the textarea and TinyMCE and Quicktags instances (can contain only ASCII letters and numbers). + * @param array $settings See _WP_Editors()::parse_settings() for description. */ public static function editor( $content, $editor_id, $settings = array() ) { $set = self::parse_settings( $editor_id, $settings ); @@ -220,7 +221,7 @@ public static function editor( $content, $editor_id, $settings = array() ) { self::$has_medialib = true; if ( ! function_exists( 'media_buttons' ) ) { - require ABSPATH . 'wp-admin/includes/media.php'; + include ABSPATH . 'wp-admin/includes/media.php'; } echo '<div id="wp-' . $editor_id_attr . '-media-buttons" class="wp-media-buttons">'; @@ -228,7 +229,7 @@ public static function editor( $content, $editor_id, $settings = array() ) { /** * Fires after the default media button(s) are displayed. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $editor_id Unique editor identifier, e.g. 'content'. */ @@ -249,13 +250,13 @@ public static function editor( $content, $editor_id, $settings = array() ) { $toolbar_id = 'qt_' . $editor_id_attr . '_toolbar'; } - $quicktags_toolbar = '<div id="' . $toolbar_id . '" class="quicktags-toolbar hide-if-no-js"></div>'; + $quicktags_toolbar = '<div id="' . $toolbar_id . '" class="quicktags-toolbar"></div>'; } /** * Filters the HTML markup output that displays the editor. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $output Editor's HTML markup. */ @@ -275,7 +276,7 @@ public static function editor( $content, $editor_id, $settings = array() ) { /** * Filters the default editor content. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $content Default editor content. * @param string $default_editor The default editor for the current user. @@ -288,13 +289,13 @@ public static function editor( $content, $editor_id, $settings = array() ) { remove_filter( 'the_editor_content', 'format_for_editor' ); } - // Back-compat for the `htmledit_pre` and `richedit_pre` filters. + // Back-compat for the `htmledit_pre` and `richedit_pre` filters if ( 'html' === $default_editor && has_filter( 'htmledit_pre' ) ) { /** This filter is documented in wp-includes/deprecated.php */ - $content = apply_filters_deprecated( 'htmledit_pre', array( $content ), '4.3.0', 'format_for_editor' ); + $content = apply_filters_deprecated( 'htmledit_pre', array( $content ), 'WP-4.3.0', 'format_for_editor' ); } elseif ( 'tinymce' === $default_editor && has_filter( 'richedit_pre' ) ) { /** This filter is documented in wp-includes/deprecated.php */ - $content = apply_filters_deprecated( 'richedit_pre', array( $content ), '4.3.0', 'format_for_editor' ); + $content = apply_filters_deprecated( 'richedit_pre', array( $content ), 'WP-4.3.0', 'format_for_editor' ); } if ( false !== stripos( $content, 'textarea' ) ) { @@ -308,20 +309,22 @@ public static function editor( $content, $editor_id, $settings = array() ) { } /** - * @since 3.3.0 + * @static * - * @param string $editor_id Unique editor identifier, e.g. 'content'. - * @param array $set Array of editor arguments. + * @global string $tinymce_version + * + * @param string $editor_id + * @param array $set */ public static function editor_settings( $editor_id, $set ) { + global $tinymce_version; + if ( empty( self::$first_init ) ) { if ( is_admin() ) { add_action( 'admin_print_footer_scripts', array( __CLASS__, 'editor_js' ), 50 ); - add_action( 'admin_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 ); add_action( 'admin_print_footer_scripts', array( __CLASS__, 'enqueue_scripts' ), 1 ); } else { add_action( 'wp_print_footer_scripts', array( __CLASS__, 'editor_js' ), 50 ); - add_action( 'wp_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 ); add_action( 'wp_print_footer_scripts', array( __CLASS__, 'enqueue_scripts' ), 1 ); } } @@ -348,10 +351,10 @@ public static function editor_settings( $editor_id, $set ) { /** * Filters the Quicktags settings. * - * @since 3.3.0 + * @since WP-3.3.0 * * @param array $qtInit Quicktags settings. - * @param string $editor_id Unique editor identifier, e.g. 'content'. + * @param string $editor_id The unique editor ID, e.g. 'content'. */ $qtInit = apply_filters( 'quicktags_settings', $qtInit, $editor_id ); @@ -372,25 +375,12 @@ public static function editor_settings( $editor_id, $set ) { /** * Filters the list of teenyMCE plugins. * - * @since 2.7.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.7.0 * * @param array $plugins An array of teenyMCE plugins. * @param string $editor_id Unique editor identifier, e.g. 'content'. */ - $plugins = apply_filters( - 'teeny_mce_plugins', - array( - 'colorpicker', - 'lists', - 'fullscreen', - 'image', - 'wordpress', - 'wpeditimage', - 'wplink', - ), - $editor_id - ); + $plugins = apply_filters( 'teeny_mce_plugins', array( 'colorpicker', 'lists', 'fullscreen', 'image', 'wordpress', 'wpeditimage', 'wplink' ), $editor_id ); } else { /** @@ -406,14 +396,11 @@ public static function editor_settings( $editor_id, $set ) { * If the external plugin adds a button, it should be added with * one of the 'mce_buttons' filters. * - * @since 2.5.0 - * @since 5.3.0 The `$editor_id` parameter was added. + * @since WP-2.5.0 * - * @param array $external_plugins An array of external TinyMCE plugins. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param array $external_plugins An array of external TinyMCE plugins. */ - $mce_external_plugins = apply_filters( 'mce_external_plugins', array(), $editor_id ); + $mce_external_plugins = apply_filters( 'mce_external_plugins', array() ); $plugins = array( 'charmap', @@ -444,16 +431,13 @@ public static function editor_settings( $editor_id, $set ) { * Filters the list of default TinyMCE plugins. * * The filter specifies which of the default plugins included - * in WordPress should be added to the TinyMCE instance. + * in ClassicPress should be added to the TinyMCE instance. * - * @since 3.3.0 - * @since 5.3.0 The `$editor_id` parameter was added. + * @since WP-3.3.0 * - * @param array $plugins An array of default TinyMCE plugins. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param array $plugins An array of default TinyMCE plugins. */ - $plugins = array_unique( apply_filters( 'tiny_mce_plugins', $plugins, $editor_id ) ); + $plugins = array_unique( apply_filters( 'tiny_mce_plugins', $plugins ) ); $key = array_search( 'spellchecker', $plugins, true ); if ( false !== $key ) { @@ -473,13 +457,11 @@ public static function editor_settings( $editor_id, $set ) { * The language file should follow the same format as wp_mce_translation(), * and should define a variable ($strings) that holds all translated strings. * - * @since 2.5.0 - * @since 5.3.0 The `$editor_id` parameter was added. + * @since WP-2.5.0 * - * @param array $translations Translations for external TinyMCE plugins. - * @param string $editor_id Unique editor identifier, e.g. 'content'. + * @param array $translations Translations for external TinyMCE plugins. */ - $mce_external_languages = apply_filters( 'mce_external_languages', array(), $editor_id ); + $mce_external_languages = apply_filters( 'mce_external_languages', array() ); $loaded_langs = array(); $strings = ''; @@ -505,12 +487,14 @@ public static function editor_settings( $editor_id, $set ) { $plugurl = dirname( $url ); $strings = ''; - // Try to load langs/[locale].js and langs/[locale]_dlg.js. + // Try to load langs/[locale].js and langs/[locale]_dlg.js if ( ! in_array( $name, $loaded_langs, true ) ) { $path = str_replace( content_url(), '', $plugurl ); $path = WP_CONTENT_DIR . $path . '/langs/'; - $path = trailingslashit( realpath( $path ) ); + if ( function_exists( 'realpath' ) ) { + $path = trailingslashit( realpath( $path ) ); + } if ( @is_file( $path . $mce_locale . '.js' ) ) { $strings .= @file_get_contents( $path . $mce_locale . '.js' ) . "\n"; @@ -557,32 +541,24 @@ public static function editor_settings( $editor_id, $set ) { $settings['wpeditimage_disable_captions'] = true; } - $mce_css = $settings['content_css']; + $mce_css = $settings['content_css']; + $editor_styles = get_editor_stylesheets(); - /* - * The `editor-style.css` added by the theme is generally intended for the editor instance on the Edit Post screen. - * Plugins that use wp_editor() on the front-end can decide whether to add the theme stylesheet - * by using `get_editor_stylesheets()` and the `mce_css` or `tiny_mce_before_init` filters, see below. - */ - if ( is_admin() ) { - $editor_styles = get_editor_stylesheets(); - - if ( ! empty( $editor_styles ) ) { - // Force urlencoding of commas. - foreach ( $editor_styles as $key => $url ) { - if ( strpos( $url, ',' ) !== false ) { - $editor_styles[ $key ] = str_replace( ',', '%2C', $url ); - } + if ( ! empty( $editor_styles ) ) { + // Force urlencoding of commas. + foreach ( $editor_styles as $key => $url ) { + if ( strpos( $url, ',' ) !== false ) { + $editor_styles[ $key ] = str_replace( ',', '%2C', $url ); } - - $mce_css .= ',' . implode( ',', $editor_styles ); } + + $mce_css .= ',' . implode( ',', $editor_styles ); } /** * Filters the comma-delimited list of stylesheets to load in TinyMCE. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $stylesheets Comma-delimited list of stylesheets. */ @@ -598,88 +574,43 @@ public static function editor_settings( $editor_id, $set ) { } if ( $set['teeny'] ) { - $mce_buttons = array( - 'bold', - 'italic', - 'underline', - 'blockquote', - 'strikethrough', - 'bullist', - 'numlist', - 'alignleft', - 'aligncenter', - 'alignright', - 'undo', - 'redo', - 'link', - 'fullscreen', - ); /** * Filters the list of teenyMCE buttons (Text tab). * - * @since 2.7.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.7.0 * - * @param array $mce_buttons An array of teenyMCE buttons. - * @param string $editor_id Unique editor identifier, e.g. 'content'. + * @param array $buttons An array of teenyMCE buttons. + * @param string $editor_id Unique editor identifier, e.g. 'content'. */ - $mce_buttons = apply_filters( 'teeny_mce_buttons', $mce_buttons, $editor_id ); + $mce_buttons = apply_filters( 'teeny_mce_buttons', array( 'bold', 'italic', 'underline', 'blockquote', 'strikethrough', 'bullist', 'numlist', 'alignleft', 'aligncenter', 'alignright', 'undo', 'redo', 'link', 'fullscreen' ), $editor_id ); $mce_buttons_2 = array(); $mce_buttons_3 = array(); $mce_buttons_4 = array(); } else { - $mce_buttons = array( - 'formatselect', - 'bold', - 'italic', - 'bullist', - 'numlist', - 'blockquote', - 'alignleft', - 'aligncenter', - 'alignright', - 'link', - 'wp_more', - 'spellchecker', - ); + $mce_buttons = array( 'formatselect', 'bold', 'italic', 'bullist', 'numlist', 'blockquote', 'alignleft', 'aligncenter', 'alignright', 'link', 'wp_more', 'spellchecker' ); if ( ! wp_is_mobile() ) { if ( $set['_content_editor_dfw'] ) { - $mce_buttons[] = 'wp_adv'; $mce_buttons[] = 'dfw'; } else { $mce_buttons[] = 'fullscreen'; - $mce_buttons[] = 'wp_adv'; } - } else { - $mce_buttons[] = 'wp_adv'; } + $mce_buttons[] = 'wp_adv'; + /** * Filters the first-row list of TinyMCE buttons (Visual tab). * - * @since 2.0.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.0.0 * - * @param array $mce_buttons First-row list of buttons. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param array $buttons First-row list of buttons. + * @param string $editor_id Unique editor identifier, e.g. 'content'. */ $mce_buttons = apply_filters( 'mce_buttons', $mce_buttons, $editor_id ); - $mce_buttons_2 = array( - 'strikethrough', - 'hr', - 'forecolor', - 'pastetext', - 'removeformat', - 'charmap', - 'outdent', - 'indent', - 'undo', - 'redo', - ); + $mce_buttons_2 = array( 'strikethrough', 'hr', 'forecolor', 'pastetext', 'removeformat', 'charmap', 'outdent', 'indent', 'undo', 'redo' ); if ( ! wp_is_mobile() ) { $mce_buttons_2[] = 'wp_help'; @@ -688,36 +619,30 @@ public static function editor_settings( $editor_id, $set ) { /** * Filters the second-row list of TinyMCE buttons (Visual tab). * - * @since 2.0.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.0.0 * - * @param array $mce_buttons_2 Second-row list of buttons. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param array $buttons Second-row list of buttons. + * @param string $editor_id Unique editor identifier, e.g. 'content'. */ $mce_buttons_2 = apply_filters( 'mce_buttons_2', $mce_buttons_2, $editor_id ); /** * Filters the third-row list of TinyMCE buttons (Visual tab). * - * @since 2.0.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.0.0 * - * @param array $mce_buttons_3 Third-row list of buttons. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param array $buttons Third-row list of buttons. + * @param string $editor_id Unique editor identifier, e.g. 'content'. */ $mce_buttons_3 = apply_filters( 'mce_buttons_3', array(), $editor_id ); /** * Filters the fourth-row list of TinyMCE buttons (Visual tab). * - * @since 2.5.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.5.0 * - * @param array $mce_buttons_4 Fourth-row list of buttons. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param array $buttons Fourth-row list of buttons. + * @param string $editor_id Unique editor identifier, e.g. 'content'. */ $mce_buttons_4 = apply_filters( 'mce_buttons_4', array(), $editor_id ); } @@ -764,7 +689,7 @@ public static function editor_settings( $editor_id, $set ) { 'body_class' => $body_class, ); - // Merge with the first part of the init array. + // Merge with the first part of the init array $mceInit = array_merge( self::$first_init, $mceInit ); if ( is_array( $set['tinymce'] ) ) { @@ -784,8 +709,7 @@ public static function editor_settings( $editor_id, $set ) { /** * Filters the teenyMCE config before init. * - * @since 2.7.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.7.0 * * @param array $mceInit An array with teenyMCE config. * @param string $editor_id Unique editor identifier, e.g. 'content'. @@ -796,12 +720,10 @@ public static function editor_settings( $editor_id, $set ) { /** * Filters the TinyMCE config before init. * - * @since 2.5.0 - * @since 3.3.0 The `$editor_id` parameter was added. + * @since WP-2.5.0 * * @param array $mceInit An array with TinyMCE config. - * @param string $editor_id Unique editor identifier, e.g. 'content'. Accepts 'classic-block' - * when called from block editor's Classic block. + * @param string $editor_id Unique editor identifier, e.g. 'content'. */ $mceInit = apply_filters( 'tiny_mce_before_init', $mceInit, $editor_id ); } @@ -812,12 +734,12 @@ public static function editor_settings( $editor_id, $set ) { } self::$mce_settings[ $editor_id ] = $mceInit; - } // End if self::$this_tinymce. + } // end if self::$this_tinymce } /** - * @since 3.3.0 * + * @static * @param array $init * @return string */ @@ -844,7 +766,8 @@ private static function _parse_init( $init ) { } /** - * @since 3.3.0 + * + * @static * * @param bool $default_scripts Optional. Whether default scripts should be enqueued. Default false. */ @@ -863,6 +786,10 @@ public static function enqueue_scripts( $default_scripts = false ) { wp_enqueue_script( 'jquery-ui-autocomplete' ); } + if ( self::$old_dfw_compat ) { + wp_enqueue_script( 'wp-fullscreen-stub' ); + } + if ( self::$has_medialib ) { add_thickbox(); wp_enqueue_script( 'media-upload' ); @@ -874,7 +801,7 @@ public static function enqueue_scripts( $default_scripts = false ) { /** * Fires when scripts and styles are enqueued for the editor. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $to_load An array containing boolean values whether TinyMCE * and Quicktags are being loaded. @@ -892,7 +819,7 @@ public static function enqueue_scripts( $default_scripts = false ) { * Enqueue all editor scripts. * For use when the editor is going to be initialized after page load. * - * @since 4.8.0 + * @since WP-4.8.0 */ public static function enqueue_default_editor() { // We are past the point where scripts can be enqueued properly. @@ -902,14 +829,12 @@ public static function enqueue_default_editor() { self::enqueue_scripts( true ); - // Also add wp-includes/css/editor.css. + // Also add wp-includes/css/editor.css wp_enqueue_style( 'editor-buttons' ); if ( is_admin() ) { - add_action( 'admin_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 ); add_action( 'admin_print_footer_scripts', array( __CLASS__, 'print_default_editor_scripts' ), 45 ); } else { - add_action( 'wp_print_footer_scripts', array( __CLASS__, 'force_uncompressed_tinymce' ), 1 ); add_action( 'wp_print_footer_scripts', array( __CLASS__, 'print_default_editor_scripts' ), 45 ); } } @@ -918,7 +843,8 @@ public static function enqueue_default_editor() { * Print (output) all editor scripts and default settings. * For use when the editor is going to be initialized after page load. * - * @since 4.8.0 + * @since WP-4.8.0 + * */ public static function print_default_editor_scripts() { $user_can_richedit = user_can_richedit(); @@ -935,11 +861,9 @@ public static function print_default_editor_scripts() { $settings['directionality'] = 'rtl'; } - /* - * In production all plugins are loaded (they are in wp-editor.js.gz). - * The 'wpview', 'wpdialogs', and 'media' TinyMCE plugins are not initialized by default. - * Can be added from js by using the 'wp-before-tinymce-init' event. - */ + // In production all plugins are loaded (they are in wp-editor.js.gz). + // The 'wpview', 'wpdialogs', and 'media' TinyMCE plugins are not initialized by default. + // Can be added from js by using the 'wp-before-tinymce-init' event. $settings['plugins'] = implode( ',', array( @@ -967,7 +891,7 @@ public static function print_default_editor_scripts() { } ?> - <script> + <script type="text/javascript"> window.wp = window.wp || {}; window.wp.editor = window.wp.editor || {}; window.wp.editor.getDefaultSettings = function() { @@ -1007,36 +931,22 @@ public static function print_default_editor_scripts() { * Fires when the editor scripts are loaded for later initialization, * after all scripts and settings are printed. * - * @since 4.8.0 + * @since WP-4.8.0 */ do_action( 'print_default_editor_scripts' ); self::wp_link_dialog(); } - /** - * Returns the TinyMCE locale. - * - * @since 4.8.0 - * - * @return string - */ public static function get_mce_locale() { if ( empty( self::$mce_locale ) ) { $mce_locale = get_user_locale(); - self::$mce_locale = empty( $mce_locale ) ? 'en' : strtolower( substr( $mce_locale, 0, 2 ) ); // ISO 639-1. + self::$mce_locale = empty( $mce_locale ) ? 'en' : strtolower( substr( $mce_locale, 0, 2 ) ); // ISO 639-1 } return self::$mce_locale; } - /** - * Returns the TinyMCE base URL. - * - * @since 4.8.0 - * - * @return string - */ public static function get_baseurl() { if ( empty( self::$baseurl ) ) { self::$baseurl = includes_url( 'js/tinymce' ); @@ -1049,8 +959,6 @@ public static function get_baseurl() { * Returns the default TinyMCE settings. * Doesn't include plugins, buttons, editor selector. * - * @since 4.8.0 - * * @global string $tinymce_version * * @return array @@ -1098,7 +1006,7 @@ private static function default_settings() { 'menubar' => false, 'branding' => false, - // Limit the preview styles in the menu/toolbar. + // Limit the preview styles in the menu/toolbar 'preview_styles' => 'font-family font-size font-weight font-style text-decoration text-transform', 'end_container_on_empty_block' => true, @@ -1111,22 +1019,17 @@ private static function default_settings() { $suffix = SCRIPT_DEBUG ? '' : '.min'; $version = 'ver=' . get_bloginfo( 'version' ); - // Default stylesheets. + // Default stylesheets $settings['content_css'] = includes_url( "css/dashicons$suffix.css?$version" ) . ',' . includes_url( "js/tinymce/skins/wordpress/wp-content.css?$version" ); return $settings; } - /** - * @since 4.7.0 - * - * @return array - */ private static function get_translation() { if ( empty( self::$translation ) ) { self::$translation = array( - // Default TinyMCE strings. + // Default TinyMCE strings 'New document' => __( 'New document' ), 'Formats' => _x( 'Formats', 'TinyMCE' ), @@ -1138,7 +1041,7 @@ private static function get_translation() { 'Heading 5' => array( __( 'Heading 5' ), 'access5' ), 'Heading 6' => array( __( 'Heading 6' ), 'access6' ), - /* translators: Block tags. */ + /* translators: block tags */ 'Blocks' => _x( 'Blocks', 'TinyMCE' ), 'Paragraph' => array( __( 'Paragraph' ), 'access7' ), 'Blockquote' => array( __( 'Blockquote' ), 'accessQ' ), @@ -1191,7 +1094,7 @@ private static function get_translation() { 'Upper Roman' => _x( 'Upper Roman', 'list style' ), 'Lower Roman' => _x( 'Lower Roman', 'list style' ), - // Anchor plugin. + // Anchor plugin 'Name' => _x( 'Name', 'Name of link anchor (TinyMCE)' ), 'Anchor' => _x( 'Anchor', 'Link anchor (TinyMCE)' ), 'Anchors' => _x( 'Anchors', 'Link anchors (TinyMCE)' ), @@ -1199,7 +1102,7 @@ private static function get_translation() { __( 'Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.' ), 'Id' => _x( 'Id', 'Id for link anchor (TinyMCE)' ), - // Fullpage plugin. + // Fullpage plugin 'Document properties' => __( 'Document properties' ), 'Robots' => __( 'Robots' ), 'Title' => __( 'Title' ), @@ -1208,7 +1111,7 @@ private static function get_translation() { 'Description' => __( 'Description' ), 'Author' => __( 'Author' ), - // Media, image plugins. + // Media, image plugins 'Image' => __( 'Image' ), 'Insert/edit image' => array( __( 'Insert/edit image' ), 'accessM' ), 'General' => __( 'General' ), @@ -1234,7 +1137,7 @@ private static function get_translation() { 'Insert video' => __( 'Insert video' ), 'Embed' => __( 'Embed' ), - // Each of these have a corresponding plugin. + // Each of these have a corresponding plugin 'Special character' => __( 'Special character' ), 'Right to left' => _x( 'Right to left', 'editor button' ), 'Left to right' => _x( 'Left to right', 'editor button' ), @@ -1252,7 +1155,7 @@ private static function get_translation() { 'Insert/edit link' => array( __( 'Insert/edit link' ), 'metaK' ), 'Remove link' => array( __( 'Remove link' ), 'accessS' ), - // Link plugin. + // Link plugin 'Link' => __( 'Link' ), 'Insert link' => __( 'Insert link' ), 'Insert/edit link' => __( 'Insert/edit link' ), @@ -1267,17 +1170,17 @@ private static function get_translation() { 'Color' => __( 'Color' ), 'Custom color' => __( 'Custom color' ), - 'Custom...' => _x( 'Custom...', 'label for custom color' ), // No ellipsis. + 'Custom...' => _x( 'Custom...', 'label for custom color' ), // no ellipsis 'No color' => __( 'No color' ), 'R' => _x( 'R', 'Short for red in RGB' ), 'G' => _x( 'G', 'Short for green in RGB' ), 'B' => _x( 'B', 'Short for blue in RGB' ), - // Spelling, search/replace plugins. + // Spelling, search/replace plugins 'Could not find the specified string.' => __( 'Could not find the specified string.' ), 'Replace' => _x( 'Replace', 'find/replace' ), 'Next' => _x( 'Next', 'find/replace' ), - /* translators: Previous. */ + /* translators: previous */ 'Prev' => _x( 'Prev', 'find/replace' ), 'Whole words' => _x( 'Whole words', 'find/replace' ), 'Find and replace' => __( 'Find and replace' ), @@ -1291,7 +1194,7 @@ private static function get_translation() { 'Ignore' => _x( 'Ignore', 'spellcheck' ), 'Add to Dictionary' => __( 'Add to Dictionary' ), - // TinyMCE tables. + // TinyMCE tables 'Insert table' => __( 'Insert table' ), 'Delete table' => __( 'Delete table' ), 'Table properties' => __( 'Table properties' ), @@ -1301,8 +1204,8 @@ private static function get_translation() { 'Row' => __( 'Row' ), 'Rows' => __( 'Rows' ), - 'Column' => __( 'Column' ), - 'Cols' => __( 'Columns' ), + 'Column' => _x( 'Column', 'table column' ), + 'Cols' => _x( 'Cols', 'table columns' ), 'Cell' => _x( 'Cell', 'table cell' ), 'Header cell' => __( 'Header cell' ), 'Header' => _x( 'Header', 'table header' ), @@ -1352,11 +1255,11 @@ private static function get_translation() { 'Show blocks' => _x( 'Show blocks', 'editor button' ), 'Show invisible characters' => __( 'Show invisible characters' ), - /* translators: Word count. */ + /* translators: word count */ 'Words: {0}' => sprintf( __( 'Words: %s' ), '{0}' ), 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.' => __( 'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.' ) . "\n\n" . - __( 'If you are looking to paste rich content from Microsoft Word, try turning this option off. The editor will clean up text pasted from Word automatically.' ), + __( 'If you’re looking to paste rich content from Microsoft Word, try turning this option off. The editor will clean up text pasted from Word automatically.' ), 'Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help' => __( 'Rich Text Area. Press Alt-Shift-H for help.' ), 'Rich Text Area. Press Control-Option-H for help.' => __( 'Rich Text Area. Press Control-Option-H for help.' ), @@ -1365,7 +1268,7 @@ private static function get_translation() { 'Your browser doesn\'t support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.' => __( 'Your browser does not support direct access to the clipboard. Please use keyboard shortcuts or your browser’s edit menu instead.' ), - // TinyMCE menus. + // TinyMCE menus 'Insert' => _x( 'Insert', 'TinyMCE menu' ), 'File' => _x( 'File', 'TinyMCE menu' ), 'Edit' => _x( 'Edit', 'TinyMCE menu' ), @@ -1374,23 +1277,22 @@ private static function get_translation() { 'Table' => _x( 'Table', 'TinyMCE menu' ), 'Format' => _x( 'Format', 'TinyMCE menu' ), - // ClassicPress strings. + // ClassicPress strings 'Toolbar Toggle' => array( __( 'Toolbar Toggle' ), 'accessZ' ), 'Insert Read More tag' => array( __( 'Insert Read More tag' ), 'accessT' ), 'Insert Page Break tag' => array( __( 'Insert Page Break tag' ), 'accessP' ), - 'Read more...' => __( 'Read more...' ), // Title on the placeholder inside the editor (no ellipsis). + 'Read more...' => __( 'Read more...' ), // Title on the placeholder inside the editor (no ellipsis) 'Distraction-free writing mode' => array( __( 'Distraction-free writing mode' ), 'accessW' ), - 'No alignment' => __( 'No alignment' ), // Tooltip for the 'alignnone' button in the image toolbar. - 'Remove' => __( 'Remove' ), // Tooltip for the 'remove' button in the image toolbar. - 'Edit|button' => __( 'Edit' ), // Tooltip for the 'edit' button in the image toolbar. - 'Paste URL or type to search' => __( 'Paste URL or type to search' ), // Placeholder for the inline link dialog. - 'Apply' => __( 'Apply' ), // Tooltip for the 'apply' button in the inline link dialog. - 'Link options' => __( 'Link options' ), // Tooltip for the 'link options' button in the inline link dialog. - 'Visual' => _x( 'Visual', 'Name for the Visual editor tab' ), // Editor switch tab label. - 'Text' => _x( 'Text', 'Name for the Text editor tab (formerly HTML)' ), // Editor switch tab label. - 'Add Media' => array( __( 'Add Media' ), 'accessM' ), // Tooltip for the 'Add Media' button in the block editor Classic block. - - // Shortcuts help modal. + 'No alignment' => __( 'No alignment' ), // Tooltip for the 'alignnone' button in the image toolbar + 'Remove' => __( 'Remove' ), // Tooltip for the 'remove' button in the image toolbar + 'Edit ' => __( 'Edit' ), // Tooltip for the 'edit' button in the image toolbar + 'Paste URL or type to search' => __( 'Paste URL or type to search' ), // Placeholder for the inline link dialog + 'Apply' => __( 'Apply' ), // Tooltip for the 'apply' button in the inline link dialog + 'Link options' => __( 'Link options' ), // Tooltip for the 'link options' button in the inline link dialog + 'Visual' => _x( 'Visual', 'Name for the Visual editor tab' ), // Editor switch tab label + 'Text' => _x( 'Text', 'Name for the Text editor tab (formerly HTML)' ), // Editor switch tab label + + // Shortcuts help modal 'Keyboard Shortcuts' => array( __( 'Keyboard Shortcuts' ), 'accessH' ), 'Default shortcuts,' => __( 'Default shortcuts,' ), 'Additional shortcuts,' => __( 'Additional shortcuts,' ), @@ -1423,13 +1325,13 @@ private static function get_translation() { 'Image options' => __( 'Image options' ), 'Back' => __( 'Back' ), 'Invert' => __( 'Invert' ), - 'Flip horizontally' => __( 'Flip horizontal' ), - 'Flip vertically' => __( 'Flip vertical' ), + 'Flip horizontally' => __( 'Flip horizontally' ), + 'Flip vertically' => __( 'Flip vertically' ), 'Crop' => __( 'Crop' ), 'Orientation' => __( 'Orientation' ), 'Resize' => __( 'Resize' ), - 'Rotate clockwise' => __( 'Rotate right' ), - 'Rotate counterclockwise' => __( 'Rotate left' ), + 'Rotate clockwise' => __( 'Rotate clockwise' ), + 'Rotate counterclockwise' => __( 'Rotate counterclockwise' ), 'Sharpen' => __( 'Sharpen' ), 'Brightness' => __( 'Brightness' ), 'Color levels' => __( 'Color levels' ), @@ -1446,11 +1348,9 @@ private static function get_translation() { * Translates the default TinyMCE strings and returns them as JSON encoded object ready to be loaded with tinymce.addI18n(), * or as JS snippet that should run after tinymce.js is loaded. * - * @since 3.9.0 - * + * @static * @param string $mce_locale The locale used for the editor. - * @param bool $json_only Optional. Whether to include the JavaScript calls to tinymce.addI18n() and - * tinymce.ScriptLoader.markDone(). Default false. + * @param bool $json_only optional Whether to include the JavaScript calls to tinymce.addI18n() and tinymce.ScriptLoader.markDone(). * @return string Translation object, JSON encoded. */ public static function wp_mce_translation( $mce_locale = '', $json_only = false ) { @@ -1469,7 +1369,7 @@ public static function wp_mce_translation( $mce_locale = '', $json_only = false /** * Filters translated strings prepared for TinyMCE. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $mce_translation Key/value pairs of strings. * @param string $mce_locale Locale. @@ -1488,7 +1388,7 @@ public static function wp_mce_translation( $mce_locale = '', $json_only = false } } - // Set direction. + // Set direction if ( is_rtl() ) { $mce_translation['_dir'] = 'rtl'; } @@ -1503,43 +1403,18 @@ public static function wp_mce_translation( $mce_locale = '', $json_only = false "tinymce.ScriptLoader.markDone( '$baseurl/langs/$mce_locale.js' );\n"; } - /** - * Force uncompressed TinyMCE when a custom theme has been defined. - * - * The compressed TinyMCE file cannot deal with custom themes, so this makes - * sure that we use the uncompressed TinyMCE file if a theme is defined. - * Even if we are on a production environment. - * - * @since 5.0.0 - */ - public static function force_uncompressed_tinymce() { - $has_custom_theme = false; - foreach ( self::$mce_settings as $init ) { - if ( ! empty( $init['theme_url'] ) ) { - $has_custom_theme = true; - break; - } - } - - if ( ! $has_custom_theme ) { - return; - } - - $wp_scripts = wp_scripts(); - - $wp_scripts->remove( 'wp-tinymce' ); - wp_register_tinymce_scripts( $wp_scripts, true ); - } - /** * Print (output) the main TinyMCE scripts. * - * @since 4.8.0 + * @since WP-4.8.0 * - * @global bool $concatenate_scripts + * @static + * @global string $tinymce_version + * @global bool $concatenate_scripts + * @global bool $compress_scripts */ public static function print_tinymce_scripts() { - global $concatenate_scripts; + global $tinymce_version, $concatenate_scripts, $compress_scripts; if ( self::$tinymce_scripts_printed ) { return; @@ -1551,16 +1426,38 @@ public static function print_tinymce_scripts() { script_concat_settings(); } - wp_print_scripts( array( 'wp-tinymce' ) ); + $suffix = SCRIPT_DEBUG ? '' : '.min'; + $version = 'ver=' . $tinymce_version; + $baseurl = self::get_baseurl(); - echo "<script>\n" . self::wp_mce_translation() . "</script>\n"; + $has_custom_theme = false; + foreach ( self::$mce_settings as $init ) { + if ( ! empty( $init['theme_url'] ) ) { + $has_custom_theme = true; + break; + } + } + + $compressed = $compress_scripts && $concatenate_scripts && isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) + && false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) && ! $has_custom_theme; + + // Load tinymce.js when running from /src, else load wp-tinymce.js.gz (production) or tinymce.min.js (SCRIPT_DEBUG) + $mce_suffix = classicpress_is_dev_install() ? '' : '.min'; + + if ( $compressed ) { + echo "<script type='text/javascript' src='{$baseurl}/wp-tinymce.php?c=1&$version'></script>\n"; + } else { + echo "<script type='text/javascript' src='{$baseurl}/tinymce{$mce_suffix}.js?$version'></script>\n"; + echo "<script type='text/javascript' src='{$baseurl}/plugins/compat3x/plugin{$suffix}.js?$version'></script>\n"; + } + + echo "<script type='text/javascript'>\n" . self::wp_mce_translation() . "</script>\n"; } /** * Print (output) the TinyMCE configuration and initialization scripts. * - * @since 3.3.0 - * + * @static * @global string $tinymce_version */ public static function editor_js() { @@ -1603,14 +1500,14 @@ public static function editor_js() { /** * Fires immediately before the TinyMCE settings are printed. * - * @since 3.2.0 + * @since WP-3.2.0 * * @param array $mce_settings TinyMCE settings array. */ do_action( 'before_wp_tiny_mce', self::$mce_settings ); ?> - <script> + <script type="text/javascript"> tinyMCEPreInit = { baseURL: "<?php echo $baseurl; ?>", suffix: "<?php echo $suffix; ?>", @@ -1633,8 +1530,8 @@ public static function editor_js() { self::print_tinymce_scripts(); if ( self::$ext_plugins ) { - // Load the old-format English strings to prevent unsightly labels in old style popups. - echo "<script src='{$baseurl}/langs/wp-langs-en.js?$version'></script>\n"; + // Load the old-format English strings to prevent unsightly labels in old style popups + echo "<script type='text/javascript' src='{$baseurl}/langs/wp-langs-en.js?$version'></script>\n"; } } @@ -1642,14 +1539,14 @@ public static function editor_js() { * Fires after tinymce.js is loaded, but before any TinyMCE editor * instances are created. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param array $mce_settings TinyMCE settings array. */ do_action( 'wp_tiny_mce_init', self::$mce_settings ); ?> - <script> + <script type="text/javascript"> <?php if ( self::$ext_plugins ) { @@ -1663,31 +1560,20 @@ public static function editor_js() { ?> ( function() { - var initialized = []; - var initialize = function() { - var init, id, inPostbox, $wrap; - var readyState = document.readyState; + var init, id, $wrap; - if ( readyState !== 'complete' && readyState !== 'interactive' ) { + if ( typeof tinymce !== 'undefined' ) { + if ( tinymce.Env.ie && tinymce.Env.ie < 11 ) { + tinymce.$( '.wp-editor-wrap ' ).removeClass( 'tmce-active' ).addClass( 'html-active' ); return; } for ( id in tinyMCEPreInit.mceInit ) { - if ( initialized.indexOf( id ) > -1 ) { - continue; - } - - init = tinyMCEPreInit.mceInit[id]; - $wrap = tinymce.$( '#wp-' + id + '-wrap' ); - inPostbox = $wrap.parents( '.postbox' ).length > 0; + init = tinyMCEPreInit.mceInit[id]; + $wrap = tinymce.$( '#wp-' + id + '-wrap' ); - if ( - ! init.wp_skip_init && - ( $wrap.hasClass( 'tmce-active' ) || ! tinyMCEPreInit.qtInit.hasOwnProperty( id ) ) && - ( readyState === 'complete' || ( ! inPostbox && readyState === 'interactive' ) ) - ) { + if ( ( $wrap.hasClass( 'tmce-active' ) || ! tinyMCEPreInit.qtInit.hasOwnProperty( id ) ) && ! init.wp_skip_init ) { tinymce.init( init ); - initialized.push( id ); if ( ! window.wpActiveEditor ) { window.wpActiveEditor = id; @@ -1696,18 +1582,6 @@ public static function editor_js() { } } - if ( typeof tinymce !== 'undefined' ) { - if ( tinymce.Env.ie && tinymce.Env.ie < 11 ) { - tinymce.$( '.wp-editor-wrap ' ).removeClass( 'tmce-active' ).addClass( 'html-active' ); - } else { - if ( document.readyState === 'complete' ) { - initialize(); - } else { - document.addEventListener( 'readystatechange', initialize ); - } - } - } - if ( typeof quicktags !== 'undefined' ) { for ( id in tinyMCEPreInit.qtInit ) { quicktags( tinyMCEPreInit.qtInit[id] ); @@ -1728,7 +1602,7 @@ public static function editor_js() { /** * Fires after any core TinyMCE editor instances are created. * - * @since 3.2.0 + * @since WP-3.2.0 * * @param array $mce_settings TinyMCE settings array. */ @@ -1738,35 +1612,23 @@ public static function editor_js() { /** * Outputs the HTML for distraction-free writing mode. * - * @since 3.2.0 - * @deprecated 4.3.0 + * @since WP-3.2.0 + * @deprecated WP-4.3.0 + * + * @static */ public static function wp_fullscreen_html() { - _deprecated_function( __FUNCTION__, '4.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0' ); } /** * Performs post queries for internal linking. * - * @since 3.1.0 - * - * @param array $args { - * Optional. Array of link query arguments. - * - * @type int $pagenum Page number. Default 1. - * @type string $s Search keywords. - * } - * @return array|false $results { - * An array of associative arrays of query results, false if there are none. + * @since WP-3.1.0 * - * @type array ...$0 { - * @type int $ID Post ID. - * @type string $title The trimmed, escaped post title. - * @type string $permalink Post permalink. - * @type string $info A 'Y/m/d'-formatted date for 'post' post type, - * the 'singular_name' post type label otherwise. - * } - * } + * @static + * @param array $args Optional. Accepts 'pagenum' and 's' (search) arguments. + * @return false|array Results. */ public static function wp_link_query( $args = array() ) { $pts = get_post_types( array( 'public' => true ), 'objects' ); @@ -1796,14 +1658,14 @@ public static function wp_link_query( $args = array() ) { * * @see WP_Query for a full list of arguments * - * @since 3.7.0 + * @since WP-3.7.0 * * @param array $query An array of WP_Query arguments. */ $query = apply_filters( 'wp_link_query_args', $query ); // Do main query. - $get_posts = new WP_Query(); + $get_posts = new WP_Query; $posts = $get_posts->query( $query ); // Build results. @@ -1828,14 +1690,14 @@ public static function wp_link_query( $args = array() ) { * * Allows modification of the returned link query results. * - * @since 3.7.0 + * @since WP-3.7.0 * * @see 'wp_link_query_args' filter * * @param array $results { - * An array of associative arrays of query results. + * An associative array of query results. * - * @type array ...$0 { + * @type array { * @type int $ID Post ID. * @type string $title The trimmed, escaped post title. * @type string $permalink Post permalink. @@ -1853,43 +1715,40 @@ public static function wp_link_query( $args = array() ) { /** * Dialog for internal linking. * - * @since 3.1.0 + * @since WP-3.1.0 + * + * @static */ public static function wp_link_dialog() { - // Run once. + // Run once if ( self::$link_dialog_printed ) { return; } self::$link_dialog_printed = true; - // `display: none` is required here, see #WP27605. + // display: none is required here, see #WP27605 ?> <div id="wp-link-backdrop" style="display: none"></div> <div id="wp-link-wrap" class="wp-core-ui" style="display: none" role="dialog" aria-labelledby="link-modal-title"> <form id="wp-link" tabindex="-1"> <?php wp_nonce_field( 'internal-linking', '_ajax_linking_nonce', false ); ?> <h1 id="link-modal-title"><?php _e( 'Insert/edit link' ); ?></h1> - <button type="button" id="wp-link-close"><span class="screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Close' ); - ?> - </span></button> + <button type="button" id="wp-link-close"><span class="screen-reader-text"><?php _e( 'Close' ); ?></span></button> <div id="link-selector"> <div id="link-options"> <p class="howto" id="wplink-enter-url"><?php _e( 'Enter the destination URL' ); ?></p> <div> <label><span><?php _e( 'URL' ); ?></span> - <input id="wp-link-url" type="text" aria-describedby="wplink-enter-url"></label> + <input id="wp-link-url" type="text" aria-describedby="wplink-enter-url" /></label> </div> <div class="wp-link-text-field"> <label><span><?php _e( 'Link Text' ); ?></span> - <input id="wp-link-text" type="text"></label> + <input id="wp-link-text" type="text" /></label> </div> <div class="link-target"> <label><span></span> - <input type="checkbox" id="wp-link-target"> <?php _e( 'Open link in a new tab' ); ?></label> + <input type="checkbox" id="wp-link-target" /> <?php _e( 'Open link in a new tab' ); ?></label> </div> </div> <p class="howto" id="wplink-link-existing-content"><?php _e( 'Or link to existing content' ); ?></p> @@ -1897,7 +1756,7 @@ public static function wp_link_dialog() { <div class="link-search-wrapper"> <label> <span class="search-label"><?php _e( 'Search' ); ?></span> - <input type="search" id="wp-link-search" class="link-search-field" autocomplete="off" aria-describedby="wplink-link-existing-content"> + <input type="search" id="wp-link-search" class="link-search-field" autocomplete="off" aria-describedby="wplink-link-existing-content" /> <span class="spinner"></span> </label> </div> @@ -1910,19 +1769,14 @@ public static function wp_link_dialog() { <div id="most-recent-results" class="query-results" tabindex="0"> <div class="query-notice" id="query-notice-message"> <em class="query-notice-default"><?php _e( 'No search term specified. Showing recent items.' ); ?></em> - <em class="query-notice-hint screen-reader-text"> - <?php - /* translators: Hidden accessibility text. */ - _e( 'Search or use up and down arrow keys to select an item.' ); - ?> - </em> + <em class="query-notice-hint screen-reader-text"><?php _e( 'Search or use up and down arrow keys to select an item.' ); ?></em> </div> <ul></ul> <div class="river-waiting"> <span class="spinner"></span> </div> - </div> - </div> + </div> + </div> </div> <div class="submitbox"> <div id="wp-link-cancel"> diff --git a/wp-includes/class-wp-embed.php b/wp-includes/class-wp-embed.php index 9755fad..212b427 100644 --- a/wp-includes/class-wp-embed.php +++ b/wp-includes/class-wp-embed.php @@ -4,9 +4,8 @@ * * @package ClassicPress * @subpackage Embed - * @since 2.9.0 + * @since WP-2.9.0 */ -#[AllowDynamicProperties] class WP_Embed { public $handlers = array(); public $post_ID; @@ -29,24 +28,24 @@ class WP_Embed { * Constructor */ public function __construct() { - // Hack to get the [embed] shortcode to run before wpautop(). + // Hack to get the [embed] shortcode to run before wpautop() add_filter( 'the_content', array( $this, 'run_shortcode' ), 8 ); add_filter( 'widget_text_content', array( $this, 'run_shortcode' ), 8 ); - // Shortcode placeholder for strip_shortcodes(). + // Shortcode placeholder for strip_shortcodes() add_shortcode( 'embed', '__return_false' ); - // Attempts to embed all URLs in a post. + // Attempts to embed all URLs in a post add_filter( 'the_content', array( $this, 'autoembed' ), 8 ); add_filter( 'widget_text_content', array( $this, 'autoembed' ), 8 ); - // After a post is saved, cache oEmbed items via Ajax. + // After a post is saved, cache oEmbed items via Ajax add_action( 'edit_form_advanced', array( $this, 'maybe_run_ajax_cache' ) ); add_action( 'edit_page_form', array( $this, 'maybe_run_ajax_cache' ) ); } /** - * Processes the [embed] shortcode. + * Process the [embed] shortcode. * * Since the [embed] shortcode needs to be run earlier than other shortcodes, * this function removes all existing shortcodes, registers the [embed] shortcode, @@ -54,22 +53,22 @@ public function __construct() { * * @global array $shortcode_tags * - * @param string $content Content to parse. - * @return string Content with shortcode parsed. + * @param string $content Content to parse + * @return string Content with shortcode parsed */ public function run_shortcode( $content ) { global $shortcode_tags; - // Back up current registered shortcodes and clear them all out. + // Back up current registered shortcodes and clear them all out $orig_shortcode_tags = $shortcode_tags; remove_all_shortcodes(); add_shortcode( 'embed', array( $this, 'shortcode' ) ); - // Do the shortcode (only the [embed] one is registered). + // Do the shortcode (only the [embed] one is registered) $content = do_shortcode( $content, true ); - // Put the original shortcodes back. + // Put the original shortcodes back $shortcode_tags = $orig_shortcode_tags; return $content; @@ -85,11 +84,12 @@ public function maybe_run_ajax_cache() { if ( ! $post || empty( $_GET['message'] ) ) { return; } + ?> -<script> - jQuery( function($) { - $.get("<?php echo esc_url( admin_url( 'admin-ajax.php', 'relative' ) ) . '?action=oembed-cache&post=' . $post->ID; ?>"); - } ); +<script type="text/javascript"> + jQuery(document).ready(function($){ + $.get("<?php echo admin_url( 'admin-ajax.php?action=oembed-cache&post=' . $post->ID, 'relative' ); ?>"); + }); </script> <?php } @@ -101,12 +101,10 @@ public function maybe_run_ajax_cache() { * * This function should probably also only be used for sites that do not support oEmbed. * - * @param string $id An internal ID/name for the handler. Needs to be unique. - * @param string $regex The regex that will be used to see if this handler should be used for a URL. + * @param string $id An internal ID/name for the handler. Needs to be unique. + * @param string $regex The regex that will be used to see if this handler should be used for a URL. * @param callable $callback The callback function that will be called if the regex is matched. - * @param int $priority Optional. Used to specify the order in which the registered handlers will be tested. - * Lower numbers correspond with earlier testing, and handlers with the same priority are - * tested in the order in which they were added to the action. Default 10. + * @param int $priority Optional. Used to specify the order in which the registered handlers will be tested (default: 10). Lower numbers correspond with earlier testing, and handlers with the same priority are tested in the order in which they were added to the action. */ public function register_handler( $id, $regex, $callback, $priority = 10 ) { $this->handlers[ $priority ][ $id ] = array( @@ -120,60 +118,13 @@ public function register_handler( $id, $regex, $callback, $priority = 10 ) { * * Do not use this function directly, use wp_embed_unregister_handler() instead. * - * @param string $id The handler ID that should be removed. - * @param int $priority Optional. The priority of the handler to be removed (default: 10). + * @param string $id The handler ID that should be removed. + * @param int $priority Optional. The priority of the handler to be removed (default: 10). */ public function unregister_handler( $id, $priority = 10 ) { unset( $this->handlers[ $priority ][ $id ] ); } - /** - * Returns embed HTML for a given URL from embed handlers. - * - * Attempts to convert a URL into embed HTML by checking the URL - * against the regex of the registered embed handlers. - * - * @since 5.5.0 - * - * @param array $attr { - * Shortcode attributes. Optional. - * - * @type int $width Width of the embed in pixels. - * @type int $height Height of the embed in pixels. - * } - * @param string $url The URL attempting to be embedded. - * @return string|false The embed HTML on success, false otherwise. - */ - public function get_embed_handler_html( $attr, $url ) { - $rawattr = $attr; - $attr = wp_parse_args( $attr, wp_embed_defaults( $url ) ); - - ksort( $this->handlers ); - foreach ( $this->handlers as $priority => $handlers ) { - foreach ( $handlers as $id => $handler ) { - if ( preg_match( $handler['regex'], $url, $matches ) && is_callable( $handler['callback'] ) ) { - $return = call_user_func( $handler['callback'], $matches, $attr, $url, $rawattr ); - if ( false !== $return ) { - /** - * Filters the returned embed HTML. - * - * @since 2.9.0 - * - * @see WP_Embed::shortcode() - * - * @param string|false $return The HTML result of the shortcode, or false on failure. - * @param string $url The embed URL. - * @param array $attr An array of shortcode attributes. - */ - return apply_filters( 'embed_handler_html', $return, $url, $attr ); - } - } - } - } - - return false; - } - /** * The do_shortcode() callback function. * @@ -181,7 +132,7 @@ public function get_embed_handler_html( $attr, $url ) { * the registered embed handlers. If none of the regex matches and it's enabled, then the URL * will be given to the WP_oEmbed class. * - * @param array $attr { + * @param array $attr { * Shortcode attributes. Optional. * * @type int $width Width of the embed in pixels. @@ -210,21 +161,39 @@ public function shortcode( $attr, $url = '' ) { $this->last_attr = $attr; - // KSES converts & into & and we need to undo this. + // kses converts & into & and we need to undo this // See https://core.trac.wordpress.org/ticket/11311 $url = str_replace( '&', '&', $url ); - // Look for known internal handlers. - $embed_handler_html = $this->get_embed_handler_html( $rawattr, $url ); - if ( false !== $embed_handler_html ) { - return $embed_handler_html; + // Look for known internal handlers + ksort( $this->handlers ); + foreach ( $this->handlers as $priority => $handlers ) { + foreach ( $handlers as $id => $handler ) { + if ( preg_match( $handler['regex'], $url, $matches ) && is_callable( $handler['callback'] ) ) { + $return = call_user_func( $handler['callback'], $matches, $attr, $url, $rawattr ); + if ( false !== $return ) { + /** + * Filters the returned embed handler. + * + * @since WP-2.9.0 + * + * @see WP_Embed::shortcode() + * + * @param mixed $return The shortcode callback function to call. + * @param string $url The attempted embed URL. + * @param array $attr An array of shortcode attributes. + */ + return apply_filters( 'embed_handler_html', $return, $url, $attr ); + } + } + } } - $post_id = ( ! empty( $post->ID ) ) ? $post->ID : null; + $post_ID = ( ! empty( $post->ID ) ) ? $post->ID : null; // Potentially set by WP_Embed::cache_oembed(). if ( ! empty( $this->post_ID ) ) { - $post_id = $this->post_ID; + $post_ID = $this->post_ID; } // Check for a cached result (stored as custom post or in the post meta). @@ -235,23 +204,23 @@ public function shortcode( $attr, $url = '' ) { /** * Filters the oEmbed TTL value (time to live). * - * @since 4.0.0 + * @since WP-4.0.0 * * @param int $time Time to live (in seconds). * @param string $url The attempted embed URL. * @param array $attr An array of shortcode attributes. - * @param int $post_id Post ID. + * @param int $post_ID Post ID. */ - $ttl = apply_filters( 'oembed_ttl', DAY_IN_SECONDS, $url, $attr, $post_id ); + $ttl = apply_filters( 'oembed_ttl', DAY_IN_SECONDS, $url, $attr, $post_ID ); $cache = ''; $cache_time = 0; $cached_post_id = $this->find_oembed_post_id( $key_suffix ); - if ( $post_id ) { - $cache = get_post_meta( $post_id, $cachekey, true ); - $cache_time = get_post_meta( $post_id, $cachekey_time, true ); + if ( $post_ID ) { + $cache = get_post_meta( $post_ID, $cachekey, true ); + $cache_time = get_post_meta( $post_ID, $cachekey_time, true ); if ( ! $cache_time ) { $cache_time = 0; @@ -275,24 +244,24 @@ public function shortcode( $attr, $url = '' ) { /** * Filters the cached oEmbed HTML. * - * @since 2.9.0 + * @since WP-2.9.0 * * @see WP_Embed::shortcode() * - * @param string|false $cache The cached HTML result, stored in post meta. - * @param string $url The attempted embed URL. - * @param array $attr An array of shortcode attributes. - * @param int $post_id Post ID. + * @param mixed $cache The cached HTML result, stored in post meta. + * @param string $url The attempted embed URL. + * @param array $attr An array of shortcode attributes. + * @param int $post_ID Post ID. */ - return apply_filters( 'embed_oembed_html', $cache, $url, $attr, $post_id ); + return apply_filters( 'embed_oembed_html', $cache, $url, $attr, $post_ID ); } } /** * Filters whether to inspect the given URL for discoverable link tags. * - * @since 2.9.0 - * @since 4.4.0 The default value changed to true. + * @since WP-2.9.0 + * @since WP-4.4.0 The default value changed to true. * * @see WP_oEmbed::discover() * @@ -303,12 +272,12 @@ public function shortcode( $attr, $url = '' ) { // Use oEmbed to get the HTML. $html = wp_oembed_get( $url, $attr ); - if ( $post_id ) { + if ( $post_ID ) { if ( $html ) { - update_post_meta( $post_id, $cachekey, $html ); - update_post_meta( $post_id, $cachekey_time, time() ); + update_post_meta( $post_ID, $cachekey, $html ); + update_post_meta( $post_ID, $cachekey_time, time() ); } elseif ( ! $cache ) { - update_post_meta( $post_id, $cachekey, '{{unknown}}' ); + update_post_meta( $post_ID, $cachekey, '{{unknown}}' ); } } else { $has_kses = false !== has_filter( 'content_save_pre', 'wp_filter_post_kses' ); @@ -367,27 +336,27 @@ public function shortcode( $attr, $url = '' ) { // If there was a result, return it. if ( $html ) { /** This filter is documented in wp-includes/class-wp-embed.php */ - return apply_filters( 'embed_oembed_html', $html, $url, $attr, $post_id ); + return apply_filters( 'embed_oembed_html', $html, $url, $attr, $post_ID ); } - // Still unknown. + // Still unknown return $this->maybe_make_link( $url ); } /** - * Deletes all oEmbed caches. Unused by core as of 4.0.0. + * Delete all oEmbed caches. Unused by core as of 4.0.0. * - * @param int $post_id Post ID to delete the caches for. + * @param int $post_ID Post ID to delete the caches for. */ - public function delete_oembed_caches( $post_id ) { - $post_metas = get_post_custom_keys( $post_id ); + public function delete_oembed_caches( $post_ID ) { + $post_metas = get_post_custom_keys( $post_ID ); if ( empty( $post_metas ) ) { return; } foreach ( $post_metas as $post_meta_key ) { if ( '_oembed_' === substr( $post_meta_key, 0, 8 ) ) { - delete_post_meta( $post_id, $post_meta_key ); + delete_post_meta( $post_ID, $post_meta_key ); } } } @@ -395,19 +364,19 @@ public function delete_oembed_caches( $post_id ) { /** * Triggers a caching of all oEmbed results. * - * @param int $post_id Post ID to do the caching for. + * @param int $post_ID Post ID to do the caching for. */ - public function cache_oembed( $post_id ) { - $post = get_post( $post_id ); + public function cache_oembed( $post_ID ) { + $post = get_post( $post_ID ); $post_types = get_post_types( array( 'show_ui' => true ) ); /** * Filters the array of post types to cache oEmbed results for. * - * @since 2.9.0 + * @since WP-2.9.0 * - * @param string[] $post_types Array of post type names to cache oEmbed results for. Defaults to post types with `show_ui` set to true. + * @param array $post_types Array of post types to cache oEmbed results for. Defaults to post types with `show_ui` set to true. */ $cache_oembed_types = apply_filters( 'embed_cache_oembed_types', $post_types ); @@ -415,7 +384,7 @@ public function cache_oembed( $post_id ) { return; } - // Trigger a caching. + // Trigger a caching if ( ! empty( $post->post_content ) ) { $this->post_ID = $post->ID; $this->usecache = false; @@ -453,23 +422,23 @@ public function autoembed( $content ) { /** * Callback function for WP_Embed::autoembed(). * - * @param array $matches A regex match array. + * @param array $match A regex match array. * @return string The embed HTML on success, otherwise the original URL. */ - public function autoembed_callback( $matches ) { + public function autoembed_callback( $match ) { $oldval = $this->linkifunknown; $this->linkifunknown = false; - $return = $this->shortcode( array(), $matches[2] ); + $return = $this->shortcode( array(), $match[2] ); $this->linkifunknown = $oldval; - return $matches[1] . $return . $matches[3]; + return $match[1] . $return . $match[3]; } /** * Conditionally makes a hyperlink based on an internal class variable. * * @param string $url URL to potentially be linked. - * @return string|false Linked URL or the original URL. False if 'return_false_on_fail' is true. + * @return false|string Linked URL or the original URL. False if 'return_false_on_fail' is true. */ public function maybe_make_link( $url ) { if ( $this->return_false_on_fail ) { @@ -481,7 +450,7 @@ public function maybe_make_link( $url ) { /** * Filters the returned, maybe-linked embed URL. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string $output The linked or original URL. * @param string $url The original URL. @@ -490,9 +459,9 @@ public function maybe_make_link( $url ) { } /** - * Finds the oEmbed cache post ID for a given cache key. + * Find the oEmbed cache post ID for a given cache key. * - * @since 4.9.0 + * @since WP-4.9.0 * * @param string $cache_key oEmbed cache key. * @return int|null Post ID on success, null on failure. @@ -520,7 +489,7 @@ public function find_oembed_post_id( $cache_key ) { ); if ( ! empty( $oembed_post_query->posts ) ) { - // Note: 'fields' => 'ids' is not being used in order to cache the post object as it will be needed. + // Note: 'fields'=>'ids' is not being used in order to cache the post object as it will be needed. $oembed_post_id = $oembed_post_query->posts[0]->ID; wp_cache_set( $cache_key, $oembed_post_id, $cache_group ); diff --git a/wp-includes/class-wp-error.php b/wp-includes/class-wp-error.php index 314afdb..f7bfb46 100644 --- a/wp-includes/class-wp-error.php +++ b/wp-includes/class-wp-error.php @@ -15,36 +15,27 @@ * core ClassicPress functions pass this class in the event of an error and * if not handled properly will result in code errors. * - * @since 2.1.0 + * @since WP-2.1.0 */ -#[AllowDynamicProperties] class WP_Error { /** * Stores the list of errors. * - * @since 2.1.0 + * @since WP-2.1.0 * @var array */ public $errors = array(); /** - * Stores the most recently added data for each error code. + * Stores the list of data for error codes. * - * @since 2.1.0 + * @since WP-2.1.0 * @var array */ public $error_data = array(); /** - * Stores previously added data added for error codes, oldest-to-newest by code. - * - * @since 5.6.0 - * @var array[] - */ - protected $additional_data = array(); - - /** - * Initializes the error. + * Initialize the error. * * If `$code` is empty, the other parameters will be ignored. * When `$code` is not empty, `$message` will be used even if @@ -54,29 +45,33 @@ class WP_Error { * Though the class is constructed with a single error code and * message, multiple codes can be added using the `add()` method. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string|int $code Error code. - * @param string $message Error message. - * @param mixed $data Optional. Error data. Default empty string. + * @param string|int $code Error code + * @param string $message Error message + * @param mixed $data Optional. Error data. */ public function __construct( $code = '', $message = '', $data = '' ) { if ( empty( $code ) ) { return; } - $this->add( $code, $message, $data ); + $this->errors[ $code ][] = $message; + + if ( ! empty( $data ) ) { + $this->error_data[ $code ] = $data; + } } /** - * Retrieves all error codes. + * Retrieve all error codes. * - * @since 2.1.0 + * @since WP-2.1.0 * * @return array List of error codes, if available. */ public function get_error_codes() { - if ( ! $this->has_errors() ) { + if ( empty( $this->errors ) ) { return array(); } @@ -84,9 +79,9 @@ public function get_error_codes() { } /** - * Retrieves the first error code available. + * Retrieve first error code available. * - * @since 2.1.0 + * @since WP-2.1.0 * * @return string|int Empty string, if no error codes. */ @@ -101,13 +96,12 @@ public function get_error_code() { } /** - * Retrieves all error messages, or the error messages for the given error code. + * Retrieve all error messages or error messages matching code. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string|int $code Optional. Error code to retrieve the messages for. - * Default empty string. - * @return string[] Error strings on success, or empty array if there are none. + * @param string|int $code Optional. Retrieve messages matching code, if exists. + * @return array Error strings on success, or empty array on failure (if using code parameter). */ public function get_error_messages( $code = '' ) { // Return all messages if no code specified. @@ -128,16 +122,15 @@ public function get_error_messages( $code = '' ) { } /** - * Gets a single error message. + * Get single error message. * * This will get the first message available for the code. If no code is * given then the first code available will be used. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string|int $code Optional. Error code to retrieve the message for. - * Default empty string. - * @return string The error message. + * @param string|int $code Optional. Error code to retrieve message. + * @return string */ public function get_error_message( $code = '' ) { if ( empty( $code ) ) { @@ -151,11 +144,11 @@ public function get_error_message( $code = '' ) { } /** - * Retrieves the most recently added error data for an error code. + * Retrieve error data for error code. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string|int $code Optional. Error code. Default empty string. + * @param string|int $code Optional. Error code. * @return mixed Error data, if it exists. */ public function get_error_data( $code = '' ) { @@ -169,55 +162,29 @@ public function get_error_data( $code = '' ) { } /** - * Verifies if the instance contains errors. + * Add an error or append additional message to an existing error. * - * @since 5.1.0 + * @since WP-2.1.0 * - * @return bool If the instance contains errors. - */ - public function has_errors() { - if ( ! empty( $this->errors ) ) { - return true; - } - return false; - } - - /** - * Adds an error or appends an additional message to an existing error. - * - * @since 2.1.0 - * - * @param string|int $code Error code. - * @param string $message Error message. - * @param mixed $data Optional. Error data. Default empty string. + * @param string|int $code Error code. + * @param string $message Error message. + * @param mixed $data Optional. Error data. */ public function add( $code, $message, $data = '' ) { $this->errors[ $code ][] = $message; - if ( ! empty( $data ) ) { - $this->add_data( $data, $code ); + $this->error_data[ $code ] = $data; } - - /** - * Fires when an error is added to a WP_Error object. - * - * @since 5.6.0 - * - * @param string|int $code Error code. - * @param string $message Error message. - * @param mixed $data Error data. Might be empty. - * @param WP_Error $wp_error The WP_Error object. - */ - do_action( 'wp_error_added', $code, $message, $data, $this ); } /** - * Adds data to an error with the given code. + * Add data for error code. * - * @since 2.1.0 - * @since 5.6.0 Errors can now contain more than one item of error data. {@see WP_Error::$additional_data}. + * The error code can only contain one error data. * - * @param mixed $data Error data. + * @since WP-2.1.0 + * + * @param mixed $data Error data. * @param string|int $code Error code. */ public function add_data( $data, $code = '' ) { @@ -225,94 +192,21 @@ public function add_data( $data, $code = '' ) { $code = $this->get_error_code(); } - if ( isset( $this->error_data[ $code ] ) ) { - $this->additional_data[ $code ][] = $this->error_data[ $code ]; - } - $this->error_data[ $code ] = $data; } - /** - * Retrieves all error data for an error code in the order in which the data was added. - * - * @since 5.6.0 - * - * @param string|int $code Error code. - * @return mixed[] Array of error data, if it exists. - */ - public function get_all_error_data( $code = '' ) { - if ( empty( $code ) ) { - $code = $this->get_error_code(); - } - - $data = array(); - - if ( isset( $this->additional_data[ $code ] ) ) { - $data = $this->additional_data[ $code ]; - } - - if ( isset( $this->error_data[ $code ] ) ) { - $data[] = $this->error_data[ $code ]; - } - - return $data; - } - /** * Removes the specified error. * * This function removes all error messages associated with the specified * error code, along with any error data for that code. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param string|int $code Error code. */ public function remove( $code ) { unset( $this->errors[ $code ] ); unset( $this->error_data[ $code ] ); - unset( $this->additional_data[ $code ] ); - } - - /** - * Merges the errors in the given error object into this one. - * - * @since 5.6.0 - * - * @param WP_Error $error Error object to merge. - */ - public function merge_from( WP_Error $error ) { - static::copy_errors( $error, $this ); - } - - /** - * Exports the errors in this object into the given one. - * - * @since 5.6.0 - * - * @param WP_Error $error Error object to export into. - */ - public function export_to( WP_Error $error ) { - static::copy_errors( $this, $error ); - } - - /** - * Copies errors from one WP_Error instance to another. - * - * @since 5.6.0 - * - * @param WP_Error $from The WP_Error to copy from. - * @param WP_Error $to The WP_Error to copy to. - */ - protected static function copy_errors( WP_Error $from, WP_Error $to ) { - foreach ( $from->get_error_codes() as $code ) { - foreach ( $from->get_error_messages( $code ) as $error_message ) { - $to->add( $code, $error_message ); - } - - foreach ( $from->get_all_error_data( $code ) as $data ) { - $to->add_data( $data, $code ); - } - } } } diff --git a/wp-includes/class-wp-fatal-error-handler.php b/wp-includes/class-wp-fatal-error-handler.php deleted file mode 100644 index 8715ef8..0000000 --- a/wp-includes/class-wp-fatal-error-handler.php +++ /dev/null @@ -1,241 +0,0 @@ -<?php -/** - * Error Protection API: WP_Fatal_Error_Handler class - * - * @package ClassicPress - * @since 5.2.0 - */ - -/** - * Core class used as the default shutdown handler for fatal errors. - * - * A drop-in 'fatal-error-handler.php' can be used to override the instance of this class and use a custom - * implementation for the fatal error handler that WordPress registers. The custom class should extend this class and - * can override its methods individually as necessary. The file must return the instance of the class that should be - * registered. - * - * @since 5.2.0 - */ -#[AllowDynamicProperties] -class WP_Fatal_Error_Handler { - - /** - * Runs the shutdown handler. - * - * This method is registered via `register_shutdown_function()`. - * - * @since 5.2.0 - */ - public function handle() { - if ( defined( 'WP_SANDBOX_SCRAPING' ) && WP_SANDBOX_SCRAPING ) { - return; - } - - // Do not trigger the fatal error handler while updates are being installed. - if ( wp_is_maintenance_mode() ) { - return; - } - - try { - // Bail if no error found. - $error = $this->detect_error(); - if ( ! $error ) { - return; - } - - if ( ! isset( $GLOBALS['wp_locale'] ) && function_exists( 'load_default_textdomain' ) ) { - load_default_textdomain(); - } - - $handled = false; - - if ( ! is_multisite() && wp_recovery_mode()->is_initialized() ) { - $handled = wp_recovery_mode()->handle_error( $error ); - } - - // Display the PHP error template if headers not sent. - if ( is_admin() || ! headers_sent() ) { - $this->display_error_template( $error, $handled ); - } - } catch ( Exception $e ) { - // Catch exceptions and remain silent. - } - } - - /** - * Detects the error causing the crash if it should be handled. - * - * @since 5.2.0 - * - * @return array|null Error information returned by `error_get_last()`, or null - * if none was recorded or the error should not be handled. - */ - protected function detect_error() { - $error = error_get_last(); - - // No error, just skip the error handling code. - if ( null === $error ) { - return null; - } - - // Bail if this error should not be handled. - if ( ! $this->should_handle_error( $error ) ) { - return null; - } - - return $error; - } - - /** - * Determines whether we are dealing with an error that WordPress should handle - * in order to protect the admin backend against WSODs. - * - * @since 5.2.0 - * - * @param array $error Error information retrieved from `error_get_last()`. - * @return bool Whether WordPress should handle this error. - */ - protected function should_handle_error( $error ) { - $error_types_to_handle = array( - E_ERROR, - E_PARSE, - E_USER_ERROR, - E_COMPILE_ERROR, - E_RECOVERABLE_ERROR, - ); - - if ( isset( $error['type'] ) && in_array( $error['type'], $error_types_to_handle, true ) ) { - return true; - } - - /** - * Filters whether a given thrown error should be handled by the fatal error handler. - * - * This filter is only fired if the error is not already configured to be handled by WordPress core. As such, - * it exclusively allows adding further rules for which errors should be handled, but not removing existing - * ones. - * - * @since 5.2.0 - * - * @param bool $should_handle_error Whether the error should be handled by the fatal error handler. - * @param array $error Error information retrieved from `error_get_last()`. - */ - return (bool) apply_filters( 'wp_should_handle_php_error', false, $error ); - } - - /** - * Displays the PHP error template and sends the HTTP status code, typically 500. - * - * A drop-in 'php-error.php' can be used as a custom template. This drop-in should control the HTTP status code and - * print the HTML markup indicating that a PHP error occurred. Note that this drop-in may potentially be executed - * very early in the WordPress bootstrap process, so any core functions used that are not part of - * `wp-includes/load.php` should be checked for before being called. - * - * If no such drop-in is available, this will call {@see WP_Fatal_Error_Handler::display_default_error_template()}. - * - * @since 5.2.0 - * @since 5.3.0 The `$handled` parameter was added. - * - * @param array $error Error information retrieved from `error_get_last()`. - * @param true|WP_Error $handled Whether Recovery Mode handled the fatal error. - */ - protected function display_error_template( $error, $handled ) { - if ( defined( 'WP_CONTENT_DIR' ) ) { - // Load custom PHP error template, if present. - $php_error_pluggable = WP_CONTENT_DIR . '/php-error.php'; - if ( is_readable( $php_error_pluggable ) ) { - require_once $php_error_pluggable; - - return; - } - } - - // Otherwise, display the default error template. - $this->display_default_error_template( $error, $handled ); - } - - /** - * Displays the default PHP error template. - * - * This method is called conditionally if no 'php-error.php' drop-in is available. - * - * It calls {@see wp_die()} with a message indicating that the site is experiencing technical difficulties and a - * login link to the admin backend. The {@see 'wp_php_error_message'} and {@see 'wp_php_error_args'} filters can - * be used to modify these parameters. - * - * @since 5.2.0 - * @since 5.3.0 The `$handled` parameter was added. - * - * @param array $error Error information retrieved from `error_get_last()`. - * @param true|WP_Error $handled Whether Recovery Mode handled the fatal error. - */ - protected function display_default_error_template( $error, $handled ) { - if ( ! function_exists( '__' ) ) { - wp_load_translations_early(); - } - - if ( ! function_exists( 'wp_die' ) ) { - require_once ABSPATH . WPINC . '/functions.php'; - } - - if ( ! class_exists( 'WP_Error' ) ) { - require_once ABSPATH . WPINC . '/class-wp-error.php'; - } - - if ( true === $handled && wp_is_recovery_mode() ) { - $message = __( 'There has been a critical error on this website, putting it in recovery mode. Please check the Themes and Plugins screens for more details. If you just installed or updated a theme or plugin, check the relevant page for that first.' ); - } elseif ( is_protected_endpoint() && wp_recovery_mode()->is_initialized() ) { - if ( is_multisite() ) { - $message = __( 'There has been a critical error on this website. Please reach out to your site administrator, and inform them of this error for further assistance.' ); - } else { - $message = __( 'There has been a critical error on this website. Please check your site admin email inbox for instructions.' ); - } - } else { - $message = __( 'There has been a critical error on this website.' ); - } - - $message = sprintf( - '<p>%s</p><p><a href="%s">%s</a></p>', - $message, - /* translators: Documentation about troubleshooting. */ - __( 'https://wordpress.org/documentation/article/faq-troubleshooting/' ), - __( 'Learn more about troubleshooting ClassicPress.' ) - ); - - $args = array( - 'response' => 500, - 'exit' => false, - ); - - /** - * Filters the message that the default PHP error template displays. - * - * @since 5.2.0 - * - * @param string $message HTML error message to display. - * @param array $error Error information retrieved from `error_get_last()`. - */ - $message = apply_filters( 'wp_php_error_message', $message, $error ); - - /** - * Filters the arguments passed to {@see wp_die()} for the default PHP error template. - * - * @since 5.2.0 - * - * @param array $args Associative array of arguments passed to `wp_die()`. By default these contain a - * 'response' key, and optionally 'link_url' and 'link_text' keys. - * @param array $error Error information retrieved from `error_get_last()`. - */ - $args = apply_filters( 'wp_php_error_args', $args, $error ); - - $wp_error = new WP_Error( - 'internal_server_error', - $message, - array( - 'error' => $error, - ) - ); - - wp_die( $wp_error, '', $args ); - } -} diff --git a/wp-includes/class-wp-feed-cache-transient.php b/wp-includes/class-wp-feed-cache-transient.php index 436b6e6..a34789b 100644 --- a/wp-includes/class-wp-feed-cache-transient.php +++ b/wp-includes/class-wp-feed-cache-transient.php @@ -4,21 +4,20 @@ * * @package ClassicPress * @subpackage Feed - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Core class used to implement feed cache transients. * - * @since 2.8.0 + * @since WP-2.8.0 */ -#[AllowDynamicProperties] class WP_Feed_Cache_Transient { /** * Holds the transient name. * - * @since 2.8.0 + * @since WP-2.8.0 * @var string */ public $name; @@ -26,7 +25,7 @@ class WP_Feed_Cache_Transient { /** * Holds the transient mod name. * - * @since 2.8.0 + * @since WP-2.8.0 * @var string */ public $mod_name; @@ -36,7 +35,7 @@ class WP_Feed_Cache_Transient { * * Defaults to 43200 seconds (12 hours). * - * @since 2.8.0 + * @since WP-2.8.0 * @var int */ public $lifetime = 43200; @@ -44,8 +43,8 @@ class WP_Feed_Cache_Transient { /** * Constructor. * - * @since 2.8.0 - * @since 3.2.0 Updated to use a PHP5 constructor. + * @since WP-2.8.0 + * @since WP-3.2.0 Updated to use a PHP5 constructor. * * @param string $location URL location (scheme is used to determine handler). * @param string $filename Unique identifier for cache object. @@ -59,7 +58,7 @@ public function __construct( $location, $filename, $extension ) { /** * Filters the transient lifetime of the feed cache. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param int $lifetime Cache duration in seconds. Default is 43200 seconds (12 hours). * @param string $filename Unique identifier for the cache object. @@ -70,7 +69,7 @@ public function __construct( $location, $filename, $extension ) { /** * Sets the transient. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param SimplePie $data Data to save. * @return true Always true. @@ -88,7 +87,7 @@ public function save( $data ) { /** * Gets the transient. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return mixed Transient value. */ @@ -99,7 +98,7 @@ public function load() { /** * Gets mod transient. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return mixed Transient value. */ @@ -110,7 +109,7 @@ public function mtime() { /** * Sets mod transient. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return bool False if value was not set and true if value was set. */ @@ -121,7 +120,7 @@ public function touch() { /** * Deletes transients. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return true Always true. */ diff --git a/wp-includes/class-wp-feed-cache.php b/wp-includes/class-wp-feed-cache.php index bd891eb..40430b5 100644 --- a/wp-includes/class-wp-feed-cache.php +++ b/wp-includes/class-wp-feed-cache.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Feed - * @since 4.7.0 - * @deprecated 5.6.0 + * @since WP-4.7.0 + * @deprecated WP-5.6.0 */ _deprecated_file( basename( __FILE__ ), - '5.6.0', + 'WP-5.6.0', '', __( 'This file is only loaded for backward compatibility with SimplePie 1.2.x. Please consider switching to a recent SimplePie version.' ) ); @@ -18,17 +18,16 @@ /** * Core class used to implement a feed cache. * - * @since 2.8.0 + * @since WP-2.8.0 * * @see SimplePie_Cache */ -#[AllowDynamicProperties] class WP_Feed_Cache extends SimplePie_Cache { /** * Creates a new SimplePie_Cache object. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $location URL location (scheme is used to determine handler). * @param string $filename Unique identifier for cache object. diff --git a/wp-includes/class-wp-hook.php b/wp-includes/class-wp-hook.php index 5c8e9a6..3e62938 100644 --- a/wp-includes/class-wp-hook.php +++ b/wp-includes/class-wp-hook.php @@ -4,24 +4,23 @@ * * @package ClassicPress * @subpackage Plugin - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Core class used to implement action and filter hook functionality. * - * @since 4.7.0 + * @since WP-4.7.0 * * @see Iterator * @see ArrayAccess */ -#[AllowDynamicProperties] final class WP_Hook implements Iterator, ArrayAccess { /** * Hook callbacks. * - * @since 4.7.0 + * @since WP-4.7.0 * @var array */ public $callbacks = array(); @@ -29,7 +28,7 @@ final class WP_Hook implements Iterator, ArrayAccess { /** * The priority keys of actively running iterations of a hook. * - * @since 4.7.0 + * @since WP-4.7.0 * @var array */ private $iterations = array(); @@ -37,7 +36,7 @@ final class WP_Hook implements Iterator, ArrayAccess { /** * The current priority of actively running iterations of a hook. * - * @since 4.7.0 + * @since WP-4.7.0 * @var array */ private $current_priority = array(); @@ -45,43 +44,42 @@ final class WP_Hook implements Iterator, ArrayAccess { /** * Number of levels this hook can be recursively called. * - * @since 4.7.0 + * @since WP-4.7.0 * @var int */ private $nesting_level = 0; /** - * Flag for if we're currently doing an action, rather than a filter. + * Flag for if we're current doing an action, rather than a filter. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ private $doing_action = false; /** - * Adds a callback function to a filter hook. + * Hooks a function or method to a specific filter action. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param string $hook_name The name of the filter to add the callback to. - * @param callable $callback The callback to be run when the filter is applied. - * @param int $priority The order in which the functions associated with a particular filter - * are executed. Lower numbers correspond with earlier execution, - * and functions with the same priority are executed in the order - * in which they were added to the filter. - * @param int $accepted_args The number of arguments the function accepts. + * @param string $tag The name of the filter to hook the $function_to_add callback to. + * @param callable $function_to_add The callback to be run when the filter is applied. + * @param int $priority The order in which the functions associated with a + * particular action are executed. Lower numbers correspond with + * earlier execution, and functions with the same priority are executed + * in the order in which they were added to the action. + * @param int $accepted_args The number of arguments the function accepts. */ - public function add_filter( $hook_name, $callback, $priority, $accepted_args ) { - $idx = _wp_filter_build_unique_id( $hook_name, $callback, $priority ); - + public function add_filter( $tag, $function_to_add, $priority, $accepted_args ) { + $idx = _wp_filter_build_unique_id( $tag, $function_to_add, $priority ); $priority_existed = isset( $this->callbacks[ $priority ] ); $this->callbacks[ $priority ][ $idx ] = array( - 'function' => $callback, + 'function' => $function_to_add, 'accepted_args' => $accepted_args, ); - // If we're adding a new priority to the list, put them back in sorted order. + // if we're adding a new priority to the list, put them back in sorted order if ( ! $priority_existed && count( $this->callbacks ) > 1 ) { ksort( $this->callbacks, SORT_NUMERIC ); } @@ -92,14 +90,14 @@ public function add_filter( $hook_name, $callback, $priority, $accepted_args ) { } /** - * Handles resetting callback priority keys mid-iteration. + * Handles reseting callback priority keys mid-iteration. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param false|int $new_priority Optional. The priority of the new filter being added. Default false, - * for no priority being added. - * @param bool $priority_existed Optional. Flag for whether the priority already existed before the new - * filter was added. Default false. + * @param bool|int $new_priority Optional. The priority of the new filter being added. Default false, + * for no priority being added. + * @param bool $priority_existed Optional. Flag for whether the priority already existed before the new + * filter was added. Default false. */ private function resort_active_iterations( $new_priority = false, $priority_existed = false ) { $new_priorities = array_keys( $this->callbacks ); @@ -109,15 +107,12 @@ private function resort_active_iterations( $new_priority = false, $priority_exis foreach ( $this->iterations as $index => $iteration ) { $this->iterations[ $index ] = $new_priorities; } - return; } $min = min( $new_priorities ); - foreach ( $this->iterations as $index => &$iteration ) { $current = current( $iteration ); - // If we're already at the end of this iteration, just leave the array pointer where it is. if ( false === $current ) { continue; @@ -139,7 +134,7 @@ private function resort_active_iterations( $new_priority = false, $priority_exis // If we have a new priority that didn't exist, but ::apply_filters() or ::do_action() thinks it's the current priority... if ( $new_priority === $this->current_priority[ $index ] && ! $priority_existed ) { /* - * ...and the new priority is the same as what $this->iterations thinks is the previous + * ... and the new priority is the same as what $this->iterations thinks is the previous * priority, we need to move back to it. */ @@ -150,7 +145,6 @@ private function resort_active_iterations( $new_priority = false, $priority_exis // Otherwise, just go back to the previous element. $prev = prev( $iteration ); } - if ( false === $prev ) { // Start of the array. Reset, and go about our day. reset( $iteration ); @@ -160,65 +154,52 @@ private function resort_active_iterations( $new_priority = false, $priority_exis } } } - unset( $iteration ); } /** - * Removes a callback function from a filter hook. + * Unhooks a function or method from a specific filter action. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param string $hook_name The filter hook to which the function to be removed is hooked. - * @param callable|string|array $callback The callback to be removed from running when the filter is applied. - * This method can be called unconditionally to speculatively remove - * a callback that may or may not exist. - * @param int $priority The exact priority used when adding the original filter callback. + * @param string $tag The filter hook to which the function to be removed is hooked. Used + * for building the callback ID when SPL is not available. + * @param callable $function_to_remove The callback to be removed from running when the filter is applied. + * @param int $priority The exact priority used when adding the original filter callback. * @return bool Whether the callback existed before it was removed. */ - public function remove_filter( $hook_name, $callback, $priority ) { - $function_key = _wp_filter_build_unique_id( $hook_name, $callback, $priority ); + public function remove_filter( $tag, $function_to_remove, $priority ) { + $function_key = _wp_filter_build_unique_id( $tag, $function_to_remove, $priority ); $exists = isset( $this->callbacks[ $priority ][ $function_key ] ); - if ( $exists ) { unset( $this->callbacks[ $priority ][ $function_key ] ); - if ( ! $this->callbacks[ $priority ] ) { unset( $this->callbacks[ $priority ] ); - if ( $this->nesting_level > 0 ) { $this->resort_active_iterations(); } } } - return $exists; } /** - * Checks if a specific callback has been registered for this hook. - * - * When using the `$callback` argument, this function may return a non-boolean value - * that evaluates to false (e.g. 0), so use the `===` operator for testing the return value. + * Checks if a specific action has been registered for this hook. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param string $hook_name Optional. The name of the filter hook. Default empty. - * @param callable|string|array|false $callback Optional. The callback to check for. - * This method can be called unconditionally to speculatively check - * a callback that may or may not exist. Default false. - * @return bool|int If `$callback` is omitted, returns boolean for whether the hook has - * anything registered. When checking a specific function, the priority - * of that hook is returned, or false if the function is not attached. + * @param string $tag Optional. The name of the filter hook. Used for building + * the callback ID when SPL is not available. Default empty. + * @param callable|bool $function_to_check Optional. The callback to check for. Default false. + * @return bool|int The priority of that hook is returned, or false if the function is not attached. */ - public function has_filter( $hook_name = '', $callback = false ) { - if ( false === $callback ) { + public function has_filter( $tag = '', $function_to_check = false ) { + if ( false === $function_to_check ) { return $this->has_filters(); } - $function_key = _wp_filter_build_unique_id( $hook_name, $callback, false ); - + $function_key = _wp_filter_build_unique_id( $tag, $function_to_check, false ); if ( ! $function_key ) { return false; } @@ -235,7 +216,7 @@ public function has_filter( $hook_name = '', $callback = false ) { /** * Checks if any callbacks have been registered for this hook. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return bool True if callbacks have been registered for the current hook, otherwise false. */ @@ -245,16 +226,15 @@ public function has_filters() { return true; } } - return false; } /** * Removes all callbacks from the current filter. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param int|false $priority Optional. The priority number to remove. Default false. + * @param int|bool $priority Optional. The priority number to remove. Default false. */ public function remove_all_filters( $priority = false ) { if ( ! $this->callbacks ) { @@ -273,13 +253,12 @@ public function remove_all_filters( $priority = false ) { } /** - * Calls the callback functions that have been added to a filter hook. + * Calls the callback functions added to a filter hook. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param mixed $value The value to filter. - * @param array $args Additional parameters to pass to the callback functions. - * This array is expected to include $value at index 0. + * @param array $args Arguments to pass to callbacks. * @return mixed The filtered value after all hooked functions are applied to it. */ public function apply_filters( $value, $args ) { @@ -301,9 +280,9 @@ public function apply_filters( $value, $args ) { $args[0] = $value; } - // Avoid the array_slice() if possible. + // Avoid the array_slice if possible. if ( 0 == $the_['accepted_args'] ) { - $value = call_user_func( $the_['function'] ); + $value = call_user_func_array( $the_['function'], array() ); } elseif ( $the_['accepted_args'] >= $num_args ) { $value = call_user_func_array( $the_['function'], $args ); } else { @@ -321,11 +300,11 @@ public function apply_filters( $value, $args ) { } /** - * Calls the callback functions that have been added to an action hook. + * Executes the callback functions hooked on a specific action hook. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param array $args Parameters to pass to the callback functions. + * @param mixed $args Arguments to pass to the hook callbacks. */ public function do_action( $args ) { $this->doing_action = true; @@ -340,7 +319,7 @@ public function do_action( $args ) { /** * Processes the functions hooked into the 'all' hook. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $args Arguments to pass to the hook callbacks. Passed by reference. */ @@ -350,7 +329,6 @@ public function do_all_hook( &$args ) { do { $priority = current( $this->iterations[ $nesting_level ] ); - foreach ( $this->callbacks[ $priority ] as $the_ ) { call_user_func_array( $the_['function'], $args ); } @@ -363,10 +341,9 @@ public function do_all_hook( &$args ) { /** * Return the current priority level of the currently running iteration of the hook. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @return int|false If the hook is running, return the current priority level. - * If it isn't running, return false. + * @return int|false If the hook is running, return the current priority level. If it isn't running, return false. */ public function current_priority() { if ( false === current( $this->iterations ) ) { @@ -377,44 +354,23 @@ public function current_priority() { } /** - * Normalizes filters set up before WordPress has initialized to WP_Hook objects. - * - * The `$filters` parameter should be an array keyed by hook name, with values - * containing either: - * - * - A `WP_Hook` instance - * - An array of callbacks keyed by their priorities - * - * Examples: + * Normalizes filters set up before ClassicPress has initialized to WP_Hook objects. * - * $filters = array( - * 'wp_fatal_error_handler_enabled' => array( - * 10 => array( - * array( - * 'accepted_args' => 0, - * 'function' => function() { - * return false; - * }, - * ), - * ), - * ), - * ); + * @since WP-4.7.0 + * @static * - * @since 4.7.0 - * - * @param array $filters Filters to normalize. See documentation above for details. + * @param array $filters Filters to normalize. * @return WP_Hook[] Array of normalized filters. */ public static function build_preinitialized_hooks( $filters ) { /** @var WP_Hook[] $normalized */ $normalized = array(); - foreach ( $filters as $hook_name => $callback_groups ) { + foreach ( $filters as $tag => $callback_groups ) { if ( is_object( $callback_groups ) && $callback_groups instanceof WP_Hook ) { - $normalized[ $hook_name ] = $callback_groups; + $normalized[ $tag ] = $callback_groups; continue; } - $hook = new WP_Hook(); // Loop through callback groups. @@ -422,27 +378,24 @@ public static function build_preinitialized_hooks( $filters ) { // Loop through callbacks. foreach ( $callbacks as $cb ) { - $hook->add_filter( $hook_name, $cb['function'], $priority, $cb['accepted_args'] ); + $hook->add_filter( $tag, $cb['function'], $priority, $cb['accepted_args'] ); } } - - $normalized[ $hook_name ] = $hook; + $normalized[ $tag ] = $hook; } - return $normalized; } /** * Determines whether an offset value exists. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/arrayaccess.offsetexists.php + * @link https://secure.php.net/manual/en/arrayaccess.offsetexists.php * * @param mixed $offset An offset to check for. * @return bool True if the offset exists, false otherwise. */ - #[ReturnTypeWillChange] public function offsetExists( $offset ) { return isset( $this->callbacks[ $offset ] ); } @@ -450,14 +403,13 @@ public function offsetExists( $offset ) { /** * Retrieves a value at a specified offset. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/arrayaccess.offsetget.php + * @link https://secure.php.net/manual/en/arrayaccess.offsetget.php * * @param mixed $offset The offset to retrieve. * @return mixed If set, the value at the specified offset, null otherwise. */ - #[ReturnTypeWillChange] public function offsetGet( $offset ) { return isset( $this->callbacks[ $offset ] ) ? $this->callbacks[ $offset ] : null; } @@ -465,14 +417,13 @@ public function offsetGet( $offset ) { /** * Sets a value at a specified offset. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/arrayaccess.offsetset.php + * @link https://secure.php.net/manual/en/arrayaccess.offsetset.php * * @param mixed $offset The offset to assign the value to. * @param mixed $value The value to set. */ - #[ReturnTypeWillChange] public function offsetSet( $offset, $value ) { if ( is_null( $offset ) ) { $this->callbacks[] = $value; @@ -484,13 +435,12 @@ public function offsetSet( $offset, $value ) { /** * Unsets a specified offset. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/arrayaccess.offsetunset.php + * @link https://secure.php.net/manual/en/arrayaccess.offsetunset.php * * @param mixed $offset The offset to unset. */ - #[ReturnTypeWillChange] public function offsetUnset( $offset ) { unset( $this->callbacks[ $offset ] ); } @@ -498,13 +448,12 @@ public function offsetUnset( $offset ) { /** * Returns the current element. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/iterator.current.php + * @link https://secure.php.net/manual/en/iterator.current.php * * @return array Of callbacks at current priority. */ - #[ReturnTypeWillChange] public function current() { return current( $this->callbacks ); } @@ -512,13 +461,12 @@ public function current() { /** * Moves forward to the next element. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/iterator.next.php + * @link https://secure.php.net/manual/en/iterator.next.php * * @return array Of callbacks at next priority. */ - #[ReturnTypeWillChange] public function next() { return next( $this->callbacks ); } @@ -526,13 +474,12 @@ public function next() { /** * Returns the key of the current element. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/iterator.key.php + * @link https://secure.php.net/manual/en/iterator.key.php * * @return mixed Returns current priority on success, or NULL on failure */ - #[ReturnTypeWillChange] public function key() { return key( $this->callbacks ); } @@ -540,13 +487,12 @@ public function key() { /** * Checks if current position is valid. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/iterator.valid.php + * @link https://secure.php.net/manual/en/iterator.valid.php * - * @return bool Whether the current position is valid. + * @return boolean */ - #[ReturnTypeWillChange] public function valid() { return key( $this->callbacks ) !== null; } @@ -554,12 +500,12 @@ public function valid() { /** * Rewinds the Iterator to the first element. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @link https://www.php.net/manual/en/iterator.rewind.php + * @link https://secure.php.net/manual/en/iterator.rewind.php */ - #[ReturnTypeWillChange] public function rewind() { reset( $this->callbacks ); } + } diff --git a/wp-includes/class-wp-http-cookie.php b/wp-includes/class-wp-http-cookie.php index 822d218..12eb1bd 100644 --- a/wp-includes/class-wp-http-cookie.php +++ b/wp-includes/class-wp-http-cookie.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -13,19 +13,17 @@ * Returned cookies are represented using this class, and when cookies are set, if they are not * already a WP_Http_Cookie() object, then they are turned into one. * - * @todo The WordPress convention is to use underscores instead of camelCase for function and method + * @todo The ClassicPress convention is to use underscores instead of camelCase for function and method * names. Need to switch to use underscores instead for the methods. * - * @since 2.8.0 + * @since WP-2.8.0 */ -#[AllowDynamicProperties] class WP_Http_Cookie { /** * Cookie name. * - * @since 2.8.0 - * + * @since WP-2.8.0 * @var string */ public $name; @@ -33,26 +31,23 @@ class WP_Http_Cookie { /** * Cookie value. * - * @since 2.8.0 - * + * @since WP-2.8.0 * @var string */ public $value; /** - * When the cookie expires. Unix timestamp or formatted date. + * When the cookie expires. * - * @since 2.8.0 - * - * @var string|int|null + * @since WP-2.8.0 + * @var string */ public $expires; /** * Cookie URL path. * - * @since 2.8.0 - * + * @since WP-2.8.0 * @var string */ public $path; @@ -60,61 +55,40 @@ class WP_Http_Cookie { /** * Cookie Domain. * - * @since 2.8.0 - * + * @since WP-2.8.0 * @var string */ public $domain; - /** - * Cookie port or comma-separated list of ports. - * - * @since 2.8.0 - * - * @var int|string - */ - public $port; - - /** - * host-only flag. - * - * @since 5.2.0 - * - * @var bool - */ - public $host_only; - /** * Sets up this cookie object. * * The parameter $data should be either an associative array containing the indices names below * or a header string detailing it. * - * @since 2.8.0 - * @since 5.2.0 Added `host_only` to the `$data` parameter. + * @since WP-2.8.0 * * @param string|array $data { * Raw cookie data as header string or data array. * - * @type string $name Cookie name. - * @type mixed $value Value. Should NOT already be urlencoded. - * @type string|int|null $expires Optional. Unix timestamp or formatted date. Default null. - * @type string $path Optional. Path. Default '/'. - * @type string $domain Optional. Domain. Default host of parsed $requested_url. - * @type int|string $port Optional. Port or comma-separated list of ports. Default null. - * @type bool $host_only Optional. host-only storage flag. Default true. + * @type string $name Cookie name. + * @type mixed $value Value. Should NOT already be urlencoded. + * @type string|int $expires Optional. Unix timestamp or formatted date. Default null. + * @type string $path Optional. Path. Default '/'. + * @type string $domain Optional. Domain. Default host of parsed $requested_url. + * @type int $port Optional. Port. Default null. * } * @param string $requested_url The URL which the cookie was set on, used for default $domain * and $port values. */ public function __construct( $data, $requested_url = '' ) { if ( $requested_url ) { - $parsed_url = parse_url( $requested_url ); + $arrURL = @parse_url( $requested_url ); } - if ( isset( $parsed_url['host'] ) ) { - $this->domain = $parsed_url['host']; + if ( isset( $arrURL['host'] ) ) { + $this->domain = $arrURL['host']; } - $this->path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : '/'; + $this->path = isset( $arrURL['path'] ) ? $arrURL['path'] : '/'; if ( '/' !== substr( $this->path, -1 ) ) { $this->path = dirname( $this->path ) . '/'; } @@ -154,7 +128,7 @@ public function __construct( $data, $requested_url = '' ) { } // Set properties based directly on parameters. - foreach ( array( 'name', 'value', 'path', 'domain', 'port', 'host_only' ) as $field ) { + foreach ( array( 'name', 'value', 'path', 'domain', 'port' ) as $field ) { if ( isset( $data[ $field ] ) ) { $this->$field = $data[ $field ]; } @@ -173,7 +147,7 @@ public function __construct( $data, $requested_url = '' ) { * * Decision is based on RFC 2109/2965, so look there for details on validity. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $url URL you intend to send this cookie to * @return bool true if allowed, false otherwise. @@ -203,7 +177,7 @@ public function test( $url ) { // Host - very basic check that the request URL ends with the domain restriction (minus leading dot). $domain = ( '.' === substr( $domain, 0, 1 ) ) ? substr( $domain, 1 ) : $domain; - if ( substr( $url['host'], -strlen( $domain ) ) !== $domain ) { + if ( substr( $url['host'], -strlen( $domain ) ) != $domain ) { return false; } @@ -213,7 +187,7 @@ public function test( $url ) { } // Path - request path must start with path restriction. - if ( substr( $url['path'], 0, strlen( $path ) ) !== $path ) { + if ( substr( $url['path'], 0, strlen( $path ) ) != $path ) { return false; } @@ -223,7 +197,7 @@ public function test( $url ) { /** * Convert cookie name and value back to header string. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string Header encoded cookie name and value. */ @@ -235,7 +209,7 @@ public function getHeaderValue() { // phpcs:ignore WordPress.NamingConventions.V /** * Filters the header-encoded cookie value. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $value The cookie value. * @param string $name The cookie name. @@ -244,9 +218,9 @@ public function getHeaderValue() { // phpcs:ignore WordPress.NamingConventions.V } /** - * Retrieve cookie header for usage in the rest of the WordPress HTTP API. + * Retrieve cookie header for usage in the rest of the ClassicPress HTTP API. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string */ @@ -257,14 +231,14 @@ public function getFullHeader() { // phpcs:ignore WordPress.NamingConventions.Va /** * Retrieves cookie attributes. * - * @since 4.6.0 + * @since WP-4.6.0 * * @return array { - * List of attributes. + * List of attributes. * - * @type string|int|null $expires When the cookie expires. Unix timestamp or formatted date. - * @type string $path Cookie URL path. - * @type string $domain Cookie domain. + * @type string $expires When the cookie expires. + * @type string $path Cookie URL path. + * @type string $domain Cookie domain. * } */ public function get_attributes() { diff --git a/wp-includes/class-wp-http-curl.php b/wp-includes/class-wp-http-curl.php index 10c22f8..a102317 100644 --- a/wp-includes/class-wp-http-curl.php +++ b/wp-includes/class-wp-http-curl.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -14,15 +14,14 @@ * * Requires the Curl extension to be installed. * - * @since 2.7.0 + * @since WP-2.7.0 */ -#[AllowDynamicProperties] class WP_Http_Curl { /** * Temporary header storage for during requests. * - * @since 3.2.0 + * @since WP-3.2.0 * @var string */ private $headers = ''; @@ -30,7 +29,7 @@ class WP_Http_Curl { /** * Temporary body storage for during requests. * - * @since 3.6.0 + * @since WP-3.6.0 * @var string */ private $body = ''; @@ -38,23 +37,23 @@ class WP_Http_Curl { /** * The maximum amount of data to receive from the remote server. * - * @since 3.6.0 - * @var int|false + * @since WP-3.6.0 + * @var int */ private $max_body_length = false; /** * The file resource used for streaming to file. * - * @since 3.6.0 - * @var resource|false + * @since WP-3.6.0 + * @var resource */ private $stream_handle = false; /** * The total bytes written in the current request. * - * @since 4.1.0 + * @since WP-4.1.0 * @var int */ private $bytes_written_total = 0; @@ -62,9 +61,9 @@ class WP_Http_Curl { /** * Send a HTTP request to a URI using cURL extension. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param string $url The request URL. + * @param string $url The request URL. * @param string|array $args Optional. Override the defaults. * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error */ @@ -114,10 +113,10 @@ public function request( $url, $args = array() ) { $ssl_verify = isset( $parsed_args['sslverify'] ) && $parsed_args['sslverify']; if ( $is_local ) { /** This filter is documented in wp-includes/class-wp-http-streams.php */ - $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify, $url ); + $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify ); } elseif ( ! $is_local ) { - /** This filter is documented in wp-includes/class-wp-http.php */ - $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify, $url ); + /** This filter is documented in wp-includes/class-wp-http-streams.php */ + $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify ); } /* @@ -141,10 +140,12 @@ public function request( $url, $args = array() ) { /* * 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. + * a bug https://core.trac.wordpress.org/ticket/17490 with redirected POST requests, so handle redirections outside Curl. */ curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, false ); - curl_setopt( $handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS ); + if ( defined( 'CURLOPT_PROTOCOLS' ) ) { // PHP 5.2.10 / cURL 7.19.4 + curl_setopt( $handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS ); + } switch ( $parsed_args['method'] ) { case 'HEAD': @@ -174,7 +175,7 @@ public function request( $url, $args = array() ) { curl_setopt( $handle, CURLOPT_HEADER, false ); if ( isset( $parsed_args['limit_response_size'] ) ) { - $this->max_body_length = (int) $parsed_args['limit_response_size']; + $this->max_body_length = intval( $parsed_args['limit_response_size'] ); } else { $this->max_body_length = false; } @@ -190,7 +191,7 @@ public function request( $url, $args = array() ) { return new WP_Error( 'http_request_failed', sprintf( - /* translators: 1: fopen(), 2: File name. */ + /* translators: 1: fopen() 2: file name */ __( 'Could not open handle for %1$s to %2$s.' ), 'fopen()', $parsed_args['filename'] @@ -222,11 +223,11 @@ public function request( $url, $args = array() ) { * Cookies are not currently handled by the HTTP API. This action allows * plugins to handle cookies themselves. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param resource $handle The cURL handle returned by curl_init() (passed by reference). - * @param array $parsed_args The HTTP request arguments. - * @param string $url The request URL. + * @param resource $handle The cURL handle returned by curl_init() (passed by reference). + * @param array $parsed_args The HTTP request arguments. + * @param string $url The request URL. */ do_action_ref_array( 'http_api_curl', array( &$handle, $parsed_args, $url ) ); @@ -257,9 +258,8 @@ public function request( $url, $args = array() ) { } curl_exec( $handle ); - - $processed_headers = WP_Http::processHeaders( $this->headers, $url ); - $body = $this->body; + $theHeaders = WP_Http::processHeaders( $this->headers, $url ); + $theBody = $this->body; $bytes_written_total = $this->bytes_written_total; $this->headers = ''; @@ -269,9 +269,9 @@ public function request( $url, $args = array() ) { $curl_error = curl_errno( $handle ); // If an error occurred, or, no response. - if ( $curl_error || ( 0 === strlen( $body ) && empty( $processed_headers['headers'] ) ) ) { - if ( CURLE_WRITE_ERROR /* 23 */ === $curl_error ) { - if ( ! $this->max_body_length || $this->max_body_length !== $bytes_written_total ) { + if ( $curl_error || ( 0 == strlen( $theBody ) && empty( $theHeaders['headers'] ) ) ) { + if ( CURLE_WRITE_ERROR /* 23 */ == $curl_error ) { + if ( ! $this->max_body_length || $this->max_body_length != $bytes_written_total ) { if ( $parsed_args['stream'] ) { curl_close( $handle ); fclose( $this->stream_handle ); @@ -301,26 +301,24 @@ public function request( $url, $args = array() ) { } $response = array( - 'headers' => $processed_headers['headers'], + 'headers' => $theHeaders['headers'], 'body' => null, - 'response' => $processed_headers['response'], - 'cookies' => $processed_headers['cookies'], + 'response' => $theHeaders['response'], + 'cookies' => $theHeaders['cookies'], 'filename' => $parsed_args['filename'], ); // Handle redirects. - $redirect_response = WP_Http::handle_redirects( $url, $parsed_args, $response ); + $redirect_response = WP_HTTP::handle_redirects( $url, $parsed_args, $response ); if ( false !== $redirect_response ) { return $redirect_response; } - if ( true === $parsed_args['decompress'] - && true === WP_Http_Encoding::should_decode( $processed_headers['headers'] ) - ) { - $body = WP_Http_Encoding::decompress( $body ); + if ( true === $parsed_args['decompress'] && true === WP_Http_Encoding::should_decode( $theHeaders['headers'] ) ) { + $theBody = WP_Http_Encoding::decompress( $theBody ); } - $response['body'] = $body; + $response['body'] = $theBody; return $response; } @@ -331,7 +329,7 @@ public function request( $url, $args = array() ) { * Each header is sent individually to this callback, so we append to the `$header` property * for temporary storage * - * @since 3.2.0 + * @since WP-3.2.0 * * @param resource $handle cURL handle. * @param string $headers cURL request headers. @@ -349,7 +347,7 @@ private function stream_headers( $handle, $headers ) { * property for temporary storage. Returning a length shorter than the length of * `$data` passed in will cause cURL to abort the request with `CURLE_WRITE_ERROR`. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param resource $handle cURL handle. * @param string $data cURL request body. @@ -379,7 +377,8 @@ private function stream_body( $handle, $data ) { /** * Determines whether this class can be used for retrieving a URL. * - * @since 2.7.0 + * @static + * @since WP-2.7.0 * * @param array $args Optional. Array of request arguments. Default empty array. * @return bool False means this class can not be used, true means it can. @@ -402,7 +401,7 @@ public static function test( $args = array() ) { /** * Filters whether cURL can be used as a transport for retrieving a URL. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param bool $use_class Whether the class can be used. Default true. * @param array $args An array of request arguments. diff --git a/wp-includes/class-wp-http-encoding.php b/wp-includes/class-wp-http-encoding.php index a8b8c3e..d5a4e51 100644 --- a/wp-includes/class-wp-http-encoding.php +++ b/wp-includes/class-wp-http-encoding.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,9 +12,8 @@ * * Includes RFC 1950, RFC 1951, and RFC 1952. * - * @since 2.8.0 + * @since WP-2.8.0 */ -#[AllowDynamicProperties] class WP_Http_Encoding { /** @@ -22,13 +21,14 @@ class WP_Http_Encoding { * * Supports the RFC 1951 standard. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string $raw String to compress. - * @param int $level Optional. Compression level, 9 is highest. Default 9. - * @param string $supports Optional, not used. When implemented it will choose - * the right compression based on what the server supports. - * @return string|false Compressed string on success, false on failure. + * @static + * + * @param string $raw String to compress. + * @param int $level Optional, default is 9. Compression level, 9 is highest. + * @param string $supports Optional, not used. When implemented it will choose the right compression based on what the server supports. + * @return string|false False on failure. */ public static function compress( $raw, $level = 9, $supports = null ) { return gzdeflate( $raw, $level ); @@ -42,11 +42,13 @@ public static function compress( $raw, $level = 9, $supports = null ) { * 1952 standard gzip decode will be attempted. If all fail, then the * original compressed string will be returned. * - * @since 2.8.0 + * @since WP-2.8.0 + * + * @static * * @param string $compressed String to decompress. - * @param int $length The optional length of the compressed data. - * @return string|false Decompressed string on success, false on failure. + * @param int $length The optional length of the compressed data. + * @return string|bool False on failure. */ public static function decompress( $compressed, $length = null ) { @@ -89,47 +91,48 @@ public static function decompress( $compressed, $length = null ) { * * Warning: Magic numbers within. Due to the potential different formats that the compressed * data may be returned in, some "magic offsets" are needed to ensure proper decompression - * takes place. For a simple pragmatic way to determine the magic offset in use, see: + * takes place. For a simple progmatic way to determine the magic offset in use, see: * https://core.trac.wordpress.org/ticket/18273 * - * @since 2.8.1 - * + * @since WP-2.8.1 * @link https://core.trac.wordpress.org/ticket/18273 - * @link https://www.php.net/manual/en/function.gzinflate.php#70875 - * @link https://www.php.net/manual/en/function.gzinflate.php#77336 + * @link https://secure.php.net/manual/en/function.gzinflate.php#70875 + * @link https://secure.php.net/manual/en/function.gzinflate.php#77336 + * + * @static * - * @param string $gz_data String to decompress. - * @return string|false Decompressed string on success, false on failure. + * @param string $gzData String to decompress. + * @return string|bool False on failure. */ - public static function compatible_gzinflate( $gz_data ) { + public static function compatible_gzinflate( $gzData ) { // Compressed data might contain a full header, if so strip it for gzinflate(). - if ( "\x1f\x8b\x08" === substr( $gz_data, 0, 3 ) ) { + if ( "\x1f\x8b\x08" === substr( $gzData, 0, 3 ) ) { $i = 10; - $flg = ord( substr( $gz_data, 3, 1 ) ); + $flg = ord( substr( $gzData, 3, 1 ) ); if ( $flg > 0 ) { if ( $flg & 4 ) { - list($xlen) = unpack( 'v', substr( $gz_data, $i, 2 ) ); + list($xlen) = unpack( 'v', substr( $gzData, $i, 2 ) ); $i = $i + 2 + $xlen; } if ( $flg & 8 ) { - $i = strpos( $gz_data, "\0", $i ) + 1; + $i = strpos( $gzData, "\0", $i ) + 1; } if ( $flg & 16 ) { - $i = strpos( $gz_data, "\0", $i ) + 1; + $i = strpos( $gzData, "\0", $i ) + 1; } if ( $flg & 2 ) { $i = $i + 2; } } - $decompressed = @gzinflate( substr( $gz_data, $i, -8 ) ); + $decompressed = @gzinflate( substr( $gzData, $i, -8 ) ); if ( false !== $decompressed ) { return $decompressed; } } // Compressed data from java.util.zip.Deflater amongst others. - $decompressed = @gzinflate( substr( $gz_data, 2 ) ); + $decompressed = @gzinflate( substr( $gzData, 2 ) ); if ( false !== $decompressed ) { return $decompressed; } @@ -140,7 +143,9 @@ public static function compatible_gzinflate( $gz_data ) { /** * What encoding types to accept and their priority values. * - * @since 2.8.0 + * @since WP-2.8.0 + * + * @static * * @param string $url * @param array $args @@ -175,11 +180,12 @@ public static function accept_encoding( $url, $args ) { /** * Filters the allowed encoding types. * - * @since 3.6.0 + * @since WP-3.6.0 * - * @param string[] $type Array of what encoding types to accept and their priority values. - * @param string $url URL of the HTTP request. - * @param array $args HTTP request arguments. + * @param array $type Encoding types allowed. Accepts 'gzinflate', + * 'gzuncompress', 'gzdecode'. + * @param string $url URL of the HTTP request. + * @param array $args HTTP request arguments. */ $type = apply_filters( 'wp_http_accept_encoding', $type, $url, $args ); @@ -189,7 +195,9 @@ public static function accept_encoding( $url, $args ) { /** * What encoding the content used when it was compressed to send in the headers. * - * @since 2.8.0 + * @since WP-2.8.0 + * + * @static * * @return string Content-Encoding string to send in the header. */ @@ -200,7 +208,9 @@ public static function content_encoding() { /** * Whether the content be decoded based on the headers. * - * @since 2.8.0 + * @since WP-2.8.0 + * + * @static * * @param array|string $headers All of the available headers. * @return bool @@ -224,7 +234,9 @@ public static function should_decode( $headers ) { * ensure that the functions all exist in the PHP version and aren't * disabled. * - * @since 2.8.0 + * @since WP-2.8.0 + * + * @static * * @return bool */ diff --git a/wp-includes/class-wp-http-ixr-client.php b/wp-includes/class-wp-http-ixr-client.php index ced135b..a449f31 100644 --- a/wp-includes/class-wp-http-ixr-client.php +++ b/wp-includes/class-wp-http-ixr-client.php @@ -3,9 +3,9 @@ * WP_HTTP_IXR_Client * * @package ClassicPress - * @since 3.1.0 + * @since WP-3.1.0 + * */ -#[AllowDynamicProperties] class WP_HTTP_IXR_Client extends IXR_Client { public $scheme; /** @@ -14,21 +14,21 @@ class WP_HTTP_IXR_Client extends IXR_Client { public $error; /** - * @param string $server - * @param string|false $path - * @param int|false $port - * @param int $timeout + * @param string $server + * @param string|bool $path + * @param int|bool $port + * @param int $timeout */ public function __construct( $server, $path = false, $port = false, $timeout = 15 ) { if ( ! $path ) { - // Assume we have been given a URL instead. + // Assume we have been given a URL instead $bits = parse_url( $server ); $this->scheme = $bits['scheme']; $this->server = $bits['host']; $this->port = isset( $bits['port'] ) ? $bits['port'] : $port; $this->path = ! empty( $bits['path'] ) ? $bits['path'] : '/'; - // Make absolutely sure we have a path. + // Make absolutely sure we have a path if ( ! $this->path ) { $this->path = '/'; } @@ -47,13 +47,10 @@ public function __construct( $server, $path = false, $port = false, $timeout = 1 } /** - * @since 3.1.0 - * @since 5.5.0 Formalized the existing `...$args` parameter by adding it - * to the function signature. - * * @return bool */ - public function query( ...$args ) { + public function query() { + $args = func_get_args(); $method = array_shift( $args ); $request = new IXR_Request( $method, $args ); $xml = $request->getXml(); @@ -66,7 +63,7 @@ public function query( ...$args ) { 'body' => $xml, ); - // Merge Custom headers ala #8145. + // Merge Custom headers ala https://core.trac.wordpress.org/ticket/8145 foreach ( $this->headers as $header => $value ) { $args['headers'][ $header ] = $value; } @@ -74,9 +71,9 @@ public function query( ...$args ) { /** * Filters the headers collection to be sent to the XML-RPC server. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param string[] $headers Associative array of headers to be sent. + * @param array $headers Array of headers to be sent. */ $args['headers'] = apply_filters( 'wp_http_ixr_client_headers', $args['headers'] ); @@ -84,7 +81,7 @@ public function query( ...$args ) { $args['timeout'] = $this->timeout; } - // Now send the request. + // Now send the request if ( $this->debug ) { echo '<pre class="ixr_request">' . htmlspecialchars( $xml ) . "\n</pre>\n\n"; } @@ -98,7 +95,7 @@ public function query( ...$args ) { return false; } - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { + if ( 200 != wp_remote_retrieve_response_code( $response ) ) { $this->error = new IXR_Error( -32301, 'transport error - HTTP status code was not 200 (' . wp_remote_retrieve_response_code( $response ) . ')' ); return false; } @@ -107,10 +104,10 @@ public function query( ...$args ) { echo '<pre class="ixr_response">' . htmlspecialchars( wp_remote_retrieve_body( $response ) ) . "\n</pre>\n\n"; } - // Now parse what we've got back. + // Now parse what we've got back $this->message = new IXR_Message( wp_remote_retrieve_body( $response ) ); if ( ! $this->message->parse() ) { - // XML error. + // XML error $this->error = new IXR_Error( -32700, 'parse error. not well formed' ); return false; } @@ -121,7 +118,7 @@ public function query( ...$args ) { return false; } - // Message must be OK. + // Message must be OK return true; } } diff --git a/wp-includes/class-wp-http-proxy.php b/wp-includes/class-wp-http-proxy.php index 5db9bdc..be0f21b 100644 --- a/wp-includes/class-wp-http-proxy.php +++ b/wp-includes/class-wp-http-proxy.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -25,7 +25,7 @@ * <li>WP_PROXY_PASSWORD - Proxy password, if it requires authentication.</li> * <li>WP_PROXY_BYPASS_HOSTS - Will prevent the hosts in this list from going through the proxy. * You do not need to have localhost and the site host in this list, because they will not be passed - * through the proxy. The list should be presented in a comma separated list, wildcards using * are supported. Example: *.wordpress.org</li> + * through the proxy. The list should be presented in a comma separated list, wildcards using * are supported, eg. *.wordpress.org</li> * </ol> * * An example can be as seen below. @@ -34,23 +34,20 @@ * define('WP_PROXY_PORT', '8080'); * define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com, *.wordpress.org'); * - * @link https://core.trac.wordpress.org/ticket/4011 Proxy support ticket in WordPress. + * @link https://core.trac.wordpress.org/ticket/4011 Proxy support ticket in ClassicPress. * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_PROXY_BYPASS_HOSTS * - * @since 2.8.0 + * @since WP-2.8.0 */ -#[AllowDynamicProperties] class WP_HTTP_Proxy { /** * Whether proxy connection should be used. * - * Constants which control this behavior: + * @since WP-2.8.0 * - * - `WP_PROXY_HOST` - * - `WP_PROXY_PORT` - * - * @since 2.8.0 + * @use WP_PROXY_HOST + * @use WP_PROXY_PORT * * @return bool */ @@ -61,12 +58,10 @@ public function is_enabled() { /** * Whether authentication should be used. * - * Constants which control this behavior: - * - * - `WP_PROXY_USERNAME` - * - `WP_PROXY_PASSWORD` + * @since WP-2.8.0 * - * @since 2.8.0 + * @use WP_PROXY_USERNAME + * @use WP_PROXY_PASSWORD * * @return bool */ @@ -77,7 +72,7 @@ public function use_authentication() { /** * Retrieve the host for the proxy server. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string */ @@ -92,7 +87,7 @@ public function host() { /** * Retrieve the port for the proxy server. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string */ @@ -107,7 +102,7 @@ public function port() { /** * Retrieve the username for proxy authentication. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string */ @@ -122,7 +117,7 @@ public function username() { /** * Retrieve the password for proxy authentication. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string */ @@ -137,7 +132,7 @@ public function password() { /** * Retrieve authentication string for proxy authentication. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string */ @@ -148,7 +143,7 @@ public function authentication() { /** * Retrieve header string for proxy authentication. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return string */ @@ -157,19 +152,26 @@ public function authentication_header() { } /** - * Determines whether the request should be sent through a proxy. + * Whether URL should be sent through the proxy server. * - * We want to keep localhost and the site URL from being sent through the proxy, because + * We want to keep localhost and the site URL from being sent through the proxy server, because * some proxies can not handle this. We also have the constant available for defining other * hosts that won't be sent through the proxy. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string $uri URL of the request. - * @return bool Whether to send the request through the proxy. + * @staticvar array|null $bypass_hosts + * @staticvar array $wildcard_regex + * + * @param string $uri URI to check. + * @return bool True, to send through the proxy and false if, the proxy should not be used. */ public function send_through_proxy( $uri ) { - $check = parse_url( $uri ); + /* + * parse_url() only handles http, https type URLs, and will emit E_WARNING on failure. + * This will be displayed on sites, which is not reasonable. + */ + $check = @parse_url( $uri ); // Malformed URL, can not process, but this could mean ssl, so let through anyway. if ( false === $check ) { @@ -179,24 +181,24 @@ public function send_through_proxy( $uri ) { $home = parse_url( get_option( 'siteurl' ) ); /** - * Filters whether to preempt sending the request through the proxy. + * Filters whether to preempt sending the request through the proxy server. * * Returning false will bypass the proxy; returning true will send * the request through the proxy. Returning null bypasses the filter. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param bool|null $override Whether to send the request through the proxy. Default null. - * @param string $uri URL of the request. - * @param array $check Associative array result of parsing the request URL with `parse_url()`. - * @param array $home Associative array result of parsing the site URL with `parse_url()`. + * @param null $override Whether to override the request result. Default null. + * @param string $uri URL to check. + * @param array $check Associative array result of parsing the URI. + * @param array $home Associative array result of parsing the site URL. */ $result = apply_filters( 'pre_http_send_through_proxy', null, $uri, $check, $home ); if ( ! is_null( $result ) ) { return $result; } - if ( 'localhost' === $check['host'] || ( isset( $home['host'] ) && $home['host'] === $check['host'] ) ) { + if ( 'localhost' == $check['host'] || ( isset( $home['host'] ) && $home['host'] == $check['host'] ) ) { return false; } @@ -221,7 +223,7 @@ public function send_through_proxy( $uri ) { if ( ! empty( $wildcard_regex ) ) { return ! preg_match( $wildcard_regex, $check['host'] ); } else { - return ! in_array( $check['host'], $bypass_hosts, true ); + return ! in_array( $check['host'], $bypass_hosts ); } } } diff --git a/wp-includes/class-wp-http-requests-hooks.php b/wp-includes/class-wp-http-requests-hooks.php index 91f20f3..642d3be 100644 --- a/wp-includes/class-wp-http-requests-hooks.php +++ b/wp-includes/class-wp-http-requests-hooks.php @@ -4,18 +4,17 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Bridge to connect Requests internal hooks to ClassicPress actions. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @see WpOrg\Requests\Hooks + * @see Requests_Hooks */ -#[AllowDynamicProperties] -class WP_HTTP_Requests_Hooks extends WpOrg\Requests\Hooks { +class WP_HTTP_Requests_Hooks extends Requests_Hooks { /** * Requested URL. * @@ -24,7 +23,7 @@ class WP_HTTP_Requests_Hooks extends WpOrg\Requests\Hooks { protected $url; /** - * WordPress WP_HTTP request data. + * ClassicPress WP_HTTP request data. * * @var array Request data in WP_Http format. */ @@ -33,8 +32,8 @@ class WP_HTTP_Requests_Hooks extends WpOrg\Requests\Hooks { /** * Constructor. * - * @param string $url URL to request. - * @param array $request Request data in WP_Http format. + * @param string $url URL to request. + * @param array $request Request data in WP_Http format. */ public function __construct( $url, $request ) { $this->url = $url; @@ -42,16 +41,16 @@ public function __construct( $url, $request ) { } /** - * Dispatch a Requests hook to a native WordPress action. + * Dispatch a Requests hook to a native ClassicPress action. * - * @param string $hook Hook name. - * @param array $parameters Parameters to pass to callbacks. - * @return bool True if hooks were run, false if nothing was hooked. + * @param string $hook Hook name. + * @param array $parameters Parameters to pass to callbacks. + * @return boolean True if hooks were run, false if nothing was hooked. */ public function dispatch( $hook, $parameters = array() ) { $result = parent::dispatch( $hook, $parameters ); - // Handle back-compat actions. + // Handle back-compat actions switch ( $hook ) { case 'curl.before_send': /** This action is documented in wp-includes/class-wp-http-curl.php */ @@ -60,13 +59,11 @@ public function dispatch( $hook, $parameters = array() ) { } /** - * Transforms a native Request hook to a WordPress action. + * Transforms a native Request hook to a ClassicPress actions. * - * This action maps Requests internal hook to a native WordPress action. + * This action maps Requests internal hook to a native ClassicPress action. * - * @see https://github.com/WordPress/Requests/blob/master/docs/hooks.md - * - * @since 4.7.0 + * @see https://github.com/rmccue/Requests/blob/master/docs/hooks.md * * @param array $parameters Parameters from Requests internal hook. * @param array $request Request data in WP_Http format. diff --git a/wp-includes/class-wp-http-requests-response.php b/wp-includes/class-wp-http-requests-response.php index 9774594..a887508 100644 --- a/wp-includes/class-wp-http-requests-response.php +++ b/wp-includes/class-wp-http-requests-response.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.6.0 + * @since WP-4.6.0 */ /** - * Core wrapper object for a WpOrg\Requests\Response for standardisation. + * Core wrapper object for a Requests_Response for standardisation. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_HTTP_Response */ @@ -18,15 +18,15 @@ class WP_HTTP_Requests_Response extends WP_HTTP_Response { /** * Requests Response object. * - * @since 4.6.0 - * @var \WpOrg\Requests\Response + * @since WP-4.6.0 + * @var Requests_Response */ protected $response; /** * Filename the response was saved to. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string|null */ protected $filename; @@ -34,12 +34,12 @@ class WP_HTTP_Requests_Response extends WP_HTTP_Response { /** * Constructor. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param \WpOrg\Requests\Response $response HTTP response. - * @param string $filename Optional. File name. Default empty. + * @param Requests_Response $response HTTP response. + * @param string $filename Optional. File name. Default empty. */ - public function __construct( WpOrg\Requests\Response $response, $filename = '' ) { + public function __construct( Requests_Response $response, $filename = '' ) { $this->response = $response; $this->filename = $filename; } @@ -47,9 +47,9 @@ public function __construct( WpOrg\Requests\Response $response, $filename = '' ) /** * Retrieves the response object for the request. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @return WpOrg\Requests\Response HTTP response. + * @return Requests_Response HTTP response. */ public function get_response_object() { return $this->response; @@ -58,13 +58,15 @@ public function get_response_object() { /** * Retrieves headers associated with the response. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @return \WpOrg\Requests\Utility\CaseInsensitiveDictionary Map of header name to header value. + * @see \Requests_Utility_CaseInsensitiveDictionary + * + * @return \Requests_Utility_CaseInsensitiveDictionary Map of header name to header value. */ public function get_headers() { // Ensure headers remain case-insensitive. - $converted = new WpOrg\Requests\Utility\CaseInsensitiveDictionary(); + $converted = new Requests_Utility_CaseInsensitiveDictionary(); foreach ( $this->response->headers->getAll() as $key => $value ) { if ( count( $value ) === 1 ) { @@ -80,18 +82,18 @@ public function get_headers() { /** * Sets all header values. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param array $headers Map of header name to header value. */ public function set_headers( $headers ) { - $this->response->headers = new WpOrg\Requests\Response\Headers( $headers ); + $this->response->headers = new Requests_Response_Headers( $headers ); } /** * Sets a single HTTP header. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $key Header name. * @param string $value Header value. @@ -109,7 +111,7 @@ public function header( $key, $value, $replace = true ) { /** * Retrieves the HTTP return code for the response. * - * @since 4.6.0 + * @since WP-4.6.0 * * @return int The 3-digit HTTP status code. */ @@ -120,7 +122,7 @@ public function get_status() { /** * Sets the 3-digit HTTP status code. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param int $code HTTP status. */ @@ -131,9 +133,9 @@ public function set_status( $code ) { /** * Retrieves the response data. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @return string Response data. + * @return mixed Response data. */ public function get_data() { return $this->response->body; @@ -142,9 +144,9 @@ public function get_data() { /** * Sets the response data. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param string $data Response data. + * @param mixed $data Response data. */ public function set_data( $data ) { $this->response->body = $data; @@ -153,7 +155,7 @@ public function set_data( $data ) { /** * Retrieves cookies from the response. * - * @since 4.6.0 + * @since WP-4.6.0 * * @return WP_HTTP_Cookie[] List of cookie objects. */ @@ -162,12 +164,11 @@ public function get_cookies() { foreach ( $this->response->cookies as $cookie ) { $cookies[] = new WP_Http_Cookie( array( - 'name' => $cookie->name, - 'value' => urldecode( $cookie->value ), - 'expires' => isset( $cookie->attributes['expires'] ) ? $cookie->attributes['expires'] : null, - 'path' => isset( $cookie->attributes['path'] ) ? $cookie->attributes['path'] : null, - 'domain' => isset( $cookie->attributes['domain'] ) ? $cookie->attributes['domain'] : null, - 'host_only' => isset( $cookie->flags['host-only'] ) ? $cookie->flags['host-only'] : null, + 'name' => $cookie->name, + 'value' => urldecode( $cookie->value ), + 'expires' => isset( $cookie->attributes['expires'] ) ? $cookie->attributes['expires'] : null, + 'path' => isset( $cookie->attributes['path'] ) ? $cookie->attributes['path'] : null, + 'domain' => isset( $cookie->attributes['domain'] ) ? $cookie->attributes['domain'] : null, ) ); } @@ -178,7 +179,7 @@ public function get_cookies() { /** * Converts the object to a WP_Http response array. * - * @since 4.6.0 + * @since WP-4.6.0 * * @return array WP_Http response array, per WP_Http::request(). */ diff --git a/wp-includes/class-wp-http-response.php b/wp-includes/class-wp-http-response.php index 3397444..cf0da58 100644 --- a/wp-includes/class-wp-http-response.php +++ b/wp-includes/class-wp-http-response.php @@ -4,21 +4,20 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to prepare HTTP responses. * - * @since 4.4.0 + * @since WP-4.4.0 */ -#[AllowDynamicProperties] class WP_HTTP_Response { /** * Response data. * - * @since 4.4.0 + * @since WP-4.4.0 * @var mixed */ public $data; @@ -26,7 +25,7 @@ class WP_HTTP_Response { /** * Response headers. * - * @since 4.4.0 + * @since WP-4.4.0 * @var array */ public $headers; @@ -34,7 +33,7 @@ class WP_HTTP_Response { /** * Response status. * - * @since 4.4.0 + * @since WP-4.4.0 * @var int */ public $status; @@ -42,7 +41,7 @@ class WP_HTTP_Response { /** * Constructor. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param mixed $data Response data. Default null. * @param int $status Optional. HTTP status code. Default 200. @@ -57,7 +56,7 @@ public function __construct( $data = null, $status = 200, $headers = array() ) { /** * Retrieves headers associated with the response. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return array Map of header name to header value. */ @@ -68,7 +67,7 @@ public function get_headers() { /** * Sets all header values. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $headers Map of header name to header value. */ @@ -79,7 +78,7 @@ public function set_headers( $headers ) { /** * Sets a single HTTP header. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $key Header name. * @param string $value Header value. @@ -97,7 +96,7 @@ public function header( $key, $value, $replace = true ) { /** * Retrieves the HTTP return code for the response. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return int The 3-digit HTTP status code. */ @@ -108,7 +107,7 @@ public function get_status() { /** * Sets the 3-digit HTTP status code. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $code HTTP status. */ @@ -119,7 +118,7 @@ public function set_status( $code ) { /** * Retrieves the response data. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return mixed Response data. */ @@ -130,7 +129,7 @@ public function get_data() { /** * Sets the response data. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param mixed $data Response data. */ @@ -144,7 +143,7 @@ public function set_data( $data ) { * It is expected that in most implementations, this will return the same as get_data(), * however this may be different if you want to do custom JSON data handling. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return mixed Any JSON-serializable value. */ diff --git a/wp-includes/class-wp-http-streams.php b/wp-includes/class-wp-http-streams.php index 0fc32d1..848b514 100644 --- a/wp-includes/class-wp-http-streams.php +++ b/wp-includes/class-wp-http-streams.php @@ -4,26 +4,25 @@ * * @package ClassicPress * @subpackage HTTP - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to integrate PHP Streams as an HTTP transport. * - * @since 2.7.0 - * @since 3.7.0 Combined with the fsockopen transport and switched to `stream_socket_client()`. + * @since WP-2.7.0 + * @since WP-3.7.0 Combined with the fsockopen transport and switched to `stream_socket_client()`. */ -#[AllowDynamicProperties] class WP_Http_Streams { /** * Send a HTTP request to a URI using PHP Streams. * - * @see WP_Http::request() For default options descriptions. + * @see WP_Http::request For default options descriptions. * - * @since 2.7.0 - * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client(). + * @since WP-2.7.0 + * @since WP-3.7.0 Combined with the fsockopen transport and switched to stream_socket_client(). * - * @param string $url The request URL. + * @param string $url The request URL. * @param string|array $args Optional. Override the defaults. * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error */ @@ -52,30 +51,30 @@ public function request( $url, $args = array() ) { // Construct Cookie: header if any cookies are set. WP_Http::buildCookieHeader( $parsed_args ); - $parsed_url = parse_url( $url ); + $arrURL = parse_url( $url ); - $connect_host = $parsed_url['host']; + $connect_host = $arrURL['host']; - $secure_transport = ( 'ssl' === $parsed_url['scheme'] || 'https' === $parsed_url['scheme'] ); - if ( ! isset( $parsed_url['port'] ) ) { - if ( 'ssl' === $parsed_url['scheme'] || 'https' === $parsed_url['scheme'] ) { - $parsed_url['port'] = 443; - $secure_transport = true; + $secure_transport = ( 'ssl' === $arrURL['scheme'] || 'https' === $arrURL['scheme'] ); + if ( ! isset( $arrURL['port'] ) ) { + if ( 'ssl' === $arrURL['scheme'] || 'https' === $arrURL['scheme'] ) { + $arrURL['port'] = 443; + $secure_transport = true; } else { - $parsed_url['port'] = 80; + $arrURL['port'] = 80; } } - // Always pass a path, defaulting to the root in cases such as http://example.com. - if ( ! isset( $parsed_url['path'] ) ) { - $parsed_url['path'] = '/'; + // Always pass a Path, defaulting to the root in cases such as http://example.com + if ( ! isset( $arrURL['path'] ) ) { + $arrURL['path'] = '/'; } if ( isset( $parsed_args['headers']['Host'] ) || isset( $parsed_args['headers']['host'] ) ) { if ( isset( $parsed_args['headers']['Host'] ) ) { - $parsed_url['host'] = $parsed_args['headers']['Host']; + $arrURL['host'] = $parsed_args['headers']['Host']; } else { - $parsed_url['host'] = $parsed_args['headers']['host']; + $arrURL['host'] = $parsed_args['headers']['host']; } unset( $parsed_args['headers']['Host'], $parsed_args['headers']['host'] ); } @@ -93,22 +92,24 @@ public function request( $url, $args = array() ) { $is_local = isset( $parsed_args['local'] ) && $parsed_args['local']; $ssl_verify = isset( $parsed_args['sslverify'] ) && $parsed_args['sslverify']; - if ( $is_local ) { /** - * Filters whether SSL should be verified for local HTTP API requests. + * Filters whether SSL should be verified for local requests. * - * @since 2.8.0 - * @since 5.1.0 The `$url` parameter was added. + * @since WP-2.8.0 * - * @param bool|string $ssl_verify Boolean to control whether to verify the SSL connection - * or path to an SSL certificate. - * @param string $url The request URL. + * @param bool $ssl_verify Whether to verify the SSL connection. Default true. */ - $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify, $url ); + $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify ); } elseif ( ! $is_local ) { - /** This filter is documented in wp-includes/class-wp-http.php */ - $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify, $url ); + /** + * Filters whether SSL should be verified for non-local requests. + * + * @since WP-2.8.0 + * + * @param bool $ssl_verify Whether to verify the SSL connection. Default true. + */ + $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify ); } $proxy = new WP_HTTP_Proxy(); @@ -117,7 +118,7 @@ public function request( $url, $args = array() ) { array( 'ssl' => array( 'verify_peer' => $ssl_verify, - // 'CN_match' => $parsed_url['host'], // This is handled by self::verify_ssl_certificate(). + //'CN_match' => $arrURL['host'], // This is handled by self::verify_ssl_certificate() 'capture_peer_cert' => $ssl_verify, 'SNI_enabled' => true, 'cafile' => $parsed_args['sslcertificates'], @@ -137,31 +138,17 @@ public function request( $url, $args = array() ) { $connection_error_str = null; if ( ! WP_DEBUG ) { - // In the event that the SSL connection fails, silence the many PHP warnings. + // In the event that the SSL connection fails, silence the many PHP Warnings. if ( $secure_transport ) { $error_reporting = error_reporting( 0 ); } if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - $handle = @stream_socket_client( - 'tcp://' . $proxy->host() . ':' . $proxy->port(), - $connection_error, - $connection_error_str, - $connect_timeout, - STREAM_CLIENT_CONNECT, - $context - ); + $handle = @stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context ); } else { // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - $handle = @stream_socket_client( - $connect_host . ':' . $parsed_url['port'], - $connection_error, - $connection_error_str, - $connect_timeout, - STREAM_CLIENT_CONNECT, - $context - ); + $handle = @stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context ); } if ( $secure_transport ) { @@ -169,23 +156,9 @@ public function request( $url, $args = array() ) { } } else { if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { - $handle = stream_socket_client( - 'tcp://' . $proxy->host() . ':' . $proxy->port(), - $connection_error, - $connection_error_str, - $connect_timeout, - STREAM_CLIENT_CONNECT, - $context - ); + $handle = stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context ); } else { - $handle = stream_socket_client( - $connect_host . ':' . $parsed_url['port'], - $connection_error, - $connection_error_str, - $connect_timeout, - STREAM_CLIENT_CONNECT, - $context - ); + $handle = stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context ); } } @@ -200,56 +173,56 @@ public function request( $url, $args = array() ) { // Verify that the SSL certificate is valid for this request. if ( $secure_transport && $ssl_verify && ! $proxy->is_enabled() ) { - if ( ! self::verify_ssl_certificate( $handle, $parsed_url['host'] ) ) { + if ( ! self::verify_ssl_certificate( $handle, $arrURL['host'] ) ) { return new WP_Error( 'http_request_failed', __( 'The SSL certificate for the host could not be verified.' ) ); } } stream_set_timeout( $handle, $timeout, $utimeout ); - if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { // Some proxies require full URL in this field. - $request_path = $url; + if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { //Some proxies require full URL in this field. + $requestPath = $url; } else { - $request_path = $parsed_url['path'] . ( isset( $parsed_url['query'] ) ? '?' . $parsed_url['query'] : '' ); + $requestPath = $arrURL['path'] . ( isset( $arrURL['query'] ) ? '?' . $arrURL['query'] : '' ); } - $headers = strtoupper( $parsed_args['method'] ) . ' ' . $request_path . ' HTTP/' . $parsed_args['httpversion'] . "\r\n"; + $strHeaders = strtoupper( $parsed_args['method'] ) . ' ' . $requestPath . ' HTTP/' . $parsed_args['httpversion'] . "\r\n"; $include_port_in_host_header = ( - ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) - || ( 'http' === $parsed_url['scheme'] && 80 != $parsed_url['port'] ) - || ( 'https' === $parsed_url['scheme'] && 443 != $parsed_url['port'] ) + ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) || + ( 'http' === $arrURL['scheme'] && 80 != $arrURL['port'] ) || + ( 'https' === $arrURL['scheme'] && 443 != $arrURL['port'] ) ); if ( $include_port_in_host_header ) { - $headers .= 'Host: ' . $parsed_url['host'] . ':' . $parsed_url['port'] . "\r\n"; + $strHeaders .= 'Host: ' . $arrURL['host'] . ':' . $arrURL['port'] . "\r\n"; } else { - $headers .= 'Host: ' . $parsed_url['host'] . "\r\n"; + $strHeaders .= 'Host: ' . $arrURL['host'] . "\r\n"; } if ( isset( $parsed_args['user-agent'] ) ) { - $headers .= 'User-agent: ' . $parsed_args['user-agent'] . "\r\n"; + $strHeaders .= 'User-agent: ' . $parsed_args['user-agent'] . "\r\n"; } if ( is_array( $parsed_args['headers'] ) ) { - foreach ( (array) $parsed_args['headers'] as $header => $header_value ) { - $headers .= $header . ': ' . $header_value . "\r\n"; + foreach ( (array) $parsed_args['headers'] as $header => $headerValue ) { + $strHeaders .= $header . ': ' . $headerValue . "\r\n"; } } else { - $headers .= $parsed_args['headers']; + $strHeaders .= $parsed_args['headers']; } if ( $proxy->use_authentication() ) { - $headers .= $proxy->authentication_header() . "\r\n"; + $strHeaders .= $proxy->authentication_header() . "\r\n"; } - $headers .= "\r\n"; + $strHeaders .= "\r\n"; if ( ! is_null( $parsed_args['body'] ) ) { - $headers .= $parsed_args['body']; + $strHeaders .= $parsed_args['body']; } - fwrite( $handle, $headers ); + fwrite( $handle, $strHeaders ); if ( ! $parsed_args['blocking'] ) { stream_set_blocking( $handle, 0 ); @@ -265,11 +238,10 @@ public function request( $url, $args = array() ) { ); } - $response = ''; - $body_started = false; + $strResponse = ''; + $bodyStarted = false; $keep_reading = true; $block_size = 4096; - if ( isset( $parsed_args['limit_response_size'] ) ) { $block_size = min( $block_size, $parsed_args['limit_response_size'] ); } @@ -281,12 +253,11 @@ public function request( $url, $args = array() ) { } else { $stream_handle = fopen( $parsed_args['filename'], 'w+' ); } - if ( ! $stream_handle ) { return new WP_Error( 'http_request_failed', sprintf( - /* translators: 1: fopen(), 2: File name. */ + /* translators: 1: fopen() 2: file name */ __( 'Could not open handle for %1$s to %2$s.' ), 'fopen()', $parsed_args['filename'] @@ -295,25 +266,22 @@ public function request( $url, $args = array() ) { } $bytes_written = 0; - while ( ! feof( $handle ) && $keep_reading ) { $block = fread( $handle, $block_size ); - if ( ! $body_started ) { - $response .= $block; - if ( strpos( $response, "\r\n\r\n" ) ) { - $processed_response = WP_Http::processResponse( $response ); - $body_started = true; - $block = $processed_response['body']; - unset( $response ); - $processed_response['body'] = ''; + if ( ! $bodyStarted ) { + $strResponse .= $block; + if ( strpos( $strResponse, "\r\n\r\n" ) ) { + $process = WP_Http::processResponse( $strResponse ); + $bodyStarted = true; + $block = $process['body']; + unset( $strResponse ); + $process['body'] = ''; } } $this_block_size = strlen( $block ); - if ( isset( $parsed_args['limit_response_size'] ) - && ( $bytes_written + $this_block_size ) > $parsed_args['limit_response_size'] - ) { + if ( isset( $parsed_args['limit_response_size'] ) && ( $bytes_written + $this_block_size ) > $parsed_args['limit_response_size'] ) { $this_block_size = ( $parsed_args['limit_response_size'] - $bytes_written ); $block = substr( $block, 0, $this_block_size ); } @@ -328,48 +296,38 @@ public function request( $url, $args = array() ) { $bytes_written += $bytes_written_to_file; - $keep_reading = ( - ! isset( $parsed_args['limit_response_size'] ) - || $bytes_written < $parsed_args['limit_response_size'] - ); + $keep_reading = ! isset( $parsed_args['limit_response_size'] ) || $bytes_written < $parsed_args['limit_response_size']; } fclose( $stream_handle ); } else { $header_length = 0; - while ( ! feof( $handle ) && $keep_reading ) { - $block = fread( $handle, $block_size ); - $response .= $block; - - if ( ! $body_started && strpos( $response, "\r\n\r\n" ) ) { - $header_length = strpos( $response, "\r\n\r\n" ) + 4; - $body_started = true; + $block = fread( $handle, $block_size ); + $strResponse .= $block; + if ( ! $bodyStarted && strpos( $strResponse, "\r\n\r\n" ) ) { + $header_length = strpos( $strResponse, "\r\n\r\n" ) + 4; + $bodyStarted = true; } - - $keep_reading = ( - ! $body_started - || ! isset( $parsed_args['limit_response_size'] ) - || strlen( $response ) < ( $header_length + $parsed_args['limit_response_size'] ) - ); + $keep_reading = ( ! $bodyStarted || ! isset( $parsed_args['limit_response_size'] ) || strlen( $strResponse ) < ( $header_length + $parsed_args['limit_response_size'] ) ); } - $processed_response = WP_Http::processResponse( $response ); - unset( $response ); + $process = WP_Http::processResponse( $strResponse ); + unset( $strResponse ); } fclose( $handle ); - $processed_headers = WP_Http::processHeaders( $processed_response['headers'], $url ); + $arrHeaders = WP_Http::processHeaders( $process['headers'], $url ); $response = array( - 'headers' => $processed_headers['headers'], + 'headers' => $arrHeaders['headers'], // Not yet processed. 'body' => null, - 'response' => $processed_headers['response'], - 'cookies' => $processed_headers['cookies'], + 'response' => $arrHeaders['response'], + 'cookies' => $arrHeaders['cookies'], 'filename' => $parsed_args['filename'], ); @@ -380,26 +338,21 @@ public function request( $url, $args = array() ) { } // If the body was chunk encoded, then decode it. - if ( ! empty( $processed_response['body'] ) - && isset( $processed_headers['headers']['transfer-encoding'] ) - && 'chunked' === $processed_headers['headers']['transfer-encoding'] + if ( ! empty( $process['body'] ) && isset( $arrHeaders['headers']['transfer-encoding'] ) + && 'chunked' === $arrHeaders['headers']['transfer-encoding'] ) { - $processed_response['body'] = WP_Http::chunkTransferDecode( $processed_response['body'] ); + $process['body'] = WP_Http::chunkTransferDecode( $process['body'] ); } - if ( true === $parsed_args['decompress'] - && true === WP_Http_Encoding::should_decode( $processed_headers['headers'] ) - ) { - $processed_response['body'] = WP_Http_Encoding::decompress( $processed_response['body'] ); + if ( true === $parsed_args['decompress'] && true === WP_Http_Encoding::should_decode( $arrHeaders['headers'] ) ) { + $process['body'] = WP_Http_Encoding::decompress( $process['body'] ); } - if ( isset( $parsed_args['limit_response_size'] ) - && strlen( $processed_response['body'] ) > $parsed_args['limit_response_size'] - ) { - $processed_response['body'] = substr( $processed_response['body'], 0, $parsed_args['limit_response_size'] ); + if ( isset( $parsed_args['limit_response_size'] ) && strlen( $process['body'] ) > $parsed_args['limit_response_size'] ) { + $process['body'] = substr( $process['body'], 0, $parsed_args['limit_response_size'] ); } - $response['body'] = $processed_response['body']; + $response['body'] = $process['body']; return $response; } @@ -414,11 +367,12 @@ public function request( $url, $args = array() ) { * * IP Address support is included if the request is being made to an IP address. * - * @since 3.7.0 + * @since WP-3.7.0 + * @static * - * @param resource $stream The PHP Stream which the SSL request is being made over - * @param string $host The hostname being requested - * @return bool If the certificate presented in $stream is valid for $host + * @param stream $stream The PHP Stream which the SSL request is being made over + * @param string $host The hostname being requested + * @return bool If the cerficiate presented in $stream is valid for $host */ public static function verify_ssl_certificate( $stream, $host ) { $context_options = stream_context_get_options( $stream ); @@ -476,8 +430,9 @@ public static function verify_ssl_certificate( $stream, $host ) { /** * Determines whether this class can be used for retrieving a URL. * - * @since 2.7.0 - * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client(). + * @static + * @since WP-2.7.0 + * @since WP-3.7.0 Combined with the fsockopen transport and switched to stream_socket_client(). * * @param array $args Optional. Array of request arguments. Default empty array. * @return bool False means this class can not be used, true means it can. @@ -501,7 +456,7 @@ public static function test( $args = array() ) { /** * Filters whether streams can be used as a transport for retrieving a URL. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param bool $use_class Whether the class can be used. Default true. * @param array $args Request arguments. @@ -518,10 +473,9 @@ public static function test( $args = array() ) { * * @see WP_HTTP::request * - * @since 2.7.0 - * @deprecated 3.7.0 Please use WP_HTTP::request() directly + * @since WP-2.7.0 + * @deprecated WP-3.7.0 Please use WP_HTTP::request() directly */ -//phpcs:ignore Generic.Files.OneObjectStructurePerFile -class WP_HTTP_Fsockopen extends WP_Http_Streams { +class WP_HTTP_Fsockopen extends WP_HTTP_Streams { // For backward compatibility for users who are using the class directly. } diff --git a/wp-includes/class-wp-http.php b/wp-includes/class-wp-http.php deleted file mode 100644 index 97e2c4d..0000000 --- a/wp-includes/class-wp-http.php +++ /dev/null @@ -1,1104 +0,0 @@ -<?php -/** - * HTTP API: WP_Http class - * - * @package ClassicPress - * @subpackage HTTP - * @since 2.7.0 - */ - -if ( ! class_exists( 'WpOrg\Requests\Autoload' ) ) { - require ABSPATH . WPINC . '/Requests/src/Autoload.php'; - - WpOrg\Requests\Autoload::register(); - WpOrg\Requests\Requests::set_certificate_path( ABSPATH . WPINC . '/certificates/ca-bundle.crt' ); -} - -/** - * Core class used for managing HTTP transports and making HTTP requests. - * - * This class is used to consistently make outgoing HTTP requests easy for developers - * while still being compatible with the many PHP configurations under which - * WordPress runs. - * - * Debugging includes several actions, which pass different variables for debugging the HTTP API. - * - * @since 2.7.0 - */ -#[AllowDynamicProperties] -class WP_Http { - - // Aliases for HTTP response codes. - const HTTP_CONTINUE = 100; - const SWITCHING_PROTOCOLS = 101; - const PROCESSING = 102; - const EARLY_HINTS = 103; - - const OK = 200; - const CREATED = 201; - const ACCEPTED = 202; - const NON_AUTHORITATIVE_INFORMATION = 203; - const NO_CONTENT = 204; - const RESET_CONTENT = 205; - const PARTIAL_CONTENT = 206; - const MULTI_STATUS = 207; - const IM_USED = 226; - - const MULTIPLE_CHOICES = 300; - const MOVED_PERMANENTLY = 301; - const FOUND = 302; - const SEE_OTHER = 303; - const NOT_MODIFIED = 304; - const USE_PROXY = 305; - const RESERVED = 306; - const TEMPORARY_REDIRECT = 307; - const PERMANENT_REDIRECT = 308; - - const BAD_REQUEST = 400; - const UNAUTHORIZED = 401; - const PAYMENT_REQUIRED = 402; - const FORBIDDEN = 403; - const NOT_FOUND = 404; - const METHOD_NOT_ALLOWED = 405; - const NOT_ACCEPTABLE = 406; - const PROXY_AUTHENTICATION_REQUIRED = 407; - const REQUEST_TIMEOUT = 408; - const CONFLICT = 409; - const GONE = 410; - const LENGTH_REQUIRED = 411; - const PRECONDITION_FAILED = 412; - const REQUEST_ENTITY_TOO_LARGE = 413; - const REQUEST_URI_TOO_LONG = 414; - const UNSUPPORTED_MEDIA_TYPE = 415; - const REQUESTED_RANGE_NOT_SATISFIABLE = 416; - const EXPECTATION_FAILED = 417; - const IM_A_TEAPOT = 418; - const MISDIRECTED_REQUEST = 421; - const UNPROCESSABLE_ENTITY = 422; - const LOCKED = 423; - const FAILED_DEPENDENCY = 424; - const UPGRADE_REQUIRED = 426; - const PRECONDITION_REQUIRED = 428; - const TOO_MANY_REQUESTS = 429; - const REQUEST_HEADER_FIELDS_TOO_LARGE = 431; - const UNAVAILABLE_FOR_LEGAL_REASONS = 451; - - const INTERNAL_SERVER_ERROR = 500; - const NOT_IMPLEMENTED = 501; - const BAD_GATEWAY = 502; - const SERVICE_UNAVAILABLE = 503; - const GATEWAY_TIMEOUT = 504; - const HTTP_VERSION_NOT_SUPPORTED = 505; - const VARIANT_ALSO_NEGOTIATES = 506; - const INSUFFICIENT_STORAGE = 507; - const NOT_EXTENDED = 510; - const NETWORK_AUTHENTICATION_REQUIRED = 511; - - /** - * Send an HTTP request to a URI. - * - * Please note: The only URI that are supported in the HTTP Transport implementation - * are the HTTP and HTTPS protocols. - * - * @since 2.7.0 - * - * @param string $url The request URL. - * @param string|array $args { - * Optional. Array or string of HTTP request arguments. - * - * @type string $method Request method. Accepts 'GET', 'POST', 'HEAD', 'PUT', 'DELETE', - * 'TRACE', 'OPTIONS', or 'PATCH'. - * Some transports technically allow others, but should not be - * assumed. Default 'GET'. - * @type float $timeout How long the connection should stay open in seconds. Default 5. - * @type int $redirection Number of allowed redirects. Not supported by all transports. - * Default 5. - * @type string $httpversion Version of the HTTP protocol to use. Accepts '1.0' and '1.1'. - * Default '1.0'. - * @type string $user-agent User-agent value sent. - * Default 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ). - * @type bool $reject_unsafe_urls Whether to pass URLs through wp_http_validate_url(). - * Default false. - * @type bool $blocking Whether the calling code requires the result of the request. - * If set to false, the request will be sent to the remote server, - * and processing returned to the calling code immediately, the caller - * will know if the request succeeded or failed, but will not receive - * any response from the remote server. Default true. - * @type string|array $headers Array or string of headers to send with the request. - * Default empty array. - * @type array $cookies List of cookies to send with the request. Default empty array. - * @type string|array $body Body to send with the request. Default null. - * @type bool $compress Whether to compress the $body when sending the request. - * Default false. - * @type bool $decompress Whether to decompress a compressed response. If set to false and - * compressed content is returned in the response anyway, it will - * need to be separately decompressed. Default true. - * @type bool $sslverify Whether to verify SSL for the request. Default true. - * @type string $sslcertificates Absolute path to an SSL certificate .crt file. - * Default ABSPATH . WPINC . '/certificates/ca-bundle.crt'. - * @type bool $stream Whether to stream to a file. If set to true and no filename was - * given, it will be dropped it in the WP temp dir and its name will - * be set using the basename of the URL. Default false. - * @type string $filename Filename of the file to write to when streaming. $stream must be - * set to true. Default null. - * @type int $limit_response_size Size in bytes to limit the response to. Default null. - * - * } - * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. - * A WP_Error instance upon error. - */ - public function request( $url, $args = array() ) { - $defaults = array( - 'method' => 'GET', - /** - * Filters the timeout value for an HTTP request. - * - * @since 2.7.0 - * @since 5.1.0 The `$url` parameter was added. - * - * @param float $timeout_value Time in seconds until a request times out. Default 5. - * @param string $url The request URL. - */ - 'timeout' => apply_filters( 'http_request_timeout', 5, $url ), - /** - * Filters the number of redirects allowed during an HTTP request. - * - * @since 2.7.0 - * @since 5.1.0 The `$url` parameter was added. - * - * @param int $redirect_count Number of redirects allowed. Default 5. - * @param string $url The request URL. - */ - 'redirection' => apply_filters( 'http_request_redirection_count', 5, $url ), - /** - * Filters the version of the HTTP protocol used in a request. - * - * @since 2.7.0 - * @since 5.1.0 The `$url` parameter was added. - * - * @param string $version Version of HTTP used. Accepts '1.0' and '1.1'. Default '1.0'. - * @param string $url The request URL. - */ - 'httpversion' => apply_filters( 'http_request_version', '1.0', $url ), - /** - * Filters the user agent value sent with an HTTP request. - * - * @since 2.7.0 - * @since 5.1.0 The `$url` parameter was added. - * - * @param string $user_agent ClassicPress user agent string. - * @param string $url The request URL. - */ - 'user-agent' => apply_filters( 'http_headers_useragent', classicpress_user_agent() ), - /** - * Filters whether to pass URLs through wp_http_validate_url() in an HTTP request. - * - * @since 3.6.0 - * @since 5.1.0 The `$url` parameter was added. - * - * @param bool $pass_url Whether to pass URLs through wp_http_validate_url(). Default false. - * @param string $url The request URL. - */ - 'reject_unsafe_urls' => apply_filters( 'http_request_reject_unsafe_urls', false, $url ), - 'blocking' => true, - 'headers' => array(), - 'cookies' => array(), - 'body' => null, - 'compress' => false, - 'decompress' => true, - 'sslverify' => true, - 'sslcertificates' => ABSPATH . WPINC . '/certificates/ca-bundle.crt', - 'stream' => false, - 'filename' => null, - 'limit_response_size' => null, - ); - - // Pre-parse for the HEAD checks. - $args = wp_parse_args( $args ); - - // By default, HEAD requests do not cause redirections. - if ( isset( $args['method'] ) && 'HEAD' === $args['method'] ) { - $defaults['redirection'] = 0; - } - - $parsed_args = wp_parse_args( $args, $defaults ); - /** - * Filters the arguments used in an HTTP request. - * - * @since 2.7.0 - * - * @param array $parsed_args An array of HTTP request arguments. - * @param string $url The request URL. - */ - $parsed_args = apply_filters( 'http_request_args', $parsed_args, $url ); - - // The transports decrement this, store a copy of the original value for loop purposes. - if ( ! isset( $parsed_args['_redirection'] ) ) { - $parsed_args['_redirection'] = $parsed_args['redirection']; - } - - /** - * Filters the preemptive return value of an HTTP request. - * - * Returning a non-false value from the filter will short-circuit the HTTP request and return - * early with that value. A filter should return one of: - * - * - An array containing 'headers', 'body', 'response', 'cookies', and 'filename' elements - * - A WP_Error instance - * - boolean false to avoid short-circuiting the response - * - * Returning any other value may result in unexpected behavior. - * - * @since 2.9.0 - * - * @param false|array|WP_Error $response A preemptive return value of an HTTP request. Default false. - * @param array $parsed_args HTTP request arguments. - * @param string $url The request URL. - */ - $pre = apply_filters( 'pre_http_request', false, $parsed_args, $url ); - - if ( false !== $pre ) { - return $pre; - } - - if ( function_exists( 'wp_kses_bad_protocol' ) ) { - if ( $parsed_args['reject_unsafe_urls'] ) { - $url = wp_http_validate_url( $url ); - } - if ( $url ) { - $url = wp_kses_bad_protocol( $url, array( 'http', 'https', 'ssl' ) ); - } - } - - $parsed_url = parse_url( $url ); - - if ( empty( $url ) || empty( $parsed_url['scheme'] ) ) { - $response = new WP_Error( 'http_request_failed', __( 'A valid URL was not provided.' ) ); - /** This action is documented in wp-includes/class-wp-http.php */ - do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url ); - return $response; - } - - if ( $this->block_request( $url ) ) { - $response = new WP_Error( 'http_request_not_executed', __( 'User has blocked requests through HTTP.' ) ); - /** This action is documented in wp-includes/class-wp-http.php */ - do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url ); - return $response; - } - - // If we are streaming to a file but no filename was given drop it in the WP temp dir - // and pick its name using the basename of the $url. - if ( $parsed_args['stream'] ) { - if ( empty( $parsed_args['filename'] ) ) { - $parsed_args['filename'] = get_temp_dir() . basename( $url ); - } - - // Force some settings if we are streaming to a file and check for existence - // and perms of destination directory. - $parsed_args['blocking'] = true; - if ( ! wp_is_writable( dirname( $parsed_args['filename'] ) ) ) { - $response = new WP_Error( 'http_request_failed', __( 'Destination directory for file streaming does not exist or is not writable.' ) ); - /** This action is documented in wp-includes/class-wp-http.php */ - do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url ); - return $response; - } - } - - if ( is_null( $parsed_args['headers'] ) ) { - $parsed_args['headers'] = array(); - } - - // WP allows passing in headers as a string, weirdly. - if ( ! is_array( $parsed_args['headers'] ) ) { - $processed_headers = WP_Http::processHeaders( $parsed_args['headers'] ); - $parsed_args['headers'] = $processed_headers['headers']; - } - - // Setup arguments. - $headers = $parsed_args['headers']; - $data = $parsed_args['body']; - $type = $parsed_args['method']; - $options = array( - 'timeout' => $parsed_args['timeout'], - 'useragent' => $parsed_args['user-agent'], - 'blocking' => $parsed_args['blocking'], - 'hooks' => new WP_HTTP_Requests_Hooks( $url, $parsed_args ), - ); - - // Ensure redirects follow browser behavior. - $options['hooks']->register( 'requests.before_redirect', array( static::class, 'browser_redirect_compatibility' ) ); - - // Validate redirected URLs. - if ( function_exists( 'wp_kses_bad_protocol' ) && $parsed_args['reject_unsafe_urls'] ) { - $options['hooks']->register( 'requests.before_redirect', array( static::class, 'validate_redirects' ) ); - } - - if ( $parsed_args['stream'] ) { - $options['filename'] = $parsed_args['filename']; - } - if ( empty( $parsed_args['redirection'] ) ) { - $options['follow_redirects'] = false; - } else { - $options['redirects'] = $parsed_args['redirection']; - } - - // Use byte limit, if we can. - if ( isset( $parsed_args['limit_response_size'] ) ) { - $options['max_bytes'] = $parsed_args['limit_response_size']; - } - - // If we've got cookies, use and convert them to WpOrg\Requests\Cookie. - if ( ! empty( $parsed_args['cookies'] ) ) { - $options['cookies'] = WP_Http::normalize_cookies( $parsed_args['cookies'] ); - } - - // SSL certificate handling. - if ( ! $parsed_args['sslverify'] ) { - $options['verify'] = false; - $options['verifyname'] = false; - } else { - $options['verify'] = $parsed_args['sslcertificates']; - } - - // All non-GET/HEAD requests should put the arguments in the form body. - if ( 'HEAD' !== $type && 'GET' !== $type ) { - $options['data_format'] = 'body'; - } - - /** - * Filters whether SSL should be verified for non-local requests. - * - * @since 2.8.0 - * @since 5.1.0 The `$url` parameter was added. - * - * @param bool|string $ssl_verify Boolean to control whether to verify the SSL connection - * or path to an SSL certificate. - * @param string $url The request URL. - */ - $options['verify'] = apply_filters( 'https_ssl_verify', $options['verify'], $url ); - - // Check for proxies. - $proxy = new WP_HTTP_Proxy(); - if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) { - $options['proxy'] = new WpOrg\Requests\Proxy\Http( $proxy->host() . ':' . $proxy->port() ); - - if ( $proxy->use_authentication() ) { - $options['proxy']->use_authentication = true; - $options['proxy']->user = $proxy->username(); - $options['proxy']->pass = $proxy->password(); - } - } - - // Avoid issues where mbstring.func_overload is enabled. - mbstring_binary_safe_encoding(); - - try { - $requests_response = WpOrg\Requests\Requests::request( $url, $headers, $data, $type, $options ); - - // Convert the response into an array. - $http_response = new WP_HTTP_Requests_Response( $requests_response, $parsed_args['filename'] ); - $response = $http_response->to_array(); - - // Add the original object to the array. - $response['http_response'] = $http_response; - } catch ( WpOrg\Requests\Exception $e ) { - $response = new WP_Error( 'http_request_failed', $e->getMessage() ); - } - - reset_mbstring_encoding(); - - /** - * Fires after an HTTP API response is received and before the response is returned. - * - * @since 2.8.0 - * - * @param array|WP_Error $response HTTP response or WP_Error object. - * @param string $context Context under which the hook is fired. - * @param string $class HTTP transport used. - * @param array $parsed_args HTTP request arguments. - * @param string $url The request URL. - */ - do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url ); - if ( is_wp_error( $response ) ) { - return $response; - } - - if ( ! $parsed_args['blocking'] ) { - return array( - 'headers' => array(), - 'body' => '', - 'response' => array( - 'code' => false, - 'message' => false, - ), - 'cookies' => array(), - 'http_response' => null, - ); - } - - /** - * Filters a successful HTTP API response immediately before the response is returned. - * - * @since 2.9.0 - * - * @param array $response HTTP response. - * @param array $parsed_args HTTP request arguments. - * @param string $url The request URL. - */ - return apply_filters( 'http_response', $response, $parsed_args, $url ); - } - - /** - * Normalizes cookies for using in Requests. - * - * @since 4.6.0 - * - * @param array $cookies Array of cookies to send with the request. - * @return WpOrg\Requests\Cookie\Jar Cookie holder object. - */ - public static function normalize_cookies( $cookies ) { - $cookie_jar = new WpOrg\Requests\Cookie\Jar(); - - foreach ( $cookies as $name => $value ) { - if ( $value instanceof WP_Http_Cookie ) { - $attributes = array_filter( - $value->get_attributes(), - static function ( $attr ) { - return null !== $attr; - } - ); - $cookie_jar[ $value->name ] = new WpOrg\Requests\Cookie( $value->name, $value->value, $attributes, array( 'host-only' => $value->host_only ) ); - } elseif ( is_scalar( $value ) ) { - $cookie_jar[ $name ] = new WpOrg\Requests\Cookie( $name, (string) $value ); - } - } - - return $cookie_jar; - } - - /** - * Match redirect behavior to browser handling. - * - * Changes 302 redirects from POST to GET to match browser handling. Per - * RFC 7231, user agents can deviate from the strict reading of the - * specification for compatibility purposes. - * - * @since 4.6.0 - * - * @param string $location URL to redirect to. - * @param array $headers Headers for the redirect. - * @param string|array $data Body to send with the request. - * @param array $options Redirect request options. - * @param WpOrg\Requests\Response $original Response object. - */ - public static function browser_redirect_compatibility( $location, $headers, $data, &$options, $original ) { - // Browser compatibility. - if ( 302 === $original->status_code ) { - $options['type'] = WpOrg\Requests\Requests::GET; - } - } - - /** - * Validate redirected URLs. - * - * @since 4.7.5 - * - * @throws WpOrg\Requests\Exception On unsuccessful URL validation. - * @param string $location URL to redirect to. - */ - public static function validate_redirects( $location ) { - if ( ! wp_http_validate_url( $location ) ) { - throw new WpOrg\Requests\Exception( __( 'A valid URL was not provided.' ), 'wp_http.redirect_failed_validation' ); - } - } - - /** - * Tests which transports are capable of supporting the request. - * - * @since 3.2.0 - * - * @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. - */ - public function _get_first_available_transport( $args, $url = null ) { - $transports = array( 'curl', 'streams' ); - - /** - * Filters which HTTP transports are available and in what order. - * - * @since 3.7.0 - * - * @param string[] $transports Array of HTTP transports to check. Default array contains - * 'curl' and 'streams', in that order. - * @param array $args HTTP request arguments. - * @param string $url The URL to request. - */ - $request_order = apply_filters( 'http_api_transports', $transports, $args, $url ); - - // Loop over each transport on each HTTP request looking for one which will serve this request's needs. - foreach ( $request_order as $transport ) { - if ( in_array( $transport, $transports, true ) ) { - $transport = ucfirst( $transport ); - } - $class = 'WP_Http_' . $transport; - - // Check to see if this transport is a possibility, calls the transport statically. - if ( ! call_user_func( array( $class, 'test' ), $args, $url ) ) { - continue; - } - - return $class; - } - - return false; - } - - /** - * Dispatches a HTTP request to a supporting transport. - * - * Tests each transport in order to find a transport which matches the request arguments. - * Also caches the transport instance to be used later. - * - * The order for requests is cURL, and then PHP Streams. - * - * @since 3.2.0 - * @deprecated 5.1.0 Use WP_Http::request() - * @see WP_Http::request() - * - * @param string $url URL to request. - * @param array $args Request arguments. - * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. - * A WP_Error instance upon error. - */ - private function _dispatch_request( $url, $args ) { - static $transports = array(); - - $class = $this->_get_first_available_transport( $args, $url ); - if ( ! $class ) { - return new WP_Error( 'http_failure', __( 'There are no HTTP transports available which can complete the requested request.' ) ); - } - - // Transport claims to support request, instantiate it and give it a whirl. - if ( empty( $transports[ $class ] ) ) { - $transports[ $class ] = new $class(); - } - - $response = $transports[ $class ]->request( $url, $args ); - - /** This action is documented in wp-includes/class-wp-http.php */ - do_action( 'http_api_debug', $response, 'response', $class, $args, $url ); - - if ( is_wp_error( $response ) ) { - return $response; - } - - /** This filter is documented in wp-includes/class-wp-http.php */ - return apply_filters( 'http_response', $response, $args, $url ); - } - - /** - * Uses the POST HTTP method. - * - * Used for sending data that is expected to be in the body. - * - * @since 2.7.0 - * - * @param string $url The request URL. - * @param string|array $args Optional. Override the defaults. - * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. - * A WP_Error instance upon error. - */ - public function post( $url, $args = array() ) { - $defaults = array( 'method' => 'POST' ); - $parsed_args = wp_parse_args( $args, $defaults ); - return $this->request( $url, $parsed_args ); - } - - /** - * Uses the GET HTTP method. - * - * Used for sending data that is expected to be in the body. - * - * @since 2.7.0 - * - * @param string $url The request URL. - * @param string|array $args Optional. Override the defaults. - * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. - * A WP_Error instance upon error. - */ - public function get( $url, $args = array() ) { - $defaults = array( 'method' => 'GET' ); - $parsed_args = wp_parse_args( $args, $defaults ); - return $this->request( $url, $parsed_args ); - } - - /** - * Uses the HEAD HTTP method. - * - * Used for sending data that is expected to be in the body. - * - * @since 2.7.0 - * - * @param string $url The request URL. - * @param string|array $args Optional. Override the defaults. - * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. - * A WP_Error instance upon error. - */ - public function head( $url, $args = array() ) { - $defaults = array( 'method' => 'HEAD' ); - $parsed_args = wp_parse_args( $args, $defaults ); - return $this->request( $url, $parsed_args ); - } - - /** - * Parses the responses and splits the parts into headers and body. - * - * @since 2.7.0 - * - * @param string $response The full response string. - * @return array { - * Array with response headers and body. - * - * @type string $headers HTTP response headers. - * @type string $body HTTP response body. - * } - */ - public static function processResponse( $response ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid - $response = explode( "\r\n\r\n", $response, 2 ); - - return array( - 'headers' => $response[0], - 'body' => isset( $response[1] ) ? $response[1] : '', - ); - } - - /** - * Transforms header string into an array. - * - * @since 2.7.0 - * - * @param string|array $headers The original headers. If a string is passed, it will be converted - * to an array. If an array is passed, then it is assumed to be - * raw header data with numeric keys with the headers as the values. - * No headers must be passed that were already processed. - * @param string $url Optional. The URL that was requested. Default empty. - * @return array { - * Processed string headers. If duplicate headers are encountered, - * then a numbered array is returned as the value of that header-key. - * - * @type array $response { - * @type int $code The response status code. Default 0. - * @type string $message The response message. Default empty. - * } - * @type array $newheaders The processed header data as a multidimensional array. - * @type WP_Http_Cookie[] $cookies If the original headers contain the 'Set-Cookie' key, - * an array containing `WP_Http_Cookie` objects is returned. - * } - */ - public static function processHeaders( $headers, $url = '' ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid - // Split headers, one per array element. - if ( is_string( $headers ) ) { - // Tolerate line terminator: CRLF = LF (RFC 2616 19.3). - $headers = str_replace( "\r\n", "\n", $headers ); - /* - * Unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) <US-ASCII SP, space (32)>, - * <US-ASCII HT, horizontal-tab (9)> (RFC 2616 2.2). - */ - $headers = preg_replace( '/\n[ \t]/', ' ', $headers ); - // Create the headers array. - $headers = explode( "\n", $headers ); - } - - $response = array( - 'code' => 0, - 'message' => '', - ); - - /* - * If a redirection has taken place, The headers for each page request may have been passed. - * In this case, determine the final HTTP header and parse from there. - */ - for ( $i = count( $headers ) - 1; $i >= 0; $i-- ) { - if ( ! empty( $headers[ $i ] ) && false === strpos( $headers[ $i ], ':' ) ) { - $headers = array_splice( $headers, $i ); - break; - } - } - - $cookies = array(); - $newheaders = array(); - foreach ( (array) $headers as $tempheader ) { - if ( empty( $tempheader ) ) { - continue; - } - - if ( false === strpos( $tempheader, ':' ) ) { - $stack = explode( ' ', $tempheader, 3 ); - $stack[] = ''; - list( , $response['code'], $response['message']) = $stack; - continue; - } - - list($key, $value) = explode( ':', $tempheader, 2 ); - - $key = strtolower( $key ); - $value = trim( $value ); - - if ( isset( $newheaders[ $key ] ) ) { - if ( ! is_array( $newheaders[ $key ] ) ) { - $newheaders[ $key ] = array( $newheaders[ $key ] ); - } - $newheaders[ $key ][] = $value; - } else { - $newheaders[ $key ] = $value; - } - if ( 'set-cookie' === $key ) { - $cookies[] = new WP_Http_Cookie( $value, $url ); - } - } - - // Cast the Response Code to an int. - $response['code'] = (int) $response['code']; - - return array( - 'response' => $response, - 'headers' => $newheaders, - 'cookies' => $cookies, - ); - } - - /** - * Takes the arguments for a ::request() and checks for the cookie array. - * - * If it's found, then it upgrades any basic name => value pairs to WP_Http_Cookie instances, - * which are each parsed into strings and added to the Cookie: header (within the arguments array). - * Edits the array by reference. - * - * @since 2.8.0 - * - * @param array $r Full array of args passed into ::request() - */ - public static function buildCookieHeader( &$r ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid - if ( ! empty( $r['cookies'] ) ) { - // Upgrade any name => value cookie pairs to WP_HTTP_Cookie instances. - foreach ( $r['cookies'] as $name => $value ) { - if ( ! is_object( $value ) ) { - $r['cookies'][ $name ] = new WP_Http_Cookie( - array( - 'name' => $name, - 'value' => $value, - ) - ); - } - } - - $cookies_header = ''; - foreach ( (array) $r['cookies'] as $cookie ) { - $cookies_header .= $cookie->getHeaderValue() . '; '; - } - - $cookies_header = substr( $cookies_header, 0, -2 ); - $r['headers']['cookie'] = $cookies_header; - } - } - - /** - * Decodes chunk transfer-encoding, based off the HTTP 1.1 specification. - * - * Based off the HTTP http_encoding_dechunk function. - * - * @link https://tools.ietf.org/html/rfc2616#section-19.4.6 Process for chunked decoding. - * - * @since 2.7.0 - * - * @param string $body Body content. - * @return string Chunked decoded body on success or raw body on failure. - */ - public static function chunkTransferDecode( $body ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid - // The body is not chunked encoded or is malformed. - if ( ! preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', trim( $body ) ) ) { - return $body; - } - - $parsed_body = ''; - - // We'll be altering $body, so need a backup in case of error. - $body_original = $body; - - while ( true ) { - $has_chunk = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $body, $match ); - if ( ! $has_chunk || empty( $match[1] ) ) { - return $body_original; - } - - $length = hexdec( $match[1] ); - $chunk_length = strlen( $match[0] ); - - // Parse out the chunk of data. - $parsed_body .= substr( $body, $chunk_length, $length ); - - // Remove the chunk from the raw data. - $body = substr( $body, $length + $chunk_length ); - - // End of the document. - if ( '0' === trim( $body ) ) { - return $parsed_body; - } - } - } - - /** - * Determines whether an HTTP API request to the given URL should be blocked. - * - * Those who are behind a proxy and want to prevent access to certain hosts may do so. This will - * prevent plugins from working and core functionality, if you don't include `api.wordpress.org`. - * - * You block external URL requests by defining `WP_HTTP_BLOCK_EXTERNAL` as true in your `wp-config.php` - * file and this will only allow localhost and your site to make requests. The constant - * `WP_ACCESSIBLE_HOSTS` will allow additional hosts to go through for requests. The format of the - * `WP_ACCESSIBLE_HOSTS` constant is a comma separated list of hostnames to allow, wildcard domains - * are supported, eg `*.wordpress.org` will allow for all subdomains of `wordpress.org` to be contacted. - * - * @since 2.8.0 - * - * @link https://core.trac.wordpress.org/ticket/8927 Allow preventing external requests. - * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_ACCESSIBLE_HOSTS - * - * @param string $uri URI of url. - * @return bool True to block, false to allow. - */ - public function block_request( $uri ) { - // We don't need to block requests, because nothing is blocked. - if ( ! defined( 'WP_HTTP_BLOCK_EXTERNAL' ) || ! WP_HTTP_BLOCK_EXTERNAL ) { - return false; - } - - $check = parse_url( $uri ); - if ( ! $check ) { - return true; - } - - $home = parse_url( get_option( 'siteurl' ) ); - - // Don't block requests back to ourselves by default. - if ( 'localhost' === $check['host'] || ( isset( $home['host'] ) && $home['host'] === $check['host'] ) ) { - /** - * Filters whether to block local HTTP API requests. - * - * A local request is one to `localhost` or to the same host as the site itself. - * - * @since 2.8.0 - * - * @param bool $block Whether to block local requests. Default false. - */ - return apply_filters( 'block_local_requests', false ); - } - - if ( ! defined( 'WP_ACCESSIBLE_HOSTS' ) ) { - return true; - } - - static $accessible_hosts = null; - static $wildcard_regex = array(); - if ( null === $accessible_hosts ) { - $accessible_hosts = preg_split( '|,\s*|', WP_ACCESSIBLE_HOSTS ); - - if ( false !== strpos( WP_ACCESSIBLE_HOSTS, '*' ) ) { - $wildcard_regex = array(); - foreach ( $accessible_hosts as $host ) { - $wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) ); - } - $wildcard_regex = '/^(' . implode( '|', $wildcard_regex ) . ')$/i'; - } - } - - if ( ! empty( $wildcard_regex ) ) { - return ! preg_match( $wildcard_regex, $check['host'] ); - } else { - return ! in_array( $check['host'], $accessible_hosts, true ); // Inverse logic, if it's in the array, then don't block it. - } - } - - /** - * Used as a wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7. - * - * @deprecated 4.4.0 Use wp_parse_url() - * @see wp_parse_url() - * - * @param string $url The URL to parse. - * @return bool|array False on failure; Array of URL components on success; - * See parse_url()'s return values. - */ - protected static function parse_url( $url ) { - _deprecated_function( __METHOD__, '4.4.0', 'wp_parse_url()' ); - return wp_parse_url( $url ); - } - - /** - * Converts a relative URL to an absolute URL relative to a given URL. - * - * If an Absolute URL is provided, no processing of that URL is done. - * - * @since 3.4.0 - * - * @param string $maybe_relative_path The URL which might be relative. - * @param string $url The URL which $maybe_relative_path is relative to. - * @return string An Absolute URL, in a failure condition where the URL cannot be parsed, the relative URL will be returned. - */ - public static function make_absolute_url( $maybe_relative_path, $url ) { - if ( empty( $url ) ) { - return $maybe_relative_path; - } - - $url_parts = wp_parse_url( $url ); - if ( ! $url_parts ) { - return $maybe_relative_path; - } - - $relative_url_parts = wp_parse_url( $maybe_relative_path ); - if ( ! $relative_url_parts ) { - return $maybe_relative_path; - } - - // Check for a scheme on the 'relative' URL. - if ( ! empty( $relative_url_parts['scheme'] ) ) { - return $maybe_relative_path; - } - - $absolute_path = $url_parts['scheme'] . '://'; - - // Schemeless URLs will make it this far, so we check for a host in the relative URL - // and convert it to a protocol-URL. - if ( isset( $relative_url_parts['host'] ) ) { - $absolute_path .= $relative_url_parts['host']; - if ( isset( $relative_url_parts['port'] ) ) { - $absolute_path .= ':' . $relative_url_parts['port']; - } - } else { - $absolute_path .= $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 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']; - } - - // Add the fragment. - if ( ! empty( $relative_url_parts['fragment'] ) ) { - $path .= '#' . $relative_url_parts['fragment']; - } - - return $absolute_path . '/' . ltrim( $path, '/' ); - } - - /** - * Handles an HTTP redirect and follows it if appropriate. - * - * @since 3.7.0 - * - * @param string $url The URL which was requested. - * @param array $args The arguments which were used to make the request. - * @param array $response The response of the HTTP request. - * @return array|false|WP_Error An HTTP API response array if the redirect is successfully followed, - * false if no redirect is present, or a WP_Error object if there's an error. - */ - public static function handle_redirects( $url, $args, $response ) { - // If no redirects are present, or, redirects were not requested, perform no action. - if ( ! isset( $response['headers']['location'] ) || 0 === $args['_redirection'] ) { - return false; - } - - // Only perform redirections on redirection http codes. - if ( $response['response']['code'] > 399 || $response['response']['code'] < 300 ) { - return false; - } - - // Don't redirect if we've run out of redirects. - if ( $args['redirection']-- <= 0 ) { - return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) ); - } - - $redirect_location = $response['headers']['location']; - - // If there were multiple Location headers, use the last header specified. - if ( is_array( $redirect_location ) ) { - $redirect_location = array_pop( $redirect_location ); - } - - $redirect_location = WP_Http::make_absolute_url( $redirect_location, $url ); - - // POST requests should not POST to a redirected location. - if ( 'POST' === $args['method'] ) { - if ( in_array( $response['response']['code'], array( 302, 303 ), true ) ) { - $args['method'] = 'GET'; - } - } - - // Include valid cookies in the redirect process. - if ( ! empty( $response['cookies'] ) ) { - foreach ( $response['cookies'] as $cookie ) { - if ( $cookie->test( $redirect_location ) ) { - $args['cookies'][] = $cookie; - } - } - } - - return wp_remote_request( $redirect_location, $args ); - } - - /** - * Determines if a specified string represents an IP address or not. - * - * This function also detects the type of the IP address, returning either - * '4' or '6' to represent a IPv4 and IPv6 address respectively. - * This does not verify if the IP is a valid IP, only that it appears to be - * an IP address. - * - * @link http://home.deds.nl/~aeron/regex/ for IPv6 regex. - * - * @since 3.7.0 - * - * @param string $maybe_ip A suspected IP address. - * @return int|false Upon success, '4' or '6' to represent a IPv4 or IPv6 address, false upon failure - */ - public static function is_ip_address( $maybe_ip ) { - if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $maybe_ip ) ) { - return 4; - } - - if ( false !== strpos( $maybe_ip, ':' ) && preg_match( '/^(((?=.*(::))(?!.*\3.+\3))\3?|([\dA-F]{1,4}(\3|:\b|$)|\2))(?4){5}((?4){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i', trim( $maybe_ip, ' []' ) ) ) { - return 6; - } - - return false; - } -} diff --git a/wp-includes/class-wp-image-editor-gd.php b/wp-includes/class-wp-image-editor-gd.php index 334fdd9..226f63e 100644 --- a/wp-includes/class-wp-image-editor-gd.php +++ b/wp-includes/class-wp-image-editor-gd.php @@ -9,7 +9,7 @@ /** * ClassicPress Image Editor Class for Image Manipulation through GD * - * @since 3.5.0 + * @since WP-3.5.0 * * @see WP_Image_Editor */ @@ -23,7 +23,7 @@ class WP_Image_Editor_GD extends WP_Image_Editor { public function __destruct() { if ( $this->image ) { - // We don't need the original in memory anymore. + // we don't need the original in memory anymore imagedestroy( $this->image ); } } @@ -31,7 +31,9 @@ public function __destruct() { /** * Checks to see if current environment supports GD. * - * @since 3.5.0 + * @since WP-3.5.0 + * + * @static * * @param array $args * @return bool @@ -41,10 +43,10 @@ public static function test( $args = array() ) { return false; } - // On some setups GD library does not provide imagerotate() - Ticket #11536. + // On some setups GD library does not provide imagerotate() - https://core.trac.wordpress.org/ticket/11536 if ( isset( $args['methods'] ) && - in_array( 'rotate', $args['methods'], true ) && - ! function_exists( 'imagerotate' ) ) { + in_array( 'rotate', $args['methods'] ) && + ! function_exists( 'imagerotate' ) ) { return false; } @@ -55,7 +57,9 @@ public static function test( $args = array() ) { /** * Checks to see if editor supports the mime-type specified. * - * @since 3.5.0 + * @since WP-3.5.0 + * + * @static * * @param string $mime_type * @return bool @@ -69,8 +73,6 @@ public static function supports_mime_type( $mime_type ) { return ( $image_types & IMG_PNG ) != 0; case 'image/gif': return ( $image_types & IMG_GIF ) != 0; - case 'image/webp': - return ( $image_types & IMG_WEBP ) != 0; } return false; @@ -79,9 +81,9 @@ public static function supports_mime_type( $mime_type ) { /** * Loads image from $this->file into new GD Resource. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @return true|WP_Error True if loaded successfully; WP_Error on failure. + * @return bool|WP_Error True if loaded successfully; WP_Error on failure. */ public function load() { if ( $this->image ) { @@ -89,7 +91,7 @@ public function load() { } if ( ! is_file( $this->file ) && ! preg_match( '|^https?://|', $this->file ) ) { - return new WP_Error( 'error_loading_image', __( 'File does not exist?' ), $this->file ); + return new WP_Error( 'error_loading_image', __( 'File doesn’t exist?' ), $this->file ); } // Set artificially high because GD uses uncompressed images in memory. @@ -98,24 +100,16 @@ public function load() { $file_contents = @file_get_contents( $this->file ); if ( ! $file_contents ) { - return new WP_Error( 'error_loading_image', __( 'File does not exist?' ), $this->file ); + return new WP_Error( 'error_loading_image', __( 'File doesn’t exist?' ), $this->file ); } - // WebP may not work with imagecreatefromstring(). - if ( - function_exists( 'imagecreatefromwebp' ) && - ( 'image/webp' === wp_get_image_mime( $this->file ) ) - ) { - $this->image = @imagecreatefromwebp( $this->file ); - } else { - $this->image = @imagecreatefromstring( $file_contents ); - } + $this->image = @imagecreatefromstring( $file_contents ); if ( ! is_gd_image( $this->image ) ) { return new WP_Error( 'invalid_image', __( 'File is not an image.' ), $this->file ); } - $size = wp_getimagesize( $this->file ); + $size = @getimagesize( $this->file ); if ( ! $size ) { return new WP_Error( 'invalid_image', __( 'Could not read image size.' ), $this->file ); @@ -135,7 +129,7 @@ function_exists( 'imagecreatefromwebp' ) && /** * Sets or updates current image size. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $width * @param int $height @@ -161,11 +155,11 @@ protected function update_size( $width = false, $height = false ) { * At minimum, either a height or width must be provided. If one of the two is set * to null, the resize will maintain aspect ratio according to the provided dimension. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param int|null $max_w Image width. - * @param int|null $max_h Image height. - * @param bool $crop + * @param int|null $max_w Image width. + * @param int|null $max_h Image height. + * @param bool $crop * @return true|WP_Error */ public function resize( $max_w, $max_h, $crop = false ) { @@ -188,18 +182,17 @@ public function resize( $max_w, $max_h, $crop = false ) { } /** - * @param int $max_w - * @param int $max_h + * + * @param int $max_w + * @param int $max_h * @param bool|array $crop * @return resource|GdImage|WP_Error */ protected function _resize( $max_w, $max_h, $crop = false ) { $dims = image_resize_dimensions( $this->size['width'], $this->size['height'], $max_w, $max_h, $crop ); - if ( ! $dims ) { return new WP_Error( 'error_getting_dimensions', __( 'Could not calculate resized image dimensions' ), $this->file ); } - list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims; $resized = wp_imagecreatetruecolor( $dst_w, $dst_h ); @@ -214,26 +207,18 @@ protected function _resize( $max_w, $max_h, $crop = false ) { } /** - * Create multiple smaller images from a single source. + * Resize multiple images from a single source. * - * Attempts to create all sub-sizes and returns the meta data at the end. This - * may result in the server running out of resources. When it fails there may be few - * "orphaned" images left over as the meta data is never returned and saved. - * - * As of 5.3.0 the preferred way to do this is with `make_subsize()`. It creates - * the new images one at a time and allows for the meta data to be saved after - * each new image is created. - * - * @since 3.5.0 + * @since WP-3.5.0 * * @param array $sizes { - * An array of image size data arrays. + * An array of image size arrays. Default sizes are 'small', 'medium', 'medium_large', 'large'. * * Either a height or width must be provided. * If one of the two is set to null, the resize will - * maintain aspect ratio according to the source image. + * maintain aspect ratio according to the provided dimension. * - * @type array ...$0 { + * @type array $size { * Array of height, width values, and whether to crop. * * @type int $width Image width. Optional if `$height` is specified. @@ -244,75 +229,49 @@ protected function _resize( $max_w, $max_h, $crop = false ) { * @return array An array of resized images' metadata by size. */ public function multi_resize( $sizes ) { - $metadata = array(); + $metadata = array(); + $orig_size = $this->size; foreach ( $sizes as $size => $size_data ) { - $meta = $this->make_subsize( $size_data ); - - if ( ! is_wp_error( $meta ) ) { - $metadata[ $size ] = $meta; + if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) { + continue; } - } - - return $metadata; - } - - /** - * Create an image sub-size and return the image meta data value for it. - * - * @since 5.3.0 - * - * @param array $size_data { - * Array of size data. - * - * @type int $width The maximum width in pixels. - * @type int $height The maximum height in pixels. - * @type bool $crop Whether to crop the image to exact dimensions. - * } - * @return array|WP_Error The image data array for inclusion in the `sizes` array in the image meta, - * WP_Error object on error. - */ - public function make_subsize( $size_data ) { - if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) { - return new WP_Error( 'image_subsize_create_error', __( 'Cannot resize the image. Both width and height are not set.' ) ); - } - - $orig_size = $this->size; - if ( ! isset( $size_data['width'] ) ) { - $size_data['width'] = null; - } + if ( ! isset( $size_data['width'] ) ) { + $size_data['width'] = null; + } + if ( ! isset( $size_data['height'] ) ) { + $size_data['height'] = null; + } - if ( ! isset( $size_data['height'] ) ) { - $size_data['height'] = null; - } + if ( ! isset( $size_data['crop'] ) ) { + $size_data['crop'] = false; + } - if ( ! isset( $size_data['crop'] ) ) { - $size_data['crop'] = false; - } + $image = $this->_resize( $size_data['width'], $size_data['height'], $size_data['crop'] ); + $duplicate = ( ( $orig_size['width'] == $size_data['width'] ) && ( $orig_size['height'] == $size_data['height'] ) ); - $resized = $this->_resize( $size_data['width'], $size_data['height'], $size_data['crop'] ); + if ( ! is_wp_error( $image ) && ! $duplicate ) { + $resized = $this->_save( $image ); - if ( is_wp_error( $resized ) ) { - $saved = $resized; - } else { - $saved = $this->_save( $resized ); - imagedestroy( $resized ); - } + imagedestroy( $image ); - $this->size = $orig_size; + if ( ! is_wp_error( $resized ) && $resized ) { + unset( $resized['path'] ); + $metadata[ $size ] = $resized; + } + } - if ( ! is_wp_error( $saved ) ) { - unset( $saved['path'] ); + $this->size = $orig_size; } - return $saved; + return $metadata; } /** * Crops Image. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $src_x The start x position to crop from. * @param int $src_y The start y position to crop from. @@ -321,11 +280,11 @@ public function make_subsize( $size_data ) { * @param int $dst_w Optional. The destination width. * @param int $dst_h Optional. The destination height. * @param bool $src_abs Optional. If the source crop points are absolute. - * @return true|WP_Error + * @return bool|WP_Error */ public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false ) { - // If destination width/height isn't specified, - // use same as width/height from source. + // If destination width/height isn't specified, use same as + // width/height from source. if ( ! $dst_w ) { $dst_w = $src_w; } @@ -333,13 +292,7 @@ public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = nu $dst_h = $src_h; } - foreach ( array( $src_w, $src_h, $dst_w, $dst_h ) as $value ) { - if ( ! is_numeric( $value ) || (int) $value <= 0 ) { - return new WP_Error( 'image_crop_error', __( 'Image crop failed.' ), $this->file ); - } - } - - $dst = wp_imagecreatetruecolor( (int) $dst_w, (int) $dst_h ); + $dst = wp_imagecreatetruecolor( $dst_w, $dst_h ); if ( $src_abs ) { $src_w -= $src_x; @@ -350,7 +303,7 @@ public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = nu imageantialias( $dst, true ); } - imagecopyresampled( $dst, $this->image, 0, 0, (int) $src_x, (int) $src_y, (int) $dst_w, (int) $dst_h, (int) $src_w, (int) $src_h ); + imagecopyresampled( $dst, $this->image, 0, 0, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ); if ( is_gd_image( $dst ) ) { imagedestroy( $this->image ); @@ -366,7 +319,7 @@ public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = nu * Rotates current image counter-clockwise by $angle. * Ported from image-edit.php * - * @since 3.5.0 + * @since WP-3.5.0 * * @param float $angle * @return true|WP_Error @@ -392,10 +345,10 @@ public function rotate( $angle ) { /** * Flips current image. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param bool $horz Flip along Horizontal Axis. - * @param bool $vert Flip along Vertical Axis. + * @param bool $horz Flip along Horizontal Axis + * @param bool $vert Flip along Vertical Axis * @return true|WP_Error */ public function flip( $horz, $vert ) { @@ -422,26 +375,14 @@ public function flip( $horz, $vert ) { /** * Saves current in-memory image to file. * - * @since 3.5.0 - * @since 5.9.0 Renamed `$filename` to `$destfilename` to match parent class - * for PHP 8 named parameter support. - * @since 6.0.0 The `$filesize` value was added to the returned array. - * - * @param string|null $destfilename Optional. Destination filename. Default null. - * @param string|null $mime_type Optional. The mime-type. Default null. - * @return array|WP_Error { - * Array on success or WP_Error if the file failed to save. - * - * @type string $path Path to the image file. - * @type string $file Name of the image file. - * @type int $width Image width. - * @type int $height Image height. - * @type string $mime-type The mime type of the image. - * @type int $filesize File size of the image. - * } + * @since WP-3.5.0 + * + * @param string|null $filename + * @param string|null $mime_type + * @return array|WP_Error {'path'=>string, 'file'=>string, 'width'=>int, 'height'=>int, 'mime-type'=>string} */ - public function save( $destfilename = null, $mime_type = null ) { - $saved = $this->_save( $this->image, $destfilename, $mime_type ); + public function save( $filename = null, $mime_type = null ) { + $saved = $this->_save( $this->image, $filename, $mime_type ); if ( ! is_wp_error( $saved ) ) { $this->file = $saved['path']; @@ -452,22 +393,10 @@ public function save( $destfilename = null, $mime_type = null ) { } /** - * @since 3.5.0 - * @since 6.0.0 The `$filesize` value was added to the returned array. - * * @param resource|GdImage $image * @param string|null $filename * @param string|null $mime_type - * @return array|WP_Error { - * Array on success or WP_Error if the file failed to save. - * - * @type string $path Path to the image file. - * @type string $file Name of the image file. - * @type int $width Image width. - * @type int $height Image height. - * @type string $mime-type The mime type of the image. - * @type int $filesize File size of the image. - * } + * @return array|WP_Error */ protected function _save( $image, $filename = null, $mime_type = null ) { list( $filename, $extension, $mime_type ) = $this->get_output_format( $filename, $mime_type ); @@ -476,12 +405,12 @@ protected function _save( $image, $filename = null, $mime_type = null ) { $filename = $this->generate_filename( null, null, $extension ); } - if ( 'image/gif' === $mime_type ) { + if ( 'image/gif' == $mime_type ) { if ( ! $this->make_image( $filename, 'imagegif', array( $image, $filename ) ) ) { return new WP_Error( 'image_save_error', __( 'Image Editor Save Failed' ) ); } - } elseif ( 'image/png' === $mime_type ) { - // Convert from full colors to index colors, like original PNG. + } elseif ( 'image/png' == $mime_type ) { + // convert from full colors to index colors, like original PNG. if ( function_exists( 'imageistruecolor' ) && ! imageistruecolor( $image ) ) { imagetruecolortopalette( $image, false, imagecolorstotal( $image ) ); } @@ -489,32 +418,28 @@ protected function _save( $image, $filename = null, $mime_type = null ) { if ( ! $this->make_image( $filename, 'imagepng', array( $image, $filename ) ) ) { return new WP_Error( 'image_save_error', __( 'Image Editor Save Failed' ) ); } - } elseif ( 'image/jpeg' === $mime_type ) { + } elseif ( 'image/jpeg' == $mime_type ) { if ( ! $this->make_image( $filename, 'imagejpeg', array( $image, $filename, $this->get_quality() ) ) ) { return new WP_Error( 'image_save_error', __( 'Image Editor Save Failed' ) ); } - } elseif ( 'image/webp' == $mime_type ) { - if ( ! function_exists( 'imagewebp' ) || ! $this->make_image( $filename, 'imagewebp', array( $image, $filename, $this->get_quality() ) ) ) { - return new WP_Error( 'image_save_error', __( 'Image Editor Save Failed' ) ); - } } else { return new WP_Error( 'image_save_error', __( 'Image Editor Save Failed' ) ); } - // Set correct file permissions. + // Set correct file permissions $stat = stat( dirname( $filename ) ); - $perms = $stat['mode'] & 0000666; // Same permissions as parent folder, strip off the executable bits. + $perms = $stat['mode'] & 0000666; //same permissions as parent folder, strip off the executable bits chmod( $filename, $perms ); + /** + * Filters the name of the saved image file. + * + * @since WP-2.6.0 + * + * @param string $filename Name of the file. + */ return array( 'path' => $filename, - /** - * Filters the name of the saved image file. - * - * @since 2.6.0 - * - * @param string $filename Name of the file. - */ 'file' => wp_basename( apply_filters( 'image_make_intermediate_size', $filename ) ), 'width' => $this->size['width'], 'height' => $this->size['height'], @@ -526,7 +451,7 @@ protected function _save( $image, $filename = null, $mime_type = null ) { /** * Returns stream of current image. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $mime_type The mime type of the image. * @return bool True on success, false on failure. @@ -541,12 +466,6 @@ public function stream( $mime_type = null ) { case 'image/gif': header( 'Content-Type: image/gif' ); return imagegif( $this->image ); - case 'image/webp': - if ( function_exists( 'imagewebp' ) ) { - header( 'Content-Type: image/webp' ); - return imagewebp( $this->image, null, $this->get_quality() ); - } - // Fall back to the default if webp isn't supported. default: header( 'Content-Type: image/jpeg' ); return imagejpeg( $this->image, null, $this->get_quality() ); @@ -556,18 +475,18 @@ public function stream( $mime_type = null ) { /** * Either calls editor's save function or handles file as a stream. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param string $filename - * @param callable $callback - * @param array $arguments + * @param string|stream $filename + * @param callable $function + * @param array $arguments * @return bool */ - protected function make_image( $filename, $callback, $arguments ) { + protected function make_image( $filename, $function, $arguments ) { if ( wp_is_stream( $filename ) ) { $arguments[1] = null; } - return parent::make_image( $filename, $callback, $arguments ); + return parent::make_image( $filename, $function, $arguments ); } } diff --git a/wp-includes/class-wp-image-editor-imagick.php b/wp-includes/class-wp-image-editor-imagick.php index 28499b5..6b31f86 100644 --- a/wp-includes/class-wp-image-editor-imagick.php +++ b/wp-includes/class-wp-image-editor-imagick.php @@ -9,7 +9,7 @@ /** * ClassicPress Image Editor Class for Image Manipulation through Imagick PHP Module * - * @since 3.5.0 + * @since WP-3.5.0 * * @see WP_Image_Editor */ @@ -23,7 +23,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor { public function __destruct() { if ( $this->image instanceof Imagick ) { - // We don't need the original in memory anymore. + // we don't need the original in memory anymore $this->image->clear(); $this->image->destroy(); } @@ -35,7 +35,9 @@ public function __destruct() { * We require Imagick 2.2.0 or greater, based on whether the queryFormats() * method can be called statically. * - * @since 3.5.0 + * @since WP-3.5.0 + * + * @static * * @param array $args * @return bool @@ -71,7 +73,6 @@ public static function test( $args = array() ) { 'flipimage', 'flopimage', 'readimage', - 'readimageblob', ); // Now, test for deep requirements within Imagick. @@ -84,13 +85,20 @@ public static function test( $args = array() ) { return false; } + // HHVM Imagick does not support loading from URL, so fail to allow fallback to GD. + if ( defined( 'HHVM_VERSION' ) && isset( $args['path'] ) && preg_match( '|^https?://|', $args['path'] ) ) { + return false; + } + return true; } /** * Checks to see if editor supports the mime-type specified. * - * @since 3.5.0 + * @since WP-3.5.0 + * + * @static * * @param string $mime_type * @return bool @@ -119,7 +127,7 @@ public static function supports_mime_type( $mime_type ) { /** * Loads image from $this->file into new Imagick Object. * - * @since 3.5.0 + * @since WP-3.5.0 * * @return true|WP_Error True if loaded; WP_Error on failure. */ @@ -128,8 +136,8 @@ public function load() { return true; } - if ( ! is_file( $this->file ) && ! wp_is_stream( $this->file ) ) { - return new WP_Error( 'error_loading_image', __( 'File does not exist?' ), $this->file ); + if ( ! is_file( $this->file ) && ! preg_match( '|^https?://|', $this->file ) ) { + return new WP_Error( 'error_loading_image', __( 'File doesn’t exist?' ), $this->file ); } /* @@ -141,27 +149,21 @@ public function load() { try { $this->image = new Imagick(); $file_extension = strtolower( pathinfo( $this->file, PATHINFO_EXTENSION ) ); + $filename = $this->file; - if ( 'pdf' === $file_extension ) { - $pdf_loaded = $this->pdf_load_source(); - - if ( is_wp_error( $pdf_loaded ) ) { - return $pdf_loaded; - } - } else { - if ( wp_is_stream( $this->file ) ) { - // Due to reports of issues with streams with `Imagick::readImageFile()`, uses `Imagick::readImageBlob()` instead. - $this->image->readImageBlob( file_get_contents( $this->file ), $this->file ); - } else { - $this->image->readImage( $this->file ); - } + if ( 'pdf' == $file_extension ) { + $filename = $this->pdf_setup(); } + // Reading image after Imagick instantiation because `setResolution` + // only applies correctly before the image is read. + $this->image->readImage( $filename ); + if ( ! $this->image->valid() ) { return new WP_Error( 'invalid_image', __( 'File is not an image.' ), $this->file ); } - // Select the first frame to handle animated images properly. + // Select the first frame to handle animated images properly if ( is_callable( array( $this->image, 'setIteratorIndex' ) ) ) { $this->image->setIteratorIndex( 0 ); } @@ -172,7 +174,6 @@ public function load() { } $updated_size = $this->update_size(); - if ( is_wp_error( $updated_size ) ) { return $updated_size; } @@ -183,7 +184,7 @@ public function load() { /** * Sets Image Compression quality on a 1-100% scale. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $quality Compression Quality. Range: [1,100] * @return true|WP_Error True if set successfully; WP_Error on failure. @@ -197,39 +198,27 @@ public function set_quality( $quality = null ) { } try { - switch ( $this->mime_type ) { - case 'image/jpeg': - $this->image->setImageCompressionQuality( $quality ); - $this->image->setImageCompression( imagick::COMPRESSION_JPEG ); - break; - case 'image/webp': - $webp_info = wp_get_webp_info( $this->file ); - - if ( 'lossless' === $webp_info['type'] ) { - // Use WebP lossless settings. - $this->image->setImageCompressionQuality( 100 ); - $this->image->setOption( 'webp:lossless', 'true' ); - } else { - $this->image->setImageCompressionQuality( $quality ); - } - break; - default: - $this->image->setImageCompressionQuality( $quality ); + if ( 'image/jpeg' == $this->mime_type ) { + $this->image->setImageCompressionQuality( $quality ); + $this->image->setImageCompression( imagick::COMPRESSION_JPEG ); + } else { + $this->image->setImageCompressionQuality( $quality ); } } catch ( Exception $e ) { return new WP_Error( 'image_quality_error', $e->getMessage() ); } + return true; } - /** * Sets or updates current image size. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $width * @param int $height + * * @return true|WP_Error */ protected function update_size( $width = null, $height = null ) { @@ -253,50 +242,6 @@ protected function update_size( $width = null, $height = null ) { return parent::update_size( $width, $height ); } - /** - * Sets Imagick time limit. - * - * Depending on configuration, Imagick processing may take time. - * - * Multiple problems exist if PHP times out before ImageMagick completed: - * 1. Temporary files aren't cleaned by ImageMagick garbage collection. - * 2. No clear error is provided. - * 3. The cause of such timeout can be hard to pinpoint. - * - * This function, which is expected to be run before heavy image routines, resolves - * point 1 above by aligning Imagick's timeout with PHP's timeout, assuming it is set. - * - * Note: - * - Imagick resource exhaustion does not issue catchable exceptions (yet). - * See https://github.com/Imagick/imagick/issues/333. - * - The resource limit is not saved/restored. It applies to subsequent - * image operations within the time of the HTTP request. - * - * @since 6.2.0 - * - * @return int|null The new limit on success, null on failure. - */ - public static function set_imagick_time_limit() { - if ( ! defined( 'Imagick::RESOURCETYPE_TIME' ) ) { - return null; - } - - // Returns PHP_FLOAT_MAX if unset. - $imagick_timeout = Imagick::getResourceLimit( Imagick::RESOURCETYPE_TIME ); - - // Convert to an integer, keeping in mind that: 0 === (int) PHP_FLOAT_MAX. - $imagick_timeout = $imagick_timeout > PHP_INT_MAX ? PHP_INT_MAX : (int) $imagick_timeout; - - $php_timeout = (int) ini_get( 'max_execution_time' ); - - if ( $php_timeout > 1 && $php_timeout < $imagick_timeout ) { - $limit = (float) 0.8 * $php_timeout; - Imagick::setResourceLimit( Imagick::RESOURCETYPE_TIME, $limit ); - - return $limit; - } - } - /** * Resizes current image. * @@ -304,12 +249,12 @@ public static function set_imagick_time_limit() { * If one of the two is set to null, the resize will * maintain aspect ratio according to the provided dimension. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param int|null $max_w Image width. - * @param int|null $max_h Image height. - * @param bool $crop - * @return true|WP_Error + * @param int|null $max_w Image width. + * @param int|null $max_h Image height. + * @param bool $crop + * @return bool|WP_Error */ public function resize( $max_w, $max_h, $crop = false ) { if ( ( $this->size['width'] == $max_w ) && ( $this->size['height'] == $max_h ) ) { @@ -320,16 +265,13 @@ public function resize( $max_w, $max_h, $crop = false ) { if ( ! $dims ) { return new WP_Error( 'error_getting_dimensions', __( 'Could not calculate resized image dimensions' ) ); } - list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims; if ( $crop ) { return $this->crop( $src_x, $src_y, $src_w, $src_h, $dst_w, $dst_h ); } - self::set_imagick_time_limit(); - - // Execute the resize. + // Execute the resize $thumb_result = $this->thumbnail_image( $dst_w, $dst_h ); if ( is_wp_error( $thumb_result ) ) { return $thumb_result; @@ -341,16 +283,16 @@ public function resize( $max_w, $max_h, $crop = false ) { /** * Efficiently resize the current image * - * This is a WordPress specific implementation of Imagick::thumbnailImage(), + * This is a ClassicPress specific implementation of Imagick::thumbnailImage(), * which resizes an image to given dimensions and removes any associated profiles. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param int $dst_w The destination width. * @param int $dst_h The destination height. * @param string $filter_name Optional. The Imagick filter to use when resizing. Default 'FILTER_TRIANGLE'. * @param bool $strip_meta Optional. Strip all profiles, excluding color profiles, from the image. Default true. - * @return void|WP_Error + * @return bool|WP_Error */ protected function thumbnail_image( $dst_w, $dst_h, $filter_name = 'FILTER_TRIANGLE', $strip_meta = true ) { $allowed_filters = array( @@ -372,10 +314,10 @@ protected function thumbnail_image( $dst_w, $dst_h, $filter_name = 'FILTER_TRIAN ); /** - * Set the filter value if '$filter_name' name is in the allowed list and the related - * Imagick constant is defined or fall back to the default filter. + * Set the filter value if '$filter_name' name is in our whitelist and the related + * Imagick constant is defined or fall back to our default filter. */ - if ( in_array( $filter_name, $allowed_filters, true ) && defined( 'Imagick::' . $filter_name ) ) { + if ( in_array( $filter_name, $allowed_filters ) && defined( 'Imagick::' . $filter_name ) ) { $filter = constant( 'Imagick::' . $filter_name ); } else { $filter = defined( 'Imagick::FILTER_TRIANGLE' ) ? Imagick::FILTER_TRIANGLE : false; @@ -387,7 +329,7 @@ protected function thumbnail_image( $dst_w, $dst_h, $filter_name = 'FILTER_TRIAN * This filter only applies when resizing using the Imagick editor since GD * always strips profiles by default. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param bool $strip_meta Whether to strip image metadata during resizing. Default true. */ @@ -424,7 +366,7 @@ protected function thumbnail_image( $dst_w, $dst_h, $filter_name = 'FILTER_TRIAN } // Set appropriate quality settings after resizing. - if ( 'image/jpeg' === $this->mime_type ) { + if ( 'image/jpeg' == $this->mime_type ) { if ( is_callable( array( $this->image, 'unsharpMaskImage' ) ) ) { $this->image->unsharpMaskImage( 0.25, 0.25, 8, 0.065 ); } @@ -471,26 +413,18 @@ protected function thumbnail_image( $dst_w, $dst_h, $filter_name = 'FILTER_TRIAN } /** - * Create multiple smaller images from a single source. - * - * Attempts to create all sub-sizes and returns the meta data at the end. This - * may result in the server running out of resources. When it fails there may be few - * "orphaned" images left over as the meta data is never returned and saved. + * Resize multiple images from a single source. * - * As of 5.3.0 the preferred way to do this is with `make_subsize()`. It creates - * the new images one at a time and allows for the meta data to be saved after - * each new image is created. - * - * @since 3.5.0 + * @since WP-3.5.0 * * @param array $sizes { - * An array of image size data arrays. + * An array of image size arrays. Default sizes are 'small', 'medium', 'medium_large', 'large'. * * Either a height or width must be provided. * If one of the two is set to null, the resize will * maintain aspect ratio according to the provided dimension. * - * @type array ...$0 { + * @type array $size { * Array of height, width values, and whether to crop. * * @type int $width Image width. Optional if `$height` is specified. @@ -501,93 +435,67 @@ protected function thumbnail_image( $dst_w, $dst_h, $filter_name = 'FILTER_TRIAN * @return array An array of resized images' metadata by size. */ public function multi_resize( $sizes ) { - $metadata = array(); + $metadata = array(); + $orig_size = $this->size; + $orig_image = $this->image->getImage(); foreach ( $sizes as $size => $size_data ) { - $meta = $this->make_subsize( $size_data ); - - if ( ! is_wp_error( $meta ) ) { - $metadata[ $size ] = $meta; + if ( ! $this->image ) { + $this->image = $orig_image->getImage(); } - } - - return $metadata; - } - /** - * Create an image sub-size and return the image meta data value for it. - * - * @since 5.3.0 - * - * @param array $size_data { - * Array of size data. - * - * @type int $width The maximum width in pixels. - * @type int $height The maximum height in pixels. - * @type bool $crop Whether to crop the image to exact dimensions. - * } - * @return array|WP_Error The image data array for inclusion in the `sizes` array in the image meta, - * WP_Error object on error. - */ - public function make_subsize( $size_data ) { - if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) { - return new WP_Error( 'image_subsize_create_error', __( 'Cannot resize the image. Both width and height are not set.' ) ); - } + if ( ! isset( $size_data['width'] ) && ! isset( $size_data['height'] ) ) { + continue; + } - $orig_size = $this->size; - $orig_image = $this->image->getImage(); + if ( ! isset( $size_data['width'] ) ) { + $size_data['width'] = null; + } + if ( ! isset( $size_data['height'] ) ) { + $size_data['height'] = null; + } - if ( ! isset( $size_data['width'] ) ) { - $size_data['width'] = null; - } + if ( ! isset( $size_data['crop'] ) ) { + $size_data['crop'] = false; + } - if ( ! isset( $size_data['height'] ) ) { - $size_data['height'] = null; - } + $resize_result = $this->resize( $size_data['width'], $size_data['height'], $size_data['crop'] ); + $duplicate = ( ( $orig_size['width'] == $size_data['width'] ) && ( $orig_size['height'] == $size_data['height'] ) ); - if ( ! isset( $size_data['crop'] ) ) { - $size_data['crop'] = false; - } + if ( ! is_wp_error( $resize_result ) && ! $duplicate ) { + $resized = $this->_save( $this->image ); - if ( ( $this->size['width'] === $size_data['width'] ) && ( $this->size['height'] === $size_data['height'] ) ) { - return new WP_Error( 'image_subsize_create_error', __( 'The image already has the requested size.' ) ); - } - - $resized = $this->resize( $size_data['width'], $size_data['height'], $size_data['crop'] ); + $this->image->clear(); + $this->image->destroy(); + $this->image = null; - if ( is_wp_error( $resized ) ) { - $saved = $resized; - } else { - $saved = $this->_save( $this->image ); + if ( ! is_wp_error( $resized ) && $resized ) { + unset( $resized['path'] ); + $metadata[ $size ] = $resized; + } + } - $this->image->clear(); - $this->image->destroy(); - $this->image = null; + $this->size = $orig_size; } - $this->size = $orig_size; $this->image = $orig_image; - if ( ! is_wp_error( $saved ) ) { - unset( $saved['path'] ); - } - - return $saved; + return $metadata; } /** * Crops Image. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @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_h The height to crop. - * @param int $dst_w Optional. The destination width. - * @param int $dst_h Optional. The destination height. + * @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_h The height to crop. + * @param int $dst_w Optional. The destination width. + * @param int $dst_h Optional. The destination height. * @param bool $src_abs Optional. If the source crop points are absolute. - * @return true|WP_Error + * @return bool|WP_Error */ public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false ) { if ( $src_abs ) { @@ -595,15 +503,13 @@ public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = nu $src_h -= $src_y; } - self::set_imagick_time_limit(); - try { $this->image->cropImage( $src_w, $src_h, $src_x, $src_y ); $this->image->setImagePage( $src_w, $src_h, 0, 0 ); if ( $dst_w || $dst_h ) { - // If destination width/height isn't specified, - // use same as width/height from source. + // If destination width/height isn't specified, use same as + // width/height from source. if ( ! $dst_w ) { $dst_w = $src_w; } @@ -628,7 +534,7 @@ public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = nu /** * Rotates current image counter-clockwise by $angle. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param float $angle * @return true|WP_Error @@ -641,7 +547,7 @@ public function rotate( $angle ) { try { $this->image->rotateImage( new ImagickPixel( 'none' ), 360 - $angle ); - // Normalize EXIF orientation data so that display is consistent across devices. + // Normalise Exif orientation data so that display is consistent across devices. if ( is_callable( array( $this->image, 'setImageOrientation' ) ) && defined( 'Imagick::ORIENTATION_TOPLEFT' ) ) { $this->image->setImageOrientation( Imagick::ORIENTATION_TOPLEFT ); } @@ -663,7 +569,7 @@ public function rotate( $angle ) { /** * Flips current image. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param bool $horz Flip along Horizontal Axis * @param bool $vert Flip along Vertical Axis @@ -678,55 +584,20 @@ public function flip( $horz, $vert ) { if ( $vert ) { $this->image->flopImage(); } - - // Normalize EXIF orientation data so that display is consistent across devices. - if ( is_callable( array( $this->image, 'setImageOrientation' ) ) && defined( 'Imagick::ORIENTATION_TOPLEFT' ) ) { - $this->image->setImageOrientation( Imagick::ORIENTATION_TOPLEFT ); - } } catch ( Exception $e ) { return new WP_Error( 'image_flip_error', $e->getMessage() ); } - return true; } - /** - * Check if a JPEG image has EXIF Orientation tag and rotate it if needed. - * - * As ImageMagick copies the EXIF data to the flipped/rotated image, proceed only - * if EXIF Orientation can be reset afterwards. - * - * @since 5.3.0 - * - * @return bool|WP_Error True if the image was rotated. False if no EXIF data or if the image doesn't need rotation. - * WP_Error if error while rotating. - */ - public function maybe_exif_rotate() { - if ( is_callable( array( $this->image, 'setImageOrientation' ) ) && defined( 'Imagick::ORIENTATION_TOPLEFT' ) ) { - return parent::maybe_exif_rotate(); - } else { - return new WP_Error( 'write_exif_error', __( 'The image cannot be rotated because the embedded meta data cannot be updated.' ) ); - } - } - /** * Saves current image to file. * - * @since 3.5.0 - * @since 6.0.0 The `$filesize` value was added to the returned array. - * - * @param string $destfilename Optional. Destination filename. Default null. - * @param string $mime_type Optional. The mime-type. Default null. - * @return array|WP_Error { - * Array on success or WP_Error if the file failed to save. + * @since WP-3.5.0 * - * @type string $path Path to the image file. - * @type string $file Name of the image file. - * @type int $width Image width. - * @type int $height Image height. - * @type string $mime-type The mime type of the image. - * @type int $filesize File size of the image. - * } + * @param string $destfilename + * @param string $mime_type + * @return array|WP_Error {'path'=>string, 'file'=>string, 'width'=>int, 'height'=>int, 'mime-type'=>string} */ public function save( $destfilename = null, $mime_type = null ) { $saved = $this->_save( $this->image, $destfilename, $mime_type ); @@ -746,22 +617,11 @@ public function save( $destfilename = null, $mime_type = null ) { } /** - * @since 3.5.0 - * @since 6.0.0 The `$filesize` value was added to the returned array. * * @param Imagick $image - * @param string $filename - * @param string $mime_type - * @return array|WP_Error { - * Array on success or WP_Error if the file failed to save. - * - * @type string $path Path to the image file. - * @type string $file Name of the image file. - * @type int $width Image width. - * @type int $height Image height. - * @type string $mime-type The mime type of the image. - * @type int $filesize File size of the image. - * } + * @param string $filename + * @param string $mime_type + * @return array|WP_Error */ protected function _save( $image, $filename = null, $mime_type = null ) { list( $filename, $extension, $mime_type ) = $this->get_output_format( $filename, $mime_type ); @@ -771,34 +631,26 @@ protected function _save( $image, $filename = null, $mime_type = null ) { } try { - // Store initial format. + // Store initial Format $orig_format = $this->image->getImageFormat(); $this->image->setImageFormat( strtoupper( $this->get_extension( $mime_type ) ) ); - } catch ( Exception $e ) { - return new WP_Error( 'image_save_error', $e->getMessage(), $filename ); - } - - $write_image_result = $this->write_image( $this->image, $filename ); - if ( is_wp_error( $write_image_result ) ) { - return $write_image_result; - } + $this->make_image( $filename, array( $image, 'writeImage' ), array( $filename ) ); - try { - // Reset original format. + // Reset original Format $this->image->setImageFormat( $orig_format ); } catch ( Exception $e ) { return new WP_Error( 'image_save_error', $e->getMessage(), $filename ); } - // Set correct file permissions. + // Set correct file permissions $stat = stat( dirname( $filename ) ); - $perms = $stat['mode'] & 0000666; // Same permissions as parent folder, strip off the executable bits. + $perms = $stat['mode'] & 0000666; //same permissions as parent folder, strip off the executable bits chmod( $filename, $perms ); + /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ return array( 'path' => $filename, - /** This filter is documented in wp-includes/class-wp-image-editor-gd.php */ 'file' => wp_basename( apply_filters( 'image_make_intermediate_size', $filename ) ), 'width' => $this->size['width'], 'height' => $this->size['height'], @@ -807,76 +659,26 @@ protected function _save( $image, $filename = null, $mime_type = null ) { ); } - /** - * Writes an image to a file or stream. - * - * @since 5.6.0 - * - * @param Imagick $image - * @param string $filename The destination filename or stream URL. - * @return true|WP_Error - */ - private function write_image( $image, $filename ) { - if ( wp_is_stream( $filename ) ) { - /* - * Due to reports of issues with streams with `Imagick::writeImageFile()` and `Imagick::writeImage()`, copies the blob instead. - * Checks for exact type due to: https://www.php.net/manual/en/function.file-put-contents.php - */ - if ( file_put_contents( $filename, $image->getImageBlob() ) === false ) { - return new WP_Error( - 'image_save_error', - sprintf( - /* translators: %s: PHP function name. */ - __( '%s failed while writing image to stream.' ), - '<code>file_put_contents()</code>' - ), - $filename - ); - } else { - return true; - } - } else { - $dirname = dirname( $filename ); - - if ( ! wp_mkdir_p( $dirname ) ) { - return new WP_Error( - 'image_save_error', - sprintf( - /* translators: %s: Directory path. */ - __( 'Unable to create directory %s. Is its parent directory writable by the server?' ), - esc_html( $dirname ) - ) - ); - } - - try { - return $image->writeImage( $filename ); - } catch ( Exception $e ) { - return new WP_Error( 'image_save_error', $e->getMessage(), $filename ); - } - } - } - /** * Streams current image to browser. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $mime_type The mime type of the image. - * @return true|WP_Error True on success, WP_Error object on failure. + * @return bool|WP_Error True on success, WP_Error object on failure. */ public function stream( $mime_type = null ) { list( $filename, $extension, $mime_type ) = $this->get_output_format( null, $mime_type ); try { - // Temporarily change format for stream. + // Temporarily change format for stream $this->image->setImageFormat( strtoupper( $extension ) ); - // Output stream of image content. + // Output stream of image content header( "Content-Type: $mime_type" ); print $this->image->getImageBlob(); - // Reset image to original format. + // Reset Image to original Format $this->image->setImageFormat( $this->get_extension( $this->mime_type ) ); } catch ( Exception $e ) { return new WP_Error( 'image_stream_error', $e->getMessage() ); @@ -888,32 +690,20 @@ public function stream( $mime_type = null ) { /** * Strips all image meta except color profiles from an image. * - * @since 4.5.0 + * @since WP-4.5.0 * * @return true|WP_Error True if stripping metadata was successful. WP_Error object on error. */ protected function strip_meta() { if ( ! is_callable( array( $this->image, 'getImageProfiles' ) ) ) { - return new WP_Error( - 'image_strip_meta_error', - sprintf( - /* translators: %s: ImageMagick method name. */ - __( '%s is required to strip image meta.' ), - '<code>Imagick::getImageProfiles()</code>' - ) - ); + /* translators: %s: ImageMagick method name */ + return new WP_Error( 'image_strip_meta_error', sprintf( __( '%s is required to strip image meta.' ), '<code>Imagick::getImageProfiles()</code>' ) ); } if ( ! is_callable( array( $this->image, 'removeImageProfile' ) ) ) { - return new WP_Error( - 'image_strip_meta_error', - sprintf( - /* translators: %s: ImageMagick method name. */ - __( '%s is required to strip image meta.' ), - '<code>Imagick::removeImageProfile()</code>' - ) - ); + /* translators: %s: ImageMagick method name */ + return new WP_Error( 'image_strip_meta_error', sprintf( __( '%s is required to strip image meta.' ), '<code>Imagick::removeImageProfile()</code>' ) ); } /* @@ -936,7 +726,7 @@ protected function strip_meta() { try { // Strip profiles. foreach ( $this->image->getImageProfiles( '*', true ) as $key => $value ) { - if ( ! in_array( $key, $protected_profiles, true ) ) { + if ( ! in_array( $key, $protected_profiles ) ) { $this->image->removeImageProfile( $key ); } } @@ -951,7 +741,7 @@ protected function strip_meta() { * Sets up Imagick for PDF processing. * Increases rendering DPI and only loads first page. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return string|WP_Error File to load or WP_Error on failure. */ @@ -968,38 +758,4 @@ protected function pdf_setup() { } } - /** - * Load the image produced by Ghostscript. - * - * Includes a workaround for a bug in Ghostscript 8.70 that prevents processing of some PDF files - * when `use-cropbox` is set. - * - * @since 5.6.0 - * - * @return true|WP_Error - */ - protected function pdf_load_source() { - $filename = $this->pdf_setup(); - - if ( is_wp_error( $filename ) ) { - return $filename; - } - - try { - // When generating thumbnails from cropped PDF pages, Imagemagick uses the uncropped - // area (resulting in unnecessary whitespace) unless the following option is set. - $this->image->setOption( 'pdf:use-cropbox', true ); - - // Reading image after Imagick instantiation because `setResolution` - // only applies correctly before the image is read. - $this->image->readImage( $filename ); - } catch ( Exception $e ) { - // Attempt to run `gs` without the `use-cropbox` option. See #48853. - $this->image->setOption( 'pdf:use-cropbox', false ); - - $this->image->readImage( $filename ); - } - - return true; - } } diff --git a/wp-includes/class-wp-image-editor.php b/wp-includes/class-wp-image-editor.php index 7a76e9e..afbed25 100644 --- a/wp-includes/class-wp-image-editor.php +++ b/wp-includes/class-wp-image-editor.php @@ -9,19 +9,15 @@ /** * Base image editor class from which implementations extend * - * @since 3.5.0 + * @since WP-3.5.0 */ -#[AllowDynamicProperties] abstract class WP_Image_Editor { protected $file = null; protected $size = null; protected $mime_type = null; - protected $output_mime_type = null; protected $default_mime_type = 'image/jpeg'; protected $quality = false; - - // Deprecated since 5.8.1. See get_default_quality() below. - protected $default_quality = 82; + protected $default_quality = 82; /** * Each instance handles a single file. @@ -34,10 +30,11 @@ public function __construct( $file ) { /** * Checks to see if current environment supports the editor chosen. - * Must be overridden in a subclass. + * Must be overridden in a sub-class. * - * @since 3.5.0 + * @since WP-3.5.0 * + * @static * @abstract * * @param array $args @@ -49,10 +46,11 @@ public static function test( $args = array() ) { /** * Checks to see if editor supports the mime-type specified. - * Must be overridden in a subclass. + * Must be overridden in a sub-class. * - * @since 3.5.0 + * @since WP-3.5.0 * + * @static * @abstract * * @param string $mime_type @@ -65,32 +63,22 @@ public static function supports_mime_type( $mime_type ) { /** * Loads image from $this->file into editor. * - * @since 3.5.0 + * @since WP-3.5.0 * @abstract * - * @return true|WP_Error True if loaded; WP_Error on failure. + * @return bool|WP_Error True if loaded; WP_Error on failure. */ abstract public function load(); /** * Saves current image to file. * - * @since 3.5.0 - * @since 6.0.0 The `$filesize` value was added to the returned array. + * @since WP-3.5.0 * @abstract * - * @param string $destfilename Optional. Destination filename. Default null. - * @param string $mime_type Optional. The mime-type. Default null. - * @return array|WP_Error { - * Array on success or WP_Error if the file failed to save. - * - * @type string $path Path to the image file. - * @type string $file Name of the image file. - * @type int $width Image width. - * @type int $height Image height. - * @type string $mime-type The mime type of the image. - * @type int $filesize File size of the image. - * } + * @param string $destfilename + * @param string $mime_type + * @return array|WP_Error {'path'=>string, 'file'=>string, 'width'=>int, 'height'=>int, 'mime-type'=>string} */ abstract public function save( $destfilename = null, $mime_type = null ); @@ -101,26 +89,26 @@ abstract public function save( $destfilename = null, $mime_type = null ); * If one of the two is set to null, the resize will * maintain aspect ratio according to the provided dimension. * - * @since 3.5.0 + * @since WP-3.5.0 * @abstract * - * @param int|null $max_w Image width. - * @param int|null $max_h Image height. - * @param bool $crop - * @return true|WP_Error + * @param int|null $max_w Image width. + * @param int|null $max_h Image height. + * @param bool $crop + * @return bool|WP_Error */ abstract public function resize( $max_w, $max_h, $crop = false ); /** * Resize multiple images from a single source. * - * @since 3.5.0 + * @since WP-3.5.0 * @abstract * * @param array $sizes { * An array of image size arrays. Default sizes are 'small', 'medium', 'large'. * - * @type array ...$0 { + * @type array $size { * @type int $width Image width. * @type int $height Image height. * @type bool $crop Optional. Whether to crop the image. Default false. @@ -133,65 +121,60 @@ abstract public function multi_resize( $sizes ); /** * Crops Image. * - * @since 3.5.0 + * @since WP-3.5.0 * @abstract * - * @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_h The height to crop. - * @param int $dst_w Optional. The destination width. - * @param int $dst_h Optional. The destination height. + * @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_h The height to crop. + * @param int $dst_w Optional. The destination width. + * @param int $dst_h Optional. The destination height. * @param bool $src_abs Optional. If the source crop points are absolute. - * @return true|WP_Error + * @return bool|WP_Error */ abstract public function crop( $src_x, $src_y, $src_w, $src_h, $dst_w = null, $dst_h = null, $src_abs = false ); /** * Rotates current image counter-clockwise by $angle. * - * @since 3.5.0 + * @since WP-3.5.0 * @abstract * * @param float $angle - * @return true|WP_Error + * @return bool|WP_Error */ abstract public function rotate( $angle ); /** * Flips current image. * - * @since 3.5.0 + * @since WP-3.5.0 * @abstract * * @param bool $horz Flip along Horizontal Axis * @param bool $vert Flip along Vertical Axis - * @return true|WP_Error + * @return bool|WP_Error */ abstract public function flip( $horz, $vert ); /** * Streams current image to browser. * - * @since 3.5.0 + * @since WP-3.5.0 * @abstract * * @param string $mime_type The mime type of the image. - * @return true|WP_Error True on success, WP_Error object on failure. + * @return bool|WP_Error True on success, WP_Error object or false on failure. */ abstract public function stream( $mime_type = null ); /** * Gets dimensions of image. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @return int[] { - * Dimensions of the image. - * - * @type int $width The image width. - * @type int $height The image height. - * } + * @return array {'width'=>int, 'height'=>int} */ public function get_size() { return $this->size; @@ -200,7 +183,7 @@ public function get_size() { /** * Sets current image size. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $width * @param int $height @@ -217,9 +200,9 @@ protected function update_size( $width = null, $height = null ) { /** * Gets the Image Compression quality on a 1-100% scale. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @return int Compression Quality. Range: [1,100] + * @return int $quality Compression Quality. Range: [1,100] */ public function get_quality() { if ( ! $this->quality ) { @@ -232,17 +215,12 @@ public function get_quality() { /** * Sets Image Compression quality on a 1-100% scale. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $quality Compression Quality. Range: [1,100] * @return true|WP_Error True if set successfully; WP_Error on failure. */ public function set_quality( $quality = null ) { - // Use the output mime type if present. If not, fall back to the input/initial mime type. - $mime_type = ! empty( $this->output_mime_type ) ? $this->output_mime_type : $this->mime_type; - // Get the default quality setting for the mime type. - $default_quality = $this->get_default_quality( $mime_type ); - if ( null === $quality ) { /** * Filters the default image compression quality setting. @@ -250,28 +228,28 @@ public function set_quality( $quality = null ) { * Applies only during initial editor instantiation, or when set_quality() is run * manually without the `$quality` argument. * - * The WP_Image_Editor::set_quality() method has priority over the filter. + * set_quality() has priority over the filter. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $quality Quality level between 1 (low) and 100 (high). * @param string $mime_type Image mime type. */ - $quality = apply_filters( 'wp_editor_set_quality', $default_quality, $mime_type ); + $quality = apply_filters( 'wp_editor_set_quality', $this->default_quality, $this->mime_type ); - if ( 'image/jpeg' === $mime_type ) { + if ( 'image/jpeg' === $this->mime_type ) { /** * Filters the JPEG compression quality for backward-compatibility. * * Applies only during initial editor instantiation, or when set_quality() is run * manually without the `$quality` argument. * - * The WP_Image_Editor::set_quality() method has priority over the filter. + * set_quality() has priority over the filter. * * The filter is evaluated under two contexts: 'image_resize', and 'edit_image', * (when a JPEG image is saved to file). * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $quality Quality level between 0 (low) and 100 (high) of the JPEG. * @param string $context Context of the filter. @@ -280,7 +258,7 @@ public function set_quality( $quality = null ) { } if ( $quality < 0 || $quality > 100 ) { - $quality = $default_quality; + $quality = $this->default_quality; } } @@ -297,27 +275,6 @@ public function set_quality( $quality = null ) { } } - /** - * Returns the default compression quality setting for the mime type. - * - * @since 5.8.1 - * - * @param string $mime_type - * @return int The default quality setting for the mime type. - */ - protected function get_default_quality( $mime_type ) { - switch ( $mime_type ) { - case 'image/webp': - $quality = 86; - break; - case 'image/jpeg': - default: - $quality = $this->default_quality; - } - - return $quality; - } - /** * Returns preferred mime-type and extension based on provided * file's extension and mime, or current file's extension and mime. @@ -326,7 +283,7 @@ protected function get_default_quality( $mime_type ) { * * Provides corrected filename only if filename is provided. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $filename * @param string $mime_type @@ -335,7 +292,7 @@ protected function get_default_quality( $mime_type ) { protected function get_output_format( $filename = null, $mime_type = null ) { $new_ext = null; - // By default, assume specified type takes priority. + // By default, assume specified type takes priority if ( $mime_type ) { $new_ext = $this->get_extension( $mime_type ); } @@ -350,40 +307,12 @@ protected function get_output_format( $filename = null, $mime_type = null ) { } // Check to see if specified mime-type is the same as type implied by - // file extension. If so, prefer extension from file. + // file extension. If so, prefer extension from file. if ( ! $mime_type || ( $file_mime == $mime_type ) ) { $mime_type = $file_mime; $new_ext = $file_ext; } - /** - * Filters the image editor output format mapping. - * - * Enables filtering the mime type used to save images. By default, - * the mapping array is empty, so the mime type matches the source image. - * - * @see WP_Image_Editor::get_output_format() - * - * @since 5.8.0 - * - * @param string[] $output_format { - * An array of mime type mappings. Maps a source mime type to a new - * destination mime type. Default empty array. - * - * @type string ...$0 The new mime type. - * } - * @param string $filename Path to the image. - * @param string $mime_type The source image mime type. - */ - $output_format = apply_filters( 'image_editor_output_format', array(), $filename, $mime_type ); - - if ( isset( $output_format[ $mime_type ] ) - && $this->supports_mime_type( $output_format[ $mime_type ] ) - ) { - $mime_type = $output_format[ $mime_type ]; - $new_ext = $this->get_extension( $mime_type ); - } - // Double-check that the mime-type selected is supported by the editor. // If not, choose a default instead. if ( ! $this->supports_mime_type( $mime_type ) ) { @@ -392,7 +321,7 @@ protected function get_output_format( $filename = null, $mime_type = null ) { * * @see wp_get_mime_types() * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $mime_type Mime type string. */ @@ -400,35 +329,20 @@ protected function get_output_format( $filename = null, $mime_type = null ) { $new_ext = $this->get_extension( $mime_type ); } - // Ensure both $filename and $new_ext are not empty. - // $this->get_extension() returns false on error which would effectively remove the extension - // from $filename. That shouldn't happen, files without extensions are not supported. - if ( $filename && $new_ext ) { + if ( $filename ) { $dir = pathinfo( $filename, PATHINFO_DIRNAME ); $ext = pathinfo( $filename, PATHINFO_EXTENSION ); $filename = trailingslashit( $dir ) . wp_basename( $filename, ".$ext" ) . ".{$new_ext}"; } - if ( $mime_type && ( $mime_type !== $this->mime_type ) ) { - // The image will be converted when saving. Set the quality for the new mime-type if not already set. - if ( $mime_type !== $this->output_mime_type ) { - $this->output_mime_type = $mime_type; - } - $this->set_quality(); - } elseif ( ! empty( $this->output_mime_type ) ) { - // Reset output_mime_type and quality. - $this->output_mime_type = null; - $this->set_quality(); - } - return array( $filename, $new_ext, $mime_type ); } /** * Builds an output filename based on current file, and adding proper suffix * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $suffix * @param string $dest_path @@ -436,7 +350,7 @@ protected function get_output_format( $filename = null, $mime_type = null ) { * @return string filename */ public function generate_filename( $suffix = null, $dest_path = null, $extension = null ) { - // $suffix will be appended to the destination filename, just before the extension. + // $suffix will be appended to the destination filename, just before the extension if ( ! $suffix ) { $suffix = $this->get_suffix(); } @@ -448,13 +362,9 @@ public function generate_filename( $suffix = null, $dest_path = null, $extension $new_ext = strtolower( $extension ? $extension : $ext ); if ( ! is_null( $dest_path ) ) { - if ( ! wp_is_stream( $dest_path ) ) { - $_dest_path = realpath( $dest_path ); - if ( $_dest_path ) { - $dir = $_dest_path; - } - } else { - $dir = $dest_path; + $_dest_path = realpath( $dest_path ); + if ( $_dest_path ) { + $dir = $_dest_path; } } @@ -464,9 +374,9 @@ public function generate_filename( $suffix = null, $dest_path = null, $extension /** * Builds and returns proper suffix for file based on height and width. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @return string|false suffix + * @return false|string suffix */ public function get_suffix() { if ( ! $this->get_size() ) { @@ -476,95 +386,17 @@ public function get_suffix() { return "{$this->size['width']}x{$this->size['height']}"; } - /** - * Check if a JPEG image has EXIF Orientation tag and rotate it if needed. - * - * @since 5.3.0 - * - * @return bool|WP_Error True if the image was rotated. False if not rotated (no EXIF data or the image doesn't need to be rotated). - * WP_Error if error while rotating. - */ - public function maybe_exif_rotate() { - $orientation = null; - - if ( is_callable( 'exif_read_data' ) && 'image/jpeg' === $this->mime_type ) { - $exif_data = @exif_read_data( $this->file ); - - if ( ! empty( $exif_data['Orientation'] ) ) { - $orientation = (int) $exif_data['Orientation']; - } - } - - /** - * Filters the `$orientation` value to correct it before rotating or to prevent rotating the image. - * - * @since 5.3.0 - * - * @param int $orientation EXIF Orientation value as retrieved from the image file. - * @param string $file Path to the image file. - */ - $orientation = apply_filters( 'wp_image_maybe_exif_rotate', $orientation, $this->file ); - - if ( ! $orientation || 1 === $orientation ) { - return false; - } - - switch ( $orientation ) { - case 2: - // Flip horizontally. - $result = $this->flip( false, true ); - break; - case 3: - // Rotate 180 degrees or flip horizontally and vertically. - // Flipping seems faster and uses less resources. - $result = $this->flip( true, true ); - break; - case 4: - // Flip vertically. - $result = $this->flip( true, false ); - break; - case 5: - // Rotate 90 degrees counter-clockwise and flip vertically. - $result = $this->rotate( 90 ); - - if ( ! is_wp_error( $result ) ) { - $result = $this->flip( true, false ); - } - - break; - case 6: - // Rotate 90 degrees clockwise (270 counter-clockwise). - $result = $this->rotate( 270 ); - break; - case 7: - // Rotate 90 degrees counter-clockwise and flip horizontally. - $result = $this->rotate( 90 ); - - if ( ! is_wp_error( $result ) ) { - $result = $this->flip( false, true ); - } - - break; - case 8: - // Rotate 90 degrees counter-clockwise. - $result = $this->rotate( 90 ); - break; - } - - return $result; - } - /** * Either calls editor's save function or handles file as a stream. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param string $filename - * @param callable $callback - * @param array $arguments + * @param string|stream $filename + * @param callable $function + * @param array $arguments * @return bool */ - protected function make_image( $filename, $callback, $arguments ) { + protected function make_image( $filename, $function, $arguments ) { $stream = wp_is_stream( $filename ); if ( $stream ) { ob_start(); @@ -573,7 +405,7 @@ protected function make_image( $filename, $callback, $arguments ) { wp_mkdir_p( dirname( $filename ) ); } - $result = call_user_func_array( $callback, $arguments ); + $result = call_user_func_array( $function, $arguments ); if ( $result && $stream ) { $contents = ob_get_contents(); @@ -600,7 +432,9 @@ protected function make_image( $filename, $callback, $arguments ) { * Returns first matched mime-type from extension, * as mapped from wp_get_mime_types() * - * @since 3.5.0 + * @since WP-3.5.0 + * + * @static * * @param string $extension * @return string|false @@ -626,16 +460,21 @@ protected static function get_mime_type( $extension = null ) { * Returns first matched extension from Mime-type, * as mapped from wp_get_mime_types() * - * @since 3.5.0 + * @since WP-3.5.0 + * + * @static * * @param string $mime_type * @return string|false */ protected static function get_extension( $mime_type = null ) { - if ( empty( $mime_type ) ) { + $extensions = explode( '|', array_search( $mime_type, wp_get_mime_types(), true ) ); + + if ( empty( $extensions[0] ) ) { return false; } - return wp_get_default_extension_for_mime_type( $mime_type ); + return $extensions[0]; } } + diff --git a/wp-includes/class-wp-list-util.php b/wp-includes/class-wp-list-util.php index a8d85a1..ecb0b65 100644 --- a/wp-includes/class-wp-list-util.php +++ b/wp-includes/class-wp-list-util.php @@ -3,22 +3,21 @@ * ClassicPress List utility class * * @package ClassicPress - * @since 4.7.0 + * @since WP-4.7.0 */ /** * List utility. * - * Utility class to handle operations on an array of objects or arrays. + * Utility class to handle operations on an array of objects. * - * @since 4.7.0 + * @since WP-4.7.0 */ -#[AllowDynamicProperties] class WP_List_Util { /** * The input array. * - * @since 4.7.0 + * @since WP-4.7.0 * @var array */ private $input = array(); @@ -26,7 +25,7 @@ class WP_List_Util { /** * The output array. * - * @since 4.7.0 + * @since WP-4.7.0 * @var array */ private $output = array(); @@ -34,8 +33,8 @@ class WP_List_Util { /** * Temporary arguments for sorting. * - * @since 4.7.0 - * @var string[] + * @since WP-4.7.0 + * @var array */ private $orderby = array(); @@ -44,7 +43,7 @@ class WP_List_Util { * * Sets the input array. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $input Array to perform operations on. */ @@ -56,7 +55,7 @@ public function __construct( $input ) { /** * Returns the original input array. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return array The input array. */ @@ -67,7 +66,7 @@ public function get_input() { /** * Returns the output array. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return array The output array. */ @@ -78,14 +77,7 @@ public function get_output() { /** * Filters the list, based on a set of key => value arguments. * - * Retrieves the objects from the list that match the given arguments. - * Key represents property name, and value represents property value. - * - * If an object has more properties than those specified in arguments, - * that will not disqualify it. When using the 'AND' operator, - * any missing properties will disqualify it. - * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $args Optional. An array of key => value arguments to match * against each object. Default empty array. @@ -103,16 +95,16 @@ public function filter( $args = array(), $operator = 'AND' ) { $operator = strtoupper( $operator ); if ( ! in_array( $operator, array( 'AND', 'OR', 'NOT' ), true ) ) { - $this->output = array(); - return $this->output; + return array(); } $count = count( $args ); $filtered = array(); foreach ( $this->output as $key => $obj ) { - $matched = 0; + $to_match = (array) $obj; + $matched = 0; foreach ( $args as $m_key => $m_value ) { if ( is_array( $obj ) ) { // Treat object as an array. @@ -141,23 +133,21 @@ public function filter( $args = array(), $operator = 'AND' ) { } /** - * Plucks a certain field out of each element in the input array. + * Plucks a certain field out of each object in the list. * * This has the same functionality and prototype of * array_column() (PHP 5.5) but also supports objects. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param int|string $field Field to fetch from the object or array. - * @param int|string $index_key Optional. Field from the element to use as keys for the new array. + * @param int|string $field Field from the object to place instead of the entire object + * @param int|string $index_key Optional. Field from the object to use as keys for the new array. * Default null. * @return array Array of found values. If `$index_key` is set, an array of found values with keys * corresponding to `$index_key`. If `$index_key` is null, array keys from the original * `$list` will be preserved in the results. */ public function pluck( $field, $index_key = null ) { - $newlist = array(); - if ( ! $index_key ) { /* * This is simple. Could at some point wrap array_column() @@ -165,20 +155,11 @@ public function pluck( $field, $index_key = null ) { */ foreach ( $this->output as $key => $value ) { if ( is_object( $value ) ) { - $newlist[ $key ] = $value->$field; - } elseif ( is_array( $value ) ) { - $newlist[ $key ] = $value[ $field ]; + $this->output[ $key ] = $value->$field; } else { - _doing_it_wrong( - __METHOD__, - __( 'Values for the input array must be either objects or arrays.' ), - '6.2.0' - ); + $this->output[ $key ] = $value[ $field ]; } } - - $this->output = $newlist; - return $this->output; } @@ -186,6 +167,7 @@ public function pluck( $field, $index_key = null ) { * When index_key is not set for a particular item, push the value * to the end of the stack. This is how array_column() behaves. */ + $newlist = array(); foreach ( $this->output as $value ) { if ( is_object( $value ) ) { if ( isset( $value->$index_key ) ) { @@ -193,18 +175,12 @@ public function pluck( $field, $index_key = null ) { } else { $newlist[] = $value->$field; } - } elseif ( is_array( $value ) ) { + } else { if ( isset( $value[ $index_key ] ) ) { $newlist[ $value[ $index_key ] ] = $value[ $field ]; } else { $newlist[] = $value[ $field ]; } - } else { - _doing_it_wrong( - __METHOD__, - __( 'Values for the input array must be either objects or arrays.' ), - '6.2.0' - ); } } @@ -214,15 +190,14 @@ public function pluck( $field, $index_key = null ) { } /** - * Sorts the input array based on one or more orderby arguments. + * Sorts the list, based on one or more orderby arguments. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param string|array $orderby Optional. Either the field name to order by or an array - * of multiple orderby fields as `$orderby => $order`. - * Default empty array. - * @param string $order Optional. Either 'ASC' or 'DESC'. Only used if `$orderby` - * is a string. Default 'ASC'. + * of multiple orderby fields as $orderby => $order. + * @param string $order Optional. Either 'ASC' or 'DESC'. Only used if $orderby + * is a string. * @param bool $preserve_keys Optional. Whether to preserve keys. Default false. * @return array The sorted array. */ @@ -253,9 +228,9 @@ public function sort( $orderby = array(), $order = 'ASC', $preserve_keys = false } /** - * Callback to sort an array by specific fields. + * Callback to sort the list by specific fields. * - * @since 4.7.0 + * @since WP-4.7.0 * * @see WP_List_Util::sort() * diff --git a/wp-includes/class-wp-locale-switcher.php b/wp-includes/class-wp-locale-switcher.php index e9be6c3..70e9c4d 100644 --- a/wp-includes/class-wp-locale-switcher.php +++ b/wp-includes/class-wp-locale-switcher.php @@ -4,28 +4,27 @@ * * @package ClassicPress * @subpackage i18n - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Core class used for switching locales. * - * @since 4.7.0 + * @since WP-4.7.0 */ -#[AllowDynamicProperties] class WP_Locale_Switcher { /** - * Locale switching stack. + * Locale stack. * - * @since 6.2.0 - * @var array + * @since WP-4.7.0 + * @var string[] */ - private $stack = array(); + private $locales = array(); /** * Original locale. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ private $original_locale; @@ -33,47 +32,42 @@ class WP_Locale_Switcher { /** * Holds all available languages. * - * @since 4.7.0 - * @var string[] An array of language codes (file names without the .mo extension). + * @since WP-4.7.0 + * @var array An array of language codes (file names without the .mo extension). */ - private $available_languages; + private $available_languages = array(); /** * Constructor. * * Stores the original locale as well as a list of all available languages. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function __construct() { - $this->original_locale = determine_locale(); + $this->original_locale = is_admin() ? get_user_locale() : get_locale(); $this->available_languages = array_merge( array( 'en_US' ), get_available_languages() ); } /** * Initializes the locale switcher. * - * Hooks into the {@see 'locale'} and {@see 'determine_locale'} filters - * to change the locale on the fly. - * - * @since 4.7.0 + * Hooks into the {@see 'locale'} filter to change the locale on the fly. */ public function init() { add_filter( 'locale', array( $this, 'filter_locale' ) ); - add_filter( 'determine_locale', array( $this, 'filter_locale' ) ); } /** * Switches the translations according to the given locale. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param string $locale The locale to switch to. - * @param int|false $user_id Optional. User ID as context. Default false. + * @param string $locale The locale to switch to. * @return bool True on success, false on failure. */ - public function switch_to_locale( $locale, $user_id = false ) { - $current_locale = determine_locale(); + public function switch_to_locale( $locale ) { + $current_locale = is_admin() ? get_user_locale() : get_locale(); if ( $current_locale === $locale ) { return false; } @@ -82,54 +76,38 @@ public function switch_to_locale( $locale, $user_id = false ) { return false; } - $this->stack[] = array( $locale, $user_id ); + $this->locales[] = $locale; $this->change_locale( $locale ); /** * Fires when the locale is switched. * - * @since 4.7.0 - * @since 6.2.0 The `$user_id` parameter was added. + * @since WP-4.7.0 * - * @param string $locale The new locale. - * @param false|int $user_id User ID for context if available. + * @param string $locale The new locale. */ - do_action( 'switch_locale', $locale, $user_id ); + do_action( 'switch_locale', $locale ); return true; } - /** - * Switches the translations according to the given user's locale. - * - * @since 6.2.0 - * - * @param int $user_id User ID. - * @return bool True on success, false on failure. - */ - public function switch_to_user_locale( $user_id ) { - $locale = get_user_locale( $user_id ); - return $this->switch_to_locale( $locale, $user_id ); - } - /** * Restores the translations according to the previous locale. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return string|false Locale on success, false on failure. */ public function restore_previous_locale() { - $previous_locale = array_pop( $this->stack ); + $previous_locale = array_pop( $this->locales ); if ( null === $previous_locale ) { // The stack is empty, bail. return false; } - $entry = end( $this->stack ); - $locale = is_array( $entry ) ? $entry[0] : false; + $locale = end( $this->locales ); if ( ! $locale ) { // There's nothing left in the stack: go back to the original locale. @@ -141,12 +119,12 @@ public function restore_previous_locale() { /** * Fires when the locale is restored to the previous one. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param string $locale The new locale. * @param string $previous_locale The previous locale. */ - do_action( 'restore_previous_locale', $locale, $previous_locale[0] ); + do_action( 'restore_previous_locale', $locale, $previous_locale ); return $locale; } @@ -154,16 +132,16 @@ public function restore_previous_locale() { /** * Restores the translations according to the original locale. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return string|false Locale on success, false on failure. */ public function restore_current_locale() { - if ( empty( $this->stack ) ) { + if ( empty( $this->locales ) ) { return false; } - $this->stack = array( array( $this->original_locale, false ) ); + $this->locales = array( $this->original_locale ); return $this->restore_previous_locale(); } @@ -171,58 +149,24 @@ public function restore_current_locale() { /** * Whether switch_to_locale() is in effect. * - * @since 4.7.0 + * @since WP-4.7.0 * * @return bool True if the locale has been switched, false otherwise. */ public function is_switched() { - return ! empty( $this->stack ); - } - - /** - * Returns the locale currently switched to. - * - * @since 6.2.0 - * - * @return string|false Locale if the locale has been switched, false otherwise. - */ - public function get_switched_locale() { - $entry = end( $this->stack ); - - if ( $entry ) { - return $entry[0]; - } - - return false; - } - - /** - * Returns the user ID related to the currently switched locale. - * - * @since 6.2.0 - * - * @return int|false User ID if set and if the locale has been switched, false otherwise. - */ - public function get_switched_user_id() { - $entry = end( $this->stack ); - - if ( $entry ) { - return $entry[1]; - } - - return false; + return ! empty( $this->locales ); } /** - * Filters the locale of the WordPress installation. + * Filters the locale of the ClassicPress installation. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param string $locale The locale of the WordPress installation. + * @param string $locale The locale of the ClassicPress installation. * @return string The locale currently being switched to. */ public function filter_locale( $locale ) { - $switched_locale = $this->get_switched_locale(); + $switched_locale = end( $this->locales ); if ( $switched_locale ) { return $switched_locale; @@ -236,7 +180,7 @@ public function filter_locale( $locale ) { * * When switching to a locale, translations for this locale must be loaded from scratch. * - * @since 4.7.0 + * @since WP-4.7.0 * * @global Mo[] $l10n An array of all currently loaded text domains. * @@ -250,14 +194,11 @@ private function load_translations( $locale ) { load_default_textdomain( $locale ); foreach ( $domains as $domain ) { - // The default text domain is handled by `load_default_textdomain()`. if ( 'default' === $domain ) { continue; } - // Unload current text domain but allow them to be reloaded - // after switching back or to another locale. - unload_textdomain( $domain, true ); + unload_textdomain( $domain ); get_translations_for_domain( $domain ); } } @@ -268,23 +209,24 @@ private function load_translations( $locale ) { * Loads the translations, changes the global `$wp_locale` object and updates * all post type labels. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @global WP_Locale $wp_locale WordPress date and time locale object. + * @global WP_Locale $wp_locale The ClassicPress date and time locale object. * * @param string $locale The locale to change to. */ private function change_locale( $locale ) { - global $wp_locale; + // Reset translation availability information. + _get_path_to_translation( null, true ); $this->load_translations( $locale ); - $wp_locale = new WP_Locale(); + $GLOBALS['wp_locale'] = new WP_Locale(); /** * Fires when the locale is switched to or restored. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param string $locale The new locale. */ diff --git a/wp-includes/class-wp-locale.php b/wp-includes/class-wp-locale.php index 2aec81d..0e98667 100644 --- a/wp-includes/class-wp-locale.php +++ b/wp-includes/class-wp-locale.php @@ -4,25 +4,23 @@ * * @package ClassicPress * @subpackage i18n - * @since 4.6.0 + * @since WP-4.6.0 */ /** * Core class used to store translated data for a locale. * - * @since 2.1.0 - * @since 4.6.0 Moved to its own file from wp-includes/locale.php. + * @since WP-2.1.0 + * @since WP-4.6.0 Moved to its own file from wp-includes/locale.php. */ -#[AllowDynamicProperties] class WP_Locale { /** * Stores the translated strings for the full weekday names. * - * @since 2.1.0 - * @since 6.2.0 Initialized to an empty array. - * @var string[] + * @since WP-2.1.0 + * @var array */ - public $weekday = array(); + public $weekday; /** * Stores the translated strings for the one character weekday names. @@ -32,65 +30,67 @@ class WP_Locale { * * @see WP_Locale::init() for how to handle the hack. * - * @since 2.1.0 - * @since 6.2.0 Initialized to an empty array. - * @var string[] + * @since WP-2.1.0 + * @var array */ - public $weekday_initial = array(); + public $weekday_initial; /** * Stores the translated strings for the abbreviated weekday names. * - * @since 2.1.0 - * @since 6.2.0 Initialized to an empty array. - * @var string[] + * @since WP-2.1.0 + * @var array + */ + public $weekday_abbrev; + + /** + * Stores the default start of the week. + * + * @since WP-4.4.0 + * @var string */ - public $weekday_abbrev = array(); + public $start_of_week; /** * Stores the translated strings for the full month names. * - * @since 2.1.0 - * @since 6.2.0 Initialized to an empty array. - * @var string[] + * @since WP-2.1.0 + * @var array */ - public $month = array(); + public $month; /** * Stores the translated strings for the month names in genitive case, if the locale specifies. * - * @since 4.4.0 - * @since 6.2.0 Initialized to an empty array. - * @var string[] + * @since WP-4.4.0 + * @var array */ - public $month_genitive = array(); + public $month_genitive; /** * Stores the translated strings for the abbreviated month names. * - * @since 2.1.0 - * @since 6.2.0 Initialized to an empty array. - * @var string[] + * @since WP-2.1.0 + * @var array */ - public $month_abbrev = array(); + public $month_abbrev; /** * Stores the translated strings for 'am' and 'pm'. * * Also the capitalized versions. * - * @since 2.1.0 - * @since 6.2.0 Initialized to an empty array. - * @var string[] + * @since WP-2.1.0 + * @var array */ - public $meridiem = array(); + public $meridiem; /** * The text direction of the locale language. * * Default is left to right 'ltr'. * - * @since 2.1.0 + * @since WP-2.1.0 * @var string */ public $text_direction = 'ltr'; @@ -98,34 +98,15 @@ class WP_Locale { /** * The thousands separator and decimal point values used for localizing numbers. * - * @since 2.3.0 - * @since 6.2.0 Initialized to an empty array. + * @since WP-2.3.0 * @var array */ - public $number_format = array(); - - /** - * The separator string used for localizing list item separator. - * - * @since 6.0.0 - * @var string - */ - public $list_item_separator; - - /** - * The word count type of the locale language. - * - * Default is 'words'. - * - * @since 6.2.0 - * @var string - */ - public $word_count_type; + public $number_format; /** * Constructor which calls helper methods to set up object variables. * - * @since 2.1.0 + * @since WP-2.1.0 */ public function __construct() { $this->init(); @@ -139,90 +120,90 @@ public function __construct() { * calendar elements. Which allows for specifying locale * specific calendar names and text direction. * - * @since 2.1.0 + * @since WP-2.1.0 * * @global string $text_direction */ public function init() { - // The weekdays. - $this->weekday[0] = /* translators: Weekday. */ __( 'Sunday' ); - $this->weekday[1] = /* translators: Weekday. */ __( 'Monday' ); - $this->weekday[2] = /* translators: Weekday. */ __( 'Tuesday' ); - $this->weekday[3] = /* translators: Weekday. */ __( 'Wednesday' ); - $this->weekday[4] = /* translators: Weekday. */ __( 'Thursday' ); - $this->weekday[5] = /* translators: Weekday. */ __( 'Friday' ); - $this->weekday[6] = /* translators: Weekday. */ __( 'Saturday' ); + // The Weekdays + $this->weekday[0] = /* translators: weekday */ __( 'Sunday' ); + $this->weekday[1] = /* translators: weekday */ __( 'Monday' ); + $this->weekday[2] = /* translators: weekday */ __( 'Tuesday' ); + $this->weekday[3] = /* translators: weekday */ __( 'Wednesday' ); + $this->weekday[4] = /* translators: weekday */ __( 'Thursday' ); + $this->weekday[5] = /* translators: weekday */ __( 'Friday' ); + $this->weekday[6] = /* translators: weekday */ __( 'Saturday' ); // The first letter of each day. - $this->weekday_initial[ $this->weekday[0] ] = /* translators: One-letter abbreviation of the weekday. */ _x( 'S', 'Sunday initial' ); - $this->weekday_initial[ $this->weekday[1] ] = /* translators: One-letter abbreviation of the weekday. */ _x( 'M', 'Monday initial' ); - $this->weekday_initial[ $this->weekday[2] ] = /* translators: One-letter abbreviation of the weekday. */ _x( 'T', 'Tuesday initial' ); - $this->weekday_initial[ $this->weekday[3] ] = /* translators: One-letter abbreviation of the weekday. */ _x( 'W', 'Wednesday initial' ); - $this->weekday_initial[ $this->weekday[4] ] = /* translators: One-letter abbreviation of the weekday. */ _x( 'T', 'Thursday initial' ); - $this->weekday_initial[ $this->weekday[5] ] = /* translators: One-letter abbreviation of the weekday. */ _x( 'F', 'Friday initial' ); - $this->weekday_initial[ $this->weekday[6] ] = /* translators: One-letter abbreviation of the weekday. */ _x( 'S', 'Saturday initial' ); + $this->weekday_initial[ __( 'Sunday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'S', 'Sunday initial' ); + $this->weekday_initial[ __( 'Monday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'M', 'Monday initial' ); + $this->weekday_initial[ __( 'Tuesday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'T', 'Tuesday initial' ); + $this->weekday_initial[ __( 'Wednesday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'W', 'Wednesday initial' ); + $this->weekday_initial[ __( 'Thursday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'T', 'Thursday initial' ); + $this->weekday_initial[ __( 'Friday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'F', 'Friday initial' ); + $this->weekday_initial[ __( 'Saturday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'S', 'Saturday initial' ); // Abbreviations for each day. - $this->weekday_abbrev[ $this->weekday[0] ] = /* translators: Three-letter abbreviation of the weekday. */ __( 'Sun' ); - $this->weekday_abbrev[ $this->weekday[1] ] = /* translators: Three-letter abbreviation of the weekday. */ __( 'Mon' ); - $this->weekday_abbrev[ $this->weekday[2] ] = /* translators: Three-letter abbreviation of the weekday. */ __( 'Tue' ); - $this->weekday_abbrev[ $this->weekday[3] ] = /* translators: Three-letter abbreviation of the weekday. */ __( 'Wed' ); - $this->weekday_abbrev[ $this->weekday[4] ] = /* translators: Three-letter abbreviation of the weekday. */ __( 'Thu' ); - $this->weekday_abbrev[ $this->weekday[5] ] = /* translators: Three-letter abbreviation of the weekday. */ __( 'Fri' ); - $this->weekday_abbrev[ $this->weekday[6] ] = /* translators: Three-letter abbreviation of the weekday. */ __( 'Sat' ); - - // The months. - $this->month['01'] = /* translators: Month name. */ __( 'January' ); - $this->month['02'] = /* translators: Month name. */ __( 'February' ); - $this->month['03'] = /* translators: Month name. */ __( 'March' ); - $this->month['04'] = /* translators: Month name. */ __( 'April' ); - $this->month['05'] = /* translators: Month name. */ __( 'May' ); - $this->month['06'] = /* translators: Month name. */ __( 'June' ); - $this->month['07'] = /* translators: Month name. */ __( 'July' ); - $this->month['08'] = /* translators: Month name. */ __( 'August' ); - $this->month['09'] = /* translators: Month name. */ __( 'September' ); - $this->month['10'] = /* translators: Month name. */ __( 'October' ); - $this->month['11'] = /* translators: Month name. */ __( 'November' ); - $this->month['12'] = /* translators: Month name. */ __( 'December' ); - - // The months, genitive. - $this->month_genitive['01'] = /* translators: Month name, genitive. */ _x( 'January', 'genitive' ); - $this->month_genitive['02'] = /* translators: Month name, genitive. */ _x( 'February', 'genitive' ); - $this->month_genitive['03'] = /* translators: Month name, genitive. */ _x( 'March', 'genitive' ); - $this->month_genitive['04'] = /* translators: Month name, genitive. */ _x( 'April', 'genitive' ); - $this->month_genitive['05'] = /* translators: Month name, genitive. */ _x( 'May', 'genitive' ); - $this->month_genitive['06'] = /* translators: Month name, genitive. */ _x( 'June', 'genitive' ); - $this->month_genitive['07'] = /* translators: Month name, genitive. */ _x( 'July', 'genitive' ); - $this->month_genitive['08'] = /* translators: Month name, genitive. */ _x( 'August', 'genitive' ); - $this->month_genitive['09'] = /* translators: Month name, genitive. */ _x( 'September', 'genitive' ); - $this->month_genitive['10'] = /* translators: Month name, genitive. */ _x( 'October', 'genitive' ); - $this->month_genitive['11'] = /* translators: Month name, genitive. */ _x( 'November', 'genitive' ); - $this->month_genitive['12'] = /* translators: Month name, genitive. */ _x( 'December', 'genitive' ); + $this->weekday_abbrev[ __( 'Sunday' ) ] = /* translators: three-letter abbreviation of the weekday */ __( 'Sun' ); + $this->weekday_abbrev[ __( 'Monday' ) ] = /* translators: three-letter abbreviation of the weekday */ __( 'Mon' ); + $this->weekday_abbrev[ __( 'Tuesday' ) ] = /* translators: three-letter abbreviation of the weekday */ __( 'Tue' ); + $this->weekday_abbrev[ __( 'Wednesday' ) ] = /* translators: three-letter abbreviation of the weekday */ __( 'Wed' ); + $this->weekday_abbrev[ __( 'Thursday' ) ] = /* translators: three-letter abbreviation of the weekday */ __( 'Thu' ); + $this->weekday_abbrev[ __( 'Friday' ) ] = /* translators: three-letter abbreviation of the weekday */ __( 'Fri' ); + $this->weekday_abbrev[ __( 'Saturday' ) ] = /* translators: three-letter abbreviation of the weekday */ __( 'Sat' ); + + // The Months + $this->month['01'] = /* translators: month name */ __( 'January' ); + $this->month['02'] = /* translators: month name */ __( 'February' ); + $this->month['03'] = /* translators: month name */ __( 'March' ); + $this->month['04'] = /* translators: month name */ __( 'April' ); + $this->month['05'] = /* translators: month name */ __( 'May' ); + $this->month['06'] = /* translators: month name */ __( 'June' ); + $this->month['07'] = /* translators: month name */ __( 'July' ); + $this->month['08'] = /* translators: month name */ __( 'August' ); + $this->month['09'] = /* translators: month name */ __( 'September' ); + $this->month['10'] = /* translators: month name */ __( 'October' ); + $this->month['11'] = /* translators: month name */ __( 'November' ); + $this->month['12'] = /* translators: month name */ __( 'December' ); + + // The Months, genitive + $this->month_genitive['01'] = /* translators: month name, genitive */ _x( 'January', 'genitive' ); + $this->month_genitive['02'] = /* translators: month name, genitive */ _x( 'February', 'genitive' ); + $this->month_genitive['03'] = /* translators: month name, genitive */ _x( 'March', 'genitive' ); + $this->month_genitive['04'] = /* translators: month name, genitive */ _x( 'April', 'genitive' ); + $this->month_genitive['05'] = /* translators: month name, genitive */ _x( 'May', 'genitive' ); + $this->month_genitive['06'] = /* translators: month name, genitive */ _x( 'June', 'genitive' ); + $this->month_genitive['07'] = /* translators: month name, genitive */ _x( 'July', 'genitive' ); + $this->month_genitive['08'] = /* translators: month name, genitive */ _x( 'August', 'genitive' ); + $this->month_genitive['09'] = /* translators: month name, genitive */ _x( 'September', 'genitive' ); + $this->month_genitive['10'] = /* translators: month name, genitive */ _x( 'October', 'genitive' ); + $this->month_genitive['11'] = /* translators: month name, genitive */ _x( 'November', 'genitive' ); + $this->month_genitive['12'] = /* translators: month name, genitive */ _x( 'December', 'genitive' ); // Abbreviations for each month. - $this->month_abbrev[ $this->month['01'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Jan', 'January abbreviation' ); - $this->month_abbrev[ $this->month['02'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Feb', 'February abbreviation' ); - $this->month_abbrev[ $this->month['03'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Mar', 'March abbreviation' ); - $this->month_abbrev[ $this->month['04'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Apr', 'April abbreviation' ); - $this->month_abbrev[ $this->month['05'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'May', 'May abbreviation' ); - $this->month_abbrev[ $this->month['06'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Jun', 'June abbreviation' ); - $this->month_abbrev[ $this->month['07'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Jul', 'July abbreviation' ); - $this->month_abbrev[ $this->month['08'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Aug', 'August abbreviation' ); - $this->month_abbrev[ $this->month['09'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Sep', 'September abbreviation' ); - $this->month_abbrev[ $this->month['10'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Oct', 'October abbreviation' ); - $this->month_abbrev[ $this->month['11'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Nov', 'November abbreviation' ); - $this->month_abbrev[ $this->month['12'] ] = /* translators: Three-letter abbreviation of the month. */ _x( 'Dec', 'December abbreviation' ); - - // The meridiems. + $this->month_abbrev[ __( 'January' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Jan', 'January abbreviation' ); + $this->month_abbrev[ __( 'February' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Feb', 'February abbreviation' ); + $this->month_abbrev[ __( 'March' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Mar', 'March abbreviation' ); + $this->month_abbrev[ __( 'April' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Apr', 'April abbreviation' ); + $this->month_abbrev[ __( 'May' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'May', 'May abbreviation' ); + $this->month_abbrev[ __( 'June' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Jun', 'June abbreviation' ); + $this->month_abbrev[ __( 'July' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Jul', 'July abbreviation' ); + $this->month_abbrev[ __( 'August' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Aug', 'August abbreviation' ); + $this->month_abbrev[ __( 'September' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Sep', 'September abbreviation' ); + $this->month_abbrev[ __( 'October' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Oct', 'October abbreviation' ); + $this->month_abbrev[ __( 'November' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Nov', 'November abbreviation' ); + $this->month_abbrev[ __( 'December' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Dec', 'December abbreviation' ); + + // The Meridiems $this->meridiem['am'] = __( 'am' ); $this->meridiem['pm'] = __( 'pm' ); $this->meridiem['AM'] = __( 'AM' ); $this->meridiem['PM'] = __( 'PM' ); - // Numbers formatting. - // See https://www.php.net/number_format + // Numbers formatting + // See https://secure.php.net/number_format - /* translators: $thousands_sep argument for https://www.php.net/number_format, default is ',' */ + /* translators: $thousands_sep argument for https://secure.php.net/number_format, default is , */ $thousands_sep = __( 'number_format_thousands_sep' ); // Replace space with a non-breaking space to avoid wrapping. @@ -230,77 +211,85 @@ public function init() { $this->number_format['thousands_sep'] = ( 'number_format_thousands_sep' === $thousands_sep ) ? ',' : $thousands_sep; - /* translators: $dec_point argument for https://www.php.net/number_format, default is '.' */ + /* translators: $dec_point argument for https://secure.php.net/number_format, default is . */ $decimal_point = __( 'number_format_decimal_point' ); $this->number_format['decimal_point'] = ( 'number_format_decimal_point' === $decimal_point ) ? '.' : $decimal_point; - /* translators: Used between list items, there is a space after the comma. */ - $this->list_item_separator = __( ', ' ); - // 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'; } - // Set the word count type. - $this->word_count_type = $this->get_word_count_type(); + if ( 'rtl' === $this->text_direction && classicpress_is_dev_install() ) { + $this->text_direction = 'ltr'; + add_action( 'all_admin_notices', array( $this, 'rtl_src_admin_notice' ) ); + } } /** - * Retrieves the full translated weekday word. + * Outputs an admin notice if the /build directory must be used for RTL. + * + * @since WP-3.8.0 + */ + public function rtl_src_admin_notice() { + /* translators: %s: Name of the directory (build) */ + echo '<div class="error"><p>' . sprintf( __( 'The %s directory of the source repository must be used for RTL.' ), '<code>build</code>' ) . '</p></div>'; + } + + /** + * Retrieve the full translated weekday word. * * Week starts on translated Sunday and can be fetched * by using 0 (zero). So the week starts with 0 (zero) * and ends on Saturday with is fetched by using 6 (six). * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param int $weekday_number 0 for Sunday through 6 Saturday. - * @return string Full translated weekday. + * @param int $weekday_number 0 for Sunday through 6 Saturday + * @return string Full translated weekday */ public function get_weekday( $weekday_number ) { return $this->weekday[ $weekday_number ]; } /** - * Retrieves the translated weekday initial. + * Retrieve the translated weekday initial. * * The weekday initial is retrieved by the translated * full weekday word. When translating the weekday initial * pay attention to make sure that the starting letter does * not conflict. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string $weekday_name Full translated weekday word. - * @return string Translated weekday initial. + * @param string $weekday_name + * @return string */ public function get_weekday_initial( $weekday_name ) { return $this->weekday_initial[ $weekday_name ]; } /** - * Retrieves the translated weekday abbreviation. + * Retrieve the translated weekday abbreviation. * * The weekday abbreviation is retrieved by the translated * full weekday word. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string $weekday_name Full translated weekday word. - * @return string Translated weekday abbreviation. + * @param string $weekday_name Full translated weekday word + * @return string Translated weekday abbreviation */ public function get_weekday_abbrev( $weekday_name ) { return $this->weekday_abbrev[ $weekday_name ]; } /** - * Retrieves the full translated month by month number. + * Retrieve the full translated month by month number. * * The $month_number parameter has to be a string * because it must have the '0' in front of any number @@ -310,36 +299,36 @@ public function get_weekday_abbrev( $weekday_name ) { * You can use an integer instead and it will add the * '0' before the numbers less than 10 for you. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string|int $month_number '01' through '12'. - * @return string Translated full month name. + * @param string|int $month_number '01' through '12' + * @return string Translated full month name */ public function get_month( $month_number ) { return $this->month[ zeroise( $month_number, 2 ) ]; } /** - * Retrieves translated version of month abbreviation string. + * Retrieve translated version of month abbreviation string. * * The $month_name parameter is expected to be the translated or * translatable version of the month. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param string $month_name Translated month to get abbreviated version. - * @return string Translated abbreviated month. + * @param string $month_name Translated month to get abbreviated version + * @return string Translated abbreviated month */ public function get_month_abbrev( $month_name ) { return $this->month_abbrev[ $month_name ]; } /** - * Retrieves translated version of meridiem string. + * Retrieve translated version of meridiem string. * * The $meridiem parameter is expected to not be translated. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $meridiem Either 'am', 'pm', 'AM', or 'PM'. Not translated version. * @return string Translated version @@ -361,7 +350,7 @@ public function get_meridiem( $meridiem ) { * @global array $month * @global array $month_abbrev * - * @since 2.1.0 + * @since WP-2.1.0 */ public function register_globals() { $GLOBALS['weekday'] = $this->weekday; @@ -374,7 +363,7 @@ public function register_globals() { /** * Checks if current locale is RTL. * - * @since 3.0.0 + * @since WP-3.0.0 * @return bool Whether locale is RTL. */ public function is_rtl() { @@ -382,57 +371,20 @@ public function is_rtl() { } /** - * Registers date/time format strings for general POT. + * Register date/time format strings for general POT. * * Private, unused method to add some date/time formats translated * on wp-admin/options-general.php to the general POT that would * otherwise be added to the admin POT. * - * @since 3.6.0 + * @since WP-3.6.0 */ public function _strings_for_pot() { - /* translators: Localized date format, see https://www.php.net/manual/datetime.format.php */ + /* translators: localized date format, see https://secure.php.net/date */ __( 'F j, Y' ); - /* translators: Localized time format, see https://www.php.net/manual/datetime.format.php */ + /* translators: localized time format, see https://secure.php.net/date */ __( 'g:i a' ); - /* translators: Localized date and time format, see https://www.php.net/manual/datetime.format.php */ + /* translators: localized date and time format, see https://secure.php.net/date */ __( 'F j, Y g:i a' ); } - - /** - * Retrieves the localized list item separator. - * - * @since 6.0.0 - * - * @return string Localized list item separator. - */ - public function get_list_item_separator() { - return $this->list_item_separator; - } - - /** - * Retrieves the localized word count type. - * - * @since 6.2.0 - * - * @return string Localized word count type. Possible values are `characters_excluding_spaces`, - * `characters_including_spaces`, or `words`. Defaults to `words`. - */ - public function get_word_count_type() { - - /* - * translators: If your word count is based on single characters (e.g. East Asian characters), - * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'. - * Do not translate into your own language. - */ - $word_count_type = is_null( $this->word_count_type ) ? _x( 'words', 'Word count type. Do not translate!' ) : $this->word_count_type; - - // Check for valid types. - if ( 'characters_excluding_spaces' !== $word_count_type && 'characters_including_spaces' !== $word_count_type ) { - // Defaults to 'words'. - $word_count_type = 'words'; - } - - return $word_count_type; - } } diff --git a/wp-includes/class-wp-matchesmapregex.php b/wp-includes/class-wp-matchesmapregex.php index b89b87d..8ffd6f8 100644 --- a/wp-includes/class-wp-matchesmapregex.php +++ b/wp-includes/class-wp-matchesmapregex.php @@ -3,15 +3,14 @@ * WP_MatchesMapRegex helper class * * @package ClassicPress - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Helper class to remove the need to use eval to replace $matches[] in query strings. * - * @since 2.9.0 + * @since WP-2.9.0 */ -#[AllowDynamicProperties] class WP_MatchesMapRegex { /** * store for matches @@ -39,7 +38,7 @@ class WP_MatchesMapRegex { * * @var string */ - public $_pattern = '(\$matches\[[1-9]+[0-9]*\])'; // Magic number. + public $_pattern = '(\$matches\[[1-9]+[0-9]*\])'; // magic number /** * constructor @@ -58,6 +57,8 @@ public function __construct( $subject, $matches ) { * * static helper function to ease use * + * @static + * * @param string $subject subject * @param array $matches data used for substitution * @return string @@ -80,11 +81,11 @@ private function _map() { /** * preg_replace_callback hook * - * @param array $matches preg_replace regexp matches + * @param array $matches preg_replace regexp matches * @return string */ public function callback( $matches ) { - $index = (int) substr( $matches[0], 9, -1 ); + $index = intval( substr( $matches[0], 9, -1 ) ); return ( isset( $this->_matches[ $index ] ) ? urlencode( $this->_matches[ $index ] ) : '' ); } } diff --git a/wp-includes/class-wp-meta-query.php b/wp-includes/class-wp-meta-query.php index c4ca2d3..49e8295 100644 --- a/wp-includes/class-wp-meta-query.php +++ b/wp-includes/class-wp-meta-query.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Meta - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -17,16 +17,15 @@ * to filter their results by object metadata, by generating `JOIN` and `WHERE` subclauses to be attached * to the primary SQL query string. * - * @since 3.2.0 + * @since WP-3.2.0 */ -#[AllowDynamicProperties] class WP_Meta_Query { /** * Array of metadata queries. * * See WP_Meta_Query::__construct() for information on meta query arguments. * - * @since 3.2.0 + * @since WP-3.2.0 * @var array */ public $queries = array(); @@ -34,7 +33,7 @@ class WP_Meta_Query { /** * The relation between the queries. Can be one of 'AND' or 'OR'. * - * @since 3.2.0 + * @since WP-3.2.0 * @var string */ public $relation; @@ -42,7 +41,7 @@ class WP_Meta_Query { /** * Database table to query for the metadata. * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $meta_table; @@ -50,7 +49,7 @@ class WP_Meta_Query { /** * Column in meta_table that represents the ID of the object the metadata belongs to. * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $meta_id_column; @@ -58,7 +57,7 @@ class WP_Meta_Query { /** * Database table that where the metadata's objects are stored (eg $wpdb->users). * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $primary_table; @@ -66,7 +65,7 @@ class WP_Meta_Query { /** * Column in primary_table that represents the ID of the object. * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $primary_id_column; @@ -74,7 +73,7 @@ class WP_Meta_Query { /** * A flat list of table aliases used in JOIN clauses. * - * @since 4.1.0 + * @since WP-4.1.0 * @var array */ protected $table_aliases = array(); @@ -82,7 +81,7 @@ class WP_Meta_Query { /** * A flat list of clauses, keyed by clause 'name'. * - * @since 4.2.0 + * @since WP-4.2.0 * @var array */ protected $clauses = array(); @@ -90,7 +89,7 @@ class WP_Meta_Query { /** * Whether the query contains any OR relations. * - * @since 4.3.0 + * @since WP-4.3.0 * @var bool */ protected $has_or_relation = false; @@ -98,70 +97,30 @@ class WP_Meta_Query { /** * Constructor. * - * @since 3.2.0 - * @since 4.2.0 Introduced support for naming query clauses by associative array keys. - * @since 5.1.0 Introduced `$compare_key` clause parameter, which enables LIKE key matches. - * @since 5.3.0 Increased the number of operators available to `$compare_key`. Introduced `$type_key`, - * which enables the `$key` to be cast to a new data type for comparisons. + * @since WP-3.2.0 + * @since WP-4.2.0 Introduced support for naming query clauses by associative array keys. + * * * @param array $meta_query { * Array of meta query clauses. When first-order clauses or sub-clauses use strings as * their array keys, they may be referenced in the 'orderby' parameter of the parent query. * - * @type string $relation Optional. The MySQL keyword used to join the clauses of the query. - * Accepts 'AND' or 'OR'. Default 'AND'. - * @type array ...$0 { + * @type string $relation Optional. The MySQL keyword used to join + * the clauses of the query. Accepts 'AND', or 'OR'. Default 'AND'. + * @type array { * Optional. An array of first-order clause parameters, or another fully-formed meta query. * - * @type string|string[] $key Meta key or keys to filter by. - * @type string $compare_key MySQL operator used for comparing the $key. Accepts: - * - '=' - * - '!=' - * - 'LIKE' - * - 'NOT LIKE' - * - 'IN' - * - 'NOT IN' - * - 'REGEXP' - * - 'NOT REGEXP' - * - 'RLIKE', - * - 'EXISTS' (alias of '=') - * - 'NOT EXISTS' (alias of '!=') - * Default is 'IN' when `$key` is an array, '=' otherwise. - * @type string $type_key MySQL data type that the meta_key column will be CAST to for - * comparisons. Accepts 'BINARY' for case-sensitive regular expression - * comparisons. Default is ''. - * @type string|string[] $value Meta value or values to filter by. - * @type string $compare MySQL operator used for comparing the $value. Accepts: - * - '=', - * - '!=' - * - '>' - * - '>=' - * - '<' - * - '<=' - * - 'LIKE' - * - 'NOT LIKE' - * - 'IN' - * - 'NOT IN' - * - 'BETWEEN' - * - 'NOT BETWEEN' - * - 'REGEXP' - * - 'NOT REGEXP' - * - 'RLIKE' - * - 'EXISTS' - * - 'NOT EXISTS' - * Default is 'IN' when `$value` is an array, '=' otherwise. - * @type string $type MySQL data type that the meta_value column will be CAST to for - * comparisons. Accepts: - * - 'NUMERIC' - * - 'BINARY' - * - 'CHAR' - * - 'DATE' - * - 'DATETIME' - * - 'DECIMAL' - * - 'SIGNED' - * - 'TIME' - * - 'UNSIGNED' - * Default is 'CHAR'. + * @type string $key Meta key to filter by. + * @type string $value Meta value to filter by. + * @type string $compare MySQL operator used for comparing the $value. Accepts '=', + * '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', + * 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'REGEXP', + * 'NOT REGEXP', 'RLIKE', 'EXISTS' or 'NOT EXISTS'. + * Default is 'IN' when `$value` is an array, '=' otherwise. + * @type string $type MySQL data type that the meta_value column will be CAST to for + * comparisons. Accepts 'NUMERIC', 'BINARY', 'CHAR', 'DATE', + * 'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', or 'UNSIGNED'. + * Default is 'CHAR'. * } * } */ @@ -180,11 +139,11 @@ public function __construct( $meta_query = false ) { } /** - * Ensures the 'meta_query' argument passed to the class constructor is well-formed. + * Ensure the 'meta_query' argument passed to the class constructor is well-formed. * * Eliminates empty items and ensures that a 'relation' is set. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $queries Array of query clauses. * @return array Sanitized array of query clauses. @@ -247,12 +206,12 @@ public function sanitize_query( $queries ) { } /** - * Determines whether a query clause is first-order. + * Determine whether a query clause is first-order. * * A first-order meta query clause is one that has either a 'key' or * a 'value' array key. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $query Meta query arguments. * @return bool Whether the query clause is a first-order clause. @@ -264,9 +223,9 @@ protected function is_first_order_clause( $query ) { /** * Constructs a meta query based on 'meta_*' query vars * - * @since 3.2.0 + * @since WP-3.2.0 * - * @param array $qv The query variables. + * @param array $qv The query variables */ public function parse_query_vars( $qv ) { $meta_query = array(); @@ -278,7 +237,7 @@ public function parse_query_vars( $qv ) { * the rest of the meta_query). */ $primary_meta_query = array(); - foreach ( array( 'key', 'compare', 'type', 'compare_key', 'type_key' ) as $key ) { + foreach ( array( 'key', 'compare', 'type' ) as $key ) { if ( ! empty( $qv[ "meta_$key" ] ) ) { $primary_meta_query[ $key ] = $qv[ "meta_$key" ]; } @@ -309,9 +268,9 @@ public function parse_query_vars( $qv ) { } /** - * Returns the appropriate alias for the given meta type if applicable. + * Return the appropriate alias for the given meta type if applicable. * - * @since 3.7.0 + * @since WP-3.7.0 * * @param string $type MySQL type to cast meta_value. * @return string MySQL type. @@ -337,18 +296,14 @@ public function get_cast_for_type( $type = '' ) { /** * Generates SQL clauses to be appended to a main query. * - * @since 3.2.0 + * @since WP-3.2.0 * - * @param string $type Type of meta. Possible values include but are not limited - * to 'post', 'comment', 'blog', 'term', and 'user'. + * @param string $type Type of meta, eg 'user', 'post'. * @param string $primary_table Database table where the object being filtered is stored (eg wp_users). * @param string $primary_id_column ID column for the filtered object in $primary_table. - * @param object $context Optional. The main query object that corresponds to the type, for - * example a `WP_Query`, `WP_User_Query`, or `WP_Site_Query`. - * Default null. - * @return string[]|false { - * Array containing JOIN and WHERE SQL clauses to append to the main query, - * or false if no table exists for the requested meta type. + * @param object $context Optional. The main query object. + * @return false|array { + * Array containing JOIN and WHERE SQL clauses to append to the main query. * * @type string $join SQL fragment to append to the main JOIN clause. * @type string $where SQL fragment to append to the main WHERE clause. @@ -381,29 +336,27 @@ public function get_sql( $type, $primary_table, $primary_id_column, $context = n /** * Filters the meta query's generated SQL. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string[] $sql Array containing the query's JOIN and WHERE clauses. - * @param array $queries Array of meta queries. - * @param string $type Type of meta. Possible values include but are not limited - * to 'post', 'comment', 'blog', 'term', and 'user'. - * @param string $primary_table Primary table. - * @param string $primary_id_column Primary column ID. - * @param object $context The main query object that corresponds to the type, for - * example a `WP_Query`, `WP_User_Query`, or `WP_Site_Query`. + * @param array $clauses Array containing the query's JOIN and WHERE clauses. + * @param array $queries Array of meta queries. + * @param string $type Type of meta. + * @param string $primary_table Primary table. + * @param string $primary_id_column Primary column ID. + * @param object $context The main query object. */ return apply_filters_ref_array( 'get_meta_sql', array( $sql, $this->queries, $type, $primary_table, $primary_id_column, $context ) ); } /** - * Generates SQL clauses to be appended to a main query. + * Generate SQL clauses to be appended to a main query. * * Called by the public WP_Meta_Query::get_sql(), this method is abstracted * out to maintain parity with the other Query classes. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to the main query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -426,17 +379,17 @@ protected function get_sql_clauses() { } /** - * Generates SQL clauses for a single query array. + * Generate SQL clauses for a single query array. * * If nested subqueries are found, this method recurses the tree to * produce the properly nested SQL. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $query Query to parse (passed by reference). * @param int $depth Optional. Number of tree levels deep we currently are. * Used to calculate indentation. Default 0. - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to a single query array. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -510,20 +463,19 @@ protected function get_sql_for_query( &$query, $depth = 0 ) { } /** - * Generates SQL JOIN and WHERE clauses for a first-order query clause. + * Generate SQL JOIN and WHERE clauses for a first-order query clause. * * "First-order" means that it's an array with a 'key' or 'value'. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param array $clause Query clause (passed by reference). * @param array $parent_query Parent query array. * @param string $clause_key Optional. The array key used to name the clause in the original `$meta_query` * parameters. If not provided, a key will be generated automatically. - * Default empty string. - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to a first-order query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -544,45 +496,32 @@ public function get_sql_for_clause( &$clause, $parent_query, $clause_key = '' ) $clause['compare'] = isset( $clause['value'] ) && is_array( $clause['value'] ) ? 'IN' : '='; } - $non_numeric_operators = array( - '=', - '!=', - 'LIKE', - 'NOT LIKE', - 'IN', - 'NOT IN', - 'EXISTS', - 'NOT EXISTS', - 'RLIKE', - 'REGEXP', - 'NOT REGEXP', - ); - - $numeric_operators = array( - '>', - '>=', - '<', - '<=', - 'BETWEEN', - 'NOT BETWEEN', - ); - - if ( ! in_array( $clause['compare'], $non_numeric_operators, true ) && ! in_array( $clause['compare'], $numeric_operators, true ) ) { + if ( ! in_array( + $clause['compare'], + array( + '=', + '!=', + '>', + '>=', + '<', + '<=', + 'LIKE', + 'NOT LIKE', + 'IN', + 'NOT IN', + 'BETWEEN', + 'NOT BETWEEN', + 'EXISTS', + 'NOT EXISTS', + 'REGEXP', + 'NOT REGEXP', + 'RLIKE', + ) + ) ) { $clause['compare'] = '='; } - if ( isset( $clause['compare_key'] ) ) { - $clause['compare_key'] = strtoupper( $clause['compare_key'] ); - } else { - $clause['compare_key'] = isset( $clause['key'] ) && is_array( $clause['key'] ) ? 'IN' : '='; - } - - if ( ! in_array( $clause['compare_key'], $non_numeric_operators, true ) ) { - $clause['compare_key'] = '='; - } - - $meta_compare = $clause['compare']; - $meta_compare_key = $clause['compare_key']; + $meta_compare = $clause['compare']; // First build the JOIN clause, if one is required. $join = ''; @@ -597,12 +536,7 @@ public function get_sql_for_clause( &$clause, $parent_query, $clause_key = '' ) if ( 'NOT EXISTS' === $meta_compare ) { $join .= " LEFT JOIN $this->meta_table"; $join .= $i ? " AS $alias" : ''; - - if ( 'LIKE' === $meta_compare_key ) { - $join .= $wpdb->prepare( " ON ( $this->primary_table.$this->primary_id_column = $alias.$this->meta_id_column AND $alias.meta_key LIKE %s )", '%' . $wpdb->esc_like( $clause['key'] ) . '%' ); - } else { - $join .= $wpdb->prepare( " ON ( $this->primary_table.$this->primary_id_column = $alias.$this->meta_id_column AND $alias.meta_key = %s )", $clause['key'] ); - } + $join .= $wpdb->prepare( " ON ($this->primary_table.$this->primary_id_column = $alias.$this->meta_id_column AND $alias.meta_key = %s )", $clause['key'] ); // All other JOIN clauses. } else { @@ -646,83 +580,7 @@ public function get_sql_for_clause( &$clause, $parent_query, $clause_key = '' ) if ( 'NOT EXISTS' === $meta_compare ) { $sql_chunks['where'][] = $alias . '.' . $this->meta_id_column . ' IS NULL'; } else { - /** - * In joined clauses negative operators have to be nested into a - * NOT EXISTS clause and flipped, to avoid returning records with - * matching post IDs but different meta keys. Here we prepare the - * nested clause. - */ - if ( in_array( $meta_compare_key, array( '!=', 'NOT IN', 'NOT LIKE', 'NOT EXISTS', 'NOT REGEXP' ), true ) ) { - // Negative clauses may be reused. - $i = count( $this->table_aliases ); - $subquery_alias = $i ? 'mt' . $i : $this->meta_table; - $this->table_aliases[] = $subquery_alias; - - $meta_compare_string_start = 'NOT EXISTS ('; - $meta_compare_string_start .= "SELECT 1 FROM $wpdb->postmeta $subquery_alias "; - $meta_compare_string_start .= "WHERE $subquery_alias.post_ID = $alias.post_ID "; - $meta_compare_string_end = 'LIMIT 1'; - $meta_compare_string_end .= ')'; - } - - switch ( $meta_compare_key ) { - case '=': - case 'EXISTS': - $where = $wpdb->prepare( "$alias.meta_key = %s", trim( $clause['key'] ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - break; - case 'LIKE': - $meta_compare_value = '%' . $wpdb->esc_like( trim( $clause['key'] ) ) . '%'; - $where = $wpdb->prepare( "$alias.meta_key LIKE %s", $meta_compare_value ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - break; - case 'IN': - $meta_compare_string = "$alias.meta_key IN (" . substr( str_repeat( ',%s', count( $clause['key'] ) ), 1 ) . ')'; - $where = $wpdb->prepare( $meta_compare_string, $clause['key'] ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - break; - case 'RLIKE': - case 'REGEXP': - $operator = $meta_compare_key; - if ( isset( $clause['type_key'] ) && 'BINARY' === strtoupper( $clause['type_key'] ) ) { - $cast = 'BINARY'; - $meta_key = "CAST($alias.meta_key AS BINARY)"; - } else { - $cast = ''; - $meta_key = "$alias.meta_key"; - } - $where = $wpdb->prepare( "$meta_key $operator $cast %s", trim( $clause['key'] ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - break; - - case '!=': - case 'NOT EXISTS': - $meta_compare_string = $meta_compare_string_start . "AND $subquery_alias.meta_key = %s " . $meta_compare_string_end; - $where = $wpdb->prepare( $meta_compare_string, $clause['key'] ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - break; - case 'NOT LIKE': - $meta_compare_string = $meta_compare_string_start . "AND $subquery_alias.meta_key LIKE %s " . $meta_compare_string_end; - - $meta_compare_value = '%' . $wpdb->esc_like( trim( $clause['key'] ) ) . '%'; - $where = $wpdb->prepare( $meta_compare_string, $meta_compare_value ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - break; - case 'NOT IN': - $array_subclause = '(' . substr( str_repeat( ',%s', count( $clause['key'] ) ), 1 ) . ') '; - $meta_compare_string = $meta_compare_string_start . "AND $subquery_alias.meta_key IN " . $array_subclause . $meta_compare_string_end; - $where = $wpdb->prepare( $meta_compare_string, $clause['key'] ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - break; - case 'NOT REGEXP': - $operator = $meta_compare_key; - if ( isset( $clause['type_key'] ) && 'BINARY' === strtoupper( $clause['type_key'] ) ) { - $cast = 'BINARY'; - $meta_key = "CAST($subquery_alias.meta_key AS BINARY)"; - } else { - $cast = ''; - $meta_key = "$subquery_alias.meta_key"; - } - - $meta_compare_string = $meta_compare_string_start . "AND $meta_key REGEXP $cast %s " . $meta_compare_string_end; - $where = $wpdb->prepare( $meta_compare_string, $clause['key'] ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - break; - } - - $sql_chunks['where'][] = $where; + $sql_chunks['where'][] = $wpdb->prepare( "$alias.meta_key = %s", trim( $clause['key'] ) ); } } @@ -734,7 +592,7 @@ public function get_sql_for_clause( &$clause, $parent_query, $clause_key = '' ) if ( ! is_array( $meta_value ) ) { $meta_value = preg_split( '/[,\s]+/', $meta_value ); } - } elseif ( is_string( $meta_value ) ) { + } else { $meta_value = trim( $meta_value ); } @@ -794,12 +652,12 @@ public function get_sql_for_clause( &$clause, $parent_query, $clause_key = '' ) } /** - * Gets a flattened list of sanitized meta clauses. + * Get a flattened list of sanitized meta clauses. * * This array should be used for clause lookup, as when the table alias and CAST type must be determined for * a value of 'orderby' corresponding to a meta clause. * - * @since 4.2.0 + * @since WP-4.2.0 * * @return array Meta clauses. */ @@ -808,7 +666,7 @@ public function get_clauses() { } /** - * Identifies an existing table alias that is compatible with the current + * Identify an existing table alias that is compatible with the current * query clause. * * We avoid unnecessary table joins by allowing each clause to look for @@ -821,11 +679,11 @@ public function get_clauses() { * In the case of WP_Meta_Query, this only applies to 'IN' clauses that are * connected by the relation 'OR'. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @param array $clause Query clause. - * @param array $parent_query Parent query of $clause. - * @return string|false Table alias if found, otherwise false. + * @param array $clause Query clause. + * @param array $parent_query Parent query of $clause. + * @return string|bool Table alias if found, otherwise false. */ protected function find_compatible_table_alias( $clause, $parent_query ) { $alias = false; @@ -854,6 +712,7 @@ protected function find_compatible_table_alias( $clause, $parent_query ) { $clause_compare = strtoupper( $clause['compare'] ); $sibling_compare = strtoupper( $sibling['compare'] ); + if ( in_array( $clause_compare, $compatible_compares, true ) && in_array( $sibling_compare, $compatible_compares, true ) ) { $alias = preg_replace( '/\W/', '_', $sibling['alias'] ); break; @@ -863,12 +722,12 @@ protected function find_compatible_table_alias( $clause, $parent_query ) { /** * Filters the table alias identified as compatible with the current clause. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @param string|false $alias Table alias, or false if none was found. - * @param array $clause First-order query clause. - * @param array $parent_query Parent of $clause. - * @param WP_Meta_Query $query WP_Meta_Query object. + * @param string|bool $alias Table alias, or false if none was found. + * @param array $clause First-order query clause. + * @param array $parent_query Parent of $clause. + * @param object $this WP_Meta_Query object. */ return apply_filters( 'meta_query_find_compatible_table_alias', $alias, $clause, $parent_query, $this ); } @@ -880,7 +739,7 @@ protected function find_compatible_table_alias( $clause, $parent_query ) { * the use of a `DISTINCT` or `GROUP BY` keyword in the `SELECT` clause. The current * method can be used in these cases to determine whether such a clause is necessary. * - * @since 4.3.0 + * @since WP-4.3.0 * * @return bool True if the query contains any `OR` relations, otherwise false. */ diff --git a/wp-includes/class-wp-metadata-lazyloader.php b/wp-includes/class-wp-metadata-lazyloader.php index 0f8e011..2d746ff 100644 --- a/wp-includes/class-wp-metadata-lazyloader.php +++ b/wp-includes/class-wp-metadata-lazyloader.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Meta - * @since 4.5.0 + * @since WP-4.5.0 */ /** @@ -26,14 +26,13 @@ * * Do not access this class directly. Use the wp_metadata_lazyloader() function. * - * @since 4.5.0 + * @since WP-4.5.0 */ -#[AllowDynamicProperties] class WP_Metadata_Lazyloader { /** * Pending objects queue. * - * @since 4.5.0 + * @since WP-4.5.0 * @var array */ protected $pending_objects; @@ -41,7 +40,7 @@ class WP_Metadata_Lazyloader { /** * Settings for supported object types. * - * @since 4.5.0 + * @since WP-4.5.0 * @var array */ protected $settings = array(); @@ -49,21 +48,17 @@ class WP_Metadata_Lazyloader { /** * Constructor. * - * @since 4.5.0 + * @since WP-4.5.0 */ public function __construct() { $this->settings = array( 'term' => array( 'filter' => 'get_term_metadata', - 'callback' => array( $this, 'lazyload_meta_callback' ), + 'callback' => array( $this, 'lazyload_term_meta' ), ), 'comment' => array( 'filter' => 'get_comment_metadata', - 'callback' => array( $this, 'lazyload_meta_callback' ), - ), - 'blog' => array( - 'filter' => 'get_blog_metadata', - 'callback' => array( $this, 'lazyload_meta_callback' ), + 'callback' => array( $this, 'lazyload_comment_meta' ), ), ); } @@ -71,15 +66,15 @@ public function __construct() { /** * Adds objects to the metadata lazy-load queue. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param string $object_type Type of object whose meta is to be lazy-loaded. Accepts 'term' or 'comment'. * @param array $object_ids Array of object IDs. - * @return void|WP_Error WP_Error on failure. + * @return bool|WP_Error True on success, WP_Error on failure. */ public function queue_objects( $object_type, $object_ids ) { if ( ! isset( $this->settings[ $object_type ] ) ) { - return new WP_Error( 'invalid_object_type', __( 'Invalid object type.' ) ); + return new WP_Error( 'invalid_object_type', __( 'Invalid object type' ) ); } $type_settings = $this->settings[ $object_type ]; @@ -95,14 +90,14 @@ public function queue_objects( $object_type, $object_ids ) { } } - add_filter( $type_settings['filter'], $type_settings['callback'], 10, 5 ); + add_filter( $type_settings['filter'], $type_settings['callback'] ); /** * Fires after objects are added to the metadata lazy-load queue. * - * @since 4.5.0 + * @since WP-4.5.0 * - * @param array $object_ids Array of object IDs. + * @param array $object_ids Object IDs. * @param string $object_type Type of object being queued. * @param WP_Metadata_Lazyloader $lazyloader The lazy-loader object. */ @@ -112,14 +107,14 @@ public function queue_objects( $object_type, $object_ids ) { /** * Resets lazy-load queue for a given object type. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param string $object_type Object type. Accepts 'comment' or 'term'. - * @return void|WP_Error WP_Error on failure. + * @return bool|WP_Error True on success, WP_Error on failure. */ public function reset_queue( $object_type ) { if ( ! isset( $this->settings[ $object_type ] ) ) { - return new WP_Error( 'invalid_object_type', __( 'Invalid object type.' ) ); + return new WP_Error( 'invalid_object_type', __( 'Invalid object type' ) ); } $type_settings = $this->settings[ $object_type ]; @@ -134,16 +129,21 @@ public function reset_queue( $object_type ) { * This method is public so that it can be used as a filter callback. As a rule, there * is no need to invoke it directly. * - * @since 4.5.0 - * @deprecated 6.3.0 Use WP_Metadata_Lazyloader::lazyload_meta_callback() instead. + * @since WP-4.5.0 * * @param mixed $check The `$check` param passed from the 'get_term_metadata' hook. * @return mixed In order not to short-circuit `get_metadata()`. Generally, this is `null`, but it could be * another value if filtered by a plugin. */ public function lazyload_term_meta( $check ) { - _deprecated_function( __METHOD__, '6.3.0', 'WP_Metadata_Lazyloader::lazyload_meta_callback' ); - return $this->lazyload_meta_callback( $check, 0, '', false, 'term' ); + if ( ! empty( $this->pending_objects['term'] ) ) { + update_termmeta_cache( array_keys( $this->pending_objects['term'] ) ); + + // No need to run again for this set of terms. + $this->reset_queue( 'term' ); + } + + return $check; } /** @@ -152,49 +152,19 @@ public function lazyload_term_meta( $check ) { * This method is public so that it can be used as a filter callback. As a rule, there is no need to invoke it * directly, from either inside or outside the `WP_Query` object. * - * @since 4.5.0 - * @deprecated 6.3.0 Use WP_Metadata_Lazyloader::lazyload_meta_callback() instead. + * @since WP-4.5.0 * * @param mixed $check The `$check` param passed from the {@see 'get_comment_metadata'} hook. * @return mixed The original value of `$check`, so as not to short-circuit `get_comment_metadata()`. */ public function lazyload_comment_meta( $check ) { - _deprecated_function( __METHOD__, '6.3.0', 'WP_Metadata_Lazyloader::lazyload_meta_callback' ); - return $this->lazyload_meta_callback( $check, 0, '', false, 'comment' ); - } + if ( ! empty( $this->pending_objects['comment'] ) ) { + update_meta_cache( 'comment', array_keys( $this->pending_objects['comment'] ) ); - /** - * Lazy-loads meta for queued objects. - * - * This method is public so that it can be used as a filter callback. As a rule, there - * is no need to invoke it directly. - * - * @since 6.3.0 - * - * @param mixed $check The `$check` param passed from the 'get_*_metadata' hook. - * @param int $object_id ID of the object metadata is for. - * @param string $meta_key Unused. - * @param bool $single Unused. - * @param string $meta_type Type of object metadata is for. Accepts 'post', 'comment', 'term', 'user', - * or any other object type with an associated meta table. - * @return mixed In order not to short-circuit `get_metadata()`. Generally, this is `null`, but it could be - * another value if filtered by a plugin. - */ - public function lazyload_meta_callback( $check, $object_id, $meta_key, $single, $meta_type ) { - if ( empty( $this->pending_objects[ $meta_type ] ) ) { - return $check; + // No need to run again for this set of comments. + $this->reset_queue( 'comment' ); } - $object_ids = array_keys( $this->pending_objects[ $meta_type ] ); - if ( $object_id && ! in_array( $object_id, $object_ids, true ) ) { - $object_ids[] = $object_id; - } - - update_meta_cache( $meta_type, $object_ids ); - - // No need to run again for this set of objects. - $this->reset_queue( $meta_type ); - return $check; } } diff --git a/wp-includes/class-wp-network-query.php b/wp-includes/class-wp-network-query.php index ef027a8..b891060 100644 --- a/wp-includes/class-wp-network-query.php +++ b/wp-includes/class-wp-network-query.php @@ -4,23 +4,22 @@ * * @package ClassicPress * @subpackage Multisite - * @since 4.6.0 + * @since WP-4.6.0 */ /** * Core class used for querying networks. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_Network_Query::__construct() for accepted arguments. */ -#[AllowDynamicProperties] class WP_Network_Query { /** * SQL for database query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string */ public $request; @@ -28,7 +27,7 @@ class WP_Network_Query { /** * SQL query clauses. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ protected $sql_clauses = array( @@ -43,7 +42,7 @@ class WP_Network_Query { /** * Query vars set by the user. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $query_vars; @@ -51,7 +50,7 @@ class WP_Network_Query { /** * Default values for query vars. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $query_var_defaults; @@ -59,7 +58,7 @@ class WP_Network_Query { /** * List of networks located by the query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $networks; @@ -67,7 +66,7 @@ class WP_Network_Query { /** * The amount of found networks for the current query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var int */ public $found_networks = 0; @@ -75,7 +74,7 @@ class WP_Network_Query { /** * The number of pages. * - * @since 4.6.0 + * @since WP-4.6.0 * @var int */ public $max_num_pages = 0; @@ -85,13 +84,13 @@ class WP_Network_Query { * * Sets up the network query, based on the query vars passed. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string|array $query { * Optional. Array or query string of network query parameters. Default empty. * - * @type int[] $network__in Array of network IDs to include. Default empty. - * @type int[] $network__not_in Array of network IDs to exclude. Default empty. + * @type array $network__in Array of network IDs to include. Default empty. + * @type array $network__not_in Array of network IDs to exclude. Default empty. * @type bool $count Whether to return a network count (true) or array of network objects. * Default false. * @type string $fields Network fields to return. Accepts 'ids' (returns an array of network IDs) @@ -105,11 +104,11 @@ class WP_Network_Query { * an empty array, or 'none' to disable `ORDER BY` clause. Default 'id'. * @type string $order How to order retrieved networks. Accepts 'ASC', 'DESC'. Default 'ASC'. * @type string $domain Limit results to those affiliated with a given domain. Default empty. - * @type string[] $domain__in Array of domains to include affiliated networks for. Default empty. - * @type string[] $domain__not_in Array of domains to exclude affiliated networks for. Default empty. + * @type array $domain__in Array of domains to include affiliated networks for. Default empty. + * @type array $domain__not_in Array of domains to exclude affiliated networks for. Default empty. * @type string $path Limit results to those affiliated with a given path. Default empty. - * @type string[] $path__in Array of paths to include affiliated networks for. Default empty. - * @type string[] $path__not_in Array of paths to exclude affiliated networks for. Default empty. + * @type array $path__in Array of paths to include affiliated networks for. Default empty. + * @type array $path__not_in Array of paths to exclude affiliated networks for. Default empty. * @type string $search Search term(s) to retrieve matching networks for. Default empty. * @type bool $update_network_cache Whether to prime the cache for found networks. Default true. * } @@ -143,7 +142,8 @@ public function __construct( $query = '' ) { /** * Parses arguments passed to the network query with default query parameters. * - * @since 4.6.0 + * @since WP-4.6.0 + * * * @param string|array $query WP_Network_Query arguments. See WP_Network_Query::__construct() */ @@ -157,20 +157,20 @@ public function parse_query( $query = '' ) { /** * Fires after the network query vars have been parsed. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Network_Query $query The WP_Network_Query instance (passed by reference). + * @param WP_Network_Query $this The WP_Network_Query instance (passed by reference). */ do_action_ref_array( 'parse_network_query', array( &$this ) ); } /** - * Sets up the WordPress query for retrieving networks. + * Sets up the ClassicPress query for retrieving networks. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string|array $query Array or URL query string of parameters. - * @return array|int List of WP_Network objects, a list of network IDs when 'fields' is set to 'ids', + * @return array|int List of WP_Network objects, a list of network ids when 'fields' is set to 'ids', * or the number of networks when 'count' is passed as a query var. */ public function query( $query ) { @@ -181,9 +181,9 @@ public function query( $query ) { /** * Gets a list of networks matching the query vars. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @return array|int List of WP_Network objects, a list of network IDs when 'fields' is set to 'ids', + * @return array|int List of WP_Network objects, a list of network ids when 'fields' is set to 'ids', * or the number of networks when 'count' is passed as a query var. */ public function get_networks() { @@ -192,59 +192,17 @@ public function get_networks() { /** * Fires before networks are retrieved. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Network_Query $query Current instance of WP_Network_Query (passed by reference). + * @param WP_Network_Query $this Current instance of WP_Network_Query (passed by reference). */ do_action_ref_array( 'pre_get_networks', array( &$this ) ); - $network_data = null; - - /** - * Filters the network data before the query takes place. - * - * Return a non-null value to bypass WordPress' default network queries. - * - * The expected return type from this filter depends on the value passed - * in the request query vars: - * - When `$this->query_vars['count']` is set, the filter should return - * the network count as an integer. - * - When `'ids' === $this->query_vars['fields']`, the filter should return - * an array of network IDs. - * - Otherwise the filter should return an array of WP_Network objects. - * - * Note that if the filter returns an array of network data, it will be assigned - * to the `networks` property of the current WP_Network_Query instance. - * - * Filtering functions that require pagination information are encouraged to set - * the `found_networks` and `max_num_pages` properties of the WP_Network_Query object, - * passed to the filter by reference. If WP_Network_Query does not perform a database - * query, it will not have enough information to generate these values itself. - * - * @since 5.2.0 - * @since 5.6.0 The returned array of network data is assigned to the `networks` property - * of the current WP_Network_Query instance. - * - * @param array|int|null $network_data Return an array of network data to short-circuit WP's network query, - * the network count as an integer if `$this->query_vars['count']` is set, - * or null to allow WP to run its normal queries. - * @param WP_Network_Query $query The WP_Network_Query instance, passed by reference. - */ - $network_data = apply_filters_ref_array( 'networks_pre_query', array( $network_data, &$this ) ); - - if ( null !== $network_data ) { - if ( is_array( $network_data ) && ! $this->query_vars['count'] ) { - $this->networks = $network_data; - } - - return $network_data; - } - // $args can include anything. Only use the args defined in the query_var_defaults to compute the key. $_args = wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ); - // Ignore the $fields, $update_network_cache arguments as the queried result will be the same regardless. - unset( $_args['fields'], $_args['update_network_cache'] ); + // Ignore the $fields argument as the queried result will be the same regardless. + unset( $_args['fields'] ); $key = md5( serialize( $_args ) ); $last_changed = wp_cache_get_last_changed( 'networks' ); @@ -275,7 +233,7 @@ public function get_networks() { // If querying for a count only, there's nothing more to do. if ( $this->query_vars['count'] ) { // $network_ids is actually a count in this case. - return (int) $network_ids; + return intval( $network_ids ); } $network_ids = array_map( 'intval', $network_ids ); @@ -301,14 +259,14 @@ public function get_networks() { /** * Filters the network query results. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Network[] $_networks An array of WP_Network objects. - * @param WP_Network_Query $query Current instance of WP_Network_Query (passed by reference). + * @param array $_networks An array of WP_Network objects. + * @param WP_Network_Query $this Current instance of WP_Network_Query (passed by reference). */ $_networks = apply_filters_ref_array( 'the_networks', array( $_networks, &$this ) ); - // Convert to WP_Network instances. + // Convert to WP_Network instances $this->networks = array_map( 'get_network', $_networks ); return $this->networks; @@ -317,9 +275,9 @@ public function get_networks() { /** * Used internally to get a list of network IDs matching the query vars. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @return int|array A single count of network IDs if a count query. An array of network IDs if a full query. */ @@ -444,10 +402,10 @@ protected function get_network_ids() { /** * Filters the network query clauses. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param string[] $clauses An associative array of network query clauses. - * @param WP_Network_Query $query Current instance of WP_Network_Query (passed by reference). + * @param array $pieces A compacted array of network query clauses. + * @param WP_Network_Query $this Current instance of WP_Network_Query (passed by reference). */ $clauses = apply_filters_ref_array( 'networks_clauses', array( compact( $pieces ), &$this ) ); @@ -481,17 +439,10 @@ protected function get_network_ids() { $this->sql_clauses['orderby'] = $orderby; $this->sql_clauses['limits'] = $limits; - $this->request = " - {$this->sql_clauses['select']} - {$this->sql_clauses['from']} - {$where} - {$this->sql_clauses['groupby']} - {$this->sql_clauses['orderby']} - {$this->sql_clauses['limits']} - "; + $this->request = "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} {$this->sql_clauses['orderby']} {$this->sql_clauses['limits']}"; if ( $this->query_vars['count'] ) { - return (int) $wpdb->get_var( $this->request ); + return intval( $wpdb->get_var( $this->request ) ); } $network_ids = $wpdb->get_col( $this->request ); @@ -503,9 +454,9 @@ protected function get_network_ids() { * Populates found_networks and max_num_pages properties for the current query * if the limit clause was used. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. */ private function set_found_networks() { global $wpdb; @@ -514,7 +465,7 @@ private function set_found_networks() { /** * Filters the query used to retrieve found network count. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $found_networks_query SQL query. Default 'SELECT FOUND_ROWS()'. * @param WP_Network_Query $network_query The `WP_Network_Query` instance. @@ -528,18 +479,19 @@ private function set_found_networks() { /** * Used internally to generate an SQL string for searching across multiple columns. * - * @since 4.6.0 + * @since WP-4.6.0 + * + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @global wpdb $wpdb WordPress database abstraction object. + * @param string $string Search string. + * @param array $columns Columns to search. * - * @param string $search Search string. - * @param string[] $columns Array of columns to search. * @return string Search SQL. */ - protected function get_search_sql( $search, $columns ) { + protected function get_search_sql( $string, $columns ) { global $wpdb; - $like = '%' . $wpdb->esc_like( $search ) . '%'; + $like = '%' . $wpdb->esc_like( $string ) . '%'; $searches = array(); foreach ( $columns as $column ) { @@ -552,9 +504,9 @@ protected function get_search_sql( $search, $columns ) { /** * Parses and sanitizes 'orderby' keys passed to the network query. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $orderby Alias for the field to order by. * @return string|false Value to used in the ORDER clause. False otherwise. @@ -585,7 +537,7 @@ protected function parse_orderby( $orderby ) { /** * Parses an 'order' query variable and cast it to 'ASC' or 'DESC' as necessary. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $order The 'order' query variable. * @return string The sanitized 'order' query variable. diff --git a/wp-includes/class-wp-network.php b/wp-includes/class-wp-network.php index 397d432..52d5c18 100644 --- a/wp-includes/class-wp-network.php +++ b/wp-includes/class-wp-network.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Multisite - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -16,19 +16,18 @@ * This class is most useful in ClassicPress multi-network installations where the * ability to interact with any network of sites is required. * - * @since 4.4.0 + * @since WP-4.4.0 * * @property int $id * @property int $site_id */ -#[AllowDynamicProperties] class WP_Network { /** * Network ID. * - * @since 4.4.0 - * @since 4.6.0 Converted from public to private to explicitly enable more intuitive + * @since WP-4.4.0 + * @since WP-4.6.0 Converted from public to private to explicitly enable more intuitive * access via magic methods. As part of the access change, the type was * also changed from `string` to `int`. * @var int @@ -38,7 +37,7 @@ class WP_Network { /** * Domain of the network. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $domain = ''; @@ -46,7 +45,7 @@ class WP_Network { /** * Path of the network. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $path = ''; @@ -59,7 +58,7 @@ class WP_Network { * * A numeric string, for compatibility reasons. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ private $blog_id = '0'; @@ -67,7 +66,7 @@ class WP_Network { /** * Domain used to set cookies for this network. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $cookie_domain = ''; @@ -77,20 +76,20 @@ class WP_Network { * * Named "site" vs. "network" for legacy reasons. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $site_name = ''; /** - * Retrieves a network from the database by its ID. + * Retrieve a network from the database by its ID. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $network_id The ID of the network to retrieve. - * @return WP_Network|false The network's object if found. False if not. + * @return WP_Network|bool The network's object if found. False if not. */ public static function get_instance( $network_id ) { global $wpdb; @@ -102,30 +101,26 @@ public static function get_instance( $network_id ) { $_network = wp_cache_get( $network_id, 'networks' ); - if ( false === $_network ) { + if ( ! $_network ) { $_network = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->site} WHERE id = %d LIMIT 1", $network_id ) ); if ( empty( $_network ) || is_wp_error( $_network ) ) { - $_network = -1; + return false; } wp_cache_add( $network_id, $_network, 'networks' ); } - if ( is_numeric( $_network ) ) { - return false; - } - return new WP_Network( $_network ); } /** - * Creates a new WP_Network object. + * Create a new WP_Network object. * * Will populate object properties from the object provided and assign other * default properties based on that information. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param WP_Network|object $network A network object. */ @@ -143,7 +138,7 @@ public function __construct( $network ) { * * Allows current multisite naming conventions when getting properties. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $key Property to get. * @return mixed Value of the property. Null if not available. @@ -166,7 +161,7 @@ public function __get( $key ) { * * Allows current multisite naming conventions when checking for properties. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $key Property to check if set. * @return bool Whether the property is set. @@ -187,7 +182,7 @@ public function __isset( $key ) { * * Allows current multisite naming conventions while setting properties. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $key Property to set. * @param mixed $value Value to assign to the property. @@ -212,7 +207,7 @@ public function __set( $key, $value ) { * Internal method used by the magic getter for the 'blog_id' and 'site_id' * properties. * - * @since 4.9.0 + * @since WP-4.9.0 * * @return int The ID of the main site. */ @@ -222,7 +217,7 @@ private function get_main_site_id() { * * Returning a positive integer will effectively short-circuit the function. * - * @since 4.9.0 + * @since WP-4.9.0 * * @param int|null $main_site_id If a positive integer is returned, it is interpreted as the main site ID. * @param WP_Network $network The network object for which the main site was detected. @@ -236,15 +231,15 @@ private function get_main_site_id() { return (int) $this->blog_id; } - if ( ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) && DOMAIN_CURRENT_SITE === $this->domain && PATH_CURRENT_SITE === $this->path ) - || ( defined( 'SITE_ID_CURRENT_SITE' ) && SITE_ID_CURRENT_SITE == $this->id ) ) { + if ( ( defined( 'DOMAIN_CURRENT_SITE' ) && defined( 'PATH_CURRENT_SITE' ) && $this->domain === DOMAIN_CURRENT_SITE && $this->path === PATH_CURRENT_SITE ) + || ( defined( 'SITE_ID_CURRENT_SITE' ) && $this->id == SITE_ID_CURRENT_SITE ) ) { if ( defined( 'BLOG_ID_CURRENT_SITE' ) ) { $this->blog_id = (string) BLOG_ID_CURRENT_SITE; return (int) $this->blog_id; } - if ( defined( 'BLOGID_CURRENT_SITE' ) ) { // Deprecated. + if ( defined( 'BLOGID_CURRENT_SITE' ) ) { // deprecated. $this->blog_id = (string) BLOGID_CURRENT_SITE; return (int) $this->blog_id; @@ -255,8 +250,9 @@ private function get_main_site_id() { if ( $site->domain === $this->domain && $site->path === $this->path ) { $main_site_id = (int) $site->id; } else { + $cache_key = 'network:' . $this->id . ':main_site'; - $main_site_id = get_network_option( $this->id, 'main_site' ); + $main_site_id = wp_cache_get( $cache_key, 'site-options' ); if ( false === $main_site_id ) { $_sites = get_sites( array( @@ -269,7 +265,7 @@ private function get_main_site_id() { ); $main_site_id = ! empty( $_sites ) ? array_shift( $_sites ) : 0; - update_network_option( $this->id, 'main_site', $main_site_id ); + wp_cache_add( $cache_key, $main_site_id, 'site-options' ); } } @@ -279,9 +275,9 @@ private function get_main_site_id() { } /** - * Sets the site name assigned to the network if one has not been populated. + * Set the site name assigned to the network if one has not been populated. * - * @since 4.4.0 + * @since WP-4.4.0 */ private function _set_site_name() { if ( ! empty( $this->site_name ) ) { @@ -293,12 +289,12 @@ private function _set_site_name() { } /** - * Sets the cookie domain based on the network domain if one has + * Set the cookie domain based on the network domain if one has * not been populated. * * @todo What if the domain of the network doesn't match the current site? * - * @since 4.4.0 + * @since WP-4.4.0 */ private function _set_cookie_domain() { if ( ! empty( $this->cookie_domain ) ) { @@ -312,7 +308,7 @@ private function _set_cookie_domain() { } /** - * Retrieves the closest matching network for a domain and path. + * Retrieve the closest matching network for a domain and path. * * This will not necessarily return an exact match for a domain and path. Instead, it * breaks the domain and path into pieces that are then used to match the closest @@ -321,12 +317,13 @@ private function _set_cookie_domain() { * The intent of this method is to match a network during bootstrap for a * requested site address. * - * @since 4.4.0 + * @since WP-4.4.0 + * @static * * @param string $domain Domain to check. * @param string $path Path to check. * @param int|null $segments Path segments to use. Defaults to null, or the full path. - * @return WP_Network|false Network object if successful. False when no network is found. + * @return WP_Network|bool Network object if successful. False when no network is found. */ public static function get_by_path( $domain = '', $path = '', $segments = null ) { $domains = array( $domain ); @@ -353,13 +350,17 @@ public static function get_by_path( $domain = '', $path = '', $segments = null ) */ $using_paths = true; if ( wp_using_ext_object_cache() ) { - $using_paths = get_networks( - array( - 'number' => 1, - 'count' => true, - 'path__not_in' => '/', - ) - ); + $using_paths = wp_cache_get( 'networks_have_paths', 'site-options' ); + if ( false === $using_paths ) { + $using_paths = get_networks( + array( + 'number' => 1, + 'count' => true, + 'path__not_in' => '/', + ) + ); + wp_cache_add( 'networks_have_paths', $using_paths, 'site-options' ); + } } $paths = array(); @@ -369,9 +370,9 @@ public static function get_by_path( $domain = '', $path = '', $segments = null ) /** * Filters the number of path segments to consider when searching for a site. * - * @since 3.9.0 + * @since WP-3.9.0 * - * @param int|null $segments The number of path segments to consider. WordPress by default looks at + * @param int|null $segments The number of path segments to consider. ClassicPress by default looks at * one path segment. The function default of null only makes sense when you * know the requested path should match a network. * @param string $domain The requested domain. @@ -392,7 +393,7 @@ public static function get_by_path( $domain = '', $path = '', $segments = null ) } /** - * Determines a network by its domain and path. + * Determine a network by its domain and path. * * This allows one to short-circuit the default logic, perhaps by * replacing it with a routine that is more optimal for your setup. @@ -401,15 +402,14 @@ public static function get_by_path( $domain = '', $path = '', $segments = null ) * can be found at the requested domain and path. Otherwise, return * an object from wp_get_network(). * - * @since 3.9.0 + * @since WP-3.9.0 * - * @param null|false|WP_Network $network Network value to return by path. Default null - * to continue retrieving the network. - * @param string $domain The requested domain. - * @param string $path The requested path, in full. - * @param int|null $segments The suggested number of paths to consult. - * Default null, meaning the entire path was to be consulted. - * @param string[] $paths Array of paths to search for, based on `$path` and `$segments`. + * @param null|bool|object $network Network value to return by path. + * @param string $domain The requested domain. + * @param string $path The requested path, in full. + * @param int|null $segments The suggested number of paths to consult. + * Default null, meaning the entire path was to be consulted. + * @param array $paths The paths to search for, based on $path and $segments. */ $pre = apply_filters( 'pre_get_network_by_path', null, $domain, $path, $segments, $paths ); if ( null !== $pre ) { @@ -458,7 +458,7 @@ public static function get_by_path( $domain = '', $path = '', $segments = null ) break; } } - if ( '/' === $network->path ) { + if ( $network->path === '/' ) { $found = true; break; } diff --git a/wp-includes/class-wp-object-cache.php b/wp-includes/class-wp-object-cache.php index 9dcf358..0d33121 100644 --- a/wp-includes/class-wp-object-cache.php +++ b/wp-includes/class-wp-object-cache.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Cache - * @since 5.4.0 + * @since WP-5.4.0 */ /** @@ -19,15 +19,14 @@ * in the wp-content folder which is looked at in wp-settings. If that file * exists, then this file will not be included. * - * @since 2.0.0 + * @since WP-2.0.0 */ -#[AllowDynamicProperties] class WP_Object_Cache { /** * Holds the cached objects. * - * @since 2.0.0 + * @since WP-2.0.0 * @var array */ private $cache = array(); @@ -35,7 +34,7 @@ class WP_Object_Cache { /** * The amount of times the cache data was already stored in the cache. * - * @since 2.5.0 + * @since WP-2.5.0 * @var int */ public $cache_hits = 0; @@ -43,7 +42,7 @@ class WP_Object_Cache { /** * Amount of times the cache did not have the request in cache. * - * @since 2.0.0 + * @since WP-2.0.0 * @var int */ public $cache_misses = 0; @@ -51,15 +50,15 @@ class WP_Object_Cache { /** * List of global cache groups. * - * @since 3.0.0 - * @var string[] + * @since WP-3.0.0 + * @var array */ protected $global_groups = array(); /** * The blog prefix to prepend to keys in non-global groups. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ private $blog_prefix; @@ -67,7 +66,7 @@ class WP_Object_Cache { /** * Holds the value of is_multisite(). * - * @since 3.5.0 + * @since WP-3.5.0 * @var bool */ private $multisite; @@ -75,7 +74,7 @@ class WP_Object_Cache { /** * Sets up object properties; PHP 5 style constructor. * - * @since 2.0.8 + * @since WP-2.0.8 */ public function __construct() { $this->multisite = is_multisite(); @@ -85,7 +84,7 @@ public function __construct() { /** * Makes private properties readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to get. * @return mixed Property. @@ -97,7 +96,7 @@ public function __get( $name ) { /** * Makes private properties settable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to set. * @param mixed $value Property value. @@ -110,7 +109,7 @@ public function __set( $name, $value ) { /** * Makes private properties checkable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to check if set. * @return bool Whether the property is set. @@ -122,7 +121,7 @@ public function __isset( $name ) { /** * Makes private properties un-settable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to unset. */ @@ -130,60 +129,10 @@ public function __unset( $name ) { unset( $this->$name ); } - /** - * Serves as a utility function to determine whether a key is valid. - * - * @since 6.1.0 - * - * @param int|string $key Cache key to check for validity. - * @return bool Whether the key is valid. - */ - protected function is_valid_key( $key ) { - if ( is_int( $key ) ) { - return true; - } - - if ( is_string( $key ) && trim( $key ) !== '' ) { - return true; - } - - $type = gettype( $key ); - - if ( ! function_exists( '__' ) ) { - wp_load_translations_early(); - } - - $message = is_string( $key ) - ? __( 'Cache key must not be an empty string.' ) - /* translators: %s: The type of the given cache key. */ - : sprintf( __( 'Cache key must be integer or non-empty string, %s given.' ), $type ); - - _doing_it_wrong( - sprintf( '%s::%s', __CLASS__, debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, 2 )[1]['function'] ), - $message, - '6.1.0' - ); - - return false; - } - - /** - * Serves as a utility function to determine whether a key exists in the cache. - * - * @since 3.4.0 - * - * @param int|string $key Cache key to check for existence. - * @param string $group Cache group for the key existence check. - * @return bool Whether the key exists in the cache for the given group. - */ - protected function _exists( $key, $group ) { - return isset( $this->cache[ $group ] ) && ( isset( $this->cache[ $group ][ $key ] ) || array_key_exists( $key, $this->cache[ $group ] ) ); - } - /** * Adds data to the cache if it doesn't already exist. * - * @since 2.0.0 + * @since WP-2.0.0 * * @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 @@ -192,8 +141,7 @@ protected function _exists( $key, $group ) { * @param int|string $key What to call the contents in the cache. * @param mixed $data The contents to store in the cache. * @param string $group Optional. Where to group the cache contents. Default 'default'. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). + * @param int $expire Optional. When to expire the cache contents. Default 0 (no expiration). * @return bool True on success, false if cache key and group already exist. */ public function add( $key, $data, $group = 'default', $expire = 0 ) { @@ -201,10 +149,6 @@ public function add( $key, $data, $group = 'default', $expire = 0 ) { return false; } - if ( ! $this->is_valid_key( $key ) ) { - return false; - } - if ( empty( $group ) ) { $group = 'default'; } @@ -222,88 +166,70 @@ public function add( $key, $data, $group = 'default', $expire = 0 ) { } /** - * Adds multiple values to the cache in one call. + * Sets the list of global cache groups. * - * @since 6.0.0 + * @since WP-3.0.0 * - * @param array $data Array of keys and values to be added. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false if cache key and group already exist. + * @param array $groups List of groups that are global. */ - public function add_multiple( array $data, $group = '', $expire = 0 ) { - $values = array(); - - foreach ( $data as $key => $value ) { - $values[ $key ] = $this->add( $key, $value, $group, $expire ); - } + public function add_global_groups( $groups ) { + $groups = (array) $groups; - return $values; + $groups = array_fill_keys( $groups, true ); + $this->global_groups = array_merge( $this->global_groups, $groups ); } /** - * Replaces the contents in the cache, if contents already exist. - * - * @since 2.0.0 + * Decrements numeric cache item's value. * - * @see WP_Object_Cache::set() + * @since WP-3.3.0 * - * @param int|string $key What to call the contents in the cache. - * @param mixed $data The contents to store in the cache. - * @param string $group Optional. Where to group the cache contents. Default 'default'. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool True if contents were replaced, false if original value does not exist. + * @param int|string $key The cache key to decrement. + * @param int $offset Optional. The amount by which to decrement the item's value. Default 1. + * @param string $group Optional. The group the key is in. Default 'default'. + * @return int|false The item's new value on success, false on failure. */ - public function replace( $key, $data, $group = 'default', $expire = 0 ) { - if ( ! $this->is_valid_key( $key ) ) { - return false; - } - + public function decr( $key, $offset = 1, $group = 'default' ) { if ( empty( $group ) ) { $group = 'default'; } - $id = $key; if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) { - $id = $this->blog_prefix . $key; + $key = $this->blog_prefix . $key; } - if ( ! $this->_exists( $id, $group ) ) { + if ( ! $this->_exists( $key, $group ) ) { return false; } - return $this->set( $key, $data, $group, (int) $expire ); + if ( ! is_numeric( $this->cache[ $group ][ $key ] ) ) { + $this->cache[ $group ][ $key ] = 0; + } + + $offset = (int) $offset; + + $this->cache[ $group ][ $key ] -= $offset; + + if ( $this->cache[ $group ][ $key ] < 0 ) { + $this->cache[ $group ][ $key ] = 0; + } + + return $this->cache[ $group ][ $key ]; } /** - * Sets the data contents into the cache. - * - * The cache contents are grouped by the $group parameter followed by the - * $key. This allows for duplicate IDs in unique groups. Therefore, naming of - * the group should be used with care and should follow normal function - * naming guidelines outside of core WordPress usage. + * Removes the contents of the cache key in the group. * - * The $expire parameter is not used, because the cache will automatically - * expire for each time a page is accessed and PHP finishes. The method is - * more for cache plugins which use files. + * If the cache key does not exist in the group, then nothing will happen. * - * @since 2.0.0 - * @since 6.1.0 Returns false if cache key is invalid. + * @since WP-2.0.0 * - * @param int|string $key What to call the contents in the cache. - * @param mixed $data The contents to store in the cache. - * @param string $group Optional. Where to group the cache contents. Default 'default'. - * @param int $expire Optional. Not used. - * @return bool True if contents were set, false if key is invalid. + * @param int|string $key What the contents in the cache are called. + * @param string $group Optional. Where the cache contents are grouped. Default 'default'. + * @param bool $deprecated Optional. Unused. Default false. + * @return bool False if the contents weren't deleted and true on success. */ - public function set( $key, $data, $group = 'default', $expire = 0 ) { - if ( ! $this->is_valid_key( $key ) ) { - return false; - } - + public function delete( $key, $group = 'default', $deprecated = false ) { if ( empty( $group ) ) { $group = 'default'; } @@ -312,33 +238,25 @@ public function set( $key, $data, $group = 'default', $expire = 0 ) { $key = $this->blog_prefix . $key; } - if ( is_object( $data ) ) { - $data = clone $data; + if ( ! $this->_exists( $key, $group ) ) { + return false; } - $this->cache[ $group ][ $key ] = $data; + unset( $this->cache[ $group ][ $key ] ); return true; } /** - * Sets multiple values to the cache in one call. + * Clears the object cache of all data. * - * @since 6.0.0 + * @since WP-2.0.0 * - * @param array $data Array of key and value to be set. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @param int $expire Optional. When to expire the cache contents, in seconds. - * Default 0 (no expiration). - * @return bool[] Array of return values, grouped by key. Each value is always true. + * @return true Always returns true. */ - public function set_multiple( array $data, $group = '', $expire = 0 ) { - $values = array(); - - foreach ( $data as $key => $value ) { - $values[ $key ] = $this->set( $key, $value, $group, $expire ); - } + public function flush() { + $this->cache = array(); - return $values; + return true; } /** @@ -350,21 +268,17 @@ public function set_multiple( array $data, $group = '', $expire = 0 ) { * * On failure, the number of cache misses will be incremented. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param int|string $key The key under which the cache contents are stored. - * @param string $group Optional. Where the cache contents are grouped. Default 'default'. - * @param bool $force Optional. Unused. Whether to force an update of the local cache - * from the persistent cache. Default false. - * @param bool $found Optional. Whether the key was found in the cache (passed by reference). - * Disambiguates a return of false, a storable value. Default null. + * @param int|string $key What the contents in the cache are called. + * @param string $group Optional. Where the cache contents are grouped. Default 'default'. + * @param bool $force Optional. Unused. Whether to force a refetch rather than relying on the local + * cache. Default false. + * @param bool $found Optional. Whether the key was found in the cache (passed by reference). + * Disambiguates a return of false, a storable value. Default null. * @return mixed|false The cache contents on success, false on failure to retrieve contents. */ public function get( $key, $group = 'default', $force = false, &$found = null ) { - if ( ! $this->is_valid_key( $key ) ) { - return false; - } - if ( empty( $group ) ) { $group = 'default'; } @@ -389,16 +303,15 @@ public function get( $key, $group = 'default', $force = false, &$found = null ) } /** - * Retrieves multiple values from the cache in one call. + * Retrieves multiple values from the cache. + * + * @since WP-5.5.0 * - * @since 5.5.0 + * @param array $keys Array of keys to fetch. + * @param bool $force Optional. Unused. Whether to force a refetch rather than relying on the local + * cache. Default false. * - * @param array $keys Array of keys under which the cache contents are stored. - * @param string $group Optional. Where the cache contents are grouped. Default 'default'. - * @param bool $force Optional. Whether to force an update of the local cache - * from the persistent cache. Default false. - * @return array Array of return values, grouped by key. Each value is either - * the cache contents on success, or false on failure. + * @return array Array of values organized into groups. */ public function get_multiple( $keys, $group = 'default', $force = false ) { $values = array(); @@ -410,75 +323,17 @@ public function get_multiple( $keys, $group = 'default', $force = false ) { return $values; } - /** - * Removes the contents of the cache key in the group. - * - * If the cache key does not exist in the group, then nothing will happen. - * - * @since 2.0.0 - * - * @param int|string $key What the contents in the cache are called. - * @param string $group Optional. Where the cache contents are grouped. Default 'default'. - * @param bool $deprecated Optional. Unused. Default false. - * @return bool True on success, false if the contents were not deleted. - */ - public function delete( $key, $group = 'default', $deprecated = false ) { - if ( ! $this->is_valid_key( $key ) ) { - return false; - } - - if ( empty( $group ) ) { - $group = 'default'; - } - - if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) { - $key = $this->blog_prefix . $key; - } - - if ( ! $this->_exists( $key, $group ) ) { - return false; - } - - unset( $this->cache[ $group ][ $key ] ); - return true; - } - - /** - * Deletes multiple values from the cache in one call. - * - * @since 6.0.0 - * - * @param array $keys Array of keys to be deleted. - * @param string $group Optional. Where the cache contents are grouped. Default empty. - * @return bool[] Array of return values, grouped by key. Each value is either - * true on success, or false if the contents were not deleted. - */ - public function delete_multiple( array $keys, $group = '' ) { - $values = array(); - - foreach ( $keys as $key ) { - $values[ $key ] = $this->delete( $key, $group ); - } - - return $values; - } - /** * Increments numeric cache item's value. * - * @since 3.3.0 + * @since WP-3.3.0 * - * @param int|string $key The cache key to increment. - * @param int $offset Optional. The amount by which to increment the item's value. - * Default 1. + * @param int|string $key The cache key to increment + * @param int $offset Optional. The amount by which to increment the item's value. Default 1. * @param string $group Optional. The group the key is in. Default 'default'. * @return int|false The item's new value on success, false on failure. */ public function incr( $key, $offset = 1, $group = 'default' ) { - if ( ! $this->is_valid_key( $key ) ) { - return false; - } - if ( empty( $group ) ) { $group = 'default'; } @@ -507,87 +362,109 @@ public function incr( $key, $offset = 1, $group = 'default' ) { } /** - * Decrements numeric cache item's value. + * Replaces the contents in the cache, if contents already exist. * - * @since 3.3.0 + * @since WP-2.0.0 * - * @param int|string $key The cache key to decrement. - * @param int $offset Optional. The amount by which to decrement the item's value. - * Default 1. - * @param string $group Optional. The group the key is in. Default 'default'. - * @return int|false The item's new value on success, false on failure. + * @see WP_Object_Cache::set() + * + * @param int|string $key What to call the contents in the cache. + * @param mixed $data The contents to store in the cache. + * @param string $group Optional. Where to group the cache contents. Default 'default'. + * @param int $expire Optional. When to expire the cache contents. Default 0 (no expiration). + * @return bool False if not exists, true if contents were replaced. */ - public function decr( $key, $offset = 1, $group = 'default' ) { - if ( ! $this->is_valid_key( $key ) ) { - return false; - } - + public function replace( $key, $data, $group = 'default', $expire = 0 ) { if ( empty( $group ) ) { $group = 'default'; } + $id = $key; if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) { - $key = $this->blog_prefix . $key; + $id = $this->blog_prefix . $key; } - if ( ! $this->_exists( $key, $group ) ) { + if ( ! $this->_exists( $id, $group ) ) { return false; } - if ( ! is_numeric( $this->cache[ $group ][ $key ] ) ) { - $this->cache[ $group ][ $key ] = 0; - } - - $offset = (int) $offset; - - $this->cache[ $group ][ $key ] -= $offset; - - if ( $this->cache[ $group ][ $key ] < 0 ) { - $this->cache[ $group ][ $key ] = 0; - } - - return $this->cache[ $group ][ $key ]; + return $this->set( $key, $data, $group, (int) $expire ); } /** - * Clears the object cache of all data. + * Resets cache keys. * - * @since 2.0.0 + * @since WP-3.0.0 * - * @return true Always returns true. + * @deprecated 3.5.0 Use switch_to_blog() + * @see switch_to_blog() */ - public function flush() { - $this->cache = array(); + public function reset() { + _deprecated_function( __FUNCTION__, '3.5.0', 'switch_to_blog()' ); - return true; + // Clear out non-global caches since the blog ID has changed. + foreach ( array_keys( $this->cache ) as $group ) { + if ( ! isset( $this->global_groups[ $group ] ) ) { + unset( $this->cache[ $group ] ); + } + } } /** - * Removes all cache items in a group. + * Sets the data contents into the cache. * - * @since 6.1.0 + * The cache contents are grouped by the $group parameter followed by the + * $key. This allows for duplicate ids in unique groups. Therefore, naming of + * the group should be used with care and should follow normal function + * naming guidelines outside of core ClassicPress usage. * - * @param string $group Name of group to remove from cache. + * The $expire parameter is not used, because the cache will automatically + * expire for each time a page is accessed and PHP finishes. The method is + * more for cache plugins which use files. + * + * @since WP-2.0.0 + * + * @param int|string $key What to call the contents in the cache. + * @param mixed $data The contents to store in the cache. + * @param string $group Optional. Where to group the cache contents. Default 'default'. + * @param int $expire Not Used. * @return true Always returns true. */ - public function flush_group( $group ) { - unset( $this->cache[ $group ] ); + public function set( $key, $data, $group = 'default', $expire = 0 ) { + if ( empty( $group ) ) { + $group = 'default'; + } + if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) { + $key = $this->blog_prefix . $key; + } + + if ( is_object( $data ) ) { + $data = clone $data; + } + + $this->cache[ $group ][ $key ] = $data; return true; } /** - * Sets the list of global cache groups. + * Echoes the stats of the caching. * - * @since 3.0.0 + * Gives the cache hits, and cache misses. Also prints every cached group, + * key and the data. * - * @param string|string[] $groups List of groups that are global. + * @since WP-2.0.0 */ - public function add_global_groups( $groups ) { - $groups = (array) $groups; - - $groups = array_fill_keys( $groups, true ); - $this->global_groups = array_merge( $this->global_groups, $groups ); + public function stats() { + echo '<p>'; + echo "<strong>Cache Hits:</strong> {$this->cache_hits}<br />"; + echo "<strong>Cache Misses:</strong> {$this->cache_misses}<br />"; + echo '</p>'; + echo '<ul>'; + foreach ( $this->cache as $group => $cache ) { + echo "<li><strong>Group:</strong> $group - ( " . number_format( strlen( serialize( $cache ) ) / KB_IN_BYTES, 2 ) . 'k )</li>'; + } + echo '</ul>'; } /** @@ -595,7 +472,7 @@ public function add_global_groups( $groups ) { * * This changes the blog ID used to create keys in blog specific groups. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param int $blog_id Blog ID. */ @@ -605,41 +482,15 @@ public function switch_to_blog( $blog_id ) { } /** - * Resets cache keys. - * - * @since 3.0.0 - * - * @deprecated 3.5.0 Use WP_Object_Cache::switch_to_blog() - * @see switch_to_blog() - */ - public function reset() { - _deprecated_function( __FUNCTION__, '3.5.0', 'WP_Object_Cache::switch_to_blog()' ); - - // Clear out non-global caches since the blog ID has changed. - foreach ( array_keys( $this->cache ) as $group ) { - if ( ! isset( $this->global_groups[ $group ] ) ) { - unset( $this->cache[ $group ] ); - } - } - } - - /** - * Echoes the stats of the caching. + * Serves as a utility function to determine whether a key exists in the cache. * - * Gives the cache hits, and cache misses. Also prints every cached group, - * key and the data. + * @since WP-3.4.0 * - * @since 2.0.0 + * @param int|string $key Cache key to check for existence. + * @param string $group Cache group for the key existence check. + * @return bool Whether the key exists in the cache for the given group. */ - public function stats() { - echo '<p>'; - echo "<strong>Cache Hits:</strong> {$this->cache_hits}<br>"; - echo "<strong>Cache Misses:</strong> {$this->cache_misses}<br>"; - echo '</p>'; - echo '<ul>'; - foreach ( $this->cache as $group => $cache ) { - echo '<li><strong>Group:</strong> ' . esc_html( $group ) . ' - ( ' . number_format( strlen( serialize( $cache ) ) / KB_IN_BYTES, 2 ) . 'k )</li>'; - } - echo '</ul>'; + protected function _exists( $key, $group ) { + return isset( $this->cache[ $group ] ) && ( isset( $this->cache[ $group ][ $key ] ) || array_key_exists( $key, $this->cache[ $group ] ) ); } } diff --git a/wp-includes/class-wp-oembed-controller.php b/wp-includes/class-wp-oembed-controller.php index 35a01b8..3219c85 100644 --- a/wp-includes/class-wp-oembed-controller.php +++ b/wp-includes/class-wp-oembed-controller.php @@ -4,29 +4,28 @@ * * @package ClassicPress * @subpackage Embeds - * @since 4.4.0 + * @since WP-4.4.0 */ /** * oEmbed API endpoint controller. * - * Registers the REST API route and delivers the response data. + * Registers the API route and delivers the response data. * The output format (XML or JSON) is handled by the REST API. * - * @since 4.4.0 + * @since WP-4.4.0 */ -#[AllowDynamicProperties] final class WP_oEmbed_Controller { /** * Register the oEmbed REST API route. * - * @since 4.4.0 + * @since WP-4.4.0 */ public function register_routes() { /** * Filters the maxwidth oEmbed parameter. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $maxwidth Maximum allowed width. Default 600. */ @@ -42,10 +41,9 @@ public function register_routes() { 'permission_callback' => '__return_true', 'args' => array( 'url' => array( - 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), - 'required' => true, - 'type' => 'string', - 'format' => 'uri', + 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), + 'required' => true, + 'sanitize_callback' => 'esc_url_raw', ), 'format' => array( 'default' => 'json', @@ -70,10 +68,10 @@ public function register_routes() { 'permission_callback' => array( $this, 'get_proxy_item_permissions_check' ), 'args' => array( 'url' => array( - 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), - 'required' => true, - 'type' => 'string', - 'format' => 'uri', + 'description' => __( 'The URL of the resource for which to fetch oEmbed data.' ), + 'type' => 'string', + 'required' => true, + 'sanitize_callback' => 'esc_url_raw', ), 'format' => array( 'description' => __( 'The oEmbed format to use.' ), @@ -96,7 +94,7 @@ public function register_routes() { 'sanitize_callback' => 'absint', ), 'discover' => array( - 'description' => __( 'Whether to perform an oEmbed discovery request for unsanctioned providers.' ), + 'description' => __( 'Whether to perform an oEmbed discovery request for non-whitelisted providers.' ), 'type' => 'boolean', 'default' => true, ), @@ -111,10 +109,10 @@ public function register_routes() { * * Returns the JSON object for the post. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param WP_REST_Request $request Full data about the request. - * @return array|WP_Error oEmbed response data or WP_Error on failure. + * @return WP_Error|array oEmbed response data or WP_Error on failure. */ public function get_item( $request ) { $post_id = url_to_postid( $request['url'] ); @@ -122,7 +120,7 @@ public function get_item( $request ) { /** * Filters the determined post ID. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $post_id The post ID. * @param string $url The requested URL. @@ -141,7 +139,7 @@ public function get_item( $request ) { /** * Checks if current user can make a proxy oEmbed request. * - * @since 4.8.0 + * @since WP-4.8.0 * * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ @@ -157,18 +155,13 @@ public function get_proxy_item_permissions_check() { * * Returns the JSON object for the proxied item. * - * @since 4.8.0 + * @since WP-4.8.0 * * @see WP_oEmbed::get_html() - * @global WP_Embed $wp_embed - * @global WP_Scripts $wp_scripts - * * @param WP_REST_Request $request Full data about the request. * @return object|WP_Error oEmbed response data or WP_Error on failure. */ public function get_proxy_item( $request ) { - global $wp_embed, $wp_scripts; - $args = $request->get_params(); // Serve oEmbed data from cache if set. @@ -190,35 +183,9 @@ public function get_proxy_item( $request ) { $args['height'] = $args['maxheight']; } - // Short-circuit process for URLs belonging to the current site. - $data = get_oembed_response_data_for_url( $url, $args ); - - if ( $data ) { - return $data; - } - $data = _wp_oembed_get_object()->get_data( $url, $args ); if ( false === $data ) { - // Try using a classic embed, instead. - /* @var WP_Embed $wp_embed */ - $html = $wp_embed->get_embed_handler_html( $args, $url ); - - if ( $html ) { - // Check if any scripts were enqueued by the shortcode, and include them in the response. - $enqueued_scripts = array(); - - foreach ( $wp_scripts->queue as $script ) { - $enqueued_scripts[] = $wp_scripts->registered[ $script ]->src; - } - - return (object) array( - 'provider_name' => __( 'Embed Handler' ), - 'html' => $html, - 'scripts' => $enqueued_scripts, - ); - } - return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) ); } @@ -231,7 +198,7 @@ public function get_proxy_item( $request ) { * Similar to the {@see 'oembed_ttl'} filter, but for the REST API * oEmbed proxy endpoint. * - * @since 4.8.0 + * @since WP-4.8.0 * * @param int $time Time to live (in seconds). * @param string $url The attempted embed URL. diff --git a/wp-includes/class-wp-oembed.php b/wp-includes/class-wp-oembed.php index add3c64..2f860db 100644 --- a/wp-includes/class-wp-oembed.php +++ b/wp-includes/class-wp-oembed.php @@ -4,8 +4,8 @@ * * Used internally by the WP_Embed class, but is designed to be generic. * - * @link https://wordpress.org/support/article/embeds/ - * @link http://oembed.com/ + * @link https://codex.wordpress.org/oEmbed oEmbed Codex Article + * @link http://oembed.com/ oEmbed Homepage * * @package ClassicPress * @subpackage oEmbed @@ -14,15 +14,14 @@ /** * Core class used to implement oEmbed functionality. * - * @since 2.9.0 + * @since WP-2.9.0 */ -#[AllowDynamicProperties] class WP_oEmbed { /** * A list of oEmbed providers. * - * @since 2.9.0 + * @since WP-2.9.0 * @var array */ public $providers = array(); @@ -30,7 +29,7 @@ class WP_oEmbed { /** * A list of an early oEmbed providers. * - * @since 4.0.0 + * @since WP-4.0.0 * @var array */ public static $early_providers = array(); @@ -38,7 +37,7 @@ class WP_oEmbed { /** * A list of private/protected methods, used for backward compatibility. * - * @since 4.2.0 + * @since WP-4.2.0 * @var array */ private $compat_methods = array( '_fetch_with_format', '_parse_json', '_parse_xml', '_parse_xml_body' ); @@ -46,15 +45,13 @@ class WP_oEmbed { /** * Constructor. * - * @since 2.9.0 + * @since WP-2.9.0 */ public function __construct() { $host = urlencode( home_url() ); $providers = array( '#https?://((m|www)\.)?youtube\.com/watch.*#i' => array( 'https://www.youtube.com/oembed', true ), '#https?://((m|www)\.)?youtube\.com/playlist.*#i' => array( 'https://www.youtube.com/oembed', true ), - '#https?://((m|www)\.)?youtube\.com/shorts/*#i' => array( 'https://www.youtube.com/oembed', true ), - '#https?://((m|www)\.)?youtube\.com/live/*#i' => array( 'https://www.youtube.com/oembed', true ), '#https?://youtu\.be/.*#i' => array( 'https://www.youtube.com/oembed', true ), '#https?://(.+\.)?vimeo\.com/.*#i' => array( 'https://vimeo.com/api/oembed.{format}', true ), '#https?://(www\.)?dailymotion\.com/.*#i' => array( 'https://www.dailymotion.com/services/oembed', true ), @@ -64,7 +61,6 @@ public function __construct() { '#https?://(.+\.)?smugmug\.com/.*#i' => array( 'https://api.smugmug.com/services/oembed/', true ), '#https?://(www\.)?scribd\.com/(doc|document)/.*#i' => array( 'https://www.scribd.com/services/oembed', true ), '#https?://wordpress\.tv/.*#i' => array( 'https://wordpress.tv/oembed/', true ), - '#https?://(.+\.)?crowdsignal\.net/.*#i' => array( 'https://api.crowdsignal.com/oembed', true ), '#https?://(.+\.)?polldaddy\.com/.*#i' => array( 'https://api.crowdsignal.com/oembed', true ), '#https?://poll\.fm/.*#i' => array( 'https://api.crowdsignal.com/oembed', true ), '#https?://(.+\.)?survey\.fm/.*#i' => array( 'https://api.crowdsignal.com/oembed', true ), @@ -78,11 +74,12 @@ public function __construct() { '#https?://(.+?\.)?slideshare\.net/.*#i' => array( 'https://www.slideshare.net/api/oembed/2', true ), '#https?://(open|play)\.spotify\.com/.*#i' => array( 'https://embed.spotify.com/oembed/', true ), '#https?://(.+\.)?imgur\.com/.*#i' => array( 'https://api.imgur.com/oembed', true ), + '#https?://(www\.)?meetu(\.ps|p\.com)/.*#i' => array( 'https://api.meetup.com/oembed', true ), '#https?://(www\.)?issuu\.com/.+/docs/.+#i' => array( 'https://issuu.com/oembed_wp', true ), - '#https?://(www\.)?mixcloud\.com/.*#i' => array( 'https://app.mixcloud.com/oembed/', true ), + '#https?://(www\.)?mixcloud\.com/.*#i' => array( 'https://www.mixcloud.com/oembed', true ), '#https?://(www\.|embed\.)?ted\.com/talks/.*#i' => array( 'https://www.ted.com/services/v1/oembed.{format}', true ), '#https?://(www\.)?(animoto|video214)\.com/play/.*#i' => array( 'https://animoto.com/oembeds/create', true ), - '#https?://(.+)\.tumblr\.com/.*#i' => array( 'https://www.tumblr.com/oembed/1.0', true ), + '#https?://(.+)\.tumblr\.com/post/.*#i' => array( 'https://www.tumblr.com/oembed/1.0', true ), '#https?://(www\.)?kickstarter\.com/projects/.*#i' => array( 'https://www.kickstarter.com/services/oembed', true ), '#https?://kck\.st/.*#i' => array( 'https://www.kickstarter.com/services/oembed', true ), '#https?://cloudup\.com/.*#i' => array( 'https://cloudup.com/oembed', true ), @@ -105,9 +102,6 @@ public function __construct() { '#https?://www\.someecards\.com/usercards/viewcard/.+#i' => array( 'https://www.someecards.com/v2/oembed/', true ), '#https?://some\.ly\/.+#i' => array( 'https://www.someecards.com/v2/oembed/', true ), '#https?://(www\.)?tiktok\.com/.*/video/.*#i' => array( 'https://www.tiktok.com/oembed', true ), - '#https?://([a-z]{2}|www)\.pinterest\.com(\.(au|mx))?/.*#i' => array( 'https://www.pinterest.com/oembed.json', true ), - '#https?://(www\.)?wolframcloud\.com/obj/.+#i' => array( 'https://www.wolframcloud.com/oembed', true ), - '#https?://pca\.st/.+#i' => array( 'https://pca.st/oembed.json', true ), ); if ( ! empty( self::$early_providers['add'] ) ) { @@ -125,18 +119,19 @@ public function __construct() { self::$early_providers = array(); /** - * Filters the list of sanctioned oEmbed providers. + * Filters the list of whitelisted oEmbed providers. * - * Since WordPress 4.4, oEmbed discovery is enabled for all users and allows embedding of sanitized - * iframes. The providers in this list are sanctioned, meaning they are trusted and allowed to + * since WordPress 4.4, oEmbed discovery is enabled for all users and allows embedding of sanitized + * iframes. The providers in this list are whitelisted, meaning they are trusted and allowed to * embed any content, such as iframes, videos, JavaScript, and arbitrary HTML. * * Supported providers: * - * | Provider | Flavor | Since | + * | Provider | Flavor | since WP- | * | ------------ | ----------------------------------------- | ------- | * | Dailymotion | dailymotion.com | 2.9.0 | * | Flickr | flickr.com | 2.9.0 | + * | Hulu | hulu.com | 2.9.0 | * | Scribd | scribd.com | 2.9.0 | * | Vimeo | vimeo.com | 2.9.0 | * | WordPress.tv | wordpress.tv | 2.9.0 | @@ -145,14 +140,19 @@ public function __construct() { * | SmugMug | smugmug.com | 3.0.0 | * | YouTube | youtu.be | 3.0.0 | * | Twitter | twitter.com | 3.4.0 | + * | Instagram | instagram.com | 3.5.0 | + * | Instagram | instagr.am | 3.5.0 | * | Slideshare | slideshare.net | 3.5.0 | * | SoundCloud | soundcloud.com | 3.5.0 | * | Dailymotion | dai.ly | 3.6.0 | * | Flickr | flic.kr | 3.6.0 | * | Spotify | spotify.com | 3.6.0 | * | Imgur | imgur.com | 3.9.0 | + * | Meetup.com | meetup.com | 3.9.0 | + * | Meetup.com | meetu.ps | 3.9.0 | * | Animoto | animoto.com | 4.0.0 | * | Animoto | video214.com | 4.0.0 | + * | CollegeHumor | collegehumor.com | 4.0.0 | * | Issuu | issuu.com | 4.0.0 | * | Mixcloud | mixcloud.com | 4.0.0 | * | Crowdsignal | poll.fm | 4.0.0 | @@ -168,6 +168,7 @@ public function __construct() { * | Speaker Deck | speakerdeck.com | 4.4.0 | * | Twitter | twitter.com/timelines | 4.5.0 | * | Twitter | twitter.com/moments | 4.5.0 | + * | Facebook | facebook.com | 4.7.0 | * | Twitter | twitter.com/user | 4.7.0 | * | Twitter | twitter.com/likes | 4.7.0 | * | Twitter | twitter.com/lists | 4.7.0 | @@ -182,15 +183,12 @@ public function __construct() { * | Someecards | someecards.com | 4.9.0 | * | Someecards | some.ly | 4.9.0 | * | Crowdsignal | survey.fm | 5.1.0 | - * | TikTok | tiktok.com | 5.4.0 | - * | Pinterest | pinterest.com | 5.9.0 | - * | WolframCloud | wolframcloud.com | 5.9.0 | - * | Pocket Casts | pocketcasts.com | 6.1.0 | - * | Crowdsignal | crowdsignal.net | 6.2.0 | + * | Instagram TV | instagram.com | 5.1.0 | + * | Instagram TV | instagr.am | 5.1.0 | * * No longer supported providers: * - * | Provider | Flavor | Since | Removed | + * | Provider | Flavor | since WP- | Removed | * | ------------ | -------------------- | --------- | --------- | * | Qik | qik.com | 2.9.0 | 3.9.0 | * | Viddler | viddler.com | 2.9.0 | 4.0.0 | @@ -205,15 +203,11 @@ public function __construct() { * | Hulu | hulu.com | 2.9.0 | 5.5.0 | * | Instagram | instagram.com | 3.5.0 | 5.5.2 | * | Instagram | instagr.am | 3.5.0 | 5.5.2 | - * | Instagram TV | instagram.com | 5.1.0 | 5.5.2 | - * | Instagram TV | instagr.am | 5.1.0 | 5.5.2 | * | Facebook | facebook.com | 4.7.0 | 5.5.2 | - * | Meetup.com | meetup.com | 3.9.0 | 6.0.1 | - * | Meetup.com | meetu.ps | 3.9.0 | 6.0.1 | * * @see wp_oembed_add_provider() * - * @since 2.9.0 + * @since WP-2.9.0 * * @param array[] $providers An array of arrays containing data about popular oEmbed providers. */ @@ -226,15 +220,15 @@ public function __construct() { /** * Exposes private/protected methods for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $name Method to call. - * @param array $arguments Arguments to pass when calling. - * @return mixed|false Return value of the callback, false otherwise. + * @param string $name Method to call. + * @param array $arguments Arguments to pass when calling. + * @return mixed|bool Return value of the callback, false otherwise. */ public function __call( $name, $arguments ) { if ( in_array( $name, $this->compat_methods, true ) ) { - return $this->$name( ...$arguments ); + return call_user_func_array( array( $this, $name ), $arguments ); } return false; } @@ -242,19 +236,13 @@ public function __call( $name, $arguments ) { /** * Takes a URL and returns the corresponding oEmbed provider's URL, if there is one. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see WP_oEmbed::discover() * - * @param string $url The URL to the content. - * @param string|array $args { - * Optional. Additional provider arguments. Default empty. - * - * @type bool $discover Optional. Determines whether to attempt to discover link tags - * at the given URL for an oEmbed provider when the provider URL - * is not found in the built-in providers list. Default true. - * } - * @return string|false The oEmbed provider URL on success, false on failure. + * @param string $url The URL to the content. + * @param string|array $args Optional provider arguments. + * @return false|string False on failure, otherwise the oEmbed provider URL. */ public function get_provider( $url, $args = '' ) { $args = wp_parse_args( $args ); @@ -268,14 +256,14 @@ public function get_provider( $url, $args = '' ) { foreach ( $this->providers as $matchmask => $data ) { list( $providerurl, $regex ) = $data; - // Turn the asterisk-type provider URLs into regex. + // Turn the asterisk-type provider URLs into regex if ( ! $regex ) { $matchmask = '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $matchmask ), '#' ) ) . '#i'; $matchmask = preg_replace( '|^#http\\\://|', '#https?\://', $matchmask ); } if ( preg_match( $matchmask, $url ) ) { - $provider = str_replace( '{format}', 'json', $providerurl ); // JSON is easier to deal with than XML. + $provider = str_replace( '{format}', 'json', $providerurl ); // JSON is easier to deal with than XML break; } } @@ -295,7 +283,7 @@ public function get_provider( $url, $args = '' ) { * * The just-in-time addition is for the benefit of the {@see 'oembed_providers'} filter. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see wp_oembed_add_provider() * @@ -321,7 +309,7 @@ public static function _add_provider_early( $format, $provider, $regex = false ) * * The just-in-time removal is for the benefit of the {@see 'oembed_providers'} filter. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see wp_oembed_remove_provider() * @@ -341,12 +329,11 @@ public static function _remove_provider_early( $format ) { * * @see WP_oEmbed::fetch() * - * @since 4.8.0 + * @since WP-4.8.0 * * @param string $url The URL to the content that should be attempted to be embedded. - * @param string|array $args Optional. Additional arguments for retrieving embed HTML. - * See wp_oembed_get() for accepted arguments. Default empty. - * @return object|false The result in the form of an object on success, false on failure. + * @param array|string $args Optional. Arguments, usually passed from a shortcode. Default empty. + * @return false|object False on failure, otherwise the result in the form of an object. */ public function get_data( $url, $args = '' ) { $args = wp_parse_args( $args ); @@ -372,13 +359,11 @@ public function get_data( $url, $args = '' ) { * @see WP_oEmbed::fetch() * @see WP_oEmbed::data2html() * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string $url The URL to the content that should be attempted to be embedded. - * @param string|array $args Optional. Additional arguments for retrieving embed HTML. - * See wp_oembed_get() for accepted arguments. Default empty. - * @return string|false The UNSANITIZED (and potentially unsafe) HTML that should be used to embed - * on success, false on failure. + * @param array|string $args Optional. Arguments, usually passed from a shortcode. Default empty. + * @return false|string False on failure, otherwise the UNSANITIZED (and potentially unsafe) HTML that should be used to embed. */ public function get_html( $url, $args = '' ) { /** @@ -387,16 +372,14 @@ public function get_html( $url, $args = '' ) { * This allows one to short-circuit the default logic, perhaps by * replacing it with a routine that is more optimal for your setup. * - * Returning a non-null value from the filter will effectively short-circuit retrieval - * and return the passed value instead. + * Passing a non-null value to the filter will effectively short-circuit retrieval, + * returning the passed value instead. * - * @since 4.5.3 + * @since WP-4.5.3 * - * @param null|string $result The UNSANITIZED (and potentially unsafe) HTML that should be used to embed. - * Default null to continue retrieving the result. - * @param string $url The URL to the content that should be attempted to be embedded. - * @param string|array $args Optional. Additional arguments for retrieving embed HTML. - * See wp_oembed_get() for accepted arguments. Default empty. + * @param null|string $result The UNSANITIZED (and potentially unsafe) HTML that should be used to embed. Default null. + * @param string $url The URL to the content that should be attempted to be embedded. + * @param array $args Optional. Arguments, usually passed from a shortcode. Default empty. */ $pre = apply_filters( 'pre_oembed_result', null, $url, $args ); @@ -413,12 +396,11 @@ public function get_html( $url, $args = '' ) { /** * Filters the HTML returned by the oEmbed provider. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string|false $data The returned oEmbed HTML (false if unsafe). * @param string $url URL of the content to be embedded. - * @param string|array $args Optional. Additional arguments for retrieving embed HTML. - * See wp_oembed_get() for accepted arguments. Default empty. + * @param array $args Optional arguments, usually passed from a shortcode. */ return apply_filters( 'oembed_result', $this->data2html( $data, $url ), $url, $args ); } @@ -426,10 +408,10 @@ public function get_html( $url, $args = '' ) { /** * Attempts to discover link tags at the given URL for an oEmbed provider. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string $url The URL that should be inspected for discovery `<link>` tags. - * @return string|false The oEmbed provider URL on success, false on failure. + * @return false|string False on failure, otherwise the oEmbed provider URL. */ public function discover( $url ) { $providers = array(); @@ -440,7 +422,7 @@ public function discover( $url ) { /** * Filters oEmbed remote get arguments. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see WP_Http::request() * @@ -449,7 +431,7 @@ public function discover( $url ) { */ $args = apply_filters( 'oembed_remote_get_args', $args, $url ); - // Fetch URL content. + // Fetch URL content $request = wp_safe_remote_get( $url, $args ); $html = wp_remote_retrieve_body( $request ); if ( $html ) { @@ -457,7 +439,7 @@ public function discover( $url ) { /** * Filters the link types that contain oEmbed provider URLs. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string[] $format Array of oEmbed link types. Accepts 'application/json+oembed', * 'text/xml+oembed', and 'application/xml+oembed' (incorrect, @@ -472,13 +454,13 @@ public function discover( $url ) { ) ); - // Strip <body>. + // Strip <body> $html_head_end = stripos( $html, '</head>' ); if ( $html_head_end ) { $html = substr( $html, 0, $html_head_end ); } - // Do a quick check. + // Do a quick check $tagfound = false; foreach ( $linktypes as $linktype => $format ) { if ( stripos( $html, $linktype ) ) { @@ -503,7 +485,7 @@ public function discover( $url ) { } } - // JSON is preferred to XML. + // JSON is preferred to XML if ( ! empty( $providers['json'] ) ) { return $providers['json']; } elseif ( ! empty( $providers['xml'] ) ) { @@ -516,13 +498,12 @@ public function discover( $url ) { /** * Connects to a oEmbed provider and returns the result. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string $provider The URL to the oEmbed provider. * @param string $url The URL to the content that is desired to be embedded. - * @param string|array $args Optional. Additional arguments for retrieving embed HTML. - * See wp_oembed_get() for accepted arguments. Default empty. - * @return object|false The result in the form of an object on success, false on failure. + * @param array|string $args Optional. Arguments, usually passed from a shortcode. Default empty. + * @return false|object False on failure, otherwise the result in the form of an object. */ public function fetch( $provider, $url, $args = '' ) { $args = wp_parse_args( $args, wp_embed_defaults( $url ) ); @@ -535,13 +516,12 @@ public function fetch( $provider, $url, $args = '' ) { /** * Filters the oEmbed URL to be fetched. * - * @since 2.9.0 - * @since 4.9.0 The `dnt` (Do Not Track) query parameter was added to all oEmbed provider URLs. + * @since WP-2.9.0 + * @since WP-4.9.0 The `dnt` (Do Not Track) query parameter was added to all oEmbed provider URLs. * * @param string $provider URL of the oEmbed provider. * @param string $url URL of the content to be embedded. - * @param array $args Optional. Additional arguments for retrieving embed HTML. - * See wp_oembed_get() for accepted arguments. Default empty. + * @param array $args Optional arguments, usually passed from a shortcode. */ $provider = apply_filters( 'oembed_fetch_url', $provider, $url, $args ); @@ -558,11 +538,11 @@ public function fetch( $provider, $url, $args = '' ) { /** * Fetches result from an oEmbed provider for a specific format and complete provider URL * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $provider_url_with_args URL to the provider with full arguments list (url, maxheight, etc.) - * @param string $format Format to use. - * @return object|false|WP_Error The result in the form of an object on success, false on failure. + * @param string $format Format to use + * @return false|object|WP_Error False on failure, otherwise the result in the form of an object. */ private function _fetch_with_format( $provider_url_with_args, $format ) { $provider_url_with_args = add_query_arg( 'format', $format, $provider_url_with_args ); @@ -585,7 +565,7 @@ private function _fetch_with_format( $provider_url_with_args, $format ) { /** * Parses a json response body. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $response_body * @return object|false @@ -598,7 +578,7 @@ private function _parse_json( $response_body ) { /** * Parses an XML response body. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $response_body * @return object|false @@ -608,23 +588,13 @@ private function _parse_xml( $response_body ) { return false; } - if ( PHP_VERSION_ID < 80000 ) { - // This function has been deprecated in PHP 8.0 because in libxml 2.9.0, external entity loading - // is disabled by default, so this function is no longer needed to protect against XXE attacks. - // phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.libxml_disable_entity_loaderDeprecated - $loader = libxml_disable_entity_loader( true ); - } - + $loader = libxml_disable_entity_loader( true ); $errors = libxml_use_internal_errors( true ); $return = $this->_parse_xml_body( $response_body ); libxml_use_internal_errors( $errors ); - - if ( PHP_VERSION_ID < 80000 && isset( $loader ) ) { - // phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.libxml_disable_entity_loaderDeprecated - libxml_disable_entity_loader( $loader ); - } + libxml_disable_entity_loader( $loader ); return $return; } @@ -632,7 +602,7 @@ private function _parse_xml( $response_body ) { /** * Serves as a helper function for parsing an XML response body. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param string $response_body * @return stdClass|false @@ -642,7 +612,7 @@ private function _parse_xml_body( $response_body ) { return false; } - $dom = new DOMDocument(); + $dom = new DOMDocument; $success = $dom->loadXML( $response_body ); if ( ! $success ) { return false; @@ -663,7 +633,7 @@ private function _parse_xml_body( $response_body ) { return false; } - $return = new stdClass(); + $return = new stdClass; foreach ( $xml as $key => $value ) { $return->$key = (string) $value; } @@ -674,11 +644,11 @@ private function _parse_xml_body( $response_body ) { /** * Converts a data object from WP_oEmbed::fetch() and returns the HTML. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param object $data A data object result from an oEmbed provider. - * @param string $url The URL to the content that is desired to be embedded. - * @return string|false The HTML needed to embed on success, false on failure. + * @param string $url The URL to the content that is desired to be embedded. + * @return false|string False on error, otherwise the HTML needed to embed. */ public function data2html( $data, $url ) { if ( ! is_object( $data ) || empty( $data->type ) ) { @@ -697,7 +667,7 @@ public function data2html( $data, $url ) { } $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>'; + $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': @@ -722,7 +692,7 @@ public function data2html( $data, $url ) { * * Use this filter to add support for custom data types, or to filter the result. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string $return The returned oEmbed HTML. * @param object $data A data object result from an oEmbed provider. @@ -734,8 +704,8 @@ public function data2html( $data, $url ) { /** * Strips any new lines from the HTML. * - * @since 2.9.0 as strip_scribd_newlines() - * @since 3.0.0 + * @since WP-2.9.0 as strip_scribd_newlines() + * @since WP-3.0.0 * * @param string $html Existing HTML. * @param object $data Data object from WP_oEmbed::data2html() diff --git a/wp-includes/class-wp-paused-extensions-storage.php b/wp-includes/class-wp-paused-extensions-storage.php deleted file mode 100644 index 197c110..0000000 --- a/wp-includes/class-wp-paused-extensions-storage.php +++ /dev/null @@ -1,226 +0,0 @@ -<?php -/** - * Error Protection API: WP_Paused_Extensions_Storage class - * - * @package ClassicPress - * @since 5.2.0 - */ - -/** - * Core class used for storing paused extensions. - * - * @since 5.2.0 - */ -#[AllowDynamicProperties] -class WP_Paused_Extensions_Storage { - - /** - * Type of extension. Used to key extension storage. - * - * @since 5.2.0 - * @var string - */ - protected $type; - - /** - * Constructor. - * - * @since 5.2.0 - * - * @param string $extension_type Extension type. Either 'plugin' or 'theme'. - */ - public function __construct( $extension_type ) { - $this->type = $extension_type; - } - - /** - * Records an extension error. - * - * Only one error is stored per extension, with subsequent errors for the same extension overriding the - * previously stored error. - * - * @since 5.2.0 - * - * @param string $extension Plugin or theme directory name. - * @param array $error { - * Error information returned by `error_get_last()`. - * - * @type int $type The error type. - * @type string $file The name of the file in which the error occurred. - * @type int $line The line number in which the error occurred. - * @type string $message The error message. - * } - * @return bool True on success, false on failure. - */ - public function set( $extension, $error ) { - if ( ! $this->is_api_loaded() ) { - return false; - } - - $option_name = $this->get_option_name(); - - if ( ! $option_name ) { - return false; - } - - $paused_extensions = (array) get_option( $option_name, array() ); - - // Do not update if the error is already stored. - if ( isset( $paused_extensions[ $this->type ][ $extension ] ) && $paused_extensions[ $this->type ][ $extension ] === $error ) { - return true; - } - - $paused_extensions[ $this->type ][ $extension ] = $error; - - return update_option( $option_name, $paused_extensions ); - } - - /** - * Forgets a previously recorded extension error. - * - * @since 5.2.0 - * - * @param string $extension Plugin or theme directory name. - * @return bool True on success, false on failure. - */ - public function delete( $extension ) { - if ( ! $this->is_api_loaded() ) { - return false; - } - - $option_name = $this->get_option_name(); - - if ( ! $option_name ) { - return false; - } - - $paused_extensions = (array) get_option( $option_name, array() ); - - // Do not delete if no error is stored. - if ( ! isset( $paused_extensions[ $this->type ][ $extension ] ) ) { - return true; - } - - unset( $paused_extensions[ $this->type ][ $extension ] ); - - if ( empty( $paused_extensions[ $this->type ] ) ) { - unset( $paused_extensions[ $this->type ] ); - } - - // Clean up the entire option if we're removing the only error. - if ( ! $paused_extensions ) { - return delete_option( $option_name ); - } - - return update_option( $option_name, $paused_extensions ); - } - - /** - * Gets the error for an extension, if paused. - * - * @since 5.2.0 - * - * @param string $extension Plugin or theme directory name. - * @return array|null Error that is stored, or null if the extension is not paused. - */ - public function get( $extension ) { - if ( ! $this->is_api_loaded() ) { - return null; - } - - $paused_extensions = $this->get_all(); - - if ( ! isset( $paused_extensions[ $extension ] ) ) { - return null; - } - - return $paused_extensions[ $extension ]; - } - - /** - * Gets the paused extensions with their errors. - * - * @since 5.2.0 - * - * @return array { - * Associative array of errors keyed by extension slug. - * - * @type array ...$0 Error information returned by `error_get_last()`. - * } - */ - public function get_all() { - if ( ! $this->is_api_loaded() ) { - return array(); - } - - $option_name = $this->get_option_name(); - - if ( ! $option_name ) { - return array(); - } - - $paused_extensions = (array) get_option( $option_name, array() ); - - return isset( $paused_extensions[ $this->type ] ) ? $paused_extensions[ $this->type ] : array(); - } - - /** - * Remove all paused extensions. - * - * @since 5.2.0 - * - * @return bool - */ - public function delete_all() { - if ( ! $this->is_api_loaded() ) { - return false; - } - - $option_name = $this->get_option_name(); - - if ( ! $option_name ) { - return false; - } - - $paused_extensions = (array) get_option( $option_name, array() ); - - unset( $paused_extensions[ $this->type ] ); - - if ( ! $paused_extensions ) { - return delete_option( $option_name ); - } - - return update_option( $option_name, $paused_extensions ); - } - - /** - * Checks whether the underlying API to store paused extensions is loaded. - * - * @since 5.2.0 - * - * @return bool True if the API is loaded, false otherwise. - */ - protected function is_api_loaded() { - return function_exists( 'get_option' ); - } - - /** - * Get the option name for storing paused extensions. - * - * @since 5.2.0 - * - * @return string - */ - protected function get_option_name() { - if ( ! wp_recovery_mode()->is_active() ) { - return ''; - } - - $session_id = wp_recovery_mode()->get_session_id(); - if ( empty( $session_id ) ) { - return ''; - } - - return "{$session_id}_paused_extensions"; - } -} diff --git a/wp-includes/class-wp-post-type.php b/wp-includes/class-wp-post-type.php index 8db528d..ffc4361 100644 --- a/wp-includes/class-wp-post-type.php +++ b/wp-includes/class-wp-post-type.php @@ -4,22 +4,21 @@ * * @package ClassicPress * @subpackage Post - * @since 4.6.0 + * @since WP-4.6.0 */ /** * Core class used for interacting with post types. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see register_post_type() */ -#[AllowDynamicProperties] final class WP_Post_Type { /** * Post type key. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string $name */ public $name; @@ -27,7 +26,7 @@ final class WP_Post_Type { /** * Name of the post type shown in the menu. Usually plural. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string $label */ public $label; @@ -40,25 +39,17 @@ final class WP_Post_Type { * * @see get_post_type_labels() * - * @since 4.6.0 - * @var stdClass $labels + * @since WP-4.6.0 + * @var object $labels */ public $labels; - /** - * Default labels. - * - * @since 6.0.0 - * @var (string|null)[][] $default_labels - */ - protected static $default_labels = array(); - /** * A short descriptive summary of what the post type is. * * Default empty. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string $description */ public $description = ''; @@ -71,7 +62,7 @@ final class WP_Post_Type { * * Default false. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $public */ public $public = false; @@ -81,7 +72,7 @@ final class WP_Post_Type { * * Default false. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $hierarchical */ public $hierarchical = false; @@ -92,7 +83,7 @@ final class WP_Post_Type { * * Default is the opposite value of $public. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $exclude_from_search */ public $exclude_from_search = null; @@ -101,14 +92,13 @@ final class WP_Post_Type { * Whether queries can be performed on the front end for the post type as part of `parse_request()`. * * Endpoints would include: - * * - `?post_type={post_type_key}` * - `?{post_type_key}={single_post_slug}` * - `?{post_type_query_var}={single_post_slug}` * * Default is the value of $public. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $publicly_queryable */ public $publicly_queryable = null; @@ -118,7 +108,7 @@ final class WP_Post_Type { * * Default is the value of $public. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $show_ui */ public $show_ui = null; @@ -127,13 +117,13 @@ final class WP_Post_Type { * Where to show the post type in the admin menu. * * To work, $show_ui must be true. 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 ('tools.php' or 'edit.php?post_type=page', for example), the - * post type will be placed as a sub-menu of that. + * 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. * * Default is the value of $show_ui. * - * @since 4.6.0 - * @var bool|string $show_in_menu + * @since WP-4.6.0 + * @var bool $show_in_menu */ public $show_in_menu = null; @@ -142,7 +132,7 @@ final class WP_Post_Type { * * Default is the value $public. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $show_in_nav_menus */ public $show_in_nav_menus = null; @@ -152,7 +142,7 @@ final class WP_Post_Type { * * Default is the value of $show_in_menu. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $show_in_admin_bar */ public $show_in_admin_bar = null; @@ -162,13 +152,13 @@ final class WP_Post_Type { * * To work, $show_in_menu must be true. Default null (at the bottom). * - * @since 4.6.0 + * @since WP-4.6.0 * @var int $menu_position */ public $menu_position = null; /** - * The URL or reference to the icon to be used for this menu. + * The URL to the icon to be used for this menu. * * Pass a base64-encoded SVG using a data URI, which will be colored to match the color scheme. * This should begin with 'data:image/svg+xml;base64,'. Pass the name of a Dashicons helper class @@ -177,7 +167,7 @@ final class WP_Post_Type { * * Defaults to use the posts icon. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string $menu_icon */ public $menu_icon = null; @@ -189,7 +179,7 @@ final class WP_Post_Type { * this argument as a base to construct the capabilities, e.g. * array( 'story', 'stories' ). Default 'post'. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string $capability_type */ public $capability_type = 'post'; @@ -199,7 +189,7 @@ final class WP_Post_Type { * * Default false. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $map_meta_cap */ public $map_meta_cap = false; @@ -209,8 +199,8 @@ final class WP_Post_Type { * * Do `remove_meta_box()` and `add_meta_box()` calls in the callback. Default null. * - * @since 4.6.0 - * @var callable $register_meta_box_cb + * @since WP-4.6.0 + * @var string $register_meta_box_cb */ public $register_meta_box_cb = null; @@ -221,8 +211,8 @@ final class WP_Post_Type { * * Default empty array. * - * @since 4.6.0 - * @var string[] $taxonomies + * @since WP-4.6.0 + * @var array $taxonomies */ public $taxonomies = array(); @@ -231,7 +221,7 @@ final class WP_Post_Type { * * Will generate the proper rewrite rules if $rewrite is enabled. Default false. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool|string $has_archive */ public $has_archive = false; @@ -242,7 +232,7 @@ final class WP_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. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string|bool $query_var */ public $query_var; @@ -252,7 +242,7 @@ final class WP_Post_Type { * * Default true. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $can_export */ public $can_export = true; @@ -260,14 +250,12 @@ final class WP_Post_Type { /** * 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 the 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 the 'author' feature. - * Otherwise posts are not trashed or deleted. + * 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. Default null. * - * Default null. - * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $delete_with_user */ public $delete_with_user = null; @@ -277,7 +265,7 @@ final class WP_Post_Type { * * Default false. * - * @since 4.6.0 + * @since WP-4.6.0 * @var bool $_builtin */ public $_builtin = false; @@ -287,7 +275,7 @@ final class WP_Post_Type { * * Default 'post.php?post=%d'. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string $_edit_link */ public $_edit_link = 'post.php?post=%d'; @@ -295,8 +283,8 @@ final class WP_Post_Type { /** * Post type capabilities. * - * @since 4.6.0 - * @var stdClass $cap + * @since WP-4.6.0 + * @var object $cap */ public $cap; @@ -305,7 +293,7 @@ final class WP_Post_Type { * * Defaults to true, using $post_type as slug. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array|false $rewrite */ public $rewrite; @@ -313,7 +301,7 @@ final class WP_Post_Type { /** * The features supported by the post type. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array|bool $supports */ public $supports; @@ -324,7 +312,7 @@ final class WP_Post_Type { * Default false. If true, standard endpoints will be registered with * respect to $rest_base and $rest_controller_class. * - * @since 4.7.4 + * @since WP-4.7.4 * @var bool $show_in_rest */ public $show_in_rest; @@ -332,48 +320,28 @@ final class WP_Post_Type { /** * The base path for this post type's REST API endpoints. * - * @since 4.7.4 + * @since WP-4.7.4 * @var string|bool $rest_base */ public $rest_base; - /** - * The namespace for this post type's REST API endpoints. - * - * @since 5.9.0 - * @var string|bool $rest_namespace - */ - public $rest_namespace; - /** * The controller for this post type's REST API endpoints. * * Custom controllers must extend WP_REST_Controller. * - * @since 4.7.4 + * @since WP-4.7.4 * @var string|bool $rest_controller_class */ public $rest_controller_class; - /** - * The controller instance for this post type's REST API endpoints. - * - * Lazily computed. Should be accessed using {@see WP_Post_Type::get_rest_controller()}. - * - * @since 5.3.0 - * @var WP_REST_Controller $rest_controller - */ - public $rest_controller; - /** * Constructor. * - * See the register_post_type() function for accepted arguments for `$args`. - * * Will populate object properties from the provided arguments and assign other * default properties based on that information. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see register_post_type() * @@ -390,9 +358,7 @@ public function __construct( $post_type, $args = array() ) { /** * Sets post type properties. * - * See the register_post_type() function for accepted arguments for `$args`. - * - * @since 4.6.0 + * @since WP-4.6.0 * * @param array|string $args Array or string of arguments for registering a post type. */ @@ -402,34 +368,13 @@ public function set_props( $args ) { /** * Filters the arguments for registering a post type. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $args Array of arguments for registering a post type. - * See the register_post_type() function for accepted arguments. * @param string $post_type Post type key. */ $args = apply_filters( 'register_post_type_args', $args, $this->name ); - $post_type = $this->name; - - /** - * Filters the arguments for registering a specific post type. - * - * The dynamic portion of the filter name, `$post_type`, refers to the post type key. - * - * Possible hook names include: - * - * - `register_post_post_type_args` - * - `register_page_post_type_args` - * - * @since 6.0.0 - * - * @param array $args Array of arguments for registering a post type. - * See the register_post_type() function for accepted arguments. - * @param string $post_type Post type key. - */ - $args = apply_filters( "register_{$post_type}_post_type_args", $args, $this->name ); - $has_edit_link = ! empty( $args['_edit_link'] ); // Args prefixed with an underscore are reserved for internal use. @@ -459,10 +404,7 @@ public function set_props( $args ) { 'delete_with_user' => null, 'show_in_rest' => false, 'rest_base' => false, - 'rest_namespace' => false, 'rest_controller_class' => false, - 'template' => array(), - 'template_lock' => false, '_builtin' => false, '_edit_link' => 'post.php?post=%d', ); @@ -471,32 +413,27 @@ public function set_props( $args ) { $args['name'] = $this->name; - // If not set, default to the setting for 'public'. + // If not set, default to the setting for public. if ( null === $args['publicly_queryable'] ) { $args['publicly_queryable'] = $args['public']; } - // If not set, default to the setting for 'public'. + // If not set, default to the setting for public. if ( null === $args['show_ui'] ) { $args['show_ui'] = $args['public']; } - // If not set, default rest_namespace to wp/v2 if show_in_rest is true. - if ( false === $args['rest_namespace'] && ! empty( $args['show_in_rest'] ) ) { - $args['rest_namespace'] = 'wp/v2'; - } - - // If not set, default to the setting for 'show_ui'. + // If not set, default to the setting for show_ui. if ( null === $args['show_in_menu'] || ! $args['show_ui'] ) { $args['show_in_menu'] = $args['show_ui']; } - // If not set, default to the setting for 'show_in_menu'. + // If not set, default to the whether the full UI is shown. if ( null === $args['show_in_admin_bar'] ) { $args['show_in_admin_bar'] = (bool) $args['show_in_menu']; } - // If not set, default to the setting for 'public'. + // If not set, default to the setting for public. if ( null === $args['show_in_nav_menus'] ) { $args['show_in_nav_menus'] = $args['public']; } @@ -506,7 +443,7 @@ public function set_props( $args ) { $args['exclude_from_search'] = ! $args['public']; } - // Back compat with quirky handling in version 3.0. #14122. + // Back compat with quirky handling in version 3.0. https://core.trac.wordpress.org/ticket/14122. if ( empty( $args['capabilities'] ) && null === $args['map_meta_cap'] && in_array( $args['capability_type'], array( 'post', 'page' ), true ) ) { @@ -574,17 +511,11 @@ public function set_props( $args ) { /** * Sets the features support for the post type. * - * @since 4.6.0 + * @since WP-4.6.0 */ public function add_supports() { if ( ! empty( $this->supports ) ) { - foreach ( $this->supports as $feature => $args ) { - if ( is_array( $args ) ) { - add_post_type_support( $this->name, $feature, $args ); - } else { - add_post_type_support( $this->name, $args ); - } - } + add_post_type_support( $this->name, $this->supports ); unset( $this->supports ); } elseif ( false !== $this->supports ) { // Add default features. @@ -595,10 +526,10 @@ public function add_supports() { /** * Adds the necessary rewrite rules for the post type. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. - * @global WP $wp Current WordPress environment instance. + * @global WP_Rewrite $wp_rewrite ClassicPress Rewrite Component. + * @global WP $wp Current ClassicPress environment instance. */ public function add_rewrite_rules() { global $wp_rewrite, $wp; @@ -642,7 +573,7 @@ public function add_rewrite_rules() { /** * Registers the post type meta box if a custom callback was specified. * - * @since 4.6.0 + * @since WP-4.6.0 */ public function register_meta_boxes() { if ( $this->register_meta_box_cb ) { @@ -653,7 +584,7 @@ public function register_meta_boxes() { /** * Adds the future post hook action for the post type. * - * @since 4.6.0 + * @since WP-4.6.0 */ public function add_hooks() { add_action( 'future_' . $this->name, '_future_post_hook', 5, 2 ); @@ -662,7 +593,7 @@ public function add_hooks() { /** * Registers the taxonomies for the post type. * - * @since 4.6.0 + * @since WP-4.6.0 */ public function register_taxonomies() { foreach ( $this->taxonomies as $taxonomy ) { @@ -673,7 +604,7 @@ public function register_taxonomies() { /** * Removes the features support for the post type. * - * @since 4.6.0 + * @since WP-4.6.0 * * @global array $_wp_post_type_features Post type features. */ @@ -686,10 +617,10 @@ public function remove_supports() { /** * Removes any rewrite rules, permastructs, and rules for the post type. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. - * @global WP $wp Current WordPress environment instance. + * @global WP_Rewrite $wp_rewrite ClassicPress rewrite component. + * @global WP $wp Current ClassicPress environment instance. * @global array $post_type_meta_caps Used to remove meta capabilities. */ public function remove_rewrite_rules() { @@ -720,7 +651,7 @@ public function remove_rewrite_rules() { /** * Unregisters the post type meta box if a custom callback was specified. * - * @since 4.6.0 + * @since WP-4.6.0 */ public function unregister_meta_boxes() { if ( $this->register_meta_box_cb ) { @@ -731,7 +662,7 @@ public function unregister_meta_boxes() { /** * Removes the post type from all taxonomies. * - * @since 4.6.0 + * @since WP-4.6.0 */ public function unregister_taxonomies() { foreach ( get_object_taxonomies( $this->name ) as $taxonomy ) { @@ -742,110 +673,9 @@ public function unregister_taxonomies() { /** * Removes the future post hook action for the post type. * - * @since 4.6.0 + * @since WP-4.6.0 */ public function remove_hooks() { remove_action( 'future_' . $this->name, '_future_post_hook', 5 ); } - - /** - * Gets the REST API controller for this post type. - * - * Will only instantiate the controller class once per request. - * - * @since 5.3.0 - * - * @return WP_REST_Controller|null The controller instance, or null if the post type - * is set not to show in rest. - */ - public function get_rest_controller() { - if ( ! $this->show_in_rest ) { - return null; - } - - $class = $this->rest_controller_class ? $this->rest_controller_class : WP_REST_Posts_Controller::class; - - if ( ! class_exists( $class ) ) { - return null; - } - - if ( ! is_subclass_of( $class, WP_REST_Controller::class ) ) { - return null; - } - - if ( ! $this->rest_controller ) { - $this->rest_controller = new $class( $this->name ); - } - - if ( ! ( $this->rest_controller instanceof $class ) ) { - return null; - } - - return $this->rest_controller; - } - - /** - * Returns the default labels for post types. - * - * @since 6.0.0 - * - * @return (string|null)[][] The default labels for post types. - */ - public static function get_default_labels() { - if ( ! empty( self::$default_labels ) ) { - return self::$default_labels; - } - - self::$default_labels = array( - 'name' => array( _x( 'Posts', 'post type general name' ), _x( 'Pages', 'post type general name' ) ), - 'singular_name' => array( _x( 'Post', 'post type singular name' ), _x( 'Page', 'post type singular name' ) ), - 'add_new' => array( _x( 'Add New', 'post' ), _x( 'Add New', 'page' ) ), - 'add_new_item' => array( __( 'Add New Post' ), __( 'Add New Page' ) ), - 'edit_item' => array( __( 'Edit Post' ), __( 'Edit Page' ) ), - 'new_item' => array( __( 'New Post' ), __( 'New Page' ) ), - 'view_item' => array( __( 'View Post' ), __( 'View Page' ) ), - 'view_items' => array( __( 'View Posts' ), __( 'View Pages' ) ), - 'search_items' => array( __( 'Search Posts' ), __( 'Search Pages' ) ), - 'not_found' => array( __( 'No posts found.' ), __( 'No pages found.' ) ), - 'not_found_in_trash' => array( __( 'No posts found in Trash.' ), __( 'No pages found in Trash.' ) ), - 'parent_item_colon' => array( null, __( 'Parent Page:' ) ), - 'all_items' => array( __( 'All Posts' ), __( 'All Pages' ) ), - 'archives' => array( __( 'Post Archives' ), __( 'Page Archives' ) ), - 'attributes' => array( __( 'Post Attributes' ), __( 'Page Attributes' ) ), - 'insert_into_item' => array( __( 'Insert into post' ), __( 'Insert into page' ) ), - 'uploaded_to_this_item' => array( __( 'Uploaded to this post' ), __( 'Uploaded to this page' ) ), - 'featured_image' => array( _x( 'Featured image', 'post' ), _x( 'Featured image', 'page' ) ), - 'set_featured_image' => array( _x( 'Set featured image', 'post' ), _x( 'Set featured image', 'page' ) ), - 'remove_featured_image' => array( _x( 'Remove featured image', 'post' ), _x( 'Remove featured image', 'page' ) ), - 'use_featured_image' => array( _x( 'Use as featured image', 'post' ), _x( 'Use as featured image', 'page' ) ), - 'filter_items_list' => array( __( 'Filter posts list' ), __( 'Filter pages list' ) ), - 'filter_by_date' => array( __( 'Filter by date' ), __( 'Filter by date' ) ), - 'items_list_navigation' => array( __( 'Posts list navigation' ), __( 'Pages list navigation' ) ), - 'items_list' => array( __( 'Posts list' ), __( 'Pages list' ) ), - 'item_published' => array( __( 'Post published.' ), __( 'Page published.' ) ), - 'item_published_privately' => array( __( 'Post published privately.' ), __( 'Page published privately.' ) ), - 'item_reverted_to_draft' => array( __( 'Post reverted to draft.' ), __( 'Page reverted to draft.' ) ), - 'item_scheduled' => array( __( 'Post scheduled.' ), __( 'Page scheduled.' ) ), - 'item_updated' => array( __( 'Post updated.' ), __( 'Page updated.' ) ), - 'item_link' => array( - _x( 'Post Link', 'navigation link block title' ), - _x( 'Page Link', 'navigation link block title' ), - ), - 'item_link_description' => array( - _x( 'A link to a post.', 'navigation link block description' ), - _x( 'A link to a page.', 'navigation link block description' ), - ), - ); - - return self::$default_labels; - } - - /** - * Resets the cache for the default labels. - * - * @since 6.0.0 - */ - public static function reset_default_labels() { - self::$default_labels = array(); - } } diff --git a/wp-includes/class-wp-post.php b/wp-includes/class-wp-post.php index 2352331..9382793 100644 --- a/wp-includes/class-wp-post.php +++ b/wp-includes/class-wp-post.php @@ -4,27 +4,27 @@ * * @package ClassicPress * @subpackage Post - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to implement the WP_Post object. * - * @since 3.5.0 + * @since WP-3.5.0 * * @property string $page_template * - * @property-read int[] $ancestors - * @property-read int[] $post_category - * @property-read string[] $tags_input + * @property-read array $ancestors + * @property-read int $post_category + * @property-read string $tag_input + * */ -#[AllowDynamicProperties] final class WP_Post { /** * Post ID. * - * @since 3.5.0 + * @since WP-3.5.0 * @var int */ public $ID; @@ -34,7 +34,7 @@ final class WP_Post { * * A numeric string, for compatibility reasons. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_author = 0; @@ -42,7 +42,7 @@ final class WP_Post { /** * The post's local publication time. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_date = '0000-00-00 00:00:00'; @@ -50,7 +50,7 @@ final class WP_Post { /** * The post's GMT publication time. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_date_gmt = '0000-00-00 00:00:00'; @@ -58,7 +58,7 @@ final class WP_Post { /** * The post's content. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_content = ''; @@ -66,7 +66,7 @@ final class WP_Post { /** * The post's title. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_title = ''; @@ -74,7 +74,7 @@ final class WP_Post { /** * The post's excerpt. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_excerpt = ''; @@ -82,7 +82,7 @@ final class WP_Post { /** * The post's status. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_status = 'publish'; @@ -90,7 +90,7 @@ final class WP_Post { /** * Whether comments are allowed. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $comment_status = 'open'; @@ -98,7 +98,7 @@ final class WP_Post { /** * Whether pings are allowed. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $ping_status = 'open'; @@ -106,7 +106,7 @@ final class WP_Post { /** * The post's password in plain text. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_password = ''; @@ -114,7 +114,7 @@ final class WP_Post { /** * The post's slug. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_name = ''; @@ -122,7 +122,7 @@ final class WP_Post { /** * URLs queued to be pinged. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $to_ping = ''; @@ -130,7 +130,7 @@ final class WP_Post { /** * URLs that have been pinged. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $pinged = ''; @@ -138,7 +138,7 @@ final class WP_Post { /** * The post's local modified time. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_modified = '0000-00-00 00:00:00'; @@ -146,7 +146,7 @@ final class WP_Post { /** * The post's GMT modified time. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_modified_gmt = '0000-00-00 00:00:00'; @@ -154,7 +154,7 @@ final class WP_Post { /** * A utility DB field for post content. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_content_filtered = ''; @@ -162,7 +162,7 @@ final class WP_Post { /** * ID of a post's parent post. * - * @since 3.5.0 + * @since WP-3.5.0 * @var int */ public $post_parent = 0; @@ -170,7 +170,7 @@ final class WP_Post { /** * The unique identifier for a post, not necessarily a URL, used as the feed GUID. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $guid = ''; @@ -178,7 +178,7 @@ final class WP_Post { /** * A field used for ordering posts. * - * @since 3.5.0 + * @since WP-3.5.0 * @var int */ public $menu_order = 0; @@ -186,7 +186,7 @@ final class WP_Post { /** * The post's type, like post or page. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_type = 'post'; @@ -194,7 +194,7 @@ final class WP_Post { /** * An attachment's mime type. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $post_mime_type = ''; @@ -204,7 +204,7 @@ final class WP_Post { * * A numeric string, for compatibility reasons. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $comment_count = 0; @@ -214,7 +214,7 @@ final class WP_Post { * * Does not correspond to a DB field. * - * @since 3.5.0 + * @since WP-3.5.0 * @var string */ public $filter; @@ -222,9 +222,10 @@ final class WP_Post { /** * Retrieve WP_Post instance. * - * @since 3.5.0 + * @since WP-3.5.0 + * @static * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $post_id Post ID. * @return WP_Post|false Post object, false otherwise. @@ -248,7 +249,7 @@ public static function get_instance( $post_id ) { $_post = sanitize_post( $_post, 'raw' ); wp_cache_add( $_post->ID, $_post, 'posts' ); - } elseif ( empty( $_post->filter ) || 'raw' !== $_post->filter ) { + } elseif ( empty( $_post->filter ) ) { $_post = sanitize_post( $_post, 'raw' ); } @@ -258,7 +259,7 @@ public static function get_instance( $post_id ) { /** * Constructor. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param WP_Post|object $post Post object. */ @@ -271,25 +272,25 @@ public function __construct( $post ) { /** * Isset-er. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $key Property to check if set. * @return bool */ public function __isset( $key ) { - if ( 'ancestors' === $key ) { + if ( 'ancestors' == $key ) { return true; } - if ( 'page_template' === $key ) { + if ( 'page_template' == $key ) { return true; } - if ( 'post_category' === $key ) { + if ( 'post_category' == $key ) { return true; } - if ( 'tags_input' === $key ) { + if ( 'tags_input' == $key ) { return true; } @@ -299,17 +300,17 @@ public function __isset( $key ) { /** * Getter. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $key Key to get. * @return mixed */ public function __get( $key ) { - if ( 'page_template' === $key && $this->__isset( $key ) ) { + if ( 'page_template' == $key && $this->__isset( $key ) ) { return get_post_meta( $this->ID, '_wp_page_template', true ); } - if ( 'post_category' === $key ) { + if ( 'post_category' == $key ) { if ( is_object_in_taxonomy( $this->post_type, 'category' ) ) { $terms = get_the_terms( $this, 'category' ); } @@ -321,7 +322,7 @@ public function __get( $key ) { return wp_list_pluck( $terms, 'term_id' ); } - if ( 'tags_input' === $key ) { + if ( 'tags_input' == $key ) { if ( is_object_in_taxonomy( $this->post_type, 'post_tag' ) ) { $terms = get_the_terms( $this, 'post_tag' ); } @@ -334,7 +335,7 @@ public function __get( $key ) { } // Rest of the values need filtering. - if ( 'ancestors' === $key ) { + if ( 'ancestors' == $key ) { $value = get_post_ancestors( $this ); } else { $value = get_post_meta( $this->ID, $key, true ); @@ -350,17 +351,17 @@ public function __get( $key ) { /** * {@Missing Summary} * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $filter Filter. - * @return WP_Post + * @return self|array|bool|object|WP_Post */ public function filter( $filter ) { - if ( $this->filter === $filter ) { + if ( $this->filter == $filter ) { return $this; } - if ( 'raw' === $filter ) { + if ( $filter == 'raw' ) { return self::get_instance( $this->ID ); } @@ -370,7 +371,7 @@ public function filter( $filter ) { /** * Convert object to array. * - * @since 3.5.0 + * @since WP-3.5.0 * * @return array Object as array. */ diff --git a/wp-includes/class-wp-query.php b/wp-includes/class-wp-query.php index ce9fcb8..28c724f 100644 --- a/wp-includes/class-wp-query.php +++ b/wp-includes/class-wp-query.php @@ -4,57 +4,56 @@ * * @package ClassicPress * @subpackage Query - * @since 4.7.0 + * @since WP-4.7.0 */ /** * The ClassicPress Query class. * - * @link https://developer.wordpress.org/reference/classes/wp_query/ + * @link https://codex.wordpress.org/Function_Reference/WP_Query Codex page. * - * @since 1.5.0 - * @since 4.5.0 Removed the `$comments_popup` property. + * @since WP-1.5.0 + * @since WP-4.5.0 Removed the `$comments_popup` property. */ -#[AllowDynamicProperties] class WP_Query { /** - * Query vars set by the user. + * Query vars set by the user * - * @since 1.5.0 + * @since WP-1.5.0 * @var array */ public $query; /** - * Query vars, after parsing. + * Query vars, after parsing * - * @since 1.5.0 + * @since WP-1.5.0 * @var array */ public $query_vars = array(); /** - * Taxonomy query, as passed to get_tax_sql(). + * Taxonomy query, as passed to get_tax_sql() * - * @since 3.1.0 - * @var WP_Tax_Query A taxonomy query instance. + * @since WP-3.1.0 + * @var object WP_Tax_Query */ public $tax_query; /** - * Metadata query container. + * Metadata query container * - * @since 3.2.0 - * @var WP_Meta_Query A meta query instance. + * @since WP-3.2.0 + * @var object WP_Meta_Query */ public $meta_query = false; /** - * Date query container. + * Date query container * - * @since 3.7.0 - * @var WP_Date_Query A date query instance. + * @since WP-3.7.0 + * @var object WP_Date_Query */ public $date_query = false; @@ -63,39 +62,39 @@ class WP_Query { * * Holds the contents of a post, page, category, attachment. * - * @since 1.5.0 - * @var WP_Term|WP_Post_Type|WP_Post|WP_User|null + * @since WP-1.5.0 + * @var object|array */ public $queried_object; /** * The ID of the queried object. * - * @since 1.5.0 + * @since WP-1.5.0 * @var int */ public $queried_object_id; /** - * SQL for the database query. + * Get post database query. * - * @since 2.0.1 + * @since WP-2.0.1 * @var string */ public $request; /** - * Array of post objects or post IDs. + * List of posts. * - * @since 1.5.0 - * @var WP_Post[]|int[] + * @since WP-1.5.0 + * @var array */ public $posts; /** - * The number of posts for the current query. + * The amount of posts for the current query. * - * @since 1.5.0 + * @since WP-1.5.0 * @var int */ public $post_count = 0; @@ -103,23 +102,15 @@ class WP_Query { /** * Index of the current item in the loop. * - * @since 1.5.0 + * @since WP-1.5.0 * @var int */ public $current_post = -1; - /** - * Whether the caller is before the loop. - * - * @since 6.3.0 - * @var bool - */ - public $before_loop = true; - /** * Whether the loop has started and the caller is in the loop. * - * @since 2.0.0 + * @since WP-2.0.0 * @var bool */ public $in_the_loop = false; @@ -127,26 +118,23 @@ class WP_Query { /** * The current post. * - * This property does not get populated when the `fields` argument is set to - * `ids` or `id=>parent`. - * - * @since 1.5.0 - * @var WP_Post|null + * @since WP-1.5.0 + * @var WP_Post */ public $post; /** * The list of comments for current post. * - * @since 2.2.0 - * @var WP_Comment[] + * @since WP-2.2.0 + * @var array */ public $comments; /** - * The number of comments for the posts. + * The amount of comments for the posts. * - * @since 2.2.0 + * @since WP-2.2.0 * @var int */ public $comment_count = 0; @@ -154,41 +142,41 @@ class WP_Query { /** * The index of the comment in the comment loop. * - * @since 2.2.0 + * @since WP-2.2.0 * @var int */ public $current_comment = -1; /** - * Current comment object. + * Current comment ID. * - * @since 2.2.0 - * @var WP_Comment + * @since WP-2.2.0 + * @var int */ public $comment; /** - * The number of found posts for the current query. + * The amount of found posts for the current query. * * If limit clause was not used, equals $post_count. * - * @since 2.1.0 + * @since WP-2.1.0 * @var int */ public $found_posts = 0; /** - * The number of pages. + * The amount of pages. * - * @since 2.1.0 + * @since WP-2.1.0 * @var int */ public $max_num_pages = 0; /** - * The number of comment pages. + * The amount of comment pages. * - * @since 2.7.0 + * @since WP-2.7.0 * @var int */ public $max_num_comment_pages = 0; @@ -196,7 +184,7 @@ class WP_Query { /** * Signifies whether the current query is for a single post. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_single = false; @@ -204,7 +192,7 @@ class WP_Query { /** * Signifies whether the current query is for a preview. * - * @since 2.0.0 + * @since WP-2.0.0 * @var bool */ public $is_preview = false; @@ -212,7 +200,7 @@ class WP_Query { /** * Signifies whether the current query is for a page. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_page = false; @@ -220,7 +208,7 @@ class WP_Query { /** * Signifies whether the current query is for an archive. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_archive = false; @@ -228,7 +216,7 @@ class WP_Query { /** * Signifies whether the current query is for a date archive. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_date = false; @@ -236,7 +224,7 @@ class WP_Query { /** * Signifies whether the current query is for a year archive. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_year = false; @@ -244,7 +232,7 @@ class WP_Query { /** * Signifies whether the current query is for a month archive. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_month = false; @@ -252,7 +240,7 @@ class WP_Query { /** * Signifies whether the current query is for a day archive. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_day = false; @@ -260,7 +248,7 @@ class WP_Query { /** * Signifies whether the current query is for a specific time. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_time = false; @@ -268,7 +256,7 @@ class WP_Query { /** * Signifies whether the current query is for an author archive. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_author = false; @@ -276,7 +264,7 @@ class WP_Query { /** * Signifies whether the current query is for a category archive. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_category = false; @@ -284,7 +272,7 @@ class WP_Query { /** * Signifies whether the current query is for a tag archive. * - * @since 2.3.0 + * @since WP-2.3.0 * @var bool */ public $is_tag = false; @@ -292,7 +280,7 @@ class WP_Query { /** * Signifies whether the current query is for a taxonomy archive. * - * @since 2.5.0 + * @since WP-2.5.0 * @var bool */ public $is_tax = false; @@ -300,7 +288,7 @@ class WP_Query { /** * Signifies whether the current query is for a search. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_search = false; @@ -308,7 +296,7 @@ class WP_Query { /** * Signifies whether the current query is for a feed. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_feed = false; @@ -316,7 +304,7 @@ class WP_Query { /** * Signifies whether the current query is for a comment feed. * - * @since 2.2.0 + * @since WP-2.2.0 * @var bool */ public $is_comment_feed = false; @@ -324,7 +312,7 @@ class WP_Query { /** * Signifies whether the current query is for trackback endpoint call. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_trackback = false; @@ -332,23 +320,15 @@ class WP_Query { /** * Signifies whether the current query is for the site homepage. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_home = false; - /** - * Signifies whether the current query is for the Privacy Policy page. - * - * @since 5.2.0 - * @var bool - */ - public $is_privacy_policy = false; - /** * Signifies whether the current query couldn't find anything. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_404 = false; @@ -356,7 +336,7 @@ class WP_Query { /** * Signifies whether the current query is for an embed. * - * @since 4.4.0 + * @since WP-4.4.0 * @var bool */ public $is_embed = false; @@ -364,7 +344,7 @@ class WP_Query { /** * Signifies whether the current query is for a paged result and not for the first page. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_paged = false; @@ -372,7 +352,7 @@ class WP_Query { /** * Signifies whether the current query is for an administrative interface page. * - * @since 1.5.0 + * @since WP-1.5.0 * @var bool */ public $is_admin = false; @@ -380,7 +360,7 @@ class WP_Query { /** * Signifies whether the current query is for an attachment page. * - * @since 2.0.0 + * @since WP-2.0.0 * @var bool */ public $is_attachment = false; @@ -389,7 +369,7 @@ class WP_Query { * Signifies whether the current query is for an existing single post of any post type * (post, attachment, page, custom post types). * - * @since 2.1.0 + * @since WP-2.1.0 * @var bool */ public $is_singular = false; @@ -397,25 +377,17 @@ class WP_Query { /** * Signifies whether the current query is for the robots.txt file. * - * @since 2.1.0 + * @since WP-2.1.0 * @var bool */ public $is_robots = false; - /** - * Signifies whether the current query is for the favicon.ico file. - * - * @since 5.4.0 - * @var bool - */ - public $is_favicon = false; - /** * Signifies whether the current query is for the page_for_posts page. * * Basically, the homepage if the option isn't set for the static homepage. * - * @since 2.1.0 + * @since WP-2.1.0 * @var bool */ public $is_posts_page = false; @@ -423,7 +395,7 @@ class WP_Query { /** * Signifies whether the current query is for a post type archive. * - * @since 3.1.0 + * @since WP-3.1.0 * @var bool */ public $is_post_type_archive = false; @@ -432,7 +404,7 @@ class WP_Query { * Stores the ->query_vars state like md5(serialize( $this->query_vars ) ) so we know * whether we have to re-parse because something has changed * - * @since 3.1.0 + * @since WP-3.1.0 * @var bool|string */ private $query_vars_hash = false; @@ -441,30 +413,22 @@ class WP_Query { * 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 + * @since WP-3.1.1 */ private $query_vars_changed = true; /** * Set if post thumbnails are cached * - * @since 3.2.0 + * @since WP-3.2.0 * @var bool */ - public $thumbnails_cached = false; - - /** - * Controls whether an attachment query should include filenames or not. - * - * @since 6.0.3 - * @var bool - */ - protected $allow_query_attachment_by_filename = false; + public $thumbnails_cached = false; /** * Cached list of search stopwords. * - * @since 3.7.0 + * @since WP-3.7.0 * @var array */ private $stopwords; @@ -473,12 +437,19 @@ class WP_Query { private $compat_methods = array( 'init_query_flags', 'parse_tax_query' ); + /** + * Controls whether an attachment query should include filenames or not. + * + * @since WP-6.0.3 + * @var bool + */ + protected $allow_query_attachment_by_filename = false; /** * Resets query flags to false. * - * The query flags are what page info WordPress was able to figure out. + * The query flags are what page info ClassicPress was able to figure out. * - * @since 2.0.0 + * @since WP-2.0.0 */ private function init_query_flags() { $this->is_single = false; @@ -499,14 +470,12 @@ private function init_query_flags() { $this->is_comment_feed = false; $this->is_trackback = false; $this->is_home = false; - $this->is_privacy_policy = false; $this->is_404 = false; $this->is_paged = false; $this->is_admin = false; $this->is_attachment = false; $this->is_singular = false; $this->is_robots = false; - $this->is_favicon = false; $this->is_posts_page = false; $this->is_post_type_archive = false; } @@ -514,7 +483,7 @@ private function init_query_flags() { /** * Initiates object properties and sets default values. * - * @since 1.5.0 + * @since WP-1.5.0 */ public function init() { unset( $this->posts ); @@ -525,7 +494,6 @@ public function init() { $this->post_count = 0; $this->current_post = -1; $this->in_the_loop = false; - $this->before_loop = true; unset( $this->request ); unset( $this->post ); unset( $this->comments ); @@ -542,7 +510,7 @@ public function init() { /** * Reparse the query vars. * - * @since 1.5.0 + * @since WP-1.5.0 */ public function parse_query_vars() { $this->parse_query(); @@ -551,13 +519,13 @@ public function parse_query_vars() { /** * Fills in the query variables, which do not exist within the parameter. * - * @since 2.1.0 - * @since 4.5.0 Removed the `comments_popup` public query variable. + * @since WP-2.1.0 + * @since WP-4.4.0 Removed the `comments_popup` public query variable. * - * @param array $query_vars Defined query variables. + * @param array $array Defined query variables. * @return array Complete query variables with undefined ones filled in empty. */ - public function fill_query_vars( $query_vars ) { + public function fill_query_vars( $array ) { $keys = array( 'error', 'm', @@ -598,8 +566,8 @@ public function fill_query_vars( $query_vars ) { ); foreach ( $keys as $key ) { - if ( ! isset( $query_vars[ $key ] ) ) { - $query_vars[ $key ] = ''; + if ( ! isset( $array[ $key ] ) ) { + $array[ $key ] = ''; } } @@ -619,173 +587,140 @@ public function fill_query_vars( $query_vars ) { 'post_parent__not_in', 'author__in', 'author__not_in', - 'search_columns', ); foreach ( $array_keys as $key ) { - if ( ! isset( $query_vars[ $key ] ) ) { - $query_vars[ $key ] = array(); + if ( ! isset( $array[ $key ] ) ) { + $array[ $key ] = array(); } } - - return $query_vars; + return $array; } /** * Parse a query string and set query type booleans. * - * @since 1.5.0 - * @since 4.2.0 Introduced the ability to order by specific clauses of a `$meta_query`, by passing the clause's + * @since WP-1.5.0 + * @since WP-4.2.0 Introduced the ability to order by specific clauses of a `$meta_query`, by passing the clause's * array key to `$orderby`. - * @since 4.4.0 Introduced `$post_name__in` and `$title` parameters. `$s` was updated to support excluded + * @since WP-4.4.0 Introduced `$post_name__in` and `$title` parameters. `$s` was updated to support excluded * search terms, by prepending a hyphen. - * @since 4.5.0 Removed the `$comments_popup` parameter. + * @since WP-4.5.0 Removed the `$comments_popup` parameter. * Introduced the `$comment_status` and `$ping_status` parameters. * Introduced `RAND(x)` syntax for `$orderby`, which allows an integer seed value to random sorts. - * @since 4.6.0 Added 'post_name__in' support for `$orderby`. Introduced the `$lazy_load_term_meta` argument. - * @since 4.9.0 Introduced the `$comment_count` parameter. - * @since 5.1.0 Introduced the `$meta_compare_key` parameter. - * @since 5.3.0 Introduced the `$meta_type_key` parameter. - * @since 6.1.0 Introduced the `$update_menu_item_cache` parameter. - * @since 6.2.0 Introduced the `$search_columns` parameter. + * @since WP-4.6.0 Added 'post_name__in' support for `$orderby`. Introduced the `$lazy_load_term_meta` argument. + * @since WP-4.9.0 Introduced the `$comment_count` parameter. * * @param string|array $query { * Optional. Array or string of Query parameters. * - * @type int $attachment_id Attachment post ID. Used for 'attachment' post_type. - * @type int|string $author Author ID, or comma-separated list of IDs. - * @type string $author_name User 'user_nicename'. - * @type int[] $author__in An array of author IDs to query from. - * @type int[] $author__not_in An array of author IDs not to query from. - * @type bool $cache_results Whether to cache post information. Default true. - * @type int|string $cat Category ID or comma-separated list of IDs (this or any children). - * @type int[] $category__and An array of category IDs (AND in). - * @type int[] $category__in An array of category IDs (OR in, no children). - * @type int[] $category__not_in An array of category IDs (NOT in). - * @type string $category_name Use category slug (not name, this or any children). - * @type array|int $comment_count Filter results by comment count. Provide an integer to match - * comment count exactly. Provide an array with integer 'value' - * and 'compare' operator ('=', '!=', '>', '>=', '<', '<=' ) to - * compare against comment_count in a specific way. - * @type string $comment_status Comment status. - * @type int $comments_per_page The number of comments to return per page. - * Default 'comments_per_page' option. - * @type array $date_query An associative array of WP_Date_Query arguments. - * See WP_Date_Query::__construct(). - * @type int $day Day of the month. Default empty. Accepts numbers 1-31. - * @type bool $exact Whether to search by exact keyword. Default false. - * @type string $fields Post fields to query for. Accepts: - * - '' Returns an array of complete post objects (`WP_Post[]`). - * - 'ids' Returns an array of post IDs (`int[]`). - * - 'id=>parent' Returns an associative array of parent post IDs, - * keyed by post ID (`int[]`). - * Default ''. - * @type int $hour Hour of the day. Default empty. Accepts numbers 0-23. - * @type int|bool $ignore_sticky_posts Whether to ignore sticky posts or not. Setting this to false - * excludes stickies from 'post__in'. Accepts 1|true, 0|false. - * Default false. - * @type int $m Combination YearMonth. Accepts any four-digit year and month - * numbers 01-12. Default empty. - * @type string|string[] $meta_key Meta key or keys to filter by. - * @type string|string[] $meta_value Meta value or values to filter by. - * @type string $meta_compare MySQL operator used for comparing the meta value. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_compare_key MySQL operator used for comparing the meta key. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type MySQL data type that the meta_value column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type_key MySQL data type that the meta_key column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type array $meta_query An associative array of WP_Meta_Query arguments. - * See WP_Meta_Query::__construct() for accepted values. - * @type int $menu_order The menu order of the posts. - * @type int $minute Minute of the hour. Default empty. Accepts numbers 0-59. - * @type int $monthnum The two-digit month. Default empty. Accepts numbers 1-12. - * @type string $name Post slug. - * @type bool $nopaging Show all posts (true) or paginate (false). Default false. - * @type bool $no_found_rows Whether to skip counting the total rows found. Enabling can improve - * performance. Default false. - * @type int $offset The number of posts to offset before retrieval. - * @type string $order Designates ascending or descending order of posts. Default 'DESC'. - * Accepts 'ASC', 'DESC'. - * @type string|array $orderby Sort retrieved posts by parameter. One or more options may be passed. - * To use 'meta_value', or 'meta_value_num', 'meta_key=keyname' must be - * also be defined. To sort by a specific `$meta_query` clause, use that - * clause's array key. Accepts: - * - 'none' - * - 'name' - * - 'author' - * - 'date' - * - 'title' - * - 'modified' - * - 'menu_order' - * - 'parent' - * - 'ID' - * - 'rand' - * - 'relevance' - * - 'RAND(x)' (where 'x' is an integer seed value) - * - 'comment_count' - * - 'meta_value' - * - 'meta_value_num' - * - 'post__in' - * - 'post_name__in' - * - 'post_parent__in' - * - The array keys of `$meta_query`. - * Default is 'date', except when a search is being performed, when - * the default is 'relevance'. - * @type int $p Post ID. - * @type int $page Show the number of posts that would show up on page X of a - * static front page. - * @type int $paged The number of the current page. - * @type int $page_id Page ID. - * @type string $pagename Page slug. - * @type string $perm Show posts if user has the appropriate capability. - * @type string $ping_status Ping status. - * @type int[] $post__in An array of post IDs to retrieve, sticky posts will be included. - * @type int[] $post__not_in An array of post IDs not to retrieve. Note: a string of comma- - * separated IDs will NOT work. - * @type string $post_mime_type The mime type of the post. Used for 'attachment' post_type. - * @type string[] $post_name__in An array of post slugs that results must match. - * @type int $post_parent Page ID to retrieve child pages for. Use 0 to only retrieve - * top-level pages. - * @type int[] $post_parent__in An array containing parent page IDs to query child pages from. - * @type int[] $post_parent__not_in An array containing parent page IDs not to query child pages from. - * @type string|string[] $post_type A post type slug (string) or array of post type slugs. - * Default 'any' if using 'tax_query'. - * @type string|string[] $post_status A post status (string) or array of post statuses. - * @type int $posts_per_page The number of posts to query for. Use -1 to request all posts. - * @type int $posts_per_archive_page The number of posts to query for by archive page. Overrides - * 'posts_per_page' when is_archive(), or is_search() are true. - * @type string $s Search keyword(s). Prepending a term with a hyphen will - * exclude posts matching that term. Eg, 'pillow -sofa' will - * return posts containing 'pillow' but not 'sofa'. The - * character used for exclusion can be modified using the - * the 'wp_query_search_exclusion_prefix' filter. - * @type array $search_columns Array of column names to be searched. Accepts 'post_title', - * 'post_excerpt' and 'post_content'. Default empty array. - * @type int $second Second of the minute. Default empty. Accepts numbers 0-59. - * @type bool $sentence Whether to search by phrase. Default false. - * @type bool $suppress_filters Whether to suppress filters. Default false. - * @type string $tag Tag slug. Comma-separated (either), Plus-separated (all). - * @type int[] $tag__and An array of tag IDs (AND in). - * @type int[] $tag__in An array of tag IDs (OR in). - * @type int[] $tag__not_in An array of tag IDs (NOT in). - * @type int $tag_id Tag id or comma-separated list of IDs. - * @type string[] $tag_slug__and An array of tag slugs (AND in). - * @type string[] $tag_slug__in An array of tag slugs (OR in). unless 'ignore_sticky_posts' is - * true. Note: a string of comma-separated IDs will NOT work. - * @type array $tax_query An associative array of WP_Tax_Query arguments. - * See WP_Tax_Query::__construct(). - * @type string $title Post title. - * @type bool $update_post_meta_cache Whether to update the post meta cache. Default true. - * @type bool $update_post_term_cache Whether to update the post term cache. Default true. - * @type bool $update_menu_item_cache Whether to update the menu item cache. Default false. - * @type bool $lazy_load_term_meta Whether to lazy-load term meta. Setting to false will - * disable cache priming for term meta, so that each - * get_term_meta() call will hit the database. - * Defaults to the value of `$update_post_term_cache`. - * @type int $w The week number of the year. Default empty. Accepts numbers 0-53. - * @type int $year The four-digit year. Default empty. Accepts any four-digit year. + * @type int $attachment_id Attachment post ID. Used for 'attachment' post_type. + * @type int|string $author Author ID, or comma-separated list of IDs. + * @type string $author_name User 'user_nicename'. + * @type array $author__in An array of author IDs to query from. + * @type array $author__not_in An array of author IDs not to query from. + * @type bool $cache_results Whether to cache post information. Default true. + * @type int|string $cat Category ID or comma-separated list of IDs (this or any children). + * @type array $category__and An array of category IDs (AND in). + * @type array $category__in An array of category IDs (OR in, no children). + * @type array $category__not_in An array of category IDs (NOT in). + * @type string $category_name Use category slug (not name, this or any children). + * @type array|int $comment_count Filter results by comment count. Provide an integer to match + * comment count exactly. Provide an array with integer 'value' + * and 'compare' operator ('=', '!=', '>', '>=', '<', '<=' ) to + * compare against comment_count in a specific way. + * @type string $comment_status Comment status. + * @type int $comments_per_page The number of comments to return per page. + * Default 'comments_per_page' option. + * @type array $date_query An associative array of WP_Date_Query arguments. + * See WP_Date_Query::__construct(). + * @type int $day Day of the month. Default empty. Accepts numbers 1-31. + * @type bool $exact Whether to search by exact keyword. Default false. + * @type string|array $fields Which fields to return. Single field or all fields (string), + * or array of fields. 'id=>parent' uses 'id' and 'post_parent'. + * Default all fields. Accepts 'ids', 'id=>parent'. + * @type int $hour Hour of the day. Default empty. Accepts numbers 0-23. + * @type int|bool $ignore_sticky_posts Whether to ignore sticky posts or not. Setting this to false + * excludes stickies from 'post__in'. Accepts 1|true, 0|false. + * Default 0|false. + * @type int $m Combination YearMonth. Accepts any four-digit year and month + * numbers 1-12. Default empty. + * @type string $meta_compare Comparison operator to test the 'meta_value'. + * @type string $meta_key Custom field key. + * @type array $meta_query An associative array of WP_Meta_Query arguments. See WP_Meta_Query. + * @type string $meta_value Custom field value. + * @type int $meta_value_num Custom field value number. + * @type int $menu_order The menu order of the posts. + * @type int $monthnum The two-digit month. Default empty. Accepts numbers 1-12. + * @type string $name Post slug. + * @type bool $nopaging Show all posts (true) or paginate (false). Default false. + * @type bool $no_found_rows Whether to skip counting the total rows found. Enabling can improve + * performance. Default false. + * @type int $offset The number of posts to offset before retrieval. + * @type string $order Designates ascending or descending order of posts. Default 'DESC'. + * Accepts 'ASC', 'DESC'. + * @type string|array $orderby Sort retrieved posts by parameter. One or more options may be + * passed. To use 'meta_value', or 'meta_value_num', + * 'meta_key=keyname' must be also be defined. To sort by a + * specific `$meta_query` clause, use that clause's array key. + * Accepts 'none', 'name', 'author', 'date', 'title', + * 'modified', 'menu_order', 'parent', 'ID', 'rand', + * 'relevance', 'RAND(x)' (where 'x' is an integer seed value), + * 'comment_count', 'meta_value', 'meta_value_num', 'post__in', + * 'post_name__in', 'post_parent__in', and the array keys + * of `$meta_query`. Default is 'date', except when a search + * is being performed, when the default is 'relevance'. + * + * @type int $p Post ID. + * @type int $page Show the number of posts that would show up on page X of a + * static front page. + * @type int $paged The number of the current page. + * @type int $page_id Page ID. + * @type string $pagename Page slug. + * @type string $perm Show posts if user has the appropriate capability. + * @type string $ping_status Ping status. + * @type array $post__in An array of post IDs to retrieve, sticky posts will be included + * @type string $post_mime_type The mime type of the post. Used for 'attachment' post_type. + * @type array $post__not_in An array of post IDs not to retrieve. Note: a string of comma- + * separated IDs will NOT work. + * @type int $post_parent Page ID to retrieve child pages for. Use 0 to only retrieve + * top-level pages. + * @type array $post_parent__in An array containing parent page IDs to query child pages from. + * @type array $post_parent__not_in An array containing parent page IDs not to query child pages from. + * @type string|array $post_type A post type slug (string) or array of post type slugs. + * Default 'any' if using 'tax_query'. + * @type string|array $post_status A post status (string) or array of post statuses. + * @type int $posts_per_page The number of posts to query for. Use -1 to request all posts. + * @type int $posts_per_archive_page The number of posts to query for by archive page. Overrides + * 'posts_per_page' when is_archive(), or is_search() are true. + * @type array $post_name__in An array of post slugs that results must match. + * @type string $s Search keyword(s). Prepending a term with a hyphen will + * exclude posts matching that term. Eg, 'pillow -sofa' will + * return posts containing 'pillow' but not 'sofa'. The + * character used for exclusion can be modified using the + * the 'wp_query_search_exclusion_prefix' filter. + * @type int $second Second of the minute. Default empty. Accepts numbers 0-60. + * @type bool $sentence Whether to search by phrase. Default false. + * @type bool $suppress_filters Whether to suppress filters. Default false. + * @type string $tag Tag slug. Comma-separated (either), Plus-separated (all). + * @type array $tag__and An array of tag ids (AND in). + * @type array $tag__in An array of tag ids (OR in). + * @type array $tag__not_in An array of tag ids (NOT in). + * @type int $tag_id Tag id or comma-separated list of IDs. + * @type array $tag_slug__and An array of tag slugs (AND in). + * @type array $tag_slug__in An array of tag slugs (OR in). unless 'ignore_sticky_posts' is + * true. Note: a string of comma-separated IDs will NOT work. + * @type array $tax_query An associative array of WP_Tax_Query arguments. + * See WP_Tax_Query->queries. + * @type string $title Post title. + * @type bool $update_post_meta_cache Whether to update the post meta cache. Default true. + * @type bool $update_post_term_cache Whether to update the post term cache. Default true. + * @type bool $lazy_load_term_meta Whether to lazy-load term meta. Setting to false will + * disable cache priming for term meta, so that each + * get_term_meta() call will hit the database. + * Defaults to the value of `$update_post_term_cache`. + * @type int $w The week number of the year. Default empty. Accepts numbers 0-53. + * @type int $year The four-digit year. Default empty. Accepts any four-digit year. * } */ public function parse_query( $query = '' ) { @@ -803,68 +738,54 @@ public function parse_query( $query = '' ) { if ( ! empty( $qv['robots'] ) ) { $this->is_robots = true; - } elseif ( ! empty( $qv['favicon'] ) ) { - $this->is_favicon = true; } if ( ! is_scalar( $qv['p'] ) || (int) $qv['p'] < 0 ) { $qv['p'] = 0; $qv['error'] = '404'; } else { - $qv['p'] = (int) $qv['p']; + $qv['p'] = intval( $qv['p'] ); } - $qv['page_id'] = is_scalar( $qv['page_id'] ) ? absint( $qv['page_id'] ) : 0; - $qv['year'] = is_scalar( $qv['year'] ) ? absint( $qv['year'] ) : 0; - $qv['monthnum'] = is_scalar( $qv['monthnum'] ) ? absint( $qv['monthnum'] ) : 0; - $qv['day'] = is_scalar( $qv['day'] ) ? absint( $qv['day'] ) : 0; - $qv['w'] = is_scalar( $qv['w'] ) ? absint( $qv['w'] ) : 0; + $qv['page_id'] = absint( $qv['page_id'] ); + $qv['year'] = absint( $qv['year'] ); + $qv['monthnum'] = absint( $qv['monthnum'] ); + $qv['day'] = absint( $qv['day'] ); + $qv['w'] = absint( $qv['w'] ); $qv['m'] = is_scalar( $qv['m'] ) ? preg_replace( '|[^0-9]|', '', $qv['m'] ) : ''; - $qv['paged'] = is_scalar( $qv['paged'] ) ? absint( $qv['paged'] ) : 0; - $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // Array or comma-separated list of positive or negative integers. - $qv['author'] = is_scalar( $qv['author'] ) ? preg_replace( '|[^0-9,-]|', '', $qv['author'] ) : ''; // Comma-separated list of positive or negative integers. - $qv['pagename'] = is_scalar( $qv['pagename'] ) ? trim( $qv['pagename'] ) : ''; - $qv['name'] = is_scalar( $qv['name'] ) ? trim( $qv['name'] ) : ''; - $qv['title'] = is_scalar( $qv['title'] ) ? trim( $qv['title'] ) : ''; - - if ( is_scalar( $qv['hour'] ) && '' !== $qv['hour'] ) { + $qv['paged'] = absint( $qv['paged'] ); + $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers + $qv['author'] = preg_replace( '|[^0-9,-]|', '', $qv['author'] ); // comma separated list of positive or negative integers + $qv['pagename'] = trim( $qv['pagename'] ); + $qv['name'] = trim( $qv['name'] ); + $qv['title'] = trim( $qv['title'] ); + if ( '' !== $qv['hour'] ) { $qv['hour'] = absint( $qv['hour'] ); - } else { - $qv['hour'] = ''; } - - if ( is_scalar( $qv['minute'] ) && '' !== $qv['minute'] ) { + if ( '' !== $qv['minute'] ) { $qv['minute'] = absint( $qv['minute'] ); - } else { - $qv['minute'] = ''; } - - if ( is_scalar( $qv['second'] ) && '' !== $qv['second'] ) { + if ( '' !== $qv['second'] ) { $qv['second'] = absint( $qv['second'] ); - } else { - $qv['second'] = ''; } - - if ( is_scalar( $qv['menu_order'] ) && '' !== $qv['menu_order'] ) { + if ( '' !== $qv['menu_order'] ) { $qv['menu_order'] = absint( $qv['menu_order'] ); - } else { - $qv['menu_order'] = ''; } - // Fairly large, potentially too large, upper bound for search string lengths. + // Fairly insane upper bound for search string lengths. if ( ! is_scalar( $qv['s'] ) || ( ! empty( $qv['s'] ) && strlen( $qv['s'] ) > 1600 ) ) { $qv['s'] = ''; } // Compat. Map subpost to attachment. - if ( is_scalar( $qv['subpost'] ) && '' != $qv['subpost'] ) { + if ( '' != $qv['subpost'] ) { $qv['attachment'] = $qv['subpost']; } - if ( is_scalar( $qv['subpost_id'] ) && '' != $qv['subpost_id'] ) { + if ( '' != $qv['subpost_id'] ) { $qv['attachment_id'] = $qv['subpost_id']; } - $qv['attachment_id'] = is_scalar( $qv['attachment_id'] ) ? absint( $qv['attachment_id'] ) : 0; + $qv['attachment_id'] = absint( $qv['attachment_id'] ); if ( ( '' !== $qv['attachment'] ) || ! empty( $qv['attachment_id'] ) ) { $this->is_single = true; @@ -1002,11 +923,11 @@ public function parse_query( $query = '' ) { $this->is_trackback = true; } - if ( '' != $qv['paged'] && ( (int) $qv['paged'] > 1 ) ) { + if ( '' != $qv['paged'] && ( intval( $qv['paged'] ) > 1 ) ) { $this->is_paged = true; } - // If we're previewing inside the write screen. + // if we're previewing inside the write screen if ( '' != $qv['preview'] ) { $this->is_preview = true; } @@ -1026,9 +947,7 @@ public function parse_query( $query = '' ) { $this->is_comment_feed = true; } - if ( ! ( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed - || ( defined( 'REST_REQUEST' ) && REST_REQUEST && $this->is_main_query() ) - || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_robots || $this->is_favicon ) ) { + if ( ! ( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_robots ) ) { $this->is_home = true; } @@ -1046,7 +965,7 @@ public function parse_query( $query = '' ) { $this->is_page = true; $this->is_home = false; $qv['page_id'] = get_option( 'page_on_front' ); - // Correct <!--nextpage--> for 'page_on_front'. + // Correct <!--nextpage--> for page_on_front if ( ! empty( $qv['paged'] ) ) { $qv['page'] = $qv['paged']; unset( $qv['paged'] ); @@ -1059,7 +978,7 @@ public function parse_query( $query = '' ) { if ( $this->queried_object && 'attachment' === $this->queried_object->post_type ) { if ( preg_match( '/^[^%]*%(?:postname)%/', get_option( 'permalink_structure' ) ) ) { - // See if we also have a post with the same slug. + // See if we also have a post with the same slug $post = get_page_by_path( $qv['pagename'], OBJECT, 'post' ); if ( $post ) { $this->queried_object = $post; @@ -1080,10 +999,6 @@ public function parse_query( $query = '' ) { $this->is_home = true; $this->is_posts_page = true; } - - if ( isset( $this->queried_object_id ) && get_option( 'wp_page_for_privacy_policy' ) == $this->queried_object_id ) { - $this->is_privacy_policy = true; - } } if ( $qv['page_id'] ) { @@ -1092,10 +1007,6 @@ public function parse_query( $query = '' ) { $this->is_home = true; $this->is_posts_page = true; } - - if ( get_option( 'wp_page_for_privacy_policy' ) == $qv['page_id'] ) { - $this->is_privacy_policy = true; - } } if ( ! empty( $qv['post_type'] ) ) { @@ -1119,7 +1030,7 @@ public function parse_query( $query = '' ) { } $this->is_singular = $this->is_single || $this->is_page || $this->is_attachment; - // Done correcting `is_*` for 'page_on_front' and 'page_for_posts'. + // Done correcting is_* for page_on_front and page_for_posts if ( '404' == $qv['error'] ) { $this->set_404(); @@ -1133,9 +1044,9 @@ public function parse_query( $query = '' ) { /** * Fires after the main query vars have been parsed. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ do_action_ref_array( 'parse_query', array( &$this ) ); } @@ -1145,7 +1056,7 @@ public function parse_query( $query = '' ) { * * For BC, this method is not marked as protected. See [28987]. * - * @since 3.1.0 + * @since WP-3.1.0 * * @param array $q The query variables. Passed by reference. */ @@ -1175,7 +1086,7 @@ public function parse_tax_query( &$q ) { 'field' => 'slug', ); - if ( ! empty( $t->rewrite['hierarchical'] ) ) { + if ( isset( $t->rewrite['hierarchical'] ) && $t->rewrite['hierarchical'] ) { $q[ $t->query_var ] = wp_basename( $q[ $t->query_var ] ); } @@ -1206,13 +1117,12 @@ public function parse_tax_query( &$q ) { } } - // If query string 'cat' is an array, implode it. + // If querystring 'cat' is an array, implode it. if ( is_array( $q['cat'] ) ) { $q['cat'] = implode( ',', $q['cat'] ); } - // Category stuff. - + // Category stuff if ( ! empty( $q['cat'] ) && ! $this->is_singular ) { $cat_in = array(); $cat_not_in = array(); @@ -1290,7 +1200,7 @@ public function parse_tax_query( &$q ) { ); } - // If query string 'tag' is array, implode it. + // If querystring 'tag' is array, implode it. if ( is_array( $q['tag'] ) ) { $q['tag'] = implode( ',', $q['tag'] ); } @@ -1374,9 +1284,9 @@ public function parse_tax_query( &$q ) { /** * Fires after taxonomy-related query vars have been parsed. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @param WP_Query $query The WP_Query instance. + * @param WP_Query $this The WP_Query instance. */ do_action( 'parse_tax_query', $this ); } @@ -1384,9 +1294,9 @@ public function parse_tax_query( &$q ) { /** * Generates SQL for the WHERE clause based on passed search terms. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param array $q Query variables. * @return string WHERE clause. @@ -1396,12 +1306,12 @@ protected function parse_search( &$q ) { $search = ''; - // Added slashes screw with quote grouping when done early, so done later. + // added slashes screw with quote grouping when done early, so done later $q['s'] = stripslashes( $q['s'] ); if ( empty( $_GET['s'] ) && $this->is_main_query() ) { $q['s'] = urldecode( $q['s'] ); } - // There are no line breaks in <input> fields. + // there are no line breaks in <input /> fields $q['s'] = str_replace( array( "\r", "\n" ), '', $q['s'] ); $q['search_terms_count'] = 1; if ( ! empty( $q['sentence'] ) ) { @@ -1410,7 +1320,7 @@ protected function parse_search( &$q ) { if ( preg_match_all( '/".*?("|$)|((?<=[\t ",+])|^)[^\t ",+]+/', $q['s'], $matches ) ) { $q['search_terms_count'] = count( $matches[0] ); $q['search_terms'] = $this->parse_search_terms( $matches[0] ); - // If the search string has only short terms or stopwords, or is 10+ terms long, match it as sentence. + // if the search string has only short terms or stopwords, or is 10+ terms long, match it as sentence if ( empty( $q['search_terms'] ) || count( $q['search_terms'] ) > 9 ) { $q['search_terms'] = array( $q['s'] ); } @@ -1423,36 +1333,10 @@ protected function parse_search( &$q ) { $searchand = ''; $q['search_orderby_title'] = array(); - $default_search_columns = array( 'post_title', 'post_excerpt', 'post_content' ); - $search_columns = ! empty( $q['search_columns'] ) ? $q['search_columns'] : $default_search_columns; - if ( ! is_array( $search_columns ) ) { - $search_columns = array( $search_columns ); - } - - /** - * Filters the columns to search in a WP_Query search. - * - * The supported columns are `post_title`, `post_excerpt` and `post_content`. - * They are all included by default. - * - * @since 6.2.0 - * - * @param string[] $search_columns Array of column names to be searched. - * @param string $search Text being searched. - * @param WP_Query $query The current WP_Query instance. - */ - $search_columns = (array) apply_filters( 'post_search_columns', $search_columns, $q['s'], $this ); - - // Use only supported search columns. - $search_columns = array_intersect( $search_columns, $default_search_columns ); - if ( empty( $search_columns ) ) { - $search_columns = $default_search_columns; - } - /** * Filters the prefix that indicates that a search term should be excluded from results. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param string $exclusion_prefix The prefix. Default '-'. Returning * an empty value disables exclusions. @@ -1478,17 +1362,11 @@ protected function parse_search( &$q ) { $like = $n . $wpdb->esc_like( $term ) . $n; - $search_columns_parts = array(); - foreach ( $search_columns as $search_column ) { - $search_columns_parts[ $search_column ] = $wpdb->prepare( "({$wpdb->posts}.$search_column $like_op %s)", $like ); - } - if ( ! empty( $this->allow_query_attachment_by_filename ) ) { - $search_columns_parts['attachment'] = $wpdb->prepare( "(sq1.meta_value $like_op %s)", $like ); + $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s) $andor_op (sq1.meta_value $like_op %s))", $like, $like, $like, $like ); + } else { + $search .= $wpdb->prepare( "{$searchand}(({$wpdb->posts}.post_title $like_op %s) $andor_op ({$wpdb->posts}.post_excerpt $like_op %s) $andor_op ({$wpdb->posts}.post_content $like_op %s))", $like, $like, $like ); } - - $search .= "$searchand(" . implode( " $andor_op ", $search_columns_parts ) . ')'; - $searchand = ' AND '; } @@ -1509,10 +1387,10 @@ protected function parse_search( &$q ) { * term matching when searching for posts. The list of English stopwords is * the approximate search engines list, and is translatable. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @param string[] $terms Array of terms to check. - * @return string[] Terms that are not stopwords. + * @param array $terms Terms to check. + * @return array Terms that are not stopwords. */ protected function parse_search_terms( $terms ) { $strtolower = function_exists( 'mb_strtolower' ) ? 'mb_strtolower' : 'strtolower'; @@ -1521,7 +1399,7 @@ protected function parse_search_terms( $terms ) { $stopwords = $this->get_search_stopwords(); foreach ( $terms as $term ) { - // Keep before/after spaces when term is for exact match. + // keep before/after spaces when term is for exact match if ( preg_match( '/^".+"$/', $term ) ) { $term = trim( $term, "\"'" ); } else { @@ -1546,17 +1424,16 @@ protected function parse_search_terms( $terms ) { /** * Retrieve stopwords used when parsing search terms. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @return string[] Stopwords. + * @return array Stopwords. */ protected function get_search_stopwords() { if ( isset( $this->stopwords ) ) { return $this->stopwords; } - /* - * translators: This is a comma-separated list of very common words that should be excluded from a search, + /* translators: This is a comma-separated list of very common words that should be excluded from a search, * like a, an, and the. These are usually called "stopwords". You should not simply translate these individual * words into your language. Instead, look for and provide commonly accepted stopwords in your language. */ @@ -1579,9 +1456,9 @@ protected function get_search_stopwords() { /** * Filters stopwords used when parsing search terms. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @param string[] $stopwords Array of stopwords. + * @param array $stopwords Stopwords. */ $this->stopwords = apply_filters( 'wp_search_stopwords', $stopwords ); return $this->stopwords; @@ -1590,9 +1467,9 @@ protected function get_search_stopwords() { /** * Generates SQL for the ORDER BY condition based on passed search terms. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param array $q Query variables. * @return string ORDER BY clause. @@ -1611,17 +1488,17 @@ protected function parse_search_order( &$q ) { $search_orderby = ''; - // Sentence match in 'post_title'. + // sentence match in 'post_title' if ( $like ) { $search_orderby .= $wpdb->prepare( "WHEN {$wpdb->posts}.post_title LIKE %s THEN 1 ", $like ); } - // Sanity limit, sort as sentence when more than 6 terms - // (few searches are longer than 6 terms and most titles are not). + // sanity limit, sort as sentence when more than 6 terms + // (few searches are longer than 6 terms and most titles are not) if ( $num_terms < 7 ) { - // All words in title. + // all words in title $search_orderby .= 'WHEN ' . implode( ' AND ', $q['search_orderby_title'] ) . ' THEN 2 '; - // Any word in title, not needed when $num_terms == 1. + // any word in title, not needed when $num_terms == 1 if ( $num_terms > 1 ) { $search_orderby .= 'WHEN ' . implode( ' OR ', $q['search_orderby_title'] ) . ' THEN 3 '; } @@ -1637,7 +1514,7 @@ protected function parse_search_order( &$q ) { $search_orderby = '(CASE ' . $search_orderby . 'ELSE 6 END)'; } } else { - // Single word or sentence search. + // single word or sentence search $search_orderby = reset( $q['search_orderby_title'] ) . ' DESC'; } @@ -1647,9 +1524,9 @@ protected function parse_search_order( &$q ) { /** * Converts the given orderby alias (if allowed) to a properly-prefixed value. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $orderby Alias for the field to order by. * @return string|false Table-prefixed value to used in the ORDER clause. False otherwise. @@ -1677,9 +1554,6 @@ protected function parse_orderby( $orderby ) { 'menu_order', 'comment_count', 'rand', - 'post__in', - 'post_parent__in', - 'post_name__in', ); $primary_meta_key = ''; @@ -1701,7 +1575,7 @@ protected function parse_orderby( $orderby ) { // If RAND() contains a seed value, sanitize and add to allowed keys. $rand_with_seed = false; if ( preg_match( '/RAND\(([0-9]+)\)/i', $orderby, $matches ) ) { - $orderby = sprintf( 'RAND(%s)', (int) $matches[1] ); + $orderby = sprintf( 'RAND(%s)', intval( $matches[1] ) ); $allowed_keys[] = $orderby; $rand_with_seed = true; } @@ -1710,8 +1584,6 @@ protected function parse_orderby( $orderby ) { return false; } - $orderby_clause = ''; - switch ( $orderby ) { case 'post_name': case 'post_author': @@ -1739,23 +1611,6 @@ protected function parse_orderby( $orderby ) { case 'meta_value_num': $orderby_clause = "{$primary_meta_query['alias']}.meta_value+0"; break; - case 'post__in': - if ( ! empty( $this->query_vars['post__in'] ) ) { - $orderby_clause = "FIELD({$wpdb->posts}.ID," . implode( ',', array_map( 'absint', $this->query_vars['post__in'] ) ) . ')'; - } - break; - case 'post_parent__in': - if ( ! empty( $this->query_vars['post_parent__in'] ) ) { - $orderby_clause = "FIELD( {$wpdb->posts}.post_parent," . implode( ', ', array_map( 'absint', $this->query_vars['post_parent__in'] ) ) . ' )'; - } - break; - case 'post_name__in': - if ( ! empty( $this->query_vars['post_name__in'] ) ) { - $post_name__in = array_map( 'sanitize_title_for_query', $this->query_vars['post_name__in'] ); - $post_name__in_string = "'" . implode( "','", $post_name__in ) . "'"; - $orderby_clause = "FIELD( {$wpdb->posts}.post_name," . $post_name__in_string . ' )'; - } - break; default: if ( array_key_exists( $orderby, $meta_clauses ) ) { // $orderby corresponds to a meta_query clause. @@ -1777,7 +1632,7 @@ protected function parse_orderby( $orderby ) { /** * Parse an 'order' query variable and cast it to ASC or DESC as necessary. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $order The 'order' query variable. * @return string The sanitized 'order' query variable. @@ -1797,7 +1652,7 @@ protected function parse_order( $order ) { /** * Sets the 404 property and saves whether query is feed. * - * @since 2.0.0 + * @since WP-2.0.0 */ public function set_404() { $is_feed = $this->is_feed; @@ -1806,40 +1661,31 @@ public function set_404() { $this->is_404 = true; $this->is_feed = $is_feed; - - /** - * Fires after a 404 is triggered. - * - * @since 5.5.0 - * - * @param WP_Query $query The WP_Query instance (passed by reference). - */ - do_action_ref_array( 'set_404', array( $this ) ); } /** - * Retrieves the value of a query variable. + * Retrieve query variable. + * + * @since WP-1.5.0 + * @since WP-3.9.0 The `$default` argument was introduced. * - * @since 1.5.0 - * @since 3.9.0 The `$default_value` argument was introduced. * - * @param string $query_var Query variable key. - * @param mixed $default_value Optional. Value to return if the query variable is not set. - * Default empty string. + * @param string $query_var Query variable key. + * @param mixed $default Optional. Value to return if the query variable is not set. Default empty. * @return mixed Contents of the query variable. */ - public function get( $query_var, $default_value = '' ) { + public function get( $query_var, $default = '' ) { if ( isset( $this->query_vars[ $query_var ] ) ) { return $this->query_vars[ $query_var ]; } - return $default_value; + return $default; } /** - * Sets the value of a query variable. + * Set query variable. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $query_var Query variable key. * @param mixed $value Query variable value. @@ -1849,16 +1695,14 @@ public function set( $query_var, $value ) { } /** - * Retrieves an array of posts based on query variables. + * Retrieve the posts based on query variables. * * There are a few filters and actions that can be used to modify the post * database query. * - * @since 1.5.0 - * - * @global wpdb $wpdb WordPress database abstraction object. + * @since WP-1.5.0 * - * @return WP_Post[]|int[] Array of post objects or post IDs. + * @return array List of posts. */ public function get_posts() { global $wpdb; @@ -1872,33 +1716,33 @@ public function get_posts() { * (e.g. $this->is_main_query() instead of is_main_query()). This is because the functions * like is_main_query() test against the global $wp_query instance, not the passed one. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ do_action_ref_array( 'pre_get_posts', array( &$this ) ); // Shorthand. $q = &$this->query_vars; - // Fill again in case 'pre_get_posts' unset some vars. + // Fill again in case pre_get_posts unset some vars. $q = $this->fill_query_vars( $q ); /** * Filters whether an attachment query should include filenames or not. * - * @since 6.0.3 + * @since WP-6.0.3 * * @param bool $allow_query_attachment_by_filename Whether or not to include filenames. */ $this->allow_query_attachment_by_filename = apply_filters( 'wp_allow_query_attachment_by_filename', false ); remove_all_filters( 'wp_allow_query_attachment_by_filename' ); - // Parse meta query. + // Parse meta query $this->meta_query = new WP_Meta_Query(); $this->meta_query->parse_query_vars( $q ); - // Set a flag if a 'pre_get_posts' hook changed the query vars. + // Set a flag if a pre_get_posts hook changed the query vars. $hash = md5( serialize( $this->query_vars ) ); if ( $hash != $this->query_vars_hash ) { $this->query_vars_changed = true; @@ -1906,7 +1750,7 @@ public function get_posts() { } unset( $hash ); - // First let's clear some variables. + // First let's clear some variables $distinct = ''; $whichauthor = ''; $whichmimetype = ''; @@ -1921,9 +1765,9 @@ public function get_posts() { if ( isset( $q['caller_get_posts'] ) ) { _deprecated_argument( 'WP_Query', - '3.1.0', + 'WP-3.1.0', + /* translators: 1: caller_get_posts, 2: ignore_sticky_posts */ sprintf( - /* translators: 1: caller_get_posts, 2: ignore_sticky_posts */ __( '%1$s is deprecated. Use %2$s instead.' ), '<code>caller_get_posts</code>', '<code>ignore_sticky_posts</code>' @@ -1944,21 +1788,19 @@ public function get_posts() { } if ( ! isset( $q['cache_results'] ) ) { - $q['cache_results'] = true; + if ( wp_using_ext_object_cache() ) { + $q['cache_results'] = false; + } else { + $q['cache_results'] = true; + } } if ( ! isset( $q['update_post_term_cache'] ) ) { $q['update_post_term_cache'] = true; } - if ( ! isset( $q['update_menu_item_cache'] ) ) { - $q['update_menu_item_cache'] = false; - } - if ( ! isset( $q['lazy_load_term_meta'] ) ) { $q['lazy_load_term_meta'] = $q['update_post_term_cache']; - } elseif ( $q['lazy_load_term_meta'] ) { // Lazy loading term meta only works if term caches are primed. - $q['update_post_term_cache'] = true; } if ( ! isset( $q['update_post_meta_cache'] ) ) { @@ -1992,7 +1834,7 @@ public function get_posts() { } if ( $this->is_feed ) { - // This overrides 'posts_per_page'. + // This overrides posts_per_page. if ( ! empty( $q['posts_per_rss'] ) ) { $q['posts_per_page'] = $q['posts_per_rss']; } else { @@ -2043,7 +1885,7 @@ public function get_posts() { if ( '' !== $q['menu_order'] ) { $where .= " AND {$wpdb->posts}.menu_order = " . $q['menu_order']; } - // The "m" parameter is meant for months but accepts datetimes of varying specificity. + // The "m" parameter is meant for months but accepts datetimes of varying specificity if ( $q['m'] ) { $where .= " AND YEAR({$wpdb->posts}.post_date)=" . substr( $q['m'], 0, 4 ); if ( strlen( $q['m'] ) > 5 ) { @@ -2063,7 +1905,7 @@ public function get_posts() { } } - // Handle the other individual date parameters. + // Handle the other individual date parameters $date_parameters = array(); if ( '' !== $q['hour'] ) { @@ -2100,7 +1942,7 @@ public function get_posts() { } unset( $date_parameters, $date_query ); - // Handle complex date queries. + // Handle complex date queries if ( ! empty( $q['date_query'] ) ) { $this->date_query = new WP_Date_Query( $q['date_query'] ); $where .= $this->date_query->get_sql(); @@ -2125,7 +1967,7 @@ public function get_posts() { // Only one request for a slug is possible, this is why name & pagename are overwritten above. break; - } // End foreach. + } //end foreach unset( $ptype_obj ); } @@ -2193,7 +2035,7 @@ public function get_posts() { $q['p'] = absint( $q['attachment_id'] ); } - // If a post number is specified, load that post. + // If a post number is specified, load that post if ( $q['p'] ) { $where .= " AND {$wpdb->posts}.ID = " . $q['p']; } elseif ( $q['post__in'] ) { @@ -2230,15 +2072,15 @@ public function get_posts() { /** * Filters the search SQL that is used in the WHERE clause of WP_Query. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $search Search SQL for WHERE clause. - * @param WP_Query $query The current WP_Query object. + * @param WP_Query $this The current WP_Query object. */ $search = apply_filters_ref_array( 'posts_search', array( $search, &$this ) ); } - // Taxonomies. + // Taxonomies if ( ! $this->is_singular ) { $this->parse_tax_query( $q ); @@ -2250,7 +2092,7 @@ public function get_posts() { if ( $this->is_tax ) { if ( empty( $post_type ) ) { - // Do a fully inclusive search for currently registered post types of queried taxonomies. + // Do a fully inclusive search for currently registered post types of queried taxonomies $post_type = array(); $taxonomies = array_keys( $this->tax_query->queried_terms ); foreach ( get_post_types( array( 'exclude_from_search' => false ) ) as $pt ) { @@ -2302,7 +2144,7 @@ public function get_posts() { } } - // 'cat', 'category_name', 'tag_id'. + // 'cat', 'category_name', 'tag_id' foreach ( $this->tax_query->queried_terms as $queried_taxonomy => $queried_items ) { if ( empty( $queried_items['terms'][0] ) ) { continue; @@ -2331,7 +2173,7 @@ public function get_posts() { $groupby = "{$wpdb->posts}.ID"; } - // Author/user stuff. + // Author/user stuff if ( ! empty( $q['author'] ) && '0' != $q['author'] ) { $q['author'] = addslashes_gpc( '' . urldecode( $q['author'] ) ); @@ -2351,15 +2193,15 @@ public function get_posts() { $where .= " AND {$wpdb->posts}.post_author IN ($author__in) "; } - // Author stuff for nice URLs. + // Author stuff for nice URLs if ( '' !== $q['author_name'] ) { if ( strpos( $q['author_name'], '/' ) !== false ) { $q['author_name'] = explode( '/', $q['author_name'] ); if ( $q['author_name'][ count( $q['author_name'] ) - 1 ] ) { - $q['author_name'] = $q['author_name'][ count( $q['author_name'] ) - 1 ]; // No trailing slash. + $q['author_name'] = $q['author_name'][ count( $q['author_name'] ) - 1 ]; // no trailing slash } else { - $q['author_name'] = $q['author_name'][ count( $q['author_name'] ) - 2 ]; // There was a trailing slash. + $q['author_name'] = $q['author_name'][ count( $q['author_name'] ) - 2 ]; // there was a trailing slash } } $q['author_name'] = sanitize_title_for_query( $q['author_name'] ); @@ -2375,7 +2217,7 @@ public function get_posts() { // Numeric comment count is converted to array format. if ( is_numeric( $q['comment_count'] ) ) { $q['comment_count'] = array( - 'value' => (int) $q['comment_count'], + 'value' => intval( $q['comment_count'] ), ); } @@ -2397,7 +2239,7 @@ public function get_posts() { } } - // MIME-Type stuff for attachment browsing. + // MIME-Type stuff for attachment browsing if ( isset( $q['post_mime_type'] ) && '' !== $q['post_mime_type'] ) { $whichmimetype = wp_post_mime_type_where( $q['post_mime_type'], $wpdb->posts ); @@ -2421,12 +2263,6 @@ public function get_posts() { $q['order'] = $rand ? '' : $this->parse_order( $q['order'] ); } - // These values of orderby should ignore the 'order' parameter. - $force_asc = array( 'post__in', 'post_name__in', 'post_parent__in' ); - if ( isset( $q['orderby'] ) && in_array( $q['orderby'], $force_asc, true ) ) { - $q['order'] = ''; - } - // Order by. if ( empty( $q['orderby'] ) ) { /* @@ -2440,6 +2276,12 @@ public function get_posts() { } } elseif ( 'none' === $q['orderby'] ) { $orderby = ''; + } elseif ( $q['orderby'] == 'post__in' && ! empty( $post__in ) ) { + $orderby = "FIELD( {$wpdb->posts}.ID, $post__in )"; + } elseif ( $q['orderby'] == 'post_parent__in' && ! empty( $post_parent__in ) ) { + $orderby = "FIELD( {$wpdb->posts}.post_parent, $post_parent__in )"; + } elseif ( $q['orderby'] == 'post_name__in' && ! empty( $post_name__in ) ) { + $orderby = "FIELD( {$wpdb->posts}.post_name, $post_name__in )"; } else { $orderby_array = array(); if ( is_array( $q['orderby'] ) ) { @@ -2489,10 +2331,10 @@ public function get_posts() { /** * Filters the ORDER BY used when ordering search results. * - * @since 3.7.0 + * @since WP-3.7.0 * * @param string $search_orderby The ORDER BY clause. - * @param WP_Query $query The current WP_Query instance. + * @param WP_Query $this The current WP_Query instance. */ $search_orderby = apply_filters( 'posts_search_orderby', $search_orderby, $this ); } @@ -2531,28 +2373,26 @@ public function get_posts() { $where .= $wpdb->prepare( " AND {$wpdb->posts}.ping_status = %s ", $q['ping_status'] ); } - $skip_post_status = false; if ( 'any' === $post_type ) { $in_search_post_types = get_post_types( array( 'exclude_from_search' => false ) ); if ( empty( $in_search_post_types ) ) { - $post_type_where = ' AND 1=0 '; - $skip_post_status = true; + $where .= ' AND 1=0 '; } else { - $post_type_where = " AND {$wpdb->posts}.post_type IN ('" . implode( "', '", array_map( 'esc_sql', $in_search_post_types ) ) . "')"; + $where .= " AND {$wpdb->posts}.post_type IN ('" . join( "', '", array_map( 'esc_sql', $in_search_post_types ) ) . "')"; } } elseif ( ! empty( $post_type ) && is_array( $post_type ) ) { - $post_type_where = " AND {$wpdb->posts}.post_type IN ('" . implode( "', '", esc_sql( $post_type ) ) . "')"; + $where .= " AND {$wpdb->posts}.post_type IN ('" . join( "', '", esc_sql( $post_type ) ) . "')"; } elseif ( ! empty( $post_type ) ) { - $post_type_where = $wpdb->prepare( " AND {$wpdb->posts}.post_type = %s", $post_type ); + $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_type = %s", $post_type ); $post_type_object = get_post_type_object( $post_type ); } elseif ( $this->is_attachment ) { - $post_type_where = " AND {$wpdb->posts}.post_type = 'attachment'"; + $where .= " AND {$wpdb->posts}.post_type = 'attachment'"; $post_type_object = get_post_type_object( 'attachment' ); } elseif ( $this->is_page ) { - $post_type_where = " AND {$wpdb->posts}.post_type = 'page'"; + $where .= " AND {$wpdb->posts}.post_type = 'page'"; $post_type_object = get_post_type_object( 'page' ); } else { - $post_type_where = " AND {$wpdb->posts}.post_type = 'post'"; + $where .= " AND {$wpdb->posts}.post_type = 'post'"; $post_type_object = get_post_type_object( 'post' ); } @@ -2570,12 +2410,7 @@ public function get_posts() { $user_id = get_current_user_id(); $q_status = array(); - if ( $skip_post_status ) { - $where .= $post_type_where; - } elseif ( ! empty( $q['post_status'] ) ) { - - $where .= $post_type_where; - + if ( ! empty( $q['post_status'] ) ) { $statuswheres = array(); $q_status = $q['post_status']; if ( ! is_array( $q_status ) ) { @@ -2608,20 +2443,20 @@ public function get_posts() { } if ( ! empty( $e_status ) ) { - $statuswheres[] = '(' . implode( ' AND ', $e_status ) . ')'; + $statuswheres[] = '(' . join( ' AND ', $e_status ) . ')'; } 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 (' . implode( ' OR ', $r_status ) . '))'; + $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . 'AND (' . join( ' OR ', $r_status ) . '))'; } else { - $statuswheres[] = '(' . implode( ' OR ', $r_status ) . ')'; + $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 (' . implode( ' OR ', $p_status ) . '))'; + $statuswheres[] = "({$wpdb->posts}.post_author = $user_id " . 'AND (' . join( ' OR ', $p_status ) . '))'; } else { - $statuswheres[] = '(' . implode( ' OR ', $p_status ) . ')'; + $statuswheres[] = '(' . join( ' OR ', $p_status ) . ')'; } } if ( $post_status_join ) { @@ -2635,69 +2470,39 @@ public function get_posts() { $where .= " AND ($where_status)"; } } elseif ( ! $this->is_singular ) { - if ( 'any' === $post_type ) { - $queried_post_types = get_post_types( array( 'exclude_from_search' => false ) ); - } elseif ( is_array( $post_type ) ) { - $queried_post_types = $post_type; - } elseif ( ! empty( $post_type ) ) { - $queried_post_types = array( $post_type ); - } else { - $queried_post_types = array( 'post' ); - } - - if ( ! empty( $queried_post_types ) ) { - - $status_type_clauses = array(); - - foreach ( $queried_post_types as $queried_post_type ) { - - $queried_post_type_object = get_post_type_object( $queried_post_type ); - - $type_where = '(' . $wpdb->prepare( "{$wpdb->posts}.post_type = %s AND (", $queried_post_type ); - - // Public statuses. - $public_statuses = get_post_stati( array( 'public' => true ) ); - $status_clauses = array(); - foreach ( $public_statuses as $public_status ) { - $status_clauses[] = "{$wpdb->posts}.post_status = '$public_status'"; - } - $type_where .= implode( ' OR ', $status_clauses ); - - // Add protected states that should show in the admin all list. - if ( $this->is_admin ) { - $admin_all_statuses = get_post_stati( - array( - 'protected' => true, - 'show_in_admin_all_list' => true, - ) - ); - foreach ( $admin_all_statuses as $admin_all_status ) { - $type_where .= " OR {$wpdb->posts}.post_status = '$admin_all_status'"; - } - } + $where .= " AND ({$wpdb->posts}.post_status = 'publish'"; - // Add private states that are visible to current user. - if ( is_user_logged_in() && $queried_post_type_object instanceof WP_Post_Type ) { - $read_private_cap = $queried_post_type_object->cap->read_private_posts; - $private_statuses = get_post_stati( array( 'private' => true ) ); - foreach ( $private_statuses as $private_status ) { - $type_where .= current_user_can( $read_private_cap ) ? " \nOR {$wpdb->posts}.post_status = '$private_status'" : " \nOR ({$wpdb->posts}.post_author = $user_id AND {$wpdb->posts}.post_status = '$private_status')"; - } - } - - $type_where .= '))'; + // Add public states. + $public_states = get_post_stati( array( 'public' => true ) ); + foreach ( (array) $public_states as $state ) { + if ( 'publish' === $state ) { // Publish is hard-coded above. + continue; + } + $where .= " OR {$wpdb->posts}.post_status = '$state'"; + } - $status_type_clauses[] = $type_where; + 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 ) { + $where .= " OR {$wpdb->posts}.post_status = '$state'"; } + } - if ( ! empty( $status_type_clauses ) ) { - $where .= ' AND (' . implode( ' OR ', $status_type_clauses ) . ')'; + if ( is_user_logged_in() ) { + // Add private states that are limited to viewing by the author of a post or someone who has caps to read private states. + $private_states = get_post_stati( array( 'private' => true ) ); + foreach ( (array) $private_states as $state ) { + $where .= current_user_can( $read_private_cap ) ? " OR {$wpdb->posts}.post_status = '$state'" : " OR {$wpdb->posts}.post_author = $user_id AND {$wpdb->posts}.post_status = '$state'"; } - } else { - $where .= ' AND 1=0 '; } - } else { - $where .= $post_type_where; + + $where .= ')'; } /* @@ -2708,25 +2513,25 @@ public function get_posts() { /** * Filters the WHERE clause of the query. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $where The WHERE clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $where = apply_filters_ref_array( 'posts_where', array( $where, &$this ) ); /** * Filters the JOIN clause of the query. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $join The JOIN clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $join = apply_filters_ref_array( 'posts_join', array( $join, &$this ) ); } - // Paging. + // Paging if ( empty( $q['nopaging'] ) && ! $this->is_singular ) { $page = absint( $q['paged'] ); if ( ! $page ) { @@ -2743,13 +2548,13 @@ public function get_posts() { $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page']; } - // Comments feeds. + // Comments feeds if ( $this->is_comment_feed && ! $this->is_singular ) { if ( $this->is_archive || $this->is_search ) { - $cjoin = "JOIN {$wpdb->posts} ON ( {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID ) $join "; + $cjoin = "JOIN {$wpdb->posts} ON ({$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID) $join "; $cwhere = "WHERE comment_approved = '1' $where"; $cgroupby = "{$wpdb->comments}.comment_id"; - } else { // Other non-singular, e.g. front. + } else { // Other non singular e.g. front $cjoin = "JOIN {$wpdb->posts} ON ( {$wpdb->comments}.comment_post_ID = {$wpdb->posts}.ID )"; $cwhere = "WHERE ( post_status = 'publish' OR ( post_status = 'inherit' AND post_type = 'attachment' ) ) AND comment_approved = '1'"; $cgroupby = ''; @@ -2759,74 +2564,59 @@ public function get_posts() { /** * Filters the JOIN clause of the comments feed query before sending. * - * @since 2.2.0 + * @since WP-2.2.0 * * @param string $cjoin The JOIN clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $cjoin = apply_filters_ref_array( 'comment_feed_join', array( $cjoin, &$this ) ); /** * Filters the WHERE clause of the comments feed query before sending. * - * @since 2.2.0 + * @since WP-2.2.0 * * @param string $cwhere The WHERE clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $cwhere = apply_filters_ref_array( 'comment_feed_where', array( $cwhere, &$this ) ); /** * Filters the GROUP BY clause of the comments feed query before sending. * - * @since 2.2.0 + * @since WP-2.2.0 * * @param string $cgroupby The GROUP BY clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $cgroupby = apply_filters_ref_array( 'comment_feed_groupby', array( $cgroupby, &$this ) ); /** * Filters the ORDER BY clause of the comments feed query before sending. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $corderby The ORDER BY clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $corderby = apply_filters_ref_array( 'comment_feed_orderby', array( 'comment_date_gmt DESC', &$this ) ); /** * Filters the LIMIT clause of the comments feed query before sending. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $climits The JOIN clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option( 'posts_per_rss' ), &$this ) ); } - $cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : ''; $corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : ''; - $climits = ( ! empty( $climits ) ) ? $climits : ''; - - $comments_request = "SELECT $distinct {$wpdb->comments}.comment_ID FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits"; - $key = md5( $comments_request ); - $last_changed = wp_cache_get_last_changed( 'comment' ) . ':' . wp_cache_get_last_changed( 'posts' ); - - $cache_key = "comment_feed:$key:$last_changed"; - $comment_ids = wp_cache_get( $cache_key, 'comment' ); - if ( false === $comment_ids ) { - $comment_ids = $wpdb->get_col( $comments_request ); - wp_cache_add( $cache_key, $comment_ids, 'comment' ); - } - _prime_comment_caches( $comment_ids ); - - // Convert to WP_Comment. - /** @var WP_Comment[] */ - $this->comments = array_map( 'get_comment', $comment_ids ); + $comments = (array) $wpdb->get_results( "SELECT $distinct {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits" ); + // Convert to WP_Comment + $this->comments = array_map( 'get_comment', $comments ); $this->comment_count = count( $this->comments ); $post_ids = array(); @@ -2835,7 +2625,7 @@ public function get_posts() { $post_ids[] = (int) $comment->comment_post_ID; } - $post_ids = implode( ',', $post_ids ); + $post_ids = join( ',', $post_ids ); $join = ''; if ( $post_ids ) { $where = "AND {$wpdb->posts}.ID IN ($post_ids) "; @@ -2856,20 +2646,20 @@ public function get_posts() { * * Specifically for manipulating paging queries. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $where The WHERE clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $where = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) ); /** * Filters the GROUP BY clause of the query. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $groupby The GROUP BY clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $groupby = apply_filters_ref_array( 'posts_groupby', array( $groupby, &$this ) ); @@ -2878,50 +2668,50 @@ public function get_posts() { * * Specifically for manipulating paging queries. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $join The JOIN clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $join = apply_filters_ref_array( 'posts_join_paged', array( $join, &$this ) ); /** * Filters the ORDER BY clause of the query. * - * @since 1.5.1 + * @since WP-1.5.1 * * @param string $orderby The ORDER BY clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $orderby = apply_filters_ref_array( 'posts_orderby', array( $orderby, &$this ) ); /** * Filters the DISTINCT clause of the query. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $distinct The DISTINCT clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $distinct = apply_filters_ref_array( 'posts_distinct', array( $distinct, &$this ) ); /** * Filters the LIMIT clause of the query. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $limits The LIMIT clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) ); /** * Filters the SELECT clause of the query. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $fields The SELECT clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $fields = apply_filters_ref_array( 'posts_fields', array( $fields, &$this ) ); @@ -2929,22 +2719,12 @@ public function get_posts() { * Filters all query clauses at once, for convenience. * * Covers the WHERE, GROUP BY, JOIN, ORDER BY, DISTINCT, - * fields (SELECT), and LIMIT clauses. - * - * @since 3.1.0 + * fields (SELECT), and LIMITS clauses. * - * @param string[] $clauses { - * Associative array of the clauses for the query. + * @since WP-3.1.0 * - * @type string $where The WHERE clause of the query. - * @type string $groupby The GROUP BY clause of the query. - * @type string $join The JOIN clause of the query. - * @type string $orderby The ORDER BY clause of the query. - * @type string $distinct The DISTINCT clause of the query. - * @type string $fields The SELECT clause of the query. - * @type string $limits The LIMIT clause of the query. - * } - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param array $clauses The list of clauses for the query. + * @param WP_Query $this The WP_Query instance (passed by reference). */ $clauses = (array) apply_filters_ref_array( 'posts_clauses', array( compact( $pieces ), &$this ) ); @@ -2962,7 +2742,7 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param string $selection The assembled selection query. */ @@ -2978,10 +2758,10 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $where The WHERE clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $where = apply_filters_ref_array( 'posts_where_request', array( $where, &$this ) ); @@ -2990,10 +2770,10 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $groupby The GROUP BY clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $groupby = apply_filters_ref_array( 'posts_groupby_request', array( $groupby, &$this ) ); @@ -3002,10 +2782,10 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $join The JOIN clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $join = apply_filters_ref_array( 'posts_join_request', array( $join, &$this ) ); @@ -3014,10 +2794,10 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $orderby The ORDER BY clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $orderby = apply_filters_ref_array( 'posts_orderby_request', array( $orderby, &$this ) ); @@ -3026,10 +2806,10 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $distinct The DISTINCT clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $distinct = apply_filters_ref_array( 'posts_distinct_request', array( $distinct, &$this ) ); @@ -3038,10 +2818,10 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $fields The SELECT clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $fields = apply_filters_ref_array( 'posts_fields_request', array( $fields, &$this ) ); @@ -3050,10 +2830,10 @@ public function get_posts() { * * For use by caching plugins. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $limits The LIMIT clause of the query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $limits = apply_filters_ref_array( 'post_limits_request', array( $limits, &$this ) ); @@ -3063,22 +2843,12 @@ public function get_posts() { * For use by caching plugins. * * Covers the WHERE, GROUP BY, JOIN, ORDER BY, DISTINCT, - * fields (SELECT), and LIMIT clauses. + * fields (SELECT), and LIMITS clauses. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string[] $clauses { - * Associative array of the clauses for the query. - * - * @type string $where The WHERE clause of the query. - * @type string $groupby The GROUP BY clause of the query. - * @type string $join The JOIN clause of the query. - * @type string $orderby The ORDER BY clause of the query. - * @type string $distinct The DISTINCT clause of the query. - * @type string $fields The SELECT clause of the query. - * @type string $limits The LIMIT clause of the query. - * } - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param array $pieces The pieces of the query. + * @param WP_Query $this The WP_Query instance (passed by reference). */ $clauses = (array) apply_filters_ref_array( 'posts_clauses_request', array( compact( $pieces ), &$this ) ); @@ -3103,25 +2873,17 @@ public function get_posts() { $found_rows = 'SQL_CALC_FOUND_ROWS'; } - $old_request = " - SELECT $found_rows $distinct $fields - FROM {$wpdb->posts} $join - WHERE 1=1 $where - $groupby - $orderby - $limits - "; - + $old_request = "SELECT $found_rows $distinct $fields FROM {$wpdb->posts} $join WHERE 1=1 $where $groupby $orderby $limits"; $this->request = $old_request; if ( ! $q['suppress_filters'] ) { /** * Filters the completed SQL query before sending. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $request The complete SQL query. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $this->request = apply_filters_ref_array( 'posts_request', array( $this->request, &$this ) ); } @@ -3129,109 +2891,30 @@ public function get_posts() { /** * Filters the posts array before the query takes place. * - * Return a non-null value to bypass WordPress' default post queries. + * Return a non-null value to bypass ClassicPress's default post queries. * * Filtering functions that require pagination information are encouraged to set * the `found_posts` and `max_num_pages` properties of the WP_Query object, * passed to the filter by reference. If WP_Query does not perform a database * query, it will not have enough information to generate these values itself. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Post[]|int[]|null $posts Return an array of post data to short-circuit WP's query, - * or null to allow WP to run its normal queries. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param array|null $posts Return an array of post data to short-circuit WP's query, + * or null to allow WP to run its normal queries. + * @param WP_Query $this The WP_Query instance (passed by reference). */ $this->posts = apply_filters_ref_array( 'posts_pre_query', array( null, &$this ) ); - /* - * Ensure the ID database query is able to be cached. - * - * Random queries are expected to have unpredictable results and - * cannot be cached. Note the space before `RAND` in the string - * search, that to ensure against a collision with another - * function. - * - * If `$fields` has been modified by the `posts_fields`, - * `posts_fields_request`, `post_clauses` or `posts_clauses_request` - * filters, then caching is disabled to prevent caching collisions. - */ - $id_query_is_cacheable = ! str_contains( strtoupper( $orderby ), ' RAND(' ); - - $cacheable_field_values = array( - "{$wpdb->posts}.*", - "{$wpdb->posts}.ID, {$wpdb->posts}.post_parent", - "{$wpdb->posts}.ID", - ); - - if ( ! in_array( $fields, $cacheable_field_values, true ) ) { - $id_query_is_cacheable = false; - } - - if ( $q['cache_results'] && $id_query_is_cacheable ) { - $new_request = str_replace( $fields, "{$wpdb->posts}.*", $this->request ); - $cache_key = $this->generate_cache_key( $q, $new_request ); - - $cache_found = false; - if ( null === $this->posts ) { - $cached_results = wp_cache_get( $cache_key, 'posts', false, $cache_found ); - - if ( $cached_results ) { - if ( 'ids' === $q['fields'] ) { - /** @var int[] */ - $this->posts = array_map( 'intval', $cached_results['posts'] ); - } else { - _prime_post_caches( $cached_results['posts'], $q['update_post_term_cache'], $q['update_post_meta_cache'] ); - /** @var WP_Post[] */ - $this->posts = array_map( 'get_post', $cached_results['posts'] ); - } - - $this->post_count = count( $this->posts ); - $this->found_posts = $cached_results['found_posts']; - $this->max_num_pages = $cached_results['max_num_pages']; - - if ( 'ids' === $q['fields'] ) { - return $this->posts; - } elseif ( 'id=>parent' === $q['fields'] ) { - /** @var int[] */ - $post_parents = array(); - - foreach ( $this->posts as $key => $post ) { - $obj = new stdClass(); - $obj->ID = (int) $post->ID; - $obj->post_parent = (int) $post->post_parent; - - $this->posts[ $key ] = $obj; - - $post_parents[ $obj->ID ] = $obj->post_parent; - } - - return $post_parents; - } - } - } - } - if ( 'ids' === $q['fields'] ) { if ( null === $this->posts ) { $this->posts = $wpdb->get_col( $this->request ); } - /** @var int[] */ $this->posts = array_map( 'intval', $this->posts ); $this->post_count = count( $this->posts ); $this->set_found_posts( $q, $limits ); - if ( $q['cache_results'] && $id_query_is_cacheable ) { - $cache_value = array( - 'posts' => $this->posts, - 'found_posts' => $this->found_posts, - 'max_num_pages' => $this->max_num_pages, - ); - - wp_cache_set( $cache_key, $cache_value, 'posts' ); - } - return $this->posts; } @@ -3243,29 +2926,15 @@ public function get_posts() { $this->post_count = count( $this->posts ); $this->set_found_posts( $q, $limits ); - /** @var int[] */ - $post_parents = array(); - $post_ids = array(); - + $r = array(); foreach ( $this->posts as $key => $post ) { $this->posts[ $key ]->ID = (int) $post->ID; $this->posts[ $key ]->post_parent = (int) $post->post_parent; - $post_parents[ (int) $post->ID ] = (int) $post->post_parent; - $post_ids[] = (int) $post->ID; + $r[ (int) $post->ID ] = (int) $post->post_parent; } - if ( $q['cache_results'] && $id_query_is_cacheable ) { - $cache_value = array( - 'posts' => $post_ids, - 'found_posts' => $this->found_posts, - 'max_num_pages' => $this->max_num_pages, - ); - - wp_cache_set( $cache_key, $cache_value, 'posts' ); - } - - return $post_parents; + return $r; } if ( null === $this->posts ) { @@ -3278,41 +2947,34 @@ public function get_posts() { * (and then individually fetch each post by ID), rather than fetching every * complete row at once. One massive result vs. many small results. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param bool $split_the_query Whether or not to split the query. - * @param WP_Query $query The WP_Query instance. + * @param WP_Query $this The WP_Query instance. */ $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. + // First get the IDs and then fill in the objects - $this->request = " - SELECT $found_rows $distinct {$wpdb->posts}.ID - FROM {$wpdb->posts} $join - WHERE 1=1 $where - $groupby - $orderby - $limits - "; + $this->request = "SELECT $found_rows $distinct {$wpdb->posts}.ID FROM {$wpdb->posts} $join WHERE 1=1 $where $groupby $orderby $limits"; /** * Filters the Post IDs SQL request before sending. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $request The post ID request. - * @param WP_Query $query The WP_Query instance. + * @param WP_Query $this The WP_Query instance. */ $this->request = apply_filters( 'posts_request_ids', $this->request, $this ); - $post_ids = $wpdb->get_col( $this->request ); + $ids = $wpdb->get_col( $this->request ); - if ( $post_ids ) { - $this->posts = $post_ids; + if ( $ids ) { + $this->posts = $ids; $this->set_found_posts( $q, $limits ); - _prime_post_caches( $post_ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] ); + _prime_post_caches( $ids, $q['update_post_term_cache'], $q['update_post_meta_cache'] ); } else { $this->posts = array(); } @@ -3324,30 +2986,17 @@ public function get_posts() { // Convert to WP_Post objects. if ( $this->posts ) { - /** @var WP_Post[] */ $this->posts = array_map( 'get_post', $this->posts ); } - if ( $q['cache_results'] && $id_query_is_cacheable && ! $cache_found ) { - $post_ids = wp_list_pluck( $this->posts, 'ID' ); - - $cache_value = array( - 'posts' => $post_ids, - 'found_posts' => $this->found_posts, - 'max_num_pages' => $this->max_num_pages, - ); - - wp_cache_set( $cache_key, $cache_value, 'posts' ); - } - if ( ! $q['suppress_filters'] ) { /** * Filters the raw post results array, prior to status checks. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param WP_Post[] $posts Array of post objects. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param array $posts The post results array. + * @param WP_Query $this The WP_Query instance (passed by reference). */ $this->posts = apply_filters_ref_array( 'posts_results', array( $this->posts, &$this ) ); } @@ -3370,65 +3019,46 @@ public function get_posts() { /** This filter is documented in wp-includes/query.php */ $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option( 'posts_per_rss' ), &$this ) ); - $comments_request = "SELECT {$wpdb->comments}.comment_ID FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits"; - - $comment_key = md5( $comments_request ); - $comment_last_changed = wp_cache_get_last_changed( 'comment' ); - - $comment_cache_key = "comment_feed:$comment_key:$comment_last_changed"; - $comment_ids = wp_cache_get( $comment_cache_key, 'comment' ); - if ( false === $comment_ids ) { - $comment_ids = $wpdb->get_col( $comments_request ); - wp_cache_add( $comment_cache_key, $comment_ids, 'comment' ); - } - _prime_comment_caches( $comment_ids ); - - // Convert to WP_Comment. - /** @var WP_Comment[] */ - $this->comments = array_map( 'get_comment', $comment_ids ); + $comments_request = "SELECT {$wpdb->comments}.* FROM {$wpdb->comments} $cjoin $cwhere $cgroupby $corderby $climits"; + $comments = $wpdb->get_results( $comments_request ); + // Convert to WP_Comment + $this->comments = array_map( 'get_comment', $comments ); $this->comment_count = count( $this->comments ); } // 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] ); - if ( 'attachment' === $this->posts[0]->post_type && 0 === (int) $this->posts[0]->post_parent ) { $this->is_page = false; $this->is_single = true; $this->is_attachment = true; } + $post_status_obj = get_post_status_object( $status ); + // If the post_status was specifically requested, let it pass through. - if ( ! in_array( $status, $q_status, true ) ) { - $post_status_obj = get_post_status_object( $status ); + if ( ! $post_status_obj->public && ! in_array( $status, $q_status, true ) ) { - if ( $post_status_obj && ! $post_status_obj->public ) { - if ( ! is_user_logged_in() ) { - // User must be logged in to view unpublished posts. - $this->posts = array(); - } else { - if ( $post_status_obj->protected ) { - // User must have edit permissions on the draft to preview. - if ( ! current_user_can( $edit_cap, $this->posts[0]->ID ) ) { - $this->posts = array(); - } else { - $this->is_preview = true; - if ( 'future' !== $status ) { - $this->posts[0]->post_date = current_time( 'mysql' ); - } - } - } elseif ( $post_status_obj->private ) { - if ( ! current_user_can( $read_cap, $this->posts[0]->ID ) ) { - $this->posts = array(); - } + if ( ! is_user_logged_in() ) { + // User must be logged in to view unpublished posts. + $this->posts = array(); + } else { + if ( $post_status_obj->protected ) { + // User must have edit permissions on the draft to preview. + if ( ! current_user_can( $edit_cap, $this->posts[0]->ID ) ) { + $this->posts = array(); } else { + $this->is_preview = true; + if ( 'future' !== $status ) { + $this->posts[0]->post_date = current_time( 'mysql' ); + } + } + } elseif ( $post_status_obj->private ) { + if ( ! current_user_can( $read_cap, $this->posts[0]->ID ) ) { $this->posts = array(); } - } - } elseif ( ! $post_status_obj ) { - // Post status is not registered, assume it's not public. - if ( ! current_user_can( $edit_cap, $this->posts[0]->ID ) ) { + } else { $this->posts = array(); } } @@ -3438,16 +3068,16 @@ public function get_posts() { /** * Filters the single post for preview mode. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param WP_Post $post_preview The Post object. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $this->posts[0] = get_post( apply_filters_ref_array( 'the_preview', array( $this->posts[0], &$this ) ) ); } } - // Put sticky posts at the top of the posts array. + // Put sticky posts at the top of the posts array $sticky_posts = get_option( 'sticky_posts' ); if ( $this->is_home && $page <= 1 && is_array( $sticky_posts ) && ! empty( $sticky_posts ) && ! $q['ignore_sticky_posts'] ) { $num_posts = count( $this->posts ); @@ -3456,9 +3086,9 @@ public function get_posts() { for ( $i = 0; $i < $num_posts; $i++ ) { if ( in_array( $this->posts[ $i ]->ID, $sticky_posts, true ) ) { $sticky_post = $this->posts[ $i ]; - // Remove sticky from current position. + // Remove sticky from current position array_splice( $this->posts, $i, 1 ); - // Move to front, after other stickies. + // 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. $sticky_offset++; @@ -3473,19 +3103,14 @@ public function get_posts() { $sticky_posts = array_diff( $sticky_posts, $q['post__not_in'] ); } - // Fetch sticky posts that weren't in the query results. + // Fetch sticky posts that weren't in the query results if ( ! empty( $sticky_posts ) ) { $stickies = get_posts( array( - 'post__in' => $sticky_posts, - 'post_type' => $post_type, - 'post_status' => 'publish', - 'posts_per_page' => count( $sticky_posts ), - 'suppress_filters' => $q['suppress_filters'], - 'cache_results' => $q['cache_results'], - 'update_post_meta_cache' => $q['update_post_meta_cache'], - 'update_post_term_cache' => $q['update_post_term_cache'], - 'lazy_load_term_meta' => $q['lazy_load_term_meta'], + 'post__in' => $sticky_posts, + 'post_type' => $post_type, + 'post_status' => 'publish', + 'nopaging' => true, ) ); @@ -3496,15 +3121,20 @@ public function get_posts() { } } + // If comments have been fetched as part of the query, make sure comment meta lazy-loading is set up. + if ( ! empty( $this->comments ) ) { + wp_queue_comments_for_comment_meta_lazyload( $this->comments ); + } + if ( ! $q['suppress_filters'] ) { /** * Filters the array of retrieved posts after they've been fetched and * internally processed. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param WP_Post[] $posts Array of post objects. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param array $posts The array of retrieved posts. + * @param WP_Query $this The WP_Query instance (passed by reference). */ $this->posts = apply_filters_ref_array( 'the_posts', array( $this->posts, &$this ) ); } @@ -3514,24 +3144,18 @@ public function get_posts() { if ( $this->posts ) { $this->post_count = count( $this->posts ); - /** @var WP_Post[] */ $this->posts = array_map( 'get_post', $this->posts ); if ( $q['cache_results'] ) { update_post_caches( $this->posts, $post_type, $q['update_post_term_cache'], $q['update_post_meta_cache'] ); } - /** @var WP_Post */ $this->post = reset( $this->posts ); } else { $this->post_count = 0; $this->posts = array(); } - if ( ! empty( $this->posts ) && $q['update_menu_item_cache'] ) { - update_menu_item_cache( $this->posts ); - } - if ( $q['lazy_load_term_meta'] ) { wp_queue_posts_for_term_meta_lazyload( $this->posts ); } @@ -3543,16 +3167,13 @@ public function get_posts() { * Set up the amount of found posts and the number of pages (if limit clause was used) * for the current query. * - * @since 3.5.0 - * - * @global wpdb $wpdb WordPress database abstraction object. + * @since WP-3.5.0 * * @param array $q Query variables. * @param string $limits LIMIT clauses of the query. */ private function set_found_posts( $q, $limits ) { global $wpdb; - // Bail if posts is an empty array. Continue if posts is an empty string, // null, or false to accommodate caching plugins that fill posts later. if ( $q['no_found_rows'] || ( is_array( $this->posts ) && ! $this->posts ) ) { @@ -3563,10 +3184,10 @@ private function set_found_posts( $q, $limits ) { /** * Filters the query to run for retrieving the found posts. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $found_posts_query The query to run to find the found posts. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $found_posts_query = apply_filters_ref_array( 'found_posts_query', array( 'SELECT FOUND_ROWS()', &$this ) ); @@ -3586,10 +3207,10 @@ private function set_found_posts( $q, $limits ) { /** * Filters the number of found posts for the query. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param int $found_posts The number of posts found. - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ $this->found_posts = (int) apply_filters_ref_array( 'found_posts', array( $this->found_posts, &$this ) ); @@ -3601,7 +3222,7 @@ private function set_found_posts( $q, $limits ) { /** * Set up the next post and iterate current post index. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return WP_Post Next post. */ @@ -3609,7 +3230,6 @@ public function next_post() { $this->current_post++; - /** @var WP_Post */ $this->post = $this->posts[ $this->current_post ]; return $this->post; } @@ -3620,35 +3240,21 @@ public function next_post() { * Retrieves the next post, sets up the post, sets the 'in the loop' * property to true. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @global WP_Post $post Global post object. + * @global WP_Post $post */ public function the_post() { global $post; - - if ( ! $this->in_the_loop ) { - // Only prime the post cache for queries limited to the ID field. - $post_ids = array_filter( $this->posts, 'is_numeric' ); - // Exclude any falsey values, such as 0. - $post_ids = array_filter( $post_ids ); - if ( $post_ids ) { - _prime_post_caches( $post_ids, $this->query_vars['update_post_term_cache'], $this->query_vars['update_post_meta_cache'] ); - } - $post_objects = array_map( 'get_post', $this->posts ); - update_post_author_caches( $post_objects ); - } - $this->in_the_loop = true; - $this->before_loop = false; if ( -1 == $this->current_post ) { // Loop has just started. /** * Fires once the loop is started. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ do_action_ref_array( 'loop_start', array( &$this ) ); } @@ -3662,9 +3268,9 @@ public function the_post() { * * Calls the {@see 'loop_end'} action when the loop is complete. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return bool True if posts are available, false if end of the loop. + * @return bool True if posts are available, false if end of loop. */ public function have_posts() { if ( $this->current_post + 1 < $this->post_count ) { @@ -3673,22 +3279,20 @@ public function have_posts() { /** * Fires once the loop has ended. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param WP_Query $query The WP_Query instance (passed by reference). + * @param WP_Query $this The WP_Query instance (passed by reference). */ do_action_ref_array( 'loop_end', array( &$this ) ); - // Do some cleaning up after the loop. + // Do some cleaning up after the loop $this->rewind_posts(); } elseif ( 0 === $this->post_count ) { - $this->before_loop = false; - /** * Fires if no results are found in a post query. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @param WP_Query $query The WP_Query instance. + * @param WP_Query $this The WP_Query instance. */ do_action( 'loop_no_results', $this ); } @@ -3700,7 +3304,7 @@ public function have_posts() { /** * Rewind the posts and reset post index. * - * @since 1.5.0 + * @since WP-1.5.0 */ public function rewind_posts() { $this->current_post = -1; @@ -3712,14 +3316,13 @@ public function rewind_posts() { /** * Iterate current comment index and return WP_Comment object. * - * @since 2.2.0 + * @since WP-2.2.0 * * @return WP_Comment Comment object. */ public function next_comment() { $this->current_comment++; - /** @var WP_Comment */ $this->comment = $this->comments[ $this->current_comment ]; return $this->comment; } @@ -3727,9 +3330,8 @@ public function next_comment() { /** * Sets up the current comment. * - * @since 2.2.0 - * - * @global WP_Comment $comment Global comment object. + * @since WP-2.2.0 + * @global WP_Comment $comment Current comment. */ public function the_comment() { global $comment; @@ -3740,7 +3342,7 @@ public function the_comment() { /** * Fires once the comment loop is started. * - * @since 2.2.0 + * @since WP-2.2.0 */ do_action( 'comment_loop_start' ); } @@ -3751,9 +3353,9 @@ public function the_comment() { * * Automatically rewinds comments when finished. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @return bool True if comments are available, false if no more comments. + * @return bool True, if more comments. False, if no more posts. */ public function have_comments() { if ( $this->current_comment + 1 < $this->comment_count ) { @@ -3768,7 +3370,7 @@ public function have_comments() { /** * Rewind the comments, resets the comment index and comment to first. * - * @since 2.2.0 + * @since WP-2.2.0 */ public function rewind_comments() { $this->current_comment = -1; @@ -3778,14 +3380,12 @@ public function rewind_comments() { } /** - * Sets up the WordPress query by parsing query string. + * Sets up the ClassicPress query by parsing query string. * - * @since 1.5.0 - * - * @see WP_Query::parse_query() for all available arguments. + * @since WP-1.5.0 * * @param string|array $query URL query string or array of query arguments. - * @return WP_Post[]|int[] Array of post objects or post IDs. + * @return array List of posts. */ public function query( $query ) { $this->init(); @@ -3795,15 +3395,15 @@ public function query( $query ) { } /** - * Retrieves the currently queried object. + * Retrieve queried object. * * If queried object is not set, then the queried object will be set from * the category, tag, taxonomy, posts page, single post, page, or author * query variable. After it is set up, it will be returned. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return WP_Term|WP_Post_Type|WP_Post|WP_User|null The queried object. + * @return object */ public function get_queried_object() { if ( isset( $this->queried_object ) ) { @@ -3815,22 +3415,16 @@ public function get_queried_object() { if ( $this->is_category || $this->is_tag || $this->is_tax ) { if ( $this->is_category ) { - $cat = $this->get( 'cat' ); - $category_name = $this->get( 'category_name' ); - - if ( $cat ) { - $term = get_term( $cat, 'category' ); - } elseif ( $category_name ) { - $term = get_term_by( 'slug', $category_name, 'category' ); + if ( $this->get( 'cat' ) ) { + $term = get_term( $this->get( 'cat' ), 'category' ); + } elseif ( $this->get( 'category_name' ) ) { + $term = get_term_by( 'slug', $this->get( 'category_name' ), 'category' ); } } elseif ( $this->is_tag ) { - $tag_id = $this->get( 'tag_id' ); - $tag = $this->get( 'tag' ); - - if ( $tag_id ) { - $term = get_term( $tag_id, 'post_tag' ); - } elseif ( $tag ) { - $term = get_term_by( 'slug', $tag, 'post_tag' ); + if ( $this->get( 'tag_id' ) ) { + $term = get_term( $this->get( 'tag_id' ), 'post_tag' ); + } elseif ( $this->get( 'tag' ) ) { + $term = get_term_by( 'slug', $this->get( 'tag' ), 'post_tag' ); } } else { // For other tax queries, grab the first term from the first clause. @@ -3859,44 +3453,29 @@ public function get_queried_object() { } } elseif ( $this->is_post_type_archive ) { $post_type = $this->get( 'post_type' ); - if ( is_array( $post_type ) ) { $post_type = reset( $post_type ); } - $this->queried_object = get_post_type_object( $post_type ); } elseif ( $this->is_posts_page ) { - $page_for_posts = get_option( 'page_for_posts' ); - + $page_for_posts = get_option( 'page_for_posts' ); $this->queried_object = get_post( $page_for_posts ); $this->queried_object_id = (int) $this->queried_object->ID; } elseif ( $this->is_singular && ! empty( $this->post ) ) { $this->queried_object = $this->post; $this->queried_object_id = (int) $this->post->ID; } elseif ( $this->is_author ) { - $author = (int) $this->get( 'author' ); - $author_name = $this->get( 'author_name' ); - - if ( $author ) { - $this->queried_object_id = $author; - } elseif ( $author_name ) { - $user = get_user_by( 'slug', $author_name ); - - if ( $user ) { - $this->queried_object_id = $user->ID; - } - } - - $this->queried_object = get_userdata( $this->queried_object_id ); + $this->queried_object_id = (int) $this->get( 'author' ); + $this->queried_object = get_userdata( $this->queried_object_id ); } return $this->queried_object; } /** - * Retrieves the ID of the currently queried object. + * Retrieve ID of the current queried object. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return int */ @@ -3913,11 +3492,9 @@ public function get_queried_object_id() { /** * Constructor. * - * Sets up the WordPress query, if parameter is not empty. - * - * @since 1.5.0 + * Sets up the ClassicPress query, if parameter is not empty. * - * @see WP_Query::parse_query() for all available arguments. + * @since WP-1.5.0 * * @param string|array $query URL query string or array of vars. */ @@ -3930,7 +3507,7 @@ public function __construct( $query = '' ) { /** * Make private properties readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to get. * @return mixed Property. @@ -3944,7 +3521,7 @@ public function __get( $name ) { /** * Make private properties checkable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to check if set. * @return bool Whether the property is set. @@ -3958,15 +3535,15 @@ public function __isset( $name ) { /** * Make private/protected methods readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $name Method to call. - * @param array $arguments Arguments to pass when calling. + * @param callable $name Method to call. + * @param array $arguments Arguments to pass when calling. * @return mixed|false Return value of the callback, false otherwise. */ public function __call( $name, $arguments ) { if ( in_array( $name, $this->compat_methods, true ) ) { - return $this->$name( ...$arguments ); + return call_user_func_array( array( $this, $name ), $arguments ); } return false; } @@ -3974,19 +3551,11 @@ public function __call( $name, $arguments ) { /** * Is the query for an existing archive page? * - * Archive pages include category, tag, author, date, custom post type, - * and custom taxonomy based archives. - * - * @since 3.1.0 + * Month, Year, Category, Author, Post Type archive... * - * @see WP_Query::is_category() - * @see WP_Query::is_tag() - * @see WP_Query::is_author() - * @see WP_Query::is_date() - * @see WP_Query::is_post_type_archive() - * @see WP_Query::is_tax() + * @since WP-3.1.0 * - * @return bool Whether the query is for an existing archive page. + * @return bool */ public function is_archive() { return (bool) $this->is_archive; @@ -3995,11 +3564,10 @@ public function is_archive() { /** * Is the query for an existing post type archive page? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string|string[] $post_types Optional. Post type or array of posts types - * to check against. Default empty. - * @return bool Whether the query is for an existing post type archive page. + * @param mixed $post_types Optional. Post type or array of posts types to check against. + * @return bool */ public function is_post_type_archive( $post_types = '' ) { if ( empty( $post_types ) || ! $this->is_post_type_archive ) { @@ -4012,21 +3580,16 @@ public function is_post_type_archive( $post_types = '' ) { } $post_type_object = get_post_type_object( $post_type ); - if ( ! $post_type_object ) { - return false; - } - return in_array( $post_type_object->name, (array) $post_types, true ); } /** * Is the query for an existing attachment page? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param int|string|int[]|string[] $attachment Optional. Attachment ID, title, slug, or array of such - * to check against. Default empty. - * @return bool Whether the query is for an existing attachment page. + * @param mixed $attachment Attachment ID, title, slug, or array of such. + * @return bool */ public function is_attachment( $attachment = '' ) { if ( ! $this->is_attachment ) { @@ -4040,9 +3603,6 @@ public function is_attachment( $attachment = '' ) { $attachment = array_map( 'strval', (array) $attachment ); $post_obj = $this->get_queried_object(); - if ( ! $post_obj ) { - return false; - } if ( in_array( (string) $post_obj->ID, $attachment, true ) ) { return true; @@ -4060,11 +3620,10 @@ public function is_attachment( $attachment = '' ) { * If the $author parameter is specified, this function will additionally * check if the query is for one of the authors specified. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param int|string|int[]|string[] $author Optional. User ID, nickname, nicename, or array of such - * to check against. Default empty. - * @return bool Whether the query is for an existing author archive page. + * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames + * @return bool */ public function is_author( $author = '' ) { if ( ! $this->is_author ) { @@ -4076,9 +3635,6 @@ public function is_author( $author = '' ) { } $author_obj = $this->get_queried_object(); - if ( ! $author_obj ) { - return false; - } $author = array_map( 'strval', (array) $author ); @@ -4099,11 +3655,10 @@ public function is_author( $author = '' ) { * If the $category parameter is specified, this function will additionally * check if the query is for one of the categories specified. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param int|string|int[]|string[] $category Optional. Category ID, name, slug, or array of such - * to check against. Default empty. - * @return bool Whether the query is for an existing category archive page. + * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs. + * @return bool */ public function is_category( $category = '' ) { if ( ! $this->is_category ) { @@ -4115,9 +3670,6 @@ public function is_category( $category = '' ) { } $cat_obj = $this->get_queried_object(); - if ( ! $cat_obj ) { - return false; - } $category = array_map( 'strval', (array) $category ); @@ -4138,11 +3690,10 @@ public function is_category( $category = '' ) { * If the $tag parameter is specified, this function will additionally * check if the query is for one of the tags specified. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param int|string|int[]|string[] $tag Optional. Tag ID, name, slug, or array of such - * to check against. Default empty. - * @return bool Whether the query is for an existing tag archive page. + * @param mixed $tag Optional. Tag ID, name, slug, or array of Tag IDs, names, and slugs. + * @return bool */ public function is_tag( $tag = '' ) { if ( ! $this->is_tag ) { @@ -4154,9 +3705,6 @@ public function is_tag( $tag = '' ) { } $tag_obj = $this->get_queried_object(); - if ( ! $tag_obj ) { - return false; - } $tag = array_map( 'strval', (array) $tag ); @@ -4181,17 +3729,13 @@ public function is_tag( $tag = '' ) { * this function will additionally check if the query is for one of the terms * specified. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @global WP_Taxonomy[] $wp_taxonomies Registered taxonomies. + * @global array $wp_taxonomies * - * @param string|string[] $taxonomy Optional. Taxonomy slug or slugs to check against. - * Default empty. - * @param int|string|int[]|string[] $term Optional. Term ID, name, slug, or array of such - * to check against. Default empty. - * @return bool Whether the query is for an existing custom taxonomy archive page. - * True for custom taxonomy archive pages, false for built-in taxonomies - * (category and tag archives). + * @param mixed $taxonomy Optional. Taxonomy slug or slugs. + * @param mixed $term Optional. Term ID, name, slug or array of Term IDs, names, and slugs. + * @return bool True for custom taxonomy archive pages, false for built-in taxonomies (category and tag archives). */ public function is_tax( $taxonomy = '', $term = '' ) { global $wp_taxonomies; @@ -4213,7 +3757,7 @@ public function is_tax( $taxonomy = '', $term = '' ) { return false; } - // Only a taxonomy provided. + // Only a Taxonomy provided. if ( empty( $term ) ) { return true; } @@ -4230,13 +3774,13 @@ public function is_tax( $taxonomy = '', $term = '' ) { /** * Whether the current URL is within the comments popup window. * - * @since 3.1.0 - * @deprecated 4.5.0 + * @since WP-3.1.0 + * @deprecated WP-4.5.0 * - * @return false Always returns false. + * @return bool */ public function is_comments_popup() { - _deprecated_function( __FUNCTION__, '4.5.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.5.0' ); return false; } @@ -4244,9 +3788,9 @@ public function is_comments_popup() { /** * Is the query for an existing date archive? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for an existing date archive. + * @return bool */ public function is_date() { return (bool) $this->is_date; @@ -4255,9 +3799,9 @@ public function is_date() { /** * Is the query for an existing day archive? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for an existing day archive. + * @return bool */ public function is_day() { return (bool) $this->is_day; @@ -4266,31 +3810,28 @@ public function is_day() { /** * Is the query for a feed? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string|string[] $feeds Optional. Feed type or array of feed types - * to check against. Default empty. - * @return bool Whether the query is for a feed. + * @param string|array $feeds Optional feed types to check. + * @return bool */ public function is_feed( $feeds = '' ) { if ( empty( $feeds ) || ! $this->is_feed ) { return (bool) $this->is_feed; } - $qv = $this->get( 'feed' ); if ( 'feed' === $qv ) { $qv = get_default_feed(); } - return in_array( $qv, (array) $feeds, true ); } /** * Is the query for a comments feed? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for a comments feed. + * @return bool */ public function is_comment_feed() { return (bool) $this->is_comment_feed; @@ -4308,9 +3849,9 @@ public function is_comment_feed() { * * Otherwise the same as @see WP_Query::is_home() * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for the front page of the site. + * @return bool True, if front of site. */ public function is_front_page() { // Most likely case. @@ -4335,45 +3876,22 @@ public function is_front_page() { * If you set a static page for the front page of your site, this function will return * true only on the page you set as the "Posts page". * - * @since 3.1.0 - * * @see WP_Query::is_front_page() * - * @return bool Whether the query is for the blog homepage. + * @since WP-3.1.0 + * + * @return bool True if blog view homepage. */ public function is_home() { return (bool) $this->is_home; } - /** - * Is the query for the Privacy Policy page? - * - * This is the page which shows the Privacy Policy content of your site. - * - * Depends on the site's "Change your Privacy Policy page" Privacy Settings 'wp_page_for_privacy_policy'. - * - * This function will return true only on the page you set as the "Privacy Policy page". - * - * @since 5.2.0 - * - * @return bool Whether the query is for the Privacy Policy page. - */ - public function is_privacy_policy() { - if ( get_option( 'wp_page_for_privacy_policy' ) - && $this->is_page( get_option( 'wp_page_for_privacy_policy' ) ) - ) { - return true; - } else { - return false; - } - } - /** * Is the query for an existing month archive? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for an existing month archive. + * @return bool */ public function is_month() { return (bool) $this->is_month; @@ -4385,13 +3903,12 @@ public function is_month() { * If the $page parameter is specified, this function will additionally * check if the query is for one of the pages specified. * - * @since 3.1.0 - * * @see WP_Query::is_single() * @see WP_Query::is_singular() * - * @param int|string|int[]|string[] $page Optional. Page ID, title, slug, path, or array of such - * to check against. Default empty. + * @since WP-3.1.0 + * + * @param int|string|array $page Optional. Page ID, title, slug, path, or array of such. Default empty. * @return bool Whether the query is for an existing single page. */ public function is_page( $page = '' ) { @@ -4404,9 +3921,6 @@ public function is_page( $page = '' ) { } $page_obj = $this->get_queried_object(); - if ( ! $page_obj ) { - return false; - } $page = array_map( 'strval', (array) $page ); @@ -4433,11 +3947,11 @@ public function is_page( $page = '' ) { } /** - * Is the query for a paged result and not for the first page? + * Is the query for paged result and not for the first page? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for a paged result. + * @return bool */ public function is_paged() { return (bool) $this->is_paged; @@ -4446,42 +3960,31 @@ public function is_paged() { /** * Is the query for a post or page preview? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for a post or page preview. + * @return bool */ public function is_preview() { return (bool) $this->is_preview; } /** - * Is the query for the robots.txt file? + * Is the query for the robots file? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for the robots.txt file. + * @return bool */ public function is_robots() { return (bool) $this->is_robots; } - /** - * Is the query for the favicon.ico file? - * - * @since 5.4.0 - * - * @return bool Whether the query is for the favicon.ico file. - */ - public function is_favicon() { - return (bool) $this->is_favicon; - } - /** * Is the query for a search? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for a search. + * @return bool */ public function is_search() { return (bool) $this->is_search; @@ -4495,13 +3998,12 @@ public function is_search() { * If the $post parameter is specified, this function will additionally * check if the query is for one of the Posts specified. * - * @since 3.1.0 - * * @see WP_Query::is_page() * @see WP_Query::is_singular() * - * @param int|string|int[]|string[] $post Optional. Post ID, title, slug, path, or array of such - * to check against. Default empty. + * @since WP-3.1.0 + * + * @param int|string|array $post Optional. Post ID, title, slug, path, or array of such. Default empty. * @return bool Whether the query is for an existing single post. */ public function is_single( $post = '' ) { @@ -4514,9 +4016,6 @@ public function is_single( $post = '' ) { } $post_obj = $this->get_queried_object(); - if ( ! $post_obj ) { - return false; - } $post = array_map( 'strval', (array) $post ); @@ -4548,15 +4047,13 @@ public function is_single( $post = '' ) { * If the $post_types parameter is specified, this function will additionally * check if the query is for one of the Posts Types specified. * - * @since 3.1.0 - * * @see WP_Query::is_page() * @see WP_Query::is_single() * - * @param string|string[] $post_types Optional. Post type or array of post types - * to check against. Default empty. - * @return bool Whether the query is for an existing single post - * or any of the given post types. + * @since WP-3.1.0 + * + * @param string|array $post_types Optional. Post type or array of post types. Default empty. + * @return bool Whether the query is for an existing single post of any of the given post types. */ public function is_singular( $post_types = '' ) { if ( empty( $post_types ) || ! $this->is_singular ) { @@ -4564,9 +4061,6 @@ public function is_singular( $post_types = '' ) { } $post_obj = $this->get_queried_object(); - if ( ! $post_obj ) { - return false; - } return in_array( $post_obj->post_type, (array) $post_types, true ); } @@ -4574,9 +4068,9 @@ public function is_singular( $post_types = '' ) { /** * Is the query for a specific time? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for a specific time. + * @return bool */ public function is_time() { return (bool) $this->is_time; @@ -4585,9 +4079,9 @@ public function is_time() { /** * Is the query for a trackback endpoint call? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for a trackback endpoint call. + * @return bool */ public function is_trackback() { return (bool) $this->is_trackback; @@ -4596,9 +4090,9 @@ public function is_trackback() { /** * Is the query for an existing year archive? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is for an existing year archive. + * @return bool */ public function is_year() { return (bool) $this->is_year; @@ -4607,9 +4101,9 @@ public function is_year() { /** * Is the query a 404 (returns no results)? * - * @since 3.1.0 + * @since WP-3.1.0 * - * @return bool Whether the query is a 404 error. + * @return bool */ public function is_404() { return (bool) $this->is_404; @@ -4618,9 +4112,9 @@ public function is_404() { /** * Is the query for an embedded post? * - * @since 4.4.0 + * @since WP-4.4.0 * - * @return bool Whether the query is for an embedded post. + * @return bool */ public function is_embed() { return (bool) $this->is_embed; @@ -4629,11 +4123,11 @@ public function is_embed() { /** * Is the query the main query? * - * @since 3.3.0 + * @since WP-3.3.0 * - * @global WP_Query $wp_query WordPress Query object. + * @global WP_Query $wp_query Global WP_Query instance. * - * @return bool Whether the query is the main query. + * @return bool */ public function is_main_query() { global $wp_the_query; @@ -4643,18 +4137,18 @@ public function is_main_query() { /** * Set up global post data. * - * @since 4.1.0 - * @since 4.4.0 Added the ability to pass a post ID to `$post`. + * @since WP-4.1.0 + * @since WP-4.4.0 Added the ability to pass a post ID to `$post`. * - * @global int $id - * @global WP_User $authordata - * @global string $currentday - * @global string $currentmonth - * @global int $page - * @global array $pages - * @global int $multipage - * @global int $more - * @global int $numpages + * @global int $id + * @global WP_User $authordata + * @global string|int|bool $currentday + * @global string|int|bool $currentmonth + * @global int $page + * @global array $pages + * @global int $multipage + * @global int $more + * @global int $numpages * * @param WP_Post|object|int $post WP_Post instance or Post ID/object. * @return true True when finished. @@ -4688,11 +4182,11 @@ public function setup_postdata( $post ) { /** * Fires once the post data has been set up. * - * @since 2.8.0 - * @since 4.1.0 Introduced `$query` parameter. + * @since WP-2.8.0 + * @since WP-4.1.0 Introduced `$this` parameter. * - * @param WP_Post $post The Post object (passed by reference). - * @param WP_Query $query The current Query object (passed by reference). + * @param WP_Post $post The Post object (passed by reference). + * @param WP_Query $this The current Query object (passed by reference). */ do_action_ref_array( 'the_post', array( &$post, &$this ) ); @@ -4702,10 +4196,10 @@ public function setup_postdata( $post ) { /** * Generate post data. * - * @since 5.2.0 + * @since WP-5.2.0 * * @param WP_Post|object|int $post WP_Post instance or Post ID/object. - * @return array|false Elements of post or false on failure. + * @return array|bool $elements Elements of post or false on failure. */ public function generate_postdata( $post ) { @@ -4748,10 +4242,6 @@ public function generate_postdata( $post ) { $content = str_replace( "\n<!--nextpage-->", '<!--nextpage-->', $content ); $content = str_replace( "<!--nextpage-->\n", '<!--nextpage-->', $content ); - // Remove the nextpage block delimiters, to avoid invalid block structures in the split content. - $content = str_replace( '<!-- wp:nextpage -->', '', $content ); - $content = str_replace( '<!-- /wp:nextpage -->', '', $content ); - // Ignore nextpage at the beginning of the content. if ( 0 === strpos( $content, '<!--nextpage-->' ) ) { $content = substr( $content, 15 ); @@ -4768,10 +4258,11 @@ public function generate_postdata( $post ) { * "Pages" are determined by splitting the post content based on the presence * of `<!-- nextpage -->` tags. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param string[] $pages Array of "pages" from the post content split by `<!-- nextpage -->` tags. - * @param WP_Post $post Current post object. + * @param array $pages Array of "pages" derived from the post content. + * of `<!-- nextpage -->` tags.. + * @param WP_Post $post Current post object. */ $pages = apply_filters( 'content_pagination', $pages, $post ); @@ -4786,73 +4277,28 @@ public function generate_postdata( $post ) { $multipage = 0; } + /** + * Fires once the post data has been setup. + * + * @since WP-2.8.0 + * @since WP-4.1.0 Introduced `$this` parameter. + * + * @param WP_Post $post The Post object (passed by reference). + * @param WP_Query $this The current Query object (passed by reference). + */ + do_action_ref_array( 'the_post', array( &$post, &$this ) ); + $elements = compact( 'id', 'authordata', 'currentday', 'currentmonth', 'page', 'pages', 'multipage', 'more', 'numpages' ); return $elements; } - - /** - * Generate cache key. - * - * @since 6.1.0 - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $args Query arguments. - * @param string $sql SQL statement. - * - * @return string Cache key. - */ - protected function generate_cache_key( array $args, $sql ) { - global $wpdb; - - unset( - $args['cache_results'], - $args['fields'], - $args['lazy_load_term_meta'], - $args['update_post_meta_cache'], - $args['update_post_term_cache'], - $args['update_menu_item_cache'], - $args['suppress_filters'] - ); - - $placeholder = $wpdb->placeholder_escape(); - array_walk_recursive( - $args, - /* - * Replace wpdb placeholders with the string used in the database - * query to avoid unreachable cache keys. This is necessary because - * the placeholder is randomly generated in each request. - * - * $value is passed by reference to allow it to be modified. - * array_walk_recursive() does not return an array. - */ - function ( &$value ) use ( $wpdb, $placeholder ) { - if ( is_string( $value ) && str_contains( $value, $placeholder ) ) { - $value = $wpdb->remove_placeholder_escape( $value ); - } - } - ); - - // Replace wpdb placeholder in the SQL statement used by the cache key. - $sql = $wpdb->remove_placeholder_escape( $sql ); - $key = md5( serialize( $args ) . $sql ); - - $last_changed = wp_cache_get_last_changed( 'posts' ); - if ( ! empty( $this->tax_query->queries ) ) { - $last_changed .= wp_cache_get_last_changed( 'terms' ); - } - - return "wp_query:$key:$last_changed"; - } - /** * After looping through a nested query, this function * restores the $post global to the current post in this query. * - * @since 3.7.0 + * @since WP-3.7.0 * - * @global WP_Post $post Global post object. + * @global WP_Post $post */ public function reset_postdata() { if ( ! empty( $this->post ) ) { @@ -4864,30 +4310,30 @@ public function reset_postdata() { /** * Lazyload term meta for posts in the loop. * - * @since 4.4.0 - * @deprecated 4.5.0 See wp_queue_posts_for_term_meta_lazyload(). + * @since WP-4.4.0 + * @deprecated WP-4.5.0 See wp_queue_posts_for_term_meta_lazyload(). * * @param mixed $check * @param int $term_id * @return mixed */ public function lazyload_term_meta( $check, $term_id ) { - _deprecated_function( __METHOD__, '4.5.0' ); + _deprecated_function( __METHOD__, 'WP-4.5.0' ); return $check; } /** * Lazyload comment meta for comments in the loop. * - * @since 4.4.0 - * @deprecated 4.5.0 See wp_lazyload_comment_meta(). + * @since WP-4.4.0 + * @deprecated WP-4.5.0 See wp_queue_comments_for_comment_meta_lazyload(). * * @param mixed $check * @param int $comment_id * @return mixed */ public function lazyload_comment_meta( $check, $comment_id ) { - _deprecated_function( __METHOD__, '4.5.0' ); + _deprecated_function( __METHOD__, 'WP-4.5.0' ); return $check; } } diff --git a/wp-includes/class-wp-recovery-mode-cookie-service.php b/wp-includes/class-wp-recovery-mode-cookie-service.php deleted file mode 100644 index 01fbaa9..0000000 --- a/wp-includes/class-wp-recovery-mode-cookie-service.php +++ /dev/null @@ -1,247 +0,0 @@ -<?php -/** - * Error Protection API: WP_Recovery_Mode_Cookie_Service class - * - * @package ClassicPress - * @since 5.2.0 - */ - -/** - * Core class used to set, validate, and clear cookies that identify a Recovery Mode session. - * - * @since 5.2.0 - */ -#[AllowDynamicProperties] -final class WP_Recovery_Mode_Cookie_Service { - - /** - * Checks whether the recovery mode cookie is set. - * - * @since 5.2.0 - * - * @return bool True if the cookie is set, false otherwise. - */ - public function is_cookie_set() { - return ! empty( $_COOKIE[ RECOVERY_MODE_COOKIE ] ); - } - - /** - * Sets the recovery mode cookie. - * - * This must be immediately followed by exiting the request. - * - * @since 5.2.0 - */ - public function set_cookie() { - - $value = $this->generate_cookie(); - - /** - * Filters the length of time a Recovery Mode cookie is valid for. - * - * @since 5.2.0 - * - * @param int $length Length in seconds. - */ - $length = apply_filters( 'recovery_mode_cookie_length', WEEK_IN_SECONDS ); - - $expire = time() + $length; - - setcookie( RECOVERY_MODE_COOKIE, $value, $expire, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true ); - - if ( COOKIEPATH !== SITECOOKIEPATH ) { - setcookie( RECOVERY_MODE_COOKIE, $value, $expire, SITECOOKIEPATH, COOKIE_DOMAIN, is_ssl(), true ); - } - } - - /** - * Clears the recovery mode cookie. - * - * @since 5.2.0 - */ - public function clear_cookie() { - setcookie( RECOVERY_MODE_COOKIE, ' ', time() - YEAR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN ); - setcookie( RECOVERY_MODE_COOKIE, ' ', time() - YEAR_IN_SECONDS, SITECOOKIEPATH, COOKIE_DOMAIN ); - } - - /** - * Validates the recovery mode cookie. - * - * @since 5.2.0 - * - * @param string $cookie Optionally specify the cookie string. - * If omitted, it will be retrieved from the super global. - * @return true|WP_Error True on success, error object on failure. - */ - public function validate_cookie( $cookie = '' ) { - - if ( ! $cookie ) { - if ( empty( $_COOKIE[ RECOVERY_MODE_COOKIE ] ) ) { - return new WP_Error( 'no_cookie', __( 'No cookie present.' ) ); - } - - $cookie = $_COOKIE[ RECOVERY_MODE_COOKIE ]; - } - - $parts = $this->parse_cookie( $cookie ); - - if ( is_wp_error( $parts ) ) { - return $parts; - } - - list( , $created_at, $random, $signature ) = $parts; - - if ( ! ctype_digit( $created_at ) ) { - return new WP_Error( 'invalid_created_at', __( 'Invalid cookie format.' ) ); - } - - /** This filter is documented in wp-includes/class-wp-recovery-mode-cookie-service.php */ - $length = apply_filters( 'recovery_mode_cookie_length', WEEK_IN_SECONDS ); - - if ( time() > $created_at + $length ) { - return new WP_Error( 'expired', __( 'Cookie expired.' ) ); - } - - $to_sign = sprintf( 'recovery_mode|%s|%s', $created_at, $random ); - $hashed = $this->recovery_mode_hash( $to_sign ); - - if ( ! hash_equals( $signature, $hashed ) ) { - return new WP_Error( 'signature_mismatch', __( 'Invalid cookie.' ) ); - } - - return true; - } - - /** - * Gets the session identifier from the cookie. - * - * The cookie should be validated before calling this API. - * - * @since 5.2.0 - * - * @param string $cookie Optionally specify the cookie string. - * If omitted, it will be retrieved from the super global. - * @return string|WP_Error Session ID on success, or error object on failure. - */ - public function get_session_id_from_cookie( $cookie = '' ) { - if ( ! $cookie ) { - if ( empty( $_COOKIE[ RECOVERY_MODE_COOKIE ] ) ) { - return new WP_Error( 'no_cookie', __( 'No cookie present.' ) ); - } - - $cookie = $_COOKIE[ RECOVERY_MODE_COOKIE ]; - } - - $parts = $this->parse_cookie( $cookie ); - if ( is_wp_error( $parts ) ) { - return $parts; - } - - list( , , $random ) = $parts; - - return sha1( $random ); - } - - /** - * Parses the cookie into its four parts. - * - * @since 5.2.0 - * - * @param string $cookie Cookie content. - * @return array|WP_Error Cookie parts array, or error object on failure. - */ - private function parse_cookie( $cookie ) { - $cookie = base64_decode( $cookie ); - $parts = explode( '|', $cookie ); - - if ( 4 !== count( $parts ) ) { - return new WP_Error( 'invalid_format', __( 'Invalid cookie format.' ) ); - } - - return $parts; - } - - /** - * Generates the recovery mode cookie value. - * - * The cookie is a base64 encoded string with the following format: - * - * recovery_mode|iat|rand|signature - * - * Where "recovery_mode" is a constant string, - * iat is the time the cookie was generated at, - * rand is a randomly generated password that is also used as a session identifier - * and signature is an hmac of the preceding 3 parts. - * - * @since 5.2.0 - * - * @return string Generated cookie content. - */ - private function generate_cookie() { - $to_sign = sprintf( 'recovery_mode|%s|%s', time(), wp_generate_password( 20, false ) ); - $signed = $this->recovery_mode_hash( $to_sign ); - - return base64_encode( sprintf( '%s|%s', $to_sign, $signed ) ); - } - - /** - * Gets a form of `wp_hash()` specific to Recovery Mode. - * - * We cannot use `wp_hash()` because it is defined in `pluggable.php` which is not loaded until after plugins are loaded, - * which is too late to verify the recovery mode cookie. - * - * This tries to use the `AUTH` salts first, but if they aren't valid specific salts will be generated and stored. - * - * @since 5.2.0 - * - * @param string $data Data to hash. - * @return string|false The hashed $data, or false on failure. - */ - private function recovery_mode_hash( $data ) { - $default_keys = array_unique( - array( - 'put your unique phrase here', - /* - * translators: This string should only be translated if wp-config-sample.php is localized. - * You can check the localized release package or - * https://i18n.svn.wordpress.org/<locale code>/branches/<wp version>/dist/wp-config-sample.php - */ - __( 'put your unique phrase here' ), - ) - ); - - if ( ! defined( 'AUTH_KEY' ) || in_array( AUTH_KEY, $default_keys, true ) ) { - $auth_key = get_site_option( 'recovery_mode_auth_key' ); - - if ( ! $auth_key ) { - if ( ! function_exists( 'wp_generate_password' ) ) { - require_once ABSPATH . WPINC . '/pluggable.php'; - } - - $auth_key = wp_generate_password( 64, true, true ); - update_site_option( 'recovery_mode_auth_key', $auth_key ); - } - } else { - $auth_key = AUTH_KEY; - } - - if ( ! defined( 'AUTH_SALT' ) || in_array( AUTH_SALT, $default_keys, true ) || AUTH_SALT === $auth_key ) { - $auth_salt = get_site_option( 'recovery_mode_auth_salt' ); - - if ( ! $auth_salt ) { - if ( ! function_exists( 'wp_generate_password' ) ) { - require_once ABSPATH . WPINC . '/pluggable.php'; - } - - $auth_salt = wp_generate_password( 64, true, true ); - update_site_option( 'recovery_mode_auth_salt', $auth_salt ); - } - } else { - $auth_salt = AUTH_SALT; - } - - $secret = $auth_key . $auth_salt; - - return hash_hmac( 'sha1', $data, $secret ); - } -} diff --git a/wp-includes/class-wp-recovery-mode-email-service.php b/wp-includes/class-wp-recovery-mode-email-service.php deleted file mode 100644 index 43f147e..0000000 --- a/wp-includes/class-wp-recovery-mode-email-service.php +++ /dev/null @@ -1,380 +0,0 @@ -<?php -/** - * Error Protection API: WP_Recovery_Mode_Email_Link class - * - * @package ClassicPress - * @since 5.2.0 - */ - -/** - * Core class used to send an email with a link to begin Recovery Mode. - * - * @since 5.2.0 - */ -#[AllowDynamicProperties] -final class WP_Recovery_Mode_Email_Service { - - const RATE_LIMIT_OPTION = 'recovery_mode_email_last_sent'; - - /** - * Service to generate recovery mode URLs. - * - * @since 5.2.0 - * @var WP_Recovery_Mode_Link_Service - */ - private $link_service; - - /** - * WP_Recovery_Mode_Email_Service constructor. - * - * @since 5.2.0 - * - * @param WP_Recovery_Mode_Link_Service $link_service - */ - public function __construct( WP_Recovery_Mode_Link_Service $link_service ) { - $this->link_service = $link_service; - } - - /** - * Sends the recovery mode email if the rate limit has not been sent. - * - * @since 5.2.0 - * - * @param int $rate_limit Number of seconds before another email can be sent. - * @param array $error Error details from `error_get_last()`. - * @param array $extension { - * The extension that caused the error. - * - * @type string $slug The extension slug. The plugin or theme's directory. - * @type string $type The extension type. Either 'plugin' or 'theme'. - * } - * @return true|WP_Error True if email sent, WP_Error otherwise. - */ - public function maybe_send_recovery_mode_email( $rate_limit, $error, $extension ) { - - $last_sent = get_option( self::RATE_LIMIT_OPTION ); - - if ( ! $last_sent || time() > $last_sent + $rate_limit ) { - if ( ! update_option( self::RATE_LIMIT_OPTION, time() ) ) { - return new WP_Error( 'storage_error', __( 'Could not update the email last sent time.' ) ); - } - - $sent = $this->send_recovery_mode_email( $rate_limit, $error, $extension ); - - if ( $sent ) { - return true; - } - - return new WP_Error( - 'email_failed', - sprintf( - /* translators: %s: mail() */ - __( 'The email could not be sent. Possible reason: your host may have disabled the %s function.' ), - 'mail()' - ) - ); - } - - $err_message = sprintf( - /* translators: 1: Last sent as a human time diff, 2: Wait time as a human time diff. */ - __( 'A recovery link was already sent %1$s ago. Please wait another %2$s before requesting a new email.' ), - human_time_diff( $last_sent ), - human_time_diff( $last_sent + $rate_limit ) - ); - - return new WP_Error( 'email_sent_already', $err_message ); - } - - /** - * Clears the rate limit, allowing a new recovery mode email to be sent immediately. - * - * @since 5.2.0 - * - * @return bool True on success, false on failure. - */ - public function clear_rate_limit() { - return delete_option( self::RATE_LIMIT_OPTION ); - } - - /** - * Sends the Recovery Mode email to the site admin email address. - * - * @since 5.2.0 - * - * @param int $rate_limit Number of seconds before another email can be sent. - * @param array $error Error details from `error_get_last()`. - * @param array $extension { - * The extension that caused the error. - * - * @type string $slug The extension slug. The directory of the plugin or theme. - * @type string $type The extension type. Either 'plugin' or 'theme'. - * } - * @return bool Whether the email was sent successfully. - */ - private function send_recovery_mode_email( $rate_limit, $error, $extension ) { - - $url = $this->link_service->generate_url(); - $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ); - - $switched_locale = switch_to_locale( get_locale() ); - - if ( $extension ) { - $cause = $this->get_cause( $extension ); - $details = wp_strip_all_tags( wp_get_extension_error_description( $error ) ); - - if ( $details ) { - $header = __( 'Error Details' ); - $details = "\n\n" . $header . "\n" . str_pad( '', strlen( $header ), '=' ) . "\n" . $details; - } - } else { - $cause = ''; - $details = ''; - } - - /** - * Filters the support message sent with the the fatal error protection email. - * - * @since 5.2.0 - * - * @param string $message The Message to include in the email. - */ - $support = apply_filters( 'recovery_email_support_info', __( 'Please contact your host for assistance with investigating this issue further.' ) ); - - /** - * Filters the debug information included in the fatal error protection email. - * - * @since 5.3.0 - * - * @param array $message An associative array of debug information. - */ - $debug = apply_filters( 'recovery_email_debug_info', $this->get_debug( $extension ) ); - - /* translators: Do not translate LINK, EXPIRES, CAUSE, DETAILS, SITEURL, PAGEURL, SUPPORT. DEBUG: those are placeholders. */ - $message = __( - 'Howdy! - -ClassicPress has a built-in feature that detects when a plugin or theme causes a fatal error on your site, and notifies you with this automated email. -###CAUSE### -First, visit your website (###SITEURL###) and check for any visible issues. Next, visit the page where the error was caught (###PAGEURL###) and check for any visible issues. - -###SUPPORT### - -If your site appears broken and you can\'t access your dashboard normally, WordPress now has a special "recovery mode". This lets you safely login to your dashboard and investigate further. - -###LINK### - -To keep your site safe, this link will expire in ###EXPIRES###. Don\'t worry about that, though: a new link will be emailed to you if the error occurs again after it expires. - -When seeking help with this issue, you may be asked for some of the following information: -###DEBUG### - -###DETAILS###' - ); - $message = str_replace( - array( - '###LINK###', - '###EXPIRES###', - '###CAUSE###', - '###DETAILS###', - '###SITEURL###', - '###PAGEURL###', - '###SUPPORT###', - '###DEBUG###', - ), - array( - $url, - human_time_diff( time() + $rate_limit ), - $cause ? "\n{$cause}\n" : "\n", - $details, - home_url( '/' ), - home_url( $_SERVER['REQUEST_URI'] ), - $support, - implode( "\r\n", $debug ), - ), - $message - ); - - $email = array( - 'to' => $this->get_recovery_mode_email_address(), - /* translators: %s: Site title. */ - 'subject' => __( '[%s] Your Site is Experiencing a Technical Issue' ), - 'message' => $message, - 'headers' => '', - 'attachments' => '', - ); - - /** - * Filters the contents of the Recovery Mode email. - * - * @since 5.2.0 - * @since 5.6.0 The `$email` argument includes the `attachments` key. - * - * @param array $email { - * Used to build a call to wp_mail(). - * - * @type string|array $to Array or comma-separated list of email addresses to send message. - * @type string $subject Email subject - * @type string $message Message contents - * @type string|array $headers Optional. Additional headers. - * @type string|array $attachments Optional. Files to attach. - * } - * @param string $url URL to enter recovery mode. - */ - $email = apply_filters( 'recovery_mode_email', $email, $url ); - - $sent = wp_mail( - $email['to'], - wp_specialchars_decode( sprintf( $email['subject'], $blogname ) ), - $email['message'], - $email['headers'], - $email['attachments'] - ); - - if ( $switched_locale ) { - restore_previous_locale(); - } - - return $sent; - } - - /** - * Gets the email address to send the recovery mode link to. - * - * @since 5.2.0 - * - * @return string Email address to send recovery mode link to. - */ - private function get_recovery_mode_email_address() { - if ( defined( 'RECOVERY_MODE_EMAIL' ) && is_email( RECOVERY_MODE_EMAIL ) ) { - return RECOVERY_MODE_EMAIL; - } - - return get_option( 'admin_email' ); - } - - /** - * Gets the description indicating the possible cause for the error. - * - * @since 5.2.0 - * - * @param array $extension { - * The extension that caused the error. - * - * @type string $slug The extension slug. The directory of the plugin or theme. - * @type string $type The extension type. Either 'plugin' or 'theme'. - * } - * @return string Message about which extension caused the error. - */ - private function get_cause( $extension ) { - - if ( 'plugin' === $extension['type'] ) { - $plugin = $this->get_plugin( $extension ); - - if ( false === $plugin ) { - $name = $extension['slug']; - } else { - $name = $plugin['Name']; - } - - /* translators: %s: Plugin name. */ - $cause = sprintf( __( 'In this case, ClassicPress caught an error with one of your plugins, %s.' ), $name ); - } else { - $theme = wp_get_theme( $extension['slug'] ); - $name = $theme->exists() ? $theme->display( 'Name' ) : $extension['slug']; - - /* translators: %s: Theme name. */ - $cause = sprintf( __( 'In this case, ClassicPress caught an error with your theme, %s.' ), $name ); - } - - return $cause; - } - - /** - * Return the details for a single plugin based on the extension data from an error. - * - * @since 5.3.0 - * - * @param array $extension { - * The extension that caused the error. - * - * @type string $slug The extension slug. The directory of the plugin or theme. - * @type string $type The extension type. Either 'plugin' or 'theme'. - * } - * @return array|false A plugin array {@see get_plugins()} or `false` if no plugin was found. - */ - private function get_plugin( $extension ) { - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - $plugins = get_plugins(); - - // Assume plugin main file name first since it is a common convention. - if ( isset( $plugins[ "{$extension['slug']}/{$extension['slug']}.php" ] ) ) { - return $plugins[ "{$extension['slug']}/{$extension['slug']}.php" ]; - } else { - foreach ( $plugins as $file => $plugin_data ) { - if ( 0 === strpos( $file, "{$extension['slug']}/" ) || $file === $extension['slug'] ) { - return $plugin_data; - } - } - } - - return false; - } - - /** - * Return debug information in an easy to manipulate format. - * - * @since 5.3.0 - * - * @param array $extension { - * The extension that caused the error. - * - * @type string $slug The extension slug. The directory of the plugin or theme. - * @type string $type The extension type. Either 'plugin' or 'theme'. - * } - * @return array An associative array of debug information. - */ - private function get_debug( $extension ) { - $theme = wp_get_theme(); - $wp_version = get_bloginfo( 'version' ); - - if ( $extension ) { - $plugin = $this->get_plugin( $extension ); - } else { - $plugin = null; - } - - $debug = array( - 'wp' => sprintf( - /* translators: %s: Current WordPress version number. */ - __( 'ClassicPress version %s' ), - $wp_version - ), - 'theme' => sprintf( - /* translators: 1: Current active theme name. 2: Current active theme version. */ - __( 'Active theme: %1$s (version %2$s)' ), - $theme->get( 'Name' ), - $theme->get( 'Version' ) - ), - ); - - if ( null !== $plugin ) { - $debug['plugin'] = sprintf( - /* translators: 1: The failing plugins name. 2: The failing plugins version. */ - __( 'Current plugin: %1$s (version %2$s)' ), - $plugin['Name'], - $plugin['Version'] - ); - } - - $debug['php'] = sprintf( - /* translators: %s: The currently used PHP version. */ - __( 'PHP version %s' ), - PHP_VERSION - ); - - return $debug; - } -} diff --git a/wp-includes/class-wp-recovery-mode-key-service.php b/wp-includes/class-wp-recovery-mode-key-service.php deleted file mode 100644 index 5f9b102..0000000 --- a/wp-includes/class-wp-recovery-mode-key-service.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php -/** - * Error Protection API: WP_Recovery_Mode_Key_Service class - * - * @package ClassicPress - * @since 5.2.0 - */ - -/** - * Core class used to generate and validate keys used to enter Recovery Mode. - * - * @since 5.2.0 - */ -#[AllowDynamicProperties] -final class WP_Recovery_Mode_Key_Service { - - /** - * The option name used to store the keys. - * - * @since 5.2.0 - * @var string - */ - private $option_name = 'recovery_keys'; - - /** - * Creates a recovery mode token. - * - * @since 5.2.0 - * - * @return string A random string to identify its associated key in storage. - */ - public function generate_recovery_mode_token() { - return wp_generate_password( 22, false ); - } - - /** - * Creates a recovery mode key. - * - * @since 5.2.0 - * - * @global PasswordHash $wp_hasher - * - * @param string $token A token generated by {@see generate_recovery_mode_token()}. - * @return string Recovery mode key. - */ - public function generate_and_store_recovery_mode_key( $token ) { - - global $wp_hasher; - - $key = wp_generate_password( 22, false ); - - if ( empty( $wp_hasher ) ) { - require_once ABSPATH . WPINC . '/class-phpass.php'; - $wp_hasher = new PasswordHash( 8, true ); - } - - $hashed = $wp_hasher->HashPassword( $key ); - - $records = $this->get_keys(); - - $records[ $token ] = array( - 'hashed_key' => $hashed, - 'created_at' => time(), - ); - - $this->update_keys( $records ); - - /** - * Fires when a recovery mode key is generated. - * - * @since 5.2.0 - * - * @param string $token The recovery data token. - * @param string $key The recovery mode key. - */ - do_action( 'generate_recovery_mode_key', $token, $key ); - - return $key; - } - - /** - * Verifies if the recovery mode key is correct. - * - * Recovery mode keys can only be used once; the key will be consumed in the process. - * - * @since 5.2.0 - * - * @global PasswordHash $wp_hasher - * - * @param string $token The token used when generating the given key. - * @param string $key The unhashed key. - * @param int $ttl Time in seconds for the key to be valid for. - * @return true|WP_Error True on success, error object on failure. - */ - public function validate_recovery_mode_key( $token, $key, $ttl ) { - global $wp_hasher; - - $records = $this->get_keys(); - - if ( ! isset( $records[ $token ] ) ) { - return new WP_Error( 'token_not_found', __( 'Recovery Mode not initialized.' ) ); - } - - $record = $records[ $token ]; - - $this->remove_key( $token ); - - if ( ! is_array( $record ) || ! isset( $record['hashed_key'], $record['created_at'] ) ) { - return new WP_Error( 'invalid_recovery_key_format', __( 'Invalid recovery key format.' ) ); - } - - if ( empty( $wp_hasher ) ) { - require_once ABSPATH . WPINC . '/class-phpass.php'; - $wp_hasher = new PasswordHash( 8, true ); - } - - if ( ! $wp_hasher->CheckPassword( $key, $record['hashed_key'] ) ) { - return new WP_Error( 'hash_mismatch', __( 'Invalid recovery key.' ) ); - } - - if ( time() > $record['created_at'] + $ttl ) { - return new WP_Error( 'key_expired', __( 'Recovery key expired.' ) ); - } - - return true; - } - - /** - * Removes expired recovery mode keys. - * - * @since 5.2.0 - * - * @param int $ttl Time in seconds for the keys to be valid for. - */ - public function clean_expired_keys( $ttl ) { - - $records = $this->get_keys(); - - foreach ( $records as $key => $record ) { - if ( ! isset( $record['created_at'] ) || time() > $record['created_at'] + $ttl ) { - unset( $records[ $key ] ); - } - } - - $this->update_keys( $records ); - } - - /** - * Removes a used recovery key. - * - * @since 5.2.0 - * - * @param string $token The token used when generating a recovery mode key. - */ - private function remove_key( $token ) { - - $records = $this->get_keys(); - - if ( ! isset( $records[ $token ] ) ) { - return; - } - - unset( $records[ $token ] ); - - $this->update_keys( $records ); - } - - /** - * Gets the recovery key records. - * - * @since 5.2.0 - * - * @return array Associative array of $token => $data pairs, where $data has keys 'hashed_key' - * and 'created_at'. - */ - private function get_keys() { - return (array) get_option( $this->option_name, array() ); - } - - /** - * Updates the recovery key records. - * - * @since 5.2.0 - * - * @param array $keys Associative array of $token => $data pairs, where $data has keys 'hashed_key' - * and 'created_at'. - * @return bool True on success, false on failure. - */ - private function update_keys( array $keys ) { - return update_option( $this->option_name, $keys ); - } -} diff --git a/wp-includes/class-wp-recovery-mode-link-service.php b/wp-includes/class-wp-recovery-mode-link-service.php deleted file mode 100644 index aab72fe..0000000 --- a/wp-includes/class-wp-recovery-mode-link-service.php +++ /dev/null @@ -1,130 +0,0 @@ -<?php -/** - * Error Protection API: WP_Recovery_Mode_Link_Handler class - * - * @package ClassicPress - * @since 5.2.0 - */ - -/** - * Core class used to generate and handle recovery mode links. - * - * @since 5.2.0 - */ -#[AllowDynamicProperties] -class WP_Recovery_Mode_Link_Service { - const LOGIN_ACTION_ENTER = 'enter_recovery_mode'; - const LOGIN_ACTION_ENTERED = 'entered_recovery_mode'; - - /** - * Service to generate and validate recovery mode keys. - * - * @since 5.2.0 - * @var WP_Recovery_Mode_Key_Service - */ - private $key_service; - - /** - * Service to handle cookies. - * - * @since 5.2.0 - * @var WP_Recovery_Mode_Cookie_Service - */ - private $cookie_service; - - /** - * WP_Recovery_Mode_Link_Service constructor. - * - * @since 5.2.0 - * - * @param WP_Recovery_Mode_Cookie_Service $cookie_service Service to handle setting the recovery mode cookie. - * @param WP_Recovery_Mode_Key_Service $key_service Service to handle generating recovery mode keys. - */ - public function __construct( WP_Recovery_Mode_Cookie_Service $cookie_service, WP_Recovery_Mode_Key_Service $key_service ) { - $this->cookie_service = $cookie_service; - $this->key_service = $key_service; - } - - /** - * Generates a URL to begin recovery mode. - * - * Only one recovery mode URL can may be valid at the same time. - * - * @since 5.2.0 - * - * @return string Generated URL. - */ - public function generate_url() { - $token = $this->key_service->generate_recovery_mode_token(); - $key = $this->key_service->generate_and_store_recovery_mode_key( $token ); - - return $this->get_recovery_mode_begin_url( $token, $key ); - } - - /** - * Enters recovery mode when the user hits wp-login.php with a valid recovery mode link. - * - * @since 5.2.0 - * - * @global string $pagenow The filename of the current screen. - * - * @param int $ttl Number of seconds the link should be valid for. - */ - public function handle_begin_link( $ttl ) { - if ( ! isset( $GLOBALS['pagenow'] ) || 'wp-login.php' !== $GLOBALS['pagenow'] ) { - return; - } - - if ( ! isset( $_GET['action'], $_GET['rm_token'], $_GET['rm_key'] ) || self::LOGIN_ACTION_ENTER !== $_GET['action'] ) { - return; - } - - if ( ! function_exists( 'wp_generate_password' ) ) { - require_once ABSPATH . WPINC . '/pluggable.php'; - } - - $validated = $this->key_service->validate_recovery_mode_key( $_GET['rm_token'], $_GET['rm_key'], $ttl ); - - if ( is_wp_error( $validated ) ) { - wp_die( $validated, '' ); - } - - $this->cookie_service->set_cookie(); - - $url = add_query_arg( 'action', self::LOGIN_ACTION_ENTERED, wp_login_url() ); - wp_redirect( $url ); - die; - } - - /** - * Gets a URL to begin recovery mode. - * - * @since 5.2.0 - * - * @param string $token Recovery Mode token created by {@see generate_recovery_mode_token()}. - * @param string $key Recovery Mode key created by {@see generate_and_store_recovery_mode_key()}. - * @return string Recovery mode begin URL. - */ - private function get_recovery_mode_begin_url( $token, $key ) { - - $url = add_query_arg( - array( - 'action' => self::LOGIN_ACTION_ENTER, - 'rm_token' => $token, - 'rm_key' => $key, - ), - wp_login_url() - ); - - /** - * Filters the URL to begin recovery mode. - * - * @since 5.2.0 - * - * @param string $url The generated recovery mode begin URL. - * @param string $token The token used to identify the key. - * @param string $key The recovery mode key. - */ - return apply_filters( 'recovery_mode_begin_url', $url, $token, $key ); - } -} diff --git a/wp-includes/class-wp-recovery-mode.php b/wp-includes/class-wp-recovery-mode.php deleted file mode 100644 index 36e24ff..0000000 --- a/wp-includes/class-wp-recovery-mode.php +++ /dev/null @@ -1,471 +0,0 @@ -<?php -/** - * Error Protection API: WP_Recovery_Mode class - * - * @package ClassicPress - * @since 5.2.0 - */ - -/** - * Core class used to implement Recovery Mode. - * - * @since 5.2.0 - */ -#[AllowDynamicProperties] -class WP_Recovery_Mode { - - const EXIT_ACTION = 'exit_recovery_mode'; - - /** - * Service to handle cookies. - * - * @since 5.2.0 - * @var WP_Recovery_Mode_Cookie_Service - */ - private $cookie_service; - - /** - * Service to generate a recovery mode key. - * - * @since 5.2.0 - * @var WP_Recovery_Mode_Key_Service - */ - private $key_service; - - /** - * Service to generate and validate recovery mode links. - * - * @since 5.2.0 - * @var WP_Recovery_Mode_Link_Service - */ - private $link_service; - - /** - * Service to handle sending an email with a recovery mode link. - * - * @since 5.2.0 - * @var WP_Recovery_Mode_Email_Service - */ - private $email_service; - - /** - * Is recovery mode initialized. - * - * @since 5.2.0 - * @var bool - */ - private $is_initialized = false; - - /** - * Is recovery mode active in this session. - * - * @since 5.2.0 - * @var bool - */ - private $is_active = false; - - /** - * Get an ID representing the current recovery mode session. - * - * @since 5.2.0 - * @var string - */ - private $session_id = ''; - - /** - * WP_Recovery_Mode constructor. - * - * @since 5.2.0 - */ - public function __construct() { - $this->cookie_service = new WP_Recovery_Mode_Cookie_Service(); - $this->key_service = new WP_Recovery_Mode_Key_Service(); - $this->link_service = new WP_Recovery_Mode_Link_Service( $this->cookie_service, $this->key_service ); - $this->email_service = new WP_Recovery_Mode_Email_Service( $this->link_service ); - } - - /** - * Initialize recovery mode for the current request. - * - * @since 5.2.0 - */ - public function initialize() { - $this->is_initialized = true; - - add_action( 'wp_logout', array( $this, 'exit_recovery_mode' ) ); - add_action( 'login_form_' . self::EXIT_ACTION, array( $this, 'handle_exit_recovery_mode' ) ); - add_action( 'recovery_mode_clean_expired_keys', array( $this, 'clean_expired_keys' ) ); - - if ( ! wp_next_scheduled( 'recovery_mode_clean_expired_keys' ) && ! wp_installing() ) { - wp_schedule_event( time(), 'daily', 'recovery_mode_clean_expired_keys' ); - } - - if ( defined( 'WP_RECOVERY_MODE_SESSION_ID' ) ) { - $this->is_active = true; - $this->session_id = WP_RECOVERY_MODE_SESSION_ID; - - return; - } - - if ( $this->cookie_service->is_cookie_set() ) { - $this->handle_cookie(); - - return; - } - - $this->link_service->handle_begin_link( $this->get_link_ttl() ); - } - - /** - * Checks whether recovery mode is active. - * - * This will not change after recovery mode has been initialized. {@see WP_Recovery_Mode::run()}. - * - * @since 5.2.0 - * - * @return bool True if recovery mode is active, false otherwise. - */ - public function is_active() { - return $this->is_active; - } - - /** - * Gets the recovery mode session ID. - * - * @since 5.2.0 - * - * @return string The session ID if recovery mode is active, empty string otherwise. - */ - public function get_session_id() { - return $this->session_id; - } - - /** - * Checks whether recovery mode has been initialized. - * - * Recovery mode should not be used until this point. Initialization happens immediately before loading plugins. - * - * @since 5.2.0 - * - * @return bool - */ - public function is_initialized() { - return $this->is_initialized; - } - - /** - * Handles a fatal error occurring. - * - * The calling API should immediately die() after calling this function. - * - * @since 5.2.0 - * - * @param array $error Error details from `error_get_last()`. - * @return true|WP_Error True if the error was handled and headers have already been sent. - * Or the request will exit to try and catch multiple errors at once. - * WP_Error if an error occurred preventing it from being handled. - */ - public function handle_error( array $error ) { - - $extension = $this->get_extension_for_error( $error ); - - if ( ! $extension || $this->is_network_plugin( $extension ) ) { - return new WP_Error( 'invalid_source', __( 'Error not caused by a plugin or theme.' ) ); - } - - if ( ! $this->is_active() ) { - if ( ! is_protected_endpoint() ) { - return new WP_Error( 'non_protected_endpoint', __( 'Error occurred on a non-protected endpoint.' ) ); - } - - if ( ! function_exists( 'wp_generate_password' ) ) { - require_once ABSPATH . WPINC . '/pluggable.php'; - } - - return $this->email_service->maybe_send_recovery_mode_email( $this->get_email_rate_limit(), $error, $extension ); - } - - if ( ! $this->store_error( $error ) ) { - return new WP_Error( 'storage_error', __( 'Failed to store the error.' ) ); - } - - if ( headers_sent() ) { - return true; - } - - $this->redirect_protected(); - } - - /** - * Ends the current recovery mode session. - * - * @since 5.2.0 - * - * @return bool True on success, false on failure. - */ - public function exit_recovery_mode() { - if ( ! $this->is_active() ) { - return false; - } - - $this->email_service->clear_rate_limit(); - $this->cookie_service->clear_cookie(); - - wp_paused_plugins()->delete_all(); - wp_paused_themes()->delete_all(); - - return true; - } - - /** - * Handles a request to exit Recovery Mode. - * - * @since 5.2.0 - */ - public function handle_exit_recovery_mode() { - $redirect_to = wp_get_referer(); - - // Safety check in case referrer returns false. - if ( ! $redirect_to ) { - $redirect_to = is_user_logged_in() ? admin_url() : home_url(); - } - - if ( ! $this->is_active() ) { - wp_safe_redirect( $redirect_to ); - die; - } - - if ( ! isset( $_GET['action'] ) || self::EXIT_ACTION !== $_GET['action'] ) { - return; - } - - if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( $_GET['_wpnonce'], self::EXIT_ACTION ) ) { - wp_die( __( 'Exit recovery mode link expired.' ), 403 ); - } - - if ( ! $this->exit_recovery_mode() ) { - wp_die( __( 'Failed to exit recovery mode. Please try again later.' ) ); - } - - wp_safe_redirect( $redirect_to ); - die; - } - - /** - * Cleans any recovery mode keys that have expired according to the link TTL. - * - * Executes on a daily cron schedule. - * - * @since 5.2.0 - */ - public function clean_expired_keys() { - $this->key_service->clean_expired_keys( $this->get_link_ttl() ); - } - - /** - * Handles checking for the recovery mode cookie and validating it. - * - * @since 5.2.0 - */ - protected function handle_cookie() { - $validated = $this->cookie_service->validate_cookie(); - - if ( is_wp_error( $validated ) ) { - $this->cookie_service->clear_cookie(); - - $validated->add_data( array( 'status' => 403 ) ); - wp_die( $validated ); - } - - $session_id = $this->cookie_service->get_session_id_from_cookie(); - if ( is_wp_error( $session_id ) ) { - $this->cookie_service->clear_cookie(); - - $session_id->add_data( array( 'status' => 403 ) ); - wp_die( $session_id ); - } - - $this->is_active = true; - $this->session_id = $session_id; - } - - /** - * Gets the rate limit between sending new recovery mode email links. - * - * @since 5.2.0 - * - * @return int Rate limit in seconds. - */ - protected function get_email_rate_limit() { - /** - * Filters the rate limit between sending new recovery mode email links. - * - * @since 5.2.0 - * - * @param int $rate_limit Time to wait in seconds. Defaults to 1 day. - */ - return apply_filters( 'recovery_mode_email_rate_limit', DAY_IN_SECONDS ); - } - - /** - * Gets the number of seconds the recovery mode link is valid for. - * - * @since 5.2.0 - * - * @return int Interval in seconds. - */ - protected function get_link_ttl() { - - $rate_limit = $this->get_email_rate_limit(); - $valid_for = $rate_limit; - - /** - * Filters the amount of time the recovery mode email link is valid for. - * - * The ttl must be at least as long as the email rate limit. - * - * @since 5.2.0 - * - * @param int $valid_for The number of seconds the link is valid for. - */ - $valid_for = apply_filters( 'recovery_mode_email_link_ttl', $valid_for ); - - return max( $valid_for, $rate_limit ); - } - - /** - * Gets the extension that the error occurred in. - * - * @since 5.2.0 - * - * @global array $wp_theme_directories - * - * @param array $error Error details from `error_get_last()`. - * @return array|false { - * Extension details. - * - * @type string $slug The extension slug. This is the plugin or theme's directory. - * @type string $type The extension type. Either 'plugin' or 'theme'. - * } - */ - protected function get_extension_for_error( $error ) { - global $wp_theme_directories; - - if ( ! isset( $error['file'] ) ) { - return false; - } - - if ( ! defined( 'WP_PLUGIN_DIR' ) ) { - return false; - } - - $error_file = wp_normalize_path( $error['file'] ); - $wp_plugin_dir = wp_normalize_path( WP_PLUGIN_DIR ); - - if ( 0 === strpos( $error_file, $wp_plugin_dir ) ) { - $path = str_replace( $wp_plugin_dir . '/', '', $error_file ); - $parts = explode( '/', $path ); - - return array( - 'type' => 'plugin', - 'slug' => $parts[0], - ); - } - - if ( empty( $wp_theme_directories ) ) { - return false; - } - - foreach ( $wp_theme_directories as $theme_directory ) { - $theme_directory = wp_normalize_path( $theme_directory ); - - if ( 0 === strpos( $error_file, $theme_directory ) ) { - $path = str_replace( $theme_directory . '/', '', $error_file ); - $parts = explode( '/', $path ); - - return array( - 'type' => 'theme', - 'slug' => $parts[0], - ); - } - } - - return false; - } - - /** - * Checks whether the given extension a network activated plugin. - * - * @since 5.2.0 - * - * @param array $extension Extension data. - * @return bool True if network plugin, false otherwise. - */ - protected function is_network_plugin( $extension ) { - if ( 'plugin' !== $extension['type'] ) { - return false; - } - - if ( ! is_multisite() ) { - return false; - } - - $network_plugins = wp_get_active_network_plugins(); - - foreach ( $network_plugins as $plugin ) { - if ( 0 === strpos( $plugin, $extension['slug'] . '/' ) ) { - return true; - } - } - - return false; - } - - /** - * Stores the given error so that the extension causing it is paused. - * - * @since 5.2.0 - * - * @param array $error Error details from `error_get_last()`. - * @return bool True if the error was stored successfully, false otherwise. - */ - protected function store_error( $error ) { - $extension = $this->get_extension_for_error( $error ); - - if ( ! $extension ) { - return false; - } - - switch ( $extension['type'] ) { - case 'plugin': - return wp_paused_plugins()->set( $extension['slug'], $error ); - case 'theme': - return wp_paused_themes()->set( $extension['slug'], $error ); - default: - return false; - } - } - - /** - * Redirects the current request to allow recovering multiple errors in one go. - * - * The redirection will only happen when on a protected endpoint. - * - * It must be ensured that this method is only called when an error actually occurred and will not occur on the - * next request again. Otherwise it will create a redirect loop. - * - * @since 5.2.0 - */ - protected function redirect_protected() { - // Pluggable is usually loaded after plugins, so we manually include it here for redirection functionality. - if ( ! function_exists( 'wp_safe_redirect' ) ) { - require_once ABSPATH . WPINC . '/pluggable.php'; - } - - $scheme = is_ssl() ? 'https://' : 'http://'; - - $url = "{$scheme}{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"; - wp_safe_redirect( $url ); - exit; - } -} diff --git a/wp-includes/class-wp-rewrite.php b/wp-includes/class-wp-rewrite.php index 7088e55..878bfc5 100644 --- a/wp-includes/class-wp-rewrite.php +++ b/wp-includes/class-wp-rewrite.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Rewrite - * @since 1.5.0 + * @since WP-1.5.0 */ /** @@ -20,14 +20,13 @@ * meaning you can't define how the template files load based on the rewrite * rules. * - * @since 1.5.0 + * @since WP-1.5.0 */ -#[AllowDynamicProperties] class WP_Rewrite { /** * Permalink structure for posts. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ public $permalink_structure; @@ -35,7 +34,7 @@ class WP_Rewrite { /** * Whether to add trailing slashes. * - * @since 2.2.0 + * @since WP-2.2.0 * @var bool */ public $use_trailing_slashes; @@ -43,63 +42,63 @@ class WP_Rewrite { /** * Base for the author permalink structure (example.com/$author_base/authorname). * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $author_base = 'author'; + var $author_base = 'author'; /** * Permalink structure for author archives. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $author_structure; + var $author_structure; /** * Permalink structure for date archives. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $date_structure; + var $date_structure; /** * Permalink structure for pages. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $page_structure; + var $page_structure; /** * Base of the search permalink structure (example.com/$search_base/query). * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $search_base = 'search'; + var $search_base = 'search'; /** * Permalink structure for searches. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $search_structure; + var $search_structure; /** * Comments permalink base. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $comments_base = 'comments'; + var $comments_base = 'comments'; /** * Pagination permalink base. * - * @since 3.1.0 + * @since WP-3.1.0 * @var string */ public $pagination_base = 'page'; @@ -107,34 +106,34 @@ class WP_Rewrite { /** * Comments pagination permalink base. * - * @since 4.2.0 + * @since WP-4.2.0 * @var string */ - public $comments_pagination_base = 'comment-page'; + var $comments_pagination_base = 'comment-page'; /** * Feed permalink base. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $feed_base = 'feed'; + var $feed_base = 'feed'; /** * Comments feed permalink structure. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $comment_feed_structure; + var $comment_feed_structure; /** * Feed request permalink structure. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $feed_structure; + var $feed_structure; /** * The static portion of the post permalink structure. @@ -143,7 +142,7 @@ class WP_Rewrite { * is "/archive/". If the permalink structure is "/%year%/%postname%/" * then the front is "/". * - * @since 1.5.0 + * @since WP-1.5.0 * @var string * * @see WP_Rewrite::init() @@ -157,7 +156,7 @@ class WP_Rewrite { * `WP_Rewrite::$index` with a trailing slash appended. Otherwise the root * will be empty. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string * * @see WP_Rewrite::init() @@ -168,7 +167,7 @@ class WP_Rewrite { /** * The name of the index file which is the entry point to all requests. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ public $index = 'index.php'; @@ -176,73 +175,73 @@ class WP_Rewrite { /** * Variable name to use for regex matches in the rewritten query. * - * @since 1.5.0 + * @since WP-1.5.0 * @var string */ - public $matches = ''; + var $matches = ''; /** * Rewrite rules to match against the request to find the redirect or query. * - * @since 1.5.0 - * @var string[] + * @since WP-1.5.0 + * @var array */ - public $rules; + var $rules; /** * Additional rules added external to the rewrite class. * * Those not generated by the class, see add_rewrite_rule(). * - * @since 2.1.0 - * @var string[] + * @since WP-2.1.0 + * @var array */ - public $extra_rules = array(); + var $extra_rules = array(); /** * Additional rules that belong at the beginning to match first. * * Those not generated by the class, see add_rewrite_rule(). * - * @since 2.3.0 - * @var string[] + * @since WP-2.3.0 + * @var array */ - public $extra_rules_top = array(); + var $extra_rules_top = array(); /** - * Rules that don't redirect to WordPress' index.php. + * Rules that don't redirect to ClassicPress' index.php. * * These rules are written to the mod_rewrite portion of the .htaccess, * and are added by add_external_rule(). * - * @since 2.1.0 - * @var string[] + * @since WP-2.1.0 + * @var array */ - public $non_wp_rules = array(); + var $non_wp_rules = array(); /** * Extra permalink structures, e.g. categories, added by add_permastruct(). * - * @since 2.1.0 - * @var array[] + * @since WP-2.1.0 + * @var array */ - public $extra_permastructs = array(); + var $extra_permastructs = array(); /** * Endpoints (like /trackback/) added by add_rewrite_endpoint(). * - * @since 2.1.0 - * @var array[] + * @since WP-2.1.0 + * @var array */ - public $endpoints; + var $endpoints; /** - * Whether to write every mod_rewrite rule for WordPress into the .htaccess file. + * Whether to write every mod_rewrite rule for ClassicPress into the .htaccess file. * * This is off by default, turning it on might print a lot of rewrite rules * to the .htaccess file. * - * @since 2.0.0 + * @since WP-2.0.0 * @var bool * * @see WP_Rewrite::mod_rewrite_rules() @@ -259,7 +258,7 @@ class WP_Rewrite { * Now it tells WP::parse_request() to check if a URL matching the page * permastruct is actually a page before accepting it. * - * @since 2.5.0 + * @since WP-2.5.0 * @var bool * * @see WP_Rewrite::init() @@ -275,10 +274,10 @@ class WP_Rewrite { * * Additional tags can be added with add_rewrite_tag(). * - * @since 1.5.0 - * @var string[] + * @since WP-1.5.0 + * @var array */ - public $rewritecode = array( + var $rewritecode = array( '%year%', '%monthnum%', '%day%', @@ -296,10 +295,10 @@ class WP_Rewrite { * Regular expressions to be substituted into rewrite rules in place * of rewrite tags, see WP_Rewrite::$rewritecode. * - * @since 1.5.0 - * @var string[] + * @since WP-1.5.0 + * @var array */ - public $rewritereplace = array( + var $rewritereplace = array( '([0-9]{4})', '([0-9]{1,2})', '([0-9]{1,2})', @@ -316,10 +315,10 @@ class WP_Rewrite { /** * Query variables that rewrite tags map to, see WP_Rewrite::$rewritecode. * - * @since 1.5.0 - * @var string[] + * @since WP-1.5.0 + * @var array */ - public $queryreplace = array( + var $queryreplace = array( 'year=', 'monthnum=', 'day=', @@ -336,8 +335,8 @@ class WP_Rewrite { /** * Supported default feeds. * - * @since 1.5.0 - * @var string[] + * @since WP-1.5.0 + * @var array */ public $feeds = array( 'feed', 'rdf', 'rss', 'rss2', 'atom' ); @@ -346,7 +345,7 @@ class WP_Rewrite { * * This can be either rewrite module or permalink in the HTTP query string. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return bool True, if permalinks are enabled. */ @@ -359,7 +358,7 @@ public function using_permalinks() { * * Means that permalink links are enabled and index.php is in the URL. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return bool Whether permalink links are enabled and index.php is in the URL. */ @@ -377,7 +376,7 @@ public function using_index_permalinks() { * * Using permalinks and index.php is not in the URL. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return bool Whether permalink links are enabled and index.php is NOT in the URL. */ @@ -395,7 +394,7 @@ public function using_mod_rewrite_permalinks() { * '$MATCHES[NUM]', with MATCHES as the value in the property and NUM the * value of the $number parameter. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param int $number Index number. * @return string @@ -413,14 +412,14 @@ public function preg_index( $number ) { } /** - * Retrieves all pages and attachments for pages URIs. + * Retrieves all page and attachments for pages URIs. * * The attachments are for those that have pages as parents and will be * retrieved. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @return array Array of page URIs as first element and attachment URIs as second element. */ @@ -443,7 +442,7 @@ public function page_uri_index() { $page_attachment_uris = array(); foreach ( $posts as $id => $post ) { - // URL => page name. + // URL => page name $uri = get_page_uri( $id ); $attachments = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $id ) ); if ( ! empty( $attachments ) ) { @@ -462,9 +461,9 @@ public function page_uri_index() { /** * Retrieves all of the rewrite rules for pages. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string[] Page rewrite rules. + * @return array Page rewrite rules. */ public function page_rewrite_rules() { // The extra .? at the beginning prevents clashes with other regular expressions in the rules array. @@ -488,9 +487,9 @@ public function page_rewrite_rules() { * 'date/' before the actual permalink to form the complete date permalink * structure. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Date permalink structure on success, false on failure. + * @return string|false False on no permalink structure. Date permalink structure. */ public function get_date_permastruct() { if ( isset( $this->date_structure ) ) { @@ -545,9 +544,9 @@ public function get_date_permastruct() { * Gets the date permalink structure and strips out the month and day * permalink structures. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Year permalink structure on success, false on failure. + * @return false|string False on failure. Year structure on success. */ public function get_year_permastruct() { $structure = $this->get_date_permastruct(); @@ -569,9 +568,9 @@ public function get_year_permastruct() { * Gets the date permalink structure and strips out the day permalink * structures. Keeps the year permalink structure. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Year/Month permalink structure on success, false on failure. + * @return false|string False on failure. Year/Month structure on success. */ public function get_month_permastruct() { $structure = $this->get_date_permastruct(); @@ -591,9 +590,9 @@ public function get_month_permastruct() { * * Keeps date permalink structure with all year, month, and day. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Year/Month/Day permalink structure on success, false on failure. + * @return string|false False on failure. Year/Month/Day structure on success. */ public function get_day_permastruct() { return $this->get_date_permastruct(); @@ -607,25 +606,25 @@ public function get_day_permastruct() { * '%category%'. If it does, then the root property will be used, along with * the category_base property value. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Category permalink structure on success, false on failure. + * @return string|false False on failure. Category permalink structure. */ public function get_category_permastruct() { return $this->get_extra_permastruct( 'category' ); } /** - * Retrieves the permalink structure for tags. + * Retrieve the permalink structure for tags. * * If the tag_base property has no value, then the tag structure will have * the front property value, followed by 'tag', and finally '%tag%'. If it * does, then the root property will be used, along with the tag_base * property value. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @return string|false Tag permalink structure on success, false on failure. + * @return string|false False on failure. Tag permalink structure. */ public function get_tag_permastruct() { return $this->get_extra_permastruct( 'post_tag' ); @@ -634,10 +633,10 @@ public function get_tag_permastruct() { /** * Retrieves an extra permalink structure by name. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $name Permalink structure name. - * @return string|false Permalink structure string on success, false on failure. + * @return string|false False if not found. Permalink structure string. */ public function get_extra_permastruct( $name ) { if ( empty( $this->permalink_structure ) ) { @@ -658,9 +657,9 @@ public function get_extra_permastruct( $name ) { * '/%author%'. Will set the author_structure property and then return it * without attempting to set the value again. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Author permalink structure on success, false on failure. + * @return string|false False if not found. Permalink structure string. */ public function get_author_permastruct() { if ( isset( $this->author_structure ) ) { @@ -684,9 +683,9 @@ public function get_author_permastruct() { * '/%search%'. Will set the search_structure property and then return it * without attempting to set the value again. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Search permalink structure on success, false on failure. + * @return string|false False if not found. Permalink structure string. */ public function get_search_permastruct() { if ( isset( $this->search_structure ) ) { @@ -710,9 +709,9 @@ public function get_search_permastruct() { * page_structure property and then return it without attempting to set the * value again. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Page permalink structure on success, false on failure. + * @return string|false False if not found. Permalink structure string. */ public function get_page_permastruct() { if ( isset( $this->page_structure ) ) { @@ -736,9 +735,9 @@ public function get_page_permastruct() { * '/%feed%'. Will set the feed_structure property and then return it * without attempting to set the value again. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Feed permalink structure on success, false on failure. + * @return string|false False if not found. Permalink structure string. */ public function get_feed_permastruct() { if ( isset( $this->feed_structure ) ) { @@ -762,9 +761,9 @@ public function get_feed_permastruct() { * base and finally '/%feed%'. Will set the comment_feed_structure property * and then return it without attempting to set the value again. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string|false Comment feed permalink structure on success, false on failure. + * @return string|false False if not found. Permalink structure string. */ public function get_comment_feed_permastruct() { if ( isset( $this->comment_feed_structure ) ) { @@ -787,7 +786,7 @@ public function get_comment_feed_permastruct() { * If the tag already exists, replace the existing pattern and query for * that tag, otherwise add the new tag. * - * @since 1.5.0 + * @since WP-1.5.0 * * @see WP_Rewrite::$rewritecode * @see WP_Rewrite::$rewritereplace @@ -813,7 +812,7 @@ public function add_rewrite_tag( $tag, $regex, $query ) { /** * Removes an existing rewrite tag. * - * @since 4.5.0 + * @since WP-4.5.0 * * @see WP_Rewrite::$rewritecode * @see WP_Rewrite::$rewritereplace @@ -837,31 +836,17 @@ public function remove_rewrite_tag( $tag ) { * contents of the function is a mix of black magic and regular expressions, * so best just ignore the contents and move to the parameters. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $permalink_structure The permalink structure. * @param int $ep_mask Optional. Endpoint mask defining what endpoints are added to the structure. - * Accepts a mask of: - * - `EP_ALL` - * - `EP_NONE` - * - `EP_ALL_ARCHIVES` - * - `EP_ATTACHMENT` - * - `EP_AUTHORS` - * - `EP_CATEGORIES` - * - `EP_COMMENTS` - * - `EP_DATE` - * - `EP_DAY` - * - `EP_MONTH` - * - `EP_PAGES` - * - `EP_PERMALINK` - * - `EP_ROOT` - * - `EP_SEARCH` - * - `EP_TAGS` - * - `EP_YEAR` + * Accepts `EP_NONE`, `EP_PERMALINK`, `EP_ATTACHMENT`, `EP_DATE`, `EP_YEAR`, + * `EP_MONTH`, `EP_DAY`, `EP_ROOT`, `EP_COMMENTS`, `EP_SEARCH`, `EP_CATEGORIES`, + * `EP_TAGS`, `EP_AUTHORS`, `EP_PAGES`, `EP_ALL_ARCHIVES`, and `EP_ALL`. * Default `EP_NONE`. * @param bool $paged Optional. Whether archive pagination rules should be added for the structure. * Default true. - * @param bool $feed Optional. Whether feed rewrite rules should be added for the structure. + * @param bool $feed Optional Whether feed rewrite rules should be added for the structure. * Default true. * @param bool $forcomments Optional. Whether the feed rules should be a query for a comments feed. * Default false. @@ -869,7 +854,7 @@ public function remove_rewrite_tag( $tag ) { * over and rewrite rules built for each in-turn. Default true. * @param bool $endpoints Optional. Whether endpoints should be applied to the generated rewrite rules. * Default true. - * @return string[] Array of rewrite rules keyed by their regex pattern. + * @return array Rewrite rule list. */ public function generate_rewrite_rules( $permalink_structure, $ep_mask = EP_NONE, $paged = true, $feed = true, $forcomments = false, $walk_dirs = true, $endpoints = true ) { // Build a regex to match the feed section of URLs, something like (feed|atom|rss|rss2)/? @@ -912,7 +897,7 @@ public function generate_rewrite_rules( $permalink_structure, $ep_mask = EP_NONE $num_tokens = count( $tokens[0] ); - $index = $this->index; // Probably 'index.php'. + $index = $this->index; //probably 'index.php' $feedindex = $index; $trackbackindex = $index; $embedindex = $index; @@ -1018,7 +1003,7 @@ public function generate_rewrite_rules( $permalink_structure, $ep_mask = EP_NONE // Start creating the array of rewrites for this dir. $rewrite = array(); - // ...adding on /feed/ regexes => queries. + // ...adding on /feed/ regexes => queries if ( $feed ) { $rewrite = array( $feedmatch => $feedquery, @@ -1027,7 +1012,7 @@ public function generate_rewrite_rules( $permalink_structure, $ep_mask = EP_NONE ); } - // ...and /page/xx ones. + //...and /page/xx ones if ( $paged ) { $rewrite = array_merge( $rewrite, array( $pagematch => $pagequery ) ); } @@ -1174,7 +1159,7 @@ public function generate_rewrite_rules( $permalink_structure, $ep_mask = EP_NONE // Not matching a permalink so this is a lot simpler. } else { - // Close the match and finalize the query. + // Close the match and finalise the query. $match .= '?$'; $query = $index . '?' . $query; } @@ -1238,14 +1223,13 @@ public function generate_rewrite_rules( $permalink_structure, $ep_mask = EP_NONE * list of parameters. See the method for longer description of what generating * rewrite rules does. * - * @since 1.5.0 + * @since WP-1.5.0 * * @see WP_Rewrite::generate_rewrite_rules() See for long description and rest of parameters. * * @param string $permalink_structure The permalink structure to generate rules. - * @param bool $walk_dirs Optional. Whether to create list of directories to walk over. - * Default false. - * @return array An array of rewrite rules keyed by their regex pattern. + * @param bool $walk_dirs Optional, default is false. Whether to create list of directories to walk over. + * @return array */ public function generate_rewrite_rule( $permalink_structure, $walk_dirs = false ) { return $this->generate_rewrite_rules( $permalink_structure, EP_NONE, false, false, false, $walk_dirs ); @@ -1264,9 +1248,9 @@ public function generate_rewrite_rule( $permalink_structure, $walk_dirs = false * object or just manipulating the rewrite rule array before it is passed * from the function. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string[] An associative array of matches and queries. + * @return array An associate array of matches and queries. */ public function rewrite_rules() { $rewrite = array(); @@ -1275,13 +1259,10 @@ public function rewrite_rules() { return $rewrite; } - // robots.txt -- only if installed at the root. + // robots.txt -only if installed at the root $home_path = parse_url( home_url() ); $robots_rewrite = ( empty( $home_path['path'] ) || '/' === $home_path['path'] ) ? array( 'robots\.txt$' => $this->index . '?robots=1' ) : array(); - // favicon.ico -- only if installed at the root. - $favicon_rewrite = ( empty( $home_path['path'] ) || '/' === $home_path['path'] ) ? array( 'favicon\.ico$' => $this->index . '?favicon=1' ) : array(); - // Old feed and service files. $deprecated_files = array( '.*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\.php$' => $this->index . '?feed=old', @@ -1304,9 +1285,9 @@ public function rewrite_rules() { /** * Filters rewrite rules used for "post" archives. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $post_rewrite Array of rewrite rules for posts, keyed by their regex pattern. + * @param array $post_rewrite The rewrite rules for posts. */ $post_rewrite = apply_filters( 'post_rewrite_rules', $post_rewrite ); @@ -1316,11 +1297,11 @@ public function rewrite_rules() { /** * Filters rewrite rules used for date archives. * - * Likely date archives would include `/yyyy/`, `/yyyy/mm/`, and `/yyyy/mm/dd/`. + * Likely date archives would include /yyyy/, /yyyy/mm/, and /yyyy/mm/dd/. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $date_rewrite Array of rewrite rules for date archives, keyed by their regex pattern. + * @param array $date_rewrite The rewrite rules for date archives. */ $date_rewrite = apply_filters( 'date_rewrite_rules', $date_rewrite ); @@ -1331,11 +1312,11 @@ public function rewrite_rules() { * Filters rewrite rules used for root-level archives. * * Likely root-level archives would include pagination rules for the homepage - * as well as site-wide post feeds (e.g. `/feed/`, and `/feed/atom/`). + * as well as site-wide post feeds (e.g. /feed/, and /feed/atom/). * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $root_rewrite Array of root-level rewrite rules, keyed by their regex pattern. + * @param array $root_rewrite The root-level rewrite rules. */ $root_rewrite = apply_filters( 'root_rewrite_rules', $root_rewrite ); @@ -1345,11 +1326,11 @@ public function rewrite_rules() { /** * Filters rewrite rules used for comment feed archives. * - * Likely comments feed archives include `/comments/feed/` and `/comments/feed/atom/`. + * Likely comments feed archives include /comments/feed/, and /comments/feed/atom/. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $comments_rewrite Array of rewrite rules for the site-wide comments feeds, keyed by their regex pattern. + * @param array $comments_rewrite The rewrite rules for the site-wide comments feeds. */ $comments_rewrite = apply_filters( 'comments_rewrite_rules', $comments_rewrite ); @@ -1360,12 +1341,12 @@ public function rewrite_rules() { /** * Filters rewrite rules used for search archives. * - * Likely search-related archives include `/search/search+query/` as well as + * Likely search-related archives include /search/search+query/ as well as * pagination and feed paths for a search. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $search_rewrite Array of rewrite rules for search queries, keyed by their regex pattern. + * @param array $search_rewrite The rewrite rules for search queries. */ $search_rewrite = apply_filters( 'search_rewrite_rules', $search_rewrite ); @@ -1375,12 +1356,12 @@ public function rewrite_rules() { /** * Filters rewrite rules used for author archives. * - * Likely author archives would include `/author/author-name/`, as well as + * Likely author archives would include /author/author-name/, as well as * pagination and feed paths for author archives. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $author_rewrite Array of rewrite rules for author archives, keyed by their regex pattern. + * @param array $author_rewrite The rewrite rules for author archives. */ $author_rewrite = apply_filters( 'author_rewrite_rules', $author_rewrite ); @@ -1390,9 +1371,9 @@ public function rewrite_rules() { /** * Filters rewrite rules used for "page" post type archives. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $page_rewrite Array of rewrite rules for the "page" post type, keyed by their regex pattern. + * @param array $page_rewrite The rewrite rules for the "page" post type. */ $page_rewrite = apply_filters( 'page_rewrite_rules', $page_rewrite ); @@ -1412,17 +1393,12 @@ public function rewrite_rules() { * Filters rewrite rules used for individual permastructs. * * The dynamic portion of the hook name, `$permastructname`, refers - * to the name of the registered permastruct. - * - * Possible hook names include: + * to the name of the registered permastruct, e.g. 'post_tag' (tags), + * 'category' (categories), etc. * - * - `category_rewrite_rules` - * - `post_format_rewrite_rules` - * - `post_tag_rewrite_rules` + * @since WP-3.1.0 * - * @since 3.1.0 - * - * @param string[] $rules Array of rewrite rules generated for the current permastruct, keyed by their regex pattern. + * @param array $rules The rewrite rules generated for the current permastruct. */ $rules = apply_filters( "{$permastructname}_rewrite_rules", $rules ); @@ -1431,12 +1407,12 @@ public function rewrite_rules() { /** * Filters rewrite rules used specifically for Tags. * - * @since 2.3.0 - * @deprecated 3.1.0 Use {@see 'post_tag_rewrite_rules'} instead. + * @since WP-2.3.0 + * @deprecated WP-3.1.0 Use 'post_tag_rewrite_rules' instead * - * @param string[] $rules Array of rewrite rules generated for tags, keyed by their regex pattern. + * @param array $rules The rewrite rules generated for tags. */ - $rules = apply_filters_deprecated( 'tag_rewrite_rules', array( $rules ), '3.1.0', 'post_tag_rewrite_rules' ); + $rules = apply_filters( 'tag_rewrite_rules', $rules ); } $this->extra_rules_top = array_merge( $this->extra_rules_top, $rules ); @@ -1444,26 +1420,26 @@ public function rewrite_rules() { // Put them together. if ( $this->use_verbose_page_rules ) { - $this->rules = array_merge( $this->extra_rules_top, $robots_rewrite, $favicon_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite, $author_rewrite, $date_rewrite, $page_rewrite, $post_rewrite, $this->extra_rules ); + $this->rules = array_merge( $this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite, $author_rewrite, $date_rewrite, $page_rewrite, $post_rewrite, $this->extra_rules ); } else { - $this->rules = array_merge( $this->extra_rules_top, $robots_rewrite, $favicon_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules ); + $this->rules = array_merge( $this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules ); } /** * Fires after the rewrite rules are generated. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param WP_Rewrite $wp_rewrite Current WP_Rewrite instance (passed by reference). + * @param WP_Rewrite $this Current WP_Rewrite instance (passed by reference). */ do_action_ref_array( 'generate_rewrite_rules', array( &$this ) ); /** * Filters the full set of generated rewrite rules. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $rules The compiled array of rewrite rules, keyed by their regex pattern. + * @param array $this->rules The compiled array of rewrite rules. */ $this->rules = apply_filters( 'rewrite_rules_array', $this->rules ); @@ -1478,9 +1454,9 @@ public function rewrite_rules() { * it. This prevents having to process all of the permalinks to get the rewrite rules * in the form of caching. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string[] Array of rewrite rules keyed by their regex pattern. + * @return array Rewrite rules. */ public function wp_rewrite_rules() { $this->rules = get_option( 'rewrite_rules' ); @@ -1504,9 +1480,9 @@ public function wp_rewrite_rules() { * the process that will. * * Will add the non_wp_rules property rules to the .htaccess file before - * the WordPress rewrite rules one. + * the ClassicPress rewrite rules one. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return string */ @@ -1529,7 +1505,6 @@ public function mod_rewrite_rules() { $rules = "<IfModule mod_rewrite.c>\n"; $rules .= "RewriteEngine On\n"; - $rules .= "RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n"; $rules .= "RewriteBase $home_root\n"; // Prevent -f checks on index.php. @@ -1572,7 +1547,7 @@ public function mod_rewrite_rules() { /** * Filters the list of rewrite rules formatted for output to an .htaccess file. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $rules mod_rewrite Rewrite rules formatted for .htaccess. */ @@ -1581,12 +1556,12 @@ public function mod_rewrite_rules() { /** * Filters the list of rewrite rules formatted for output to an .htaccess file. * - * @since 1.5.0 - * @deprecated 1.5.0 Use the {@see 'mod_rewrite_rules'} filter instead. + * @since WP-1.5.0 + * @deprecated WP-1.5.0 Use the mod_rewrite_rules filter instead. * * @param string $rules mod_rewrite Rewrite rules formatted for .htaccess. */ - return apply_filters_deprecated( 'rewrite_rules', array( $rules ), '1.5.0', 'mod_rewrite_rules' ); + return apply_filters( 'rewrite_rules', $rules ); } /** @@ -1595,7 +1570,7 @@ public function mod_rewrite_rules() { * Does not actually write to the web.config file, but creates the rules for * the process that will. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param bool $add_parent_tags Optional. Whether to add parent tags to the rewrite rule sets. * Default false. @@ -1634,7 +1609,7 @@ public function iis7_url_rewrite_rules( $add_parent_tags = false ) { /** * Filters the list of rewrite rules formatted for output to a web.config. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $rules Rewrite rules formatted for IIS web.config. */ @@ -1647,8 +1622,8 @@ public function iis7_url_rewrite_rules( $add_parent_tags = false ) { * Any value in the $after parameter that isn't 'bottom' will result in the rule * being placed at the top of the rewrite rules. * - * @since 2.1.0 - * @since 4.4.0 Array support was added to the `$query` parameter. + * @since WP-2.1.0 + * @since WP-4.4.0 Array support was added to the `$query` parameter. * * @param string $regex Regular expression to match request against. * @param string|array $query The corresponding query vars for this rewrite rule. @@ -1681,7 +1656,7 @@ public function add_rule( $regex, $query, $after = 'bottom' ) { /** * Adds a rewrite rule that doesn't correspond to index.php. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $regex Regular expression to match request against. * @param string $query The corresponding query vars for this rewrite rule. @@ -1693,32 +1668,15 @@ public function add_external_rule( $regex, $query ) { /** * Adds an endpoint, like /trackback/. * - * @since 2.1.0 - * @since 3.9.0 $query_var parameter added. - * @since 4.3.0 Added support for skipping query var registration by passing `false` to `$query_var`. + * @since WP-2.1.0 + * @since WP-3.9.0 $query_var parameter added. + * @since WP-4.3.0 Added support for skipping query var registration by passing `false` to `$query_var`. * * @see add_rewrite_endpoint() for full documentation. - * @global WP $wp Current WordPress environment instance. + * @global WP $wp * * @param string $name Name of the endpoint. * @param int $places Endpoint mask describing the places the endpoint should be added. - * Accepts a mask of: - * - `EP_ALL` - * - `EP_NONE` - * - `EP_ALL_ARCHIVES` - * - `EP_ATTACHMENT` - * - `EP_AUTHORS` - * - `EP_CATEGORIES` - * - `EP_COMMENTS` - * - `EP_DATE` - * - `EP_DAY` - * - `EP_MONTH` - * - `EP_PAGES` - * - `EP_PERMALINK` - * - `EP_ROOT` - * - `EP_SEARCH` - * - `EP_TAGS` - * - `EP_YEAR` * @param string|bool $query_var Optional. Name of the corresponding query variable. Pass `false` to * skip registering a query_var for this endpoint. Defaults to the * value of `$name`. @@ -1727,7 +1685,7 @@ public function add_endpoint( $name, $places, $query_var = true ) { global $wp; // For backward compatibility, if null has explicitly been passed as `$query_var`, assume `true`. - if ( true === $query_var || null === $query_var ) { + if ( true === $query_var || null === func_get_arg( 2 ) ) { $query_var = $name; } $this->endpoints[] = array( $places, $name, $query_var ); @@ -1751,7 +1709,7 @@ public function add_endpoint( $name, $places, $query_var = true ) { * The `$args` parameter gives you control over how WP_Rewrite::generate_rewrite_rules() * works on the new permastruct. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $name Name for permalink structure. * @param string $struct Permalink structure (e.g. category/%category%) @@ -1762,23 +1720,9 @@ public function add_endpoint( $name, $places, $query_var = true ) { * @type bool $with_front Whether the structure should be prepended with `WP_Rewrite::$front`. * Default true. * @type int $ep_mask The endpoint mask defining which endpoints are added to the structure. - * Accepts a mask of: - * - `EP_ALL` - * - `EP_NONE` - * - `EP_ALL_ARCHIVES` - * - `EP_ATTACHMENT` - * - `EP_AUTHORS` - * - `EP_CATEGORIES` - * - `EP_COMMENTS` - * - `EP_DATE` - * - `EP_DAY` - * - `EP_MONTH` - * - `EP_PAGES` - * - `EP_PERMALINK` - * - `EP_ROOT` - * - `EP_SEARCH` - * - `EP_TAGS` - * - `EP_YEAR` + * Accepts `EP_NONE`, `EP_PERMALINK`, `EP_ATTACHMENT`, `EP_DATE`, `EP_YEAR`, + * `EP_MONTH`, `EP_DAY`, `EP_ROOT`, `EP_COMMENTS`, `EP_SEARCH`, `EP_CATEGORIES`, + * `EP_TAGS`, `EP_AUTHORS`, `EP_PAGES`, `EP_ALL_ARCHIVES`, and `EP_ALL`. * Default `EP_NONE`. * @type bool $paged Whether archive pagination rules should be added for the structure. * Default true. @@ -1823,7 +1767,7 @@ public function add_permastruct( $name, $struct, $args = array() ) { /** * Removes a permalink structure. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param string $name Name for permalink structure. */ @@ -1837,7 +1781,9 @@ public function remove_permastruct( $name ) { * Calls WP_Rewrite::wp_rewrite_rules() after removing the 'rewrite_rules' option. * If the function named 'save_mod_rewrite_rules' exists, it will be called. * - * @since 2.0.1 + * @since WP-2.0.1 + * + * @staticvar bool $do_hard_later * * @param bool $hard Whether to update .htaccess (hard flush) or just update rewrite_rules option (soft flush). Default is true (hard). */ @@ -1864,7 +1810,7 @@ public function flush_rules( $hard = true ) { * * A "hard" flush updates .htaccess (Apache) or web.config (IIS). * - * @since 3.7.0 + * @since WP-3.7.0 * * @param bool $hard Whether to flush rewrite rules "hard". Default true. */ @@ -1886,7 +1832,7 @@ public function flush_rules( $hard = true ) { * permalink structure begins with one of the following: '%postname%', '%category%', * '%tag%', or '%author%'. * - * @since 1.5.0 + * @since WP-1.5.0 */ public function init() { $this->extra_rules = array(); @@ -1911,7 +1857,7 @@ public function init() { // Enable generic rules for pages if permalink structure doesn't begin with a wildcard. if ( preg_match( '/^[^%]*%(?:postname|category|tag|author)%/', $this->permalink_structure ) ) { - $this->use_verbose_page_rules = true; + $this->use_verbose_page_rules = true; } else { $this->use_verbose_page_rules = false; } @@ -1927,7 +1873,7 @@ public function init() { * Fires the {@see 'permalink_structure_changed'} action once the init call has * processed passing the old and new values * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $permalink_structure Permalink structure. */ @@ -1941,7 +1887,7 @@ public function set_permalink_structure( $permalink_structure ) { /** * Fires after the permalink structure is updated. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $old_permalink_structure The previous permalink structure. * @param string $permalink_structure The new permalink structure. @@ -1957,7 +1903,7 @@ public function set_permalink_structure( $permalink_structure ) { * the current category base and the parameter value. Calls WP_Rewrite::init() * after the option is updated. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $category_base Category permalink structure base. */ @@ -1975,7 +1921,7 @@ public function set_category_base( $category_base ) { * current tag base and the parameter value. Calls WP_Rewrite::init() after * the option is updated. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param string $tag_base Tag permalink structure base. */ @@ -1989,7 +1935,8 @@ public function set_tag_base( $tag_base ) { /** * Constructor - Calls init(), which runs setup. * - * @since 1.5.0 + * @since WP-1.5.0 + * */ public function __construct() { $this->init(); diff --git a/wp-includes/class-wp-role.php b/wp-includes/class-wp-role.php index c75b883..01d3380 100644 --- a/wp-includes/class-wp-role.php +++ b/wp-includes/class-wp-role.php @@ -4,20 +4,19 @@ * * @package ClassicPress * @subpackage Users - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to extend the user roles API. * - * @since 2.0.0 + * @since WP-2.0.0 */ -#[AllowDynamicProperties] class WP_Role { /** * Role name. * - * @since 2.0.0 + * @since WP-2.0.0 * @var string */ public $name; @@ -25,23 +24,21 @@ class WP_Role { /** * List of capabilities the role contains. * - * @since 2.0.0 - * @var bool[] Array of key/value pairs where keys represent a capability name and boolean values - * represent whether the role has that capability. + * @since WP-2.0.0 + * @var array */ public $capabilities; /** * Constructor - Set up object properties. * - * The list of capabilities must have the key as the name of the capability + * The list of capabilities, must have the key as the name of the capability * and the value a boolean of whether it is granted to the role. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param string $role Role name. - * @param bool[] $capabilities Array of key/value pairs where keys represent a capability name and boolean values - * represent whether the role has that capability. + * @param string $role Role name. + * @param array $capabilities List of capabilities. */ public function __construct( $role, $capabilities ) { $this->name = $role; @@ -51,10 +48,10 @@ public function __construct( $role, $capabilities ) { /** * Assign role a capability. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param string $cap Capability name. - * @param bool $grant Whether role has capability privilege. + * @param string $cap Capability name. + * @param bool $grant Whether role has capability privilege. */ public function add_cap( $cap, $grant = true ) { $this->capabilities[ $cap ] = $grant; @@ -64,7 +61,12 @@ public function add_cap( $cap, $grant = true ) { /** * Removes a capability from a role. * - * @since 2.0.0 + * This is a container for WP_Roles::remove_cap() to remove the + * capability from the role. That is to say, that WP_Roles::remove_cap() + * implements the functionality, but it also makes sense to use this class, + * because you don't need to enter the role name. + * + * @since WP-2.0.0 * * @param string $cap Capability name. */ @@ -76,19 +78,23 @@ public function remove_cap( $cap ) { /** * Determines whether the role has the given capability. * - * @since 2.0.0 + * The capabilities is passed through the {@see 'role_has_cap'} filter. + * The first parameter for the hook is the list of capabilities the class + * has assigned. The second parameter is the capability name to look for. + * The third and final parameter for the hook is the role name. + * + * @since WP-2.0.0 * * @param string $cap Capability name. - * @return bool Whether the role has the given capability. + * @return bool True if the role has the given capability. False otherwise. */ public function has_cap( $cap ) { /** * Filters which capabilities a role has. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param bool[] $capabilities Array of key/value pairs where keys represent a capability name and boolean values - * represent whether the role has that capability. + * @param array $capabilities Array of role capabilities. * @param string $cap Capability name. * @param string $name Role name. */ @@ -100,4 +106,5 @@ public function has_cap( $cap ) { return false; } } + } diff --git a/wp-includes/class-wp-roles.php b/wp-includes/class-wp-roles.php index 696a8a7..0388dac 100644 --- a/wp-includes/class-wp-roles.php +++ b/wp-includes/class-wp-roles.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Users - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -21,38 +21,37 @@ * ) * ) * - * @since 2.0.0 + * @since WP-2.0.0 */ -#[AllowDynamicProperties] class WP_Roles { /** * List of roles and capabilities. * - * @since 2.0.0 - * @var array[] + * @since WP-2.0.0 + * @var array */ public $roles; /** * List of the role objects. * - * @since 2.0.0 - * @var WP_Role[] + * @since WP-2.0.0 + * @var array */ public $role_objects = array(); /** * List of role names. * - * @since 2.0.0 - * @var string[] + * @since WP-2.0.0 + * @var array */ public $role_names = array(); /** * Option name for storing role list. * - * @since 2.0.0 + * @since WP-2.0.0 * @var string */ public $role_key; @@ -60,7 +59,7 @@ class WP_Roles { /** * Whether to use the database for retrieval and storage. * - * @since 2.1.0 + * @since WP-2.1.0 * @var bool */ public $use_db = true; @@ -68,16 +67,16 @@ class WP_Roles { /** * The site ID the roles are initialized for. * - * @since 4.9.0 + * @since WP-4.9.0 * @var int */ protected $site_id = 0; /** - * Constructor. + * Constructor * - * @since 2.0.0 - * @since 4.9.0 The `$site_id` argument was added. + * @since WP-2.0.0 + * @since WP-4.9.0 The $site_id argument was added. * * @global array $wp_user_roles Used to set the 'roles' property value. * @@ -92,68 +91,66 @@ public function __construct( $site_id = null ) { } /** - * Makes private/protected methods readable for backward compatibility. + * Make private/protected methods readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $name Method to call. - * @param array $arguments Arguments to pass when calling. + * @param callable $name Method to call. + * @param array $arguments Arguments to pass when calling. * @return mixed|false Return value of the callback, false otherwise. */ public function __call( $name, $arguments ) { if ( '_init' === $name ) { - return $this->_init( ...$arguments ); + return call_user_func_array( array( $this, $name ), $arguments ); } return false; } /** - * Sets up the object properties. + * Set up the object properties. * * The role key is set to the current prefix for the $wpdb object with * 'user_roles' appended. If the $wp_user_roles global is set, then it will * be used and the role option will not be updated or used. * - * @since 2.1.0 - * @deprecated 4.9.0 Use WP_Roles::for_site() + * @since WP-2.1.0 + * @deprecated WP-4.9.0 Use WP_Roles::for_site() */ protected function _init() { - _deprecated_function( __METHOD__, '4.9.0', 'WP_Roles::for_site()' ); + _deprecated_function( __METHOD__, 'WP-4.9.0', 'WP_Roles::for_site()' ); $this->for_site(); } /** - * Reinitializes the object. + * Reinitialize the object * * Recreates the role objects. This is typically called only by switch_to_blog() * after switching wpdb to a new site ID. * - * @since 3.5.0 - * @deprecated 4.7.0 Use WP_Roles::for_site() + * @since WP-3.5.0 + * @deprecated WP-4.7.0 Use WP_Roles::for_site() */ public function reinit() { - _deprecated_function( __METHOD__, '4.7.0', 'WP_Roles::for_site()' ); + _deprecated_function( __METHOD__, 'WP-4.7.0', 'WP_Roles::for_site()' ); $this->for_site(); } /** - * Adds a role name with capabilities to the list. + * Add role name with capabilities to list. * * Updates the list of roles, if the role doesn't already exist. * - * The capabilities are defined in the following format: `array( 'read' => true )`. - * To explicitly deny the role a capability, set the value for that capability to false. + * The capabilities are defined in the following format `array( 'read' => true );` + * To explicitly deny a role a capability you set the value for that capability to false. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param string $role Role name. + * @param string $role Role name. * @param string $display_name Role display name. - * @param bool[] $capabilities Optional. List of capabilities keyed by the capability name, - * e.g. `array( 'edit_posts' => true, 'delete_posts' => false )`. - * Default empty array. - * @return WP_Role|void WP_Role object, if the role is added. + * @param array $capabilities List of role capabilities in the above format. + * @return WP_Role|void WP_Role object, if role is added. */ public function add_role( $role, $display_name, $capabilities = array() ) { if ( empty( $role ) || isset( $this->roles[ $role ] ) ) { @@ -173,9 +170,9 @@ public function add_role( $role, $display_name, $capabilities = array() ) { } /** - * Removes a role by name. + * Remove role by name. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. */ @@ -198,14 +195,13 @@ public function remove_role( $role ) { } /** - * Adds a capability to role. + * Add capability to role. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param string $role Role name. - * @param string $cap Capability name. - * @param bool $grant Optional. Whether role is capable of performing capability. - * Default true. + * @param string $role Role name. + * @param string $cap Capability name. + * @param bool $grant Optional, default is true. Whether role is capable of performing capability. */ public function add_cap( $role, $cap, $grant = true ) { if ( ! isset( $this->roles[ $role ] ) ) { @@ -219,12 +215,12 @@ public function add_cap( $role, $cap, $grant = true ) { } /** - * Removes a capability from role. + * Remove capability from role. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. - * @param string $cap Capability name. + * @param string $cap Capability name. */ public function remove_cap( $role, $cap ) { if ( ! isset( $this->roles[ $role ] ) ) { @@ -238,9 +234,9 @@ public function remove_cap( $role, $cap ) { } /** - * Retrieves a role object by name. + * Retrieve role object by name. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. * @return WP_Role|null WP_Role object if found, null if the role does not exist. @@ -254,20 +250,20 @@ public function get_role( $role ) { } /** - * Retrieves a list of role names. + * Retrieve list of role names. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @return string[] List of role names. + * @return array List of role names. */ public function get_names() { return $this->role_names; } /** - * Determines whether a role name is currently in the list of available roles. + * Whether role name is currently in the list of available roles. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name to look up. * @return bool @@ -279,7 +275,7 @@ public function is_role( $role ) { /** * Initializes all of the available roles. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function init_roles() { if ( empty( $this->roles ) ) { @@ -294,11 +290,11 @@ public function init_roles() { } /** - * Fires after the roles have been initialized, allowing plugins to add their own roles. + * After the roles have been initialized, allow plugins to add their own roles. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @param WP_Roles $wp_roles A reference to the WP_Roles object. + * @param WP_Roles $this A reference to the WP_Roles object. */ do_action( 'wp_roles_init', $this ); } @@ -306,9 +302,9 @@ public function init_roles() { /** * Sets the site to operate on. Defaults to the current site. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $site_id Site ID to initialize roles for. Default is the current site. */ @@ -335,7 +331,7 @@ public function for_site( $site_id = null ) { /** * Gets the ID of the site for which roles are currently initialized. * - * @since 4.9.0 + * @since WP-4.9.0 * * @return int Site ID. */ @@ -346,7 +342,7 @@ public function get_site_id() { /** * Gets the available roles data. * - * @since 4.9.0 + * @since WP-4.9.0 * * @global array $wp_user_roles Used to set the 'roles' property value. * diff --git a/wp-includes/class-wp-scripts.php b/wp-includes/class-wp-scripts.php deleted file mode 100644 index 99c66ea..0000000 --- a/wp-includes/class-wp-scripts.php +++ /dev/null @@ -1,705 +0,0 @@ -<?php -/** - * Dependencies API: WP_Scripts class - * - * @since 2.6.0 - * - * @package ClassicPress - * @subpackage Dependencies - */ - -/** - * Core class used to register scripts. - * - * @since 2.1.0 - * - * @see WP_Dependencies - */ -class WP_Scripts extends WP_Dependencies { - /** - * Base URL for scripts. - * - * Full URL with trailing slash. - * - * @since 2.6.0 - * @var string - */ - public $base_url; - - /** - * URL of the content directory. - * - * @since 2.8.0 - * @var string - */ - public $content_url; - - /** - * Default version string for scripts. - * - * @since 2.6.0 - * @var string - */ - public $default_version; - - /** - * Holds handles of scripts which are enqueued in footer. - * - * @since 2.8.0 - * @var array - */ - public $in_footer = array(); - - /** - * Holds a list of script handles which will be concatenated. - * - * @since 2.8.0 - * @var string - */ - public $concat = ''; - - /** - * Holds a string which contains script handles and their version. - * - * @since 2.8.0 - * @deprecated 3.4.0 - * @var string - */ - public $concat_version = ''; - - /** - * Whether to perform concatenation. - * - * @since 2.8.0 - * @var bool - */ - public $do_concat = false; - - /** - * Holds HTML markup of scripts and additional data if concatenation - * is enabled. - * - * @since 2.8.0 - * @var string - */ - public $print_html = ''; - - /** - * Holds inline code if concatenation is enabled. - * - * @since 2.8.0 - * @var string - */ - public $print_code = ''; - - /** - * Holds a list of script handles which are not in the default directory - * if concatenation is enabled. - * - * Unused in core. - * - * @since 2.8.0 - * @var string - */ - public $ext_handles = ''; - - /** - * Holds a string which contains handles and versions of scripts which - * are not in the default directory if concatenation is enabled. - * - * Unused in core. - * - * @since 2.8.0 - * @var string - */ - public $ext_version = ''; - - /** - * List of default directories. - * - * @since 2.8.0 - * @var array - */ - public $default_dirs; - - /** - * Constructor. - * - * @since 2.6.0 - */ - public function __construct() { - $this->init(); - add_action( 'init', array( $this, 'init' ), 0 ); - } - - /** - * Initialize the class. - * - * @since 3.4.0 - */ - public function init() { - /** - * Fires when the WP_Scripts instance is initialized. - * - * @since 2.6.0 - * - * @param WP_Scripts $wp_scripts WP_Scripts instance (passed by reference). - */ - 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. - * - * @since 2.1.0 - * @since 2.8.0 Added the `$group` parameter. - * - * @param string|string[]|false $handles Optional. Scripts to be printed: queue (false), - * single script (string), or multiple scripts (array of strings). - * Default false. - * @param int|false $group Optional. Group level: level (int), no groups (false). - * Default false. - * @return string[] Handles of scripts that have been printed. - */ - public function print_scripts( $handles = false, $group = false ) { - return $this->do_items( $handles, $group ); - } - - /** - * Prints extra scripts of a registered script. - * - * @since 2.1.0 - * @since 2.8.0 Added the `$display` parameter. - * @deprecated 3.3.0 - * - * @see print_extra_script() - * - * @param string $handle The script's registered handle. - * @param bool $display Optional. Whether to print the extra script - * instead of just returning it. Default true. - * @return bool|string|void Void if no data exists, extra scripts if `$display` is true, - * true otherwise. - */ - public function print_scripts_l10n( $handle, $display = true ) { - _deprecated_function( __FUNCTION__, '3.3.0', 'WP_Scripts::print_extra_script()' ); - return $this->print_extra_script( $handle, $display ); - } - - /** - * Prints extra scripts of a registered script. - * - * @since 3.3.0 - * - * @param string $handle The script's registered handle. - * @param bool $display Optional. Whether to print the extra script - * instead of just returning it. Default true. - * @return bool|string|void Void if no data exists, extra scripts if `$display` is true, - * true otherwise. - */ - public function print_extra_script( $handle, $display = true ) { - $output = $this->get_data( $handle, 'data' ); - if ( ! $output ) { - return; - } - - if ( ! $display ) { - return $output; - } - - printf( "<script id='%s-js-extra'>\n", esc_attr( $handle ) ); - - echo "$output\n"; - echo "</script>\n"; - - return true; - } - - /** - * Processes a script dependency. - * - * @since 2.6.0 - * @since 2.8.0 Added the `$group` parameter. - * - * @see WP_Dependencies::do_item() - * - * @param string $handle The script's registered handle. - * @param int|false $group Optional. Group level: level (int), no groups (false). - * Default false. - * @return bool True on success, false on failure. - */ - public function do_item( $handle, $group = false ) { - if ( ! parent::do_item( $handle ) ) { - return false; - } - - if ( 0 === $group && $this->groups[ $handle ] > 0 ) { - $this->in_footer[] = $handle; - return false; - } - - if ( false === $group && in_array( $handle, $this->in_footer, true ) ) { - $this->in_footer = array_diff( $this->in_footer, (array) $handle ); - } - - $obj = $this->registered[ $handle ]; - - if ( null === $obj->ver ) { - $ver = ''; - } else { - $ver = $obj->ver ? $obj->ver : $this->default_version; - } - - if ( isset( $this->args[ $handle ] ) ) { - $ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ]; - } - - /** This filter is documented in wp-includes/script-loader.php */ - $ver = apply_filters( 'classicpress_asset_version', $ver, 'script', $handle ); - - $src = $obj->src; - $cond_before = ''; - $cond_after = ''; - $conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : ''; - - if ( $conditional ) { - $cond_before = "<!--[if {$conditional}]>\n"; - $cond_after = "<![endif]-->\n"; - } - - $before_handle = $this->print_inline_script( $handle, 'before', false ); - $after_handle = $this->print_inline_script( $handle, 'after', false ); - - if ( $before_handle ) { - $before_handle = sprintf( "<script id='%s-js-before'>\n%s\n</script>\n", esc_attr( $handle ), $before_handle ); - } - - if ( $after_handle ) { - $after_handle = sprintf( "<script id='%s-js-after'>\n%s\n</script>\n", esc_attr( $handle ), $after_handle ); - } - - if ( $before_handle || $after_handle ) { - $inline_script_tag = $cond_before . $before_handle . $after_handle . $cond_after; - } else { - $inline_script_tag = ''; - } - - /* - * Prevent concatenation of scripts if the text domain is defined - * to ensure the dependency order is respected. - */ - $translations_stop_concat = ! empty( $obj->textdomain ); - - $translations = $this->print_translations( $handle, false ); - if ( $translations ) { - $translations = sprintf( "<script id='%s-js-translations'>\n%s\n</script>\n", esc_attr( $handle ), $translations ); - } - - if ( $this->do_concat ) { - /** - * Filters the script loader source. - * - * @since 2.2.0 - * - * @param string $src Script loader source path. - * @param string $handle Script handle. - */ - $srce = apply_filters( 'script_loader_src', $src, $handle ); - - if ( $this->in_default_dir( $srce ) && ( $before_handle || $after_handle || $translations_stop_concat ) ) { - $this->do_concat = false; - - // Have to print the so-far concatenated scripts right away to maintain the right order. - _print_scripts(); - $this->reset(); - } elseif ( $this->in_default_dir( $srce ) && ! $conditional ) { - $this->print_code .= $this->print_extra_script( $handle, false ); - $this->concat .= "$handle,"; - $this->concat_version .= "$handle$ver"; - return true; - } else { - $this->ext_handles .= "$handle,"; - $this->ext_version .= "$handle$ver"; - } - } - - $has_conditional_data = $conditional && $this->get_data( $handle, 'data' ); - - if ( $has_conditional_data ) { - echo $cond_before; - } - - $this->print_extra_script( $handle ); - - if ( $has_conditional_data ) { - echo $cond_after; - } - - // A single item may alias a set of items, by having dependencies, but no source. - if ( ! $src ) { - if ( $inline_script_tag ) { - if ( $this->do_concat ) { - $this->print_html .= $inline_script_tag; - } else { - echo $inline_script_tag; - } - } - - return true; - } - - if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) { - $src = $this->base_url . $src; - } - - if ( ! empty( $ver ) ) { - $src = add_query_arg( 'ver', $ver, $src ); - } - - /** This filter is documented in wp-includes/class-wp-scripts.php */ - $src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) ); - - if ( ! $src ) { - return true; - } - - $tag = $translations . $cond_before . $before_handle; - $tag .= sprintf( "<script src='%s' id='%s-js'></script>\n", $src, esc_attr( $handle ) ); - $tag .= $after_handle . $cond_after; - - /** - * Filters the HTML script tag of an enqueued script. - * - * @since 4.1.0 - * - * @param string $tag The `<script>` tag for the enqueued script. - * @param string $handle The script's registered handle. - * @param string $src The script's source URL. - */ - $tag = apply_filters( 'script_loader_tag', $tag, $handle, $src ); - - if ( $this->do_concat ) { - $this->print_html .= $tag; - } else { - echo $tag; - } - - return true; - } - - /** - * Adds extra code to a registered script. - * - * @since 4.5.0 - * - * @param string $handle Name of the script to add the inline script to. - * Must be lowercase. - * @param string $data String containing the JavaScript to be added. - * @param string $position Optional. Whether to add the inline script - * before the handle or after. Default 'after'. - * @return bool True on success, false on failure. - */ - public function add_inline_script( $handle, $data, $position = 'after' ) { - if ( ! $data ) { - return false; - } - - if ( 'after' !== $position ) { - $position = 'before'; - } - - $script = (array) $this->get_data( $handle, $position ); - $script[] = $data; - - return $this->add_data( $handle, $position, $script ); - } - - /** - * Prints inline scripts registered for a specific handle. - * - * @since 4.5.0 - * - * @param string $handle Name of the script to add the inline script to. - * Must be lowercase. - * @param string $position Optional. Whether to add the inline script - * before the handle or after. Default 'after'. - * @param bool $display Optional. Whether to print the script - * instead of just returning it. Default true. - * @return string|false Script on success, false otherwise. - */ - public function print_inline_script( $handle, $position = 'after', $display = true ) { - $output = $this->get_data( $handle, $position ); - - if ( empty( $output ) ) { - return false; - } - - $output = trim( implode( "\n", $output ), "\n" ); - - if ( $display ) { - printf( "<script id='%s-js-%s'>\n%s\n</script>\n", esc_attr( $handle ), esc_attr( $position ), $output ); - } - - return $output; - } - - /** - * Localizes a script, only if the script has already been added. - * - * @since 2.1.0 - * - * @param string $handle Name of the script to attach data to. - * @param string $object_name Name of the variable that will contain the data. - * @param array $l10n Array of data to localize. - * @return bool True on success, false on failure. - */ - public function localize( $handle, $object_name, $l10n ) { - if ( 'jquery' === $handle ) { - $handle = 'jquery-core'; - } - - if ( is_array( $l10n ) && isset( $l10n['l10n_print_after'] ) ) { // back compat, preserve the code in 'l10n_print_after' if present. - $after = $l10n['l10n_print_after']; - unset( $l10n['l10n_print_after'] ); - } - - if ( ! is_array( $l10n ) ) { - _doing_it_wrong( - __METHOD__, - sprintf( - /* translators: 1: $l10n, 2: wp_add_inline_script() */ - __( 'The %1$s parameter must be an array. To pass arbitrary data to scripts, use the %2$s function instead.' ), - '<code>$l10n</code>', - '<code>wp_add_inline_script()</code>' - ), - '5.7.0' - ); - - if ( false === $l10n ) { - // This should really not be needed, but is necessary for backward compatibility. - $l10n = array( $l10n ); - } - } - - if ( is_string( $l10n ) ) { - $l10n = html_entity_decode( $l10n, ENT_QUOTES, 'UTF-8' ); - } elseif ( is_array( $l10n ) ) { - foreach ( $l10n as $key => $value ) { - if ( ! is_scalar( $value ) ) { - continue; - } - - $l10n[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); - } - } - - $script = "var $object_name = " . wp_json_encode( $l10n ) . ';'; - - if ( ! empty( $after ) ) { - $script .= "\n$after;"; - } - - $data = $this->get_data( $handle, 'data' ); - - if ( ! empty( $data ) ) { - $script = "$data\n$script"; - } - - return $this->add_data( $handle, 'data', $script ); - } - - /** - * Sets handle group. - * - * @since 2.8.0 - * - * @see WP_Dependencies::set_group() - * - * @param string $handle Name of the item. Should be unique. - * @param bool $recursion Internal flag that calling function was called recursively. - * @param int|false $group Optional. Group level: level (int), no groups (false). - * Default false. - * @return bool Not already in the group or a lower group. - */ - public function set_group( $handle, $recursion, $group = false ) { - if ( isset( $this->registered[ $handle ]->args ) && 1 === $this->registered[ $handle ]->args ) { - $grp = 1; - } else { - $grp = (int) $this->get_data( $handle, 'group' ); - } - - if ( false !== $group && $grp > $group ) { - $grp = $group; - } - - return parent::set_group( $handle, $recursion, $grp ); - } - - /** - * Sets a translation textdomain. - * - * @since 5.0.0 - * @since 5.1.0 The `$domain` parameter was made optional. - * - * @param string $handle Name of the script to register a translation domain to. - * @param string $domain Optional. Text domain. Default 'default'. - * @param string $path Optional. The full file path to the directory containing translation files. - * @return bool True if the text domain was registered, false if not. - */ - public function set_translations( $handle, $domain = 'default', $path = '' ) { - if ( ! isset( $this->registered[ $handle ] ) ) { - return false; - } - - /** @var \_WP_Dependency $obj */ - $obj = $this->registered[ $handle ]; - - if ( ! in_array( 'wp-i18n', $obj->deps, true ) ) { - $obj->deps[] = 'wp-i18n'; - } - - return $obj->set_translations( $domain, $path ); - } - - /** - * Prints translations set for a specific handle. - * - * @since 5.0.0 - * - * @param string $handle Name of the script to add the inline script to. - * Must be lowercase. - * @param bool $display Optional. Whether to print the script - * instead of just returning it. Default true. - * @return string|false Script on success, false otherwise. - */ - public function print_translations( $handle, $display = true ) { - if ( ! isset( $this->registered[ $handle ] ) || empty( $this->registered[ $handle ]->textdomain ) ) { - return false; - } - - $domain = $this->registered[ $handle ]->textdomain; - $path = ''; - - if ( isset( $this->registered[ $handle ]->translations_path ) ) { - $path = $this->registered[ $handle ]->translations_path; - } - - $json_translations = load_script_textdomain( $handle, $domain, $path ); - - if ( ! $json_translations ) { - return false; - } - - $output = <<<JS -( function( domain, translations ) { - var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; - localeData[""].domain = domain; - wp.i18n.setLocaleData( localeData, domain ); -} )( "{$domain}", {$json_translations} ); -JS; - - if ( $display ) { - printf( "<script id='%s-js-translations'>\n%s\n</script>\n", esc_attr( $handle ), $output ); - } - - return $output; - } - - /** - * Determines script dependencies. - * - * @since 2.1.0 - * - * @see WP_Dependencies::all_deps() - * - * @param string|string[] $handles Item handle (string) or item handles (array of strings). - * @param bool $recursion Optional. Internal flag that function is calling itself. - * Default false. - * @param int|false $group Optional. Group level: level (int), no groups (false). - * Default false. - * @return bool True on success, false on failure. - */ - public function all_deps( $handles, $recursion = false, $group = false ) { - $r = parent::all_deps( $handles, $recursion, $group ); - if ( ! $recursion ) { - /** - * Filters the list of script dependencies left to print. - * - * @since 2.3.0 - * - * @param string[] $to_do An array of script dependency handles. - */ - $this->to_do = apply_filters( 'print_scripts_array', $this->to_do ); - } - return $r; - } - - /** - * Processes items and dependencies for the head group. - * - * @since 2.8.0 - * - * @see WP_Dependencies::do_items() - * - * @return string[] Handles of items that have been processed. - */ - public function do_head_items() { - $this->do_items( false, 0 ); - return $this->done; - } - - /** - * Processes items and dependencies for the footer group. - * - * @since 2.8.0 - * - * @see WP_Dependencies::do_items() - * - * @return string[] Handles of items that have been processed. - */ - public function do_footer_items() { - $this->do_items( false, 1 ); - return $this->done; - } - - /** - * Whether a handle's source is in a default directory. - * - * @since 2.8.0 - * - * @param string $src The source of the enqueued script. - * @return bool True if found, false if not. - */ - public function in_default_dir( $src ) { - if ( ! $this->default_dirs ) { - return true; - } - - if ( 0 === strpos( $src, '/' . WPINC . '/js/l10n' ) ) { - return false; - } - - foreach ( (array) $this->default_dirs as $test ) { - if ( 0 === strpos( $src, $test ) ) { - return true; - } - } - return false; - } - - /** - * Resets class properties. - * - * @since 2.8.0 - */ - public function reset() { - $this->do_concat = false; - $this->print_code = ''; - $this->concat = ''; - $this->concat_version = ''; - $this->print_html = ''; - $this->ext_version = ''; - $this->ext_handles = ''; - } -} diff --git a/wp-includes/class-wp-session-tokens.php b/wp-includes/class-wp-session-tokens.php index 0dd27f1..95d91d4 100644 --- a/wp-includes/class-wp-session-tokens.php +++ b/wp-includes/class-wp-session-tokens.php @@ -4,29 +4,28 @@ * * @package ClassicPress * @subpackage Session - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Abstract class for managing user session tokens. * - * @since 4.0.0 + * @since WP-4.0.0 */ -#[AllowDynamicProperties] abstract class WP_Session_Tokens { /** * User ID. * - * @since 4.0.0 + * @since WP-4.0.0 * @var int User ID. */ protected $user_id; /** - * Protected constructor. Use the `get_instance()` method to get the instance. + * Protected constructor. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param int $user_id User whose session to manage. */ @@ -35,22 +34,22 @@ protected function __construct( $user_id ) { } /** - * Retrieves a session manager instance for a user. + * Retrieves a session token manager instance for a user. * * This method contains a {@see 'session_token_manager'} filter, allowing a plugin to swap out * the session manager for a subclass of `WP_Session_Tokens`. * - * @since 4.0.0 + * @since WP-4.0.0 + * @static * * @param int $user_id User whose session to manage. - * @return WP_Session_Tokens The session object, which is by default an instance of - * the `WP_User_Meta_Session_Tokens` class. + * @return WP_User_Meta_Session_Tokens WP_User_Meta_Session_Tokens class instance by default. */ final public static function get_instance( $user_id ) { /** - * Filters the class name for the session token manager. + * Filters the session token manager used. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $session Name of class to use as the manager. * Default 'WP_User_Meta_Session_Tokens'. @@ -60,9 +59,9 @@ final public static function get_instance( $user_id ) { } /** - * Hashes the given session token for storage. + * Hashes a session token for storage. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $token Session token to hash. * @return string A hash of the session token (a verifier). @@ -77,12 +76,12 @@ private function hash_token( $token ) { } /** - * Retrieves a user's session for the given token. + * Get a user's session. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $token Session token. - * @return array|null The session, or null if it does not exist. + * @param string $token Session token + * @return array User session */ final public function get( $token ) { $verifier = $this->hash_token( $token ); @@ -90,11 +89,11 @@ final public function get( $token ) { } /** - * Validates the given session token for authenticity and validity. + * Validate a user's session token as authentic. * * Checks that the given token is present and hasn't expired. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $token Token to verify. * @return bool Whether the token is valid for the user. @@ -105,17 +104,17 @@ final public function verify( $token ) { } /** - * Generates a session token and attaches session information to it. + * Generate a session token and attach session information to it. * * A session token is a long, random string. It is used in a cookie - * to link that cookie to an expiration time and to ensure the cookie - * becomes invalidated when the user logs out. + * link that cookie to an expiration time and to ensure the cookie + * becomes invalidated upon logout. * * This function generates a token and stores it with the associated * expiration time (and potentially other session information via the * {@see 'attach_session_information'} filter). * - * @since 4.0.0 + * @since WP-4.0.0 * * @param int $expiration Session expiration timestamp. * @return string Session token. @@ -124,9 +123,10 @@ final public function create( $expiration ) { /** * Filters the information attached to the newly created session. * - * Can be used to attach further information to a session. + * Could be used in the future to attach information such as + * IP address or user agent to a session. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param array $session Array of extra data. * @param int $user_id User ID. @@ -144,7 +144,7 @@ final public function create( $expiration ) { $session['ua'] = wp_unslash( $_SERVER['HTTP_USER_AGENT'] ); } - // Timestamp. + // Timestamp $session['login'] = time(); $token = wp_generate_password( 43, false, false ); @@ -155,9 +155,9 @@ final public function create( $expiration ) { } /** - * Updates the data for the session with the given token. + * Update a session token. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $token Session token to update. * @param array $session Session information. @@ -168,9 +168,9 @@ final public function update( $token, $session ) { } /** - * Destroys the session with the given token. + * Destroy a session token. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $token Session token to destroy. */ @@ -180,9 +180,10 @@ final public function destroy( $token ) { } /** - * Destroys all sessions for this user except the one with the given token (presumably the one in use). + * Destroy all session tokens for this user, + * except a single token, presumably the one in use. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $token_to_keep Session token to keep. */ @@ -197,9 +198,10 @@ final public function destroy_others( $token_to_keep ) { } /** - * Determines whether a session is still valid, based on its expiration timestamp. + * Determine whether a session token is still valid, + * based on expiration. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param array $session Session to check. * @return bool Whether session is valid. @@ -209,18 +211,19 @@ final protected function is_still_valid( $session ) { } /** - * Destroys all sessions for a user. + * Destroy all session tokens for a user. * - * @since 4.0.0 + * @since WP-4.0.0 */ final public function destroy_all() { $this->destroy_all_sessions(); } /** - * Destroys all sessions for all users. + * Destroy all session tokens for all users. * - * @since 4.0.0 + * @since WP-4.0.0 + * @static */ final public static function destroy_all_for_all_users() { /** This filter is documented in wp-includes/class-wp-session-tokens.php */ @@ -229,67 +232,69 @@ final public static function destroy_all_for_all_users() { } /** - * Retrieves all sessions for a user. + * Retrieve all sessions of a user. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @return array Sessions for a user. + * @return array Sessions of a user. */ final public function get_all() { return array_values( $this->get_sessions() ); } /** - * Retrieves all sessions of the user. + * This method should retrieve all sessions of a user, keyed by verifier. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @return array Sessions of the user. + * @return array Sessions of a user, keyed by verifier. */ abstract protected function get_sessions(); /** - * Retrieves a session based on its verifier (token hash). + * This method should look up a session by its verifier (token hash). * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $verifier Verifier for the session to retrieve. + * @param string $verifier Verifier of the session to retrieve. * @return array|null The session, or null if it does not exist. */ abstract protected function get_session( $verifier ); /** - * Updates a session based on its verifier (token hash). + * This method should update a session by its verifier. * - * Omitting the second argument destroys the session. + * Omitting the second argument should destroy the session. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $verifier Verifier for the session to update. + * @param string $verifier Verifier of the session to update. * @param array $session Optional. Session. Omitting this argument destroys the session. */ abstract protected function update_session( $verifier, $session = null ); /** - * Destroys all sessions for this user, except the single session with the given verifier. + * This method should destroy all session tokens for this user, + * except a single session passed. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $verifier Verifier of the session to keep. */ abstract protected function destroy_other_sessions( $verifier ); /** - * Destroys all sessions for the user. + * This method should destroy all sessions for a user. * - * @since 4.0.0 + * @since WP-4.0.0 */ abstract protected function destroy_all_sessions(); /** - * Destroys all sessions for all users. + * This static method should destroy all session tokens for all users. * - * @since 4.0.0 + * @since WP-4.0.0 + * @static */ public static function drop_sessions() {} } diff --git a/wp-includes/class-wp-simplepie-file.php b/wp-includes/class-wp-simplepie-file.php index 988e387..d495506 100644 --- a/wp-includes/class-wp-simplepie-file.php +++ b/wp-includes/class-wp-simplepie-file.php @@ -4,45 +4,32 @@ * * @package ClassicPress * @subpackage Feed - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Core class for fetching remote files and reading local files with SimplePie. * - * This uses Core's HTTP API to make requests, which gives plugins the ability - * to hook into the process. - * - * @since 2.8.0 + * @since WP-2.8.0 * * @see SimplePie_File */ -#[AllowDynamicProperties] class WP_SimplePie_File extends SimplePie_File { - /** - * Timeout. - * - * @var int How long the connection should stay open in seconds. - */ - public $timeout = 10; - /** * Constructor. * - * @since 2.8.0 - * @since 3.2.0 Updated to use a PHP5 constructor. - * @since 5.6.1 Multiple headers are concatenated into a comma-separated string, - * rather than remaining an array. + * @since WP-2.8.0 + * @since WP-3.2.0 Updated to use a PHP5 constructor. * * @param string $url Remote file URL. - * @param int $timeout Optional. How long the connection should stay open in seconds. + * @param integer $timeout Optional. How long the connection should stay open in seconds. * Default 10. - * @param int $redirects Optional. The number of allowed redirects. Default 5. + * @param integer $redirects Optional. The number of allowed redirects. Default 5. * @param string|array $headers Optional. Array or string of headers to send with the request. * Default null. * @param string $useragent Optional. User-agent value sent. Default null. - * @param bool $force_fsockopen Optional. Whether to force opening internet or unix domain socket + * @param boolean $force_fsockopen Optional. Whether to force opening internet or unix domain socket * connection or not. Default false. */ public function __construct( $url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false ) { @@ -64,7 +51,7 @@ public function __construct( $url, $timeout = 10, $redirects = 5, $headers = nul $args['headers'] = $this->headers; } - if ( SIMPLEPIE_USERAGENT != $this->useragent ) { // Use default WP user agent unless custom has been specified. + if ( SIMPLEPIE_USERAGENT != $this->useragent ) { //Use default WP user agent unless custom has been specified $args['user-agent'] = $this->useragent; } @@ -73,32 +60,8 @@ public function __construct( $url, $timeout = 10, $redirects = 5, $headers = nul if ( is_wp_error( $res ) ) { $this->error = 'WP HTTP Error: ' . $res->get_error_message(); $this->success = false; - } else { - $this->headers = wp_remote_retrieve_headers( $res ); - - /* - * SimplePie expects multiple headers to be stored as a comma-separated string, - * but `wp_remote_retrieve_headers()` returns them as an array, so they need - * to be converted. - * - * The only exception to that is the `content-type` header, which should ignore - * any previous values and only use the last one. - * - * @see SimplePie_HTTP_Parser::new_line(). - */ - foreach ( $this->headers as $name => $value ) { - if ( ! is_array( $value ) ) { - continue; - } - - if ( 'content-type' === $name ) { - $this->headers[ $name ] = array_pop( $value ); - } else { - $this->headers[ $name ] = implode( ', ', $value ); - } - } - + $this->headers = wp_remote_retrieve_headers( $res ); $this->body = wp_remote_retrieve_body( $res ); $this->status_code = wp_remote_retrieve_response_code( $res ); } diff --git a/wp-includes/class-wp-simplepie-sanitize-kses.php b/wp-includes/class-wp-simplepie-sanitize-kses.php index da26f93..9f694b1 100644 --- a/wp-includes/class-wp-simplepie-sanitize-kses.php +++ b/wp-includes/class-wp-simplepie-sanitize-kses.php @@ -4,31 +4,30 @@ * * @package ClassicPress * @subpackage Feed - * @since 4.7.0 + * @since WP-4.7.0 */ /** - * Core class used to implement SimplePie feed sanitization. + * Core class used to implement SimpliePie feed sanitization. * * Extends the SimplePie_Sanitize class to use KSES, because * we cannot universally count on DOMDocument being available. * - * @since 3.5.0 + * @since WP-3.5.0 * * @see SimplePie_Sanitize */ -#[AllowDynamicProperties] class WP_SimplePie_Sanitize_KSES extends SimplePie_Sanitize { /** - * WordPress SimplePie sanitization using KSES. + * ClassicPress SimplePie sanitization using KSES. * * Sanitizes the incoming data, to ensure that it matches the type of data expected, using KSES. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param mixed $data The data that needs to be sanitized. - * @param int $type The type of data that it's supposed to be. + * @param integer $type The type of data that it's supposed to be. * @param string $base Optional. The `xml:base` value to use when converting relative * URLs to absolute ones. Default empty. * @return mixed Sanitized data. diff --git a/wp-includes/class-wp-site-query.php b/wp-includes/class-wp-site-query.php index 35aac3a..de7c416 100644 --- a/wp-includes/class-wp-site-query.php +++ b/wp-includes/class-wp-site-query.php @@ -4,23 +4,22 @@ * * @package ClassicPress * @subpackage Sites - * @since 4.6.0 + * @since WP-4.6.0 */ /** * Core class used for querying sites. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_Site_Query::__construct() for accepted arguments. */ -#[AllowDynamicProperties] class WP_Site_Query { /** * SQL for database query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string */ public $request; @@ -28,7 +27,7 @@ class WP_Site_Query { /** * SQL query clauses. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ protected $sql_clauses = array( @@ -40,34 +39,18 @@ class WP_Site_Query { 'limits' => '', ); - /** - * Metadata query container. - * - * @since 5.1.0 - * @var WP_Meta_Query - */ - public $meta_query = false; - - /** - * Metadata query clauses. - * - * @since 5.1.0 - * @var array - */ - protected $meta_query_clauses; - /** * Date query container. * - * @since 4.6.0 - * @var WP_Date_Query A date query instance. + * @since WP-4.6.0 + * @var object WP_Date_Query */ public $date_query = false; /** * Query vars set by the user. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $query_vars; @@ -75,7 +58,7 @@ class WP_Site_Query { /** * Default values for query vars. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $query_var_defaults; @@ -83,7 +66,7 @@ class WP_Site_Query { /** * List of sites located by the query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $sites; @@ -91,7 +74,7 @@ class WP_Site_Query { /** * The amount of found sites for the current query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var int */ public $found_sites = 0; @@ -99,7 +82,7 @@ class WP_Site_Query { /** * The number of pages. * - * @since 4.6.0 + * @since WP-4.6.0 * @var int */ public $max_num_pages = 0; @@ -107,123 +90,88 @@ class WP_Site_Query { /** * Sets up the site query, based on the query vars passed. * - * @since 4.6.0 - * @since 4.8.0 Introduced the 'lang_id', 'lang__in', and 'lang__not_in' parameters. - * @since 5.1.0 Introduced the 'update_site_meta_cache', 'meta_query', 'meta_key', - * 'meta_compare_key', 'meta_value', 'meta_type', and 'meta_compare' parameters. - * @since 5.3.0 Introduced the 'meta_type_key' parameter. + * @since WP-4.6.0 + * @since WP-4.8.0 Introduced the 'lang_id', 'lang__in', and 'lang__not_in' parameters. * * @param string|array $query { * Optional. Array or query string of site query parameters. Default empty. * - * @type int[] $site__in Array of site IDs to include. Default empty. - * @type int[] $site__not_in Array of site IDs to exclude. Default empty. - * @type bool $count Whether to return a site count (true) or array of site objects. - * Default false. - * @type array $date_query Date query clauses to limit sites by. See WP_Date_Query. - * Default null. - * @type string $fields Site fields to return. Accepts 'ids' (returns an array of site IDs) - * or empty (returns an array of complete site objects). Default empty. - * @type int $ID A site ID to only return that site. Default empty. - * @type int $number Maximum number of sites to retrieve. Default 100. - * @type int $offset Number of sites to offset the query. Used to build LIMIT clause. - * Default 0. - * @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. Default true. - * @type string|array $orderby Site status or array of statuses. Accepts: - * - 'id' - * - 'domain' - * - 'path' - * - 'network_id' - * - 'last_updated' - * - 'registered' - * - 'domain_length' - * - 'path_length' - * - 'site__in' - * - 'network__in' - * - 'deleted' - * - 'mature' - * - 'spam' - * - 'archived' - * - 'public' - * - false, an empty array, or 'none' to disable `ORDER BY` clause. - * Default 'id'. - * @type string $order How to order retrieved sites. Accepts 'ASC', 'DESC'. Default 'ASC'. - * @type int $network_id Limit results to those affiliated with a given network ID. If 0, - * include all networks. Default 0. - * @type int[] $network__in Array of network IDs to include affiliated sites for. Default empty. - * @type int[] $network__not_in Array of network IDs to exclude affiliated sites for. Default empty. - * @type string $domain Limit results to those affiliated with a given domain. Default empty. - * @type string[] $domain__in Array of domains to include affiliated sites for. Default empty. - * @type string[] $domain__not_in Array of domains to exclude affiliated sites for. Default empty. - * @type string $path Limit results to those affiliated with a given path. Default empty. - * @type string[] $path__in Array of paths to include affiliated sites for. Default empty. - * @type string[] $path__not_in Array of paths to exclude affiliated sites for. Default empty. - * @type int $public Limit results to public sites. Accepts '1' or '0'. Default empty. - * @type int $archived Limit results to archived sites. Accepts '1' or '0'. Default empty. - * @type int $mature Limit results to mature sites. Accepts '1' or '0'. Default empty. - * @type int $spam Limit results to spam sites. Accepts '1' or '0'. Default empty. - * @type int $deleted Limit results to deleted sites. Accepts '1' or '0'. Default empty. - * @type int $lang_id Limit results to a language ID. Default empty. - * @type string[] $lang__in Array of language IDs to include affiliated sites for. Default empty. - * @type string[] $lang__not_in Array of language IDs to exclude affiliated sites for. Default empty. - * @type string $search Search term(s) to retrieve matching sites for. Default empty. - * @type string[] $search_columns Array of column names to be searched. Accepts 'domain' and 'path'. - * Default empty array. - * @type bool $update_site_cache Whether to prime the cache for found sites. Default true. - * @type bool $update_site_meta_cache Whether to prime the metadata cache for found sites. Default true. - * @type string|string[] $meta_key Meta key or keys to filter by. - * @type string|string[] $meta_value Meta value or values to filter by. - * @type string $meta_compare MySQL operator used for comparing the meta value. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_compare_key MySQL operator used for comparing the meta key. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type MySQL data type that the meta_value column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type_key MySQL data type that the meta_key column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type array $meta_query An associative array of WP_Meta_Query arguments. - * See WP_Meta_Query::__construct() for accepted values. + * @type array $site__in Array of site IDs to include. Default empty. + * @type array $site__not_in Array of site IDs to exclude. Default empty. + * @type bool $count Whether to return a site count (true) or array of site objects. + * Default false. + * @type array $date_query Date query clauses to limit sites by. See WP_Date_Query. + * Default null. + * @type string $fields Site fields to return. Accepts 'ids' (returns an array of site IDs) + * or empty (returns an array of complete site objects). Default empty. + * @type int $ID A site ID to only return that site. Default empty. + * @type int $number Maximum number of sites to retrieve. Default 100. + * @type int $offset Number of sites to offset the query. Used to build LIMIT clause. + * Default 0. + * @type bool $no_found_rows Whether to disable the `SQL_CALC_FOUND_ROWS` query. Default true. + * @type string|array $orderby Site status or array of statuses. Accepts 'id', 'domain', 'path', + * 'network_id', 'last_updated', 'registered', 'domain_length', + * 'path_length', 'site__in' and 'network__in'. Also accepts false, + * an empty array, or 'none' to disable `ORDER BY` clause. + * Default 'id'. + * @type string $order How to order retrieved sites. Accepts 'ASC', 'DESC'. Default 'ASC'. + * @type int $network_id Limit results to those affiliated with a given network ID. If 0, + * include all networks. Default 0. + * @type array $network__in Array of network IDs to include affiliated sites for. Default empty. + * @type array $network__not_in Array of network IDs to exclude affiliated sites for. Default empty. + * @type string $domain Limit results to those affiliated with a given domain. Default empty. + * @type array $domain__in Array of domains to include affiliated sites for. Default empty. + * @type array $domain__not_in Array of domains to exclude affiliated sites for. Default empty. + * @type string $path Limit results to those affiliated with a given path. Default empty. + * @type array $path__in Array of paths to include affiliated sites for. Default empty. + * @type array $path__not_in Array of paths to exclude affiliated sites for. Default empty. + * @type int $public Limit results to public sites. Accepts '1' or '0'. Default empty. + * @type int $archived Limit results to archived sites. Accepts '1' or '0'. Default empty. + * @type int $mature Limit results to mature sites. Accepts '1' or '0'. Default empty. + * @type int $spam Limit results to spam sites. Accepts '1' or '0'. Default empty. + * @type int $deleted Limit results to deleted sites. Accepts '1' or '0'. Default empty. + * @type int $lang_id Limit results to a language ID. Default empty. + * @type array $lang__in Array of language IDs to include affiliated sites for. Default empty. + * @type array $lang__not_in Array of language IDs to exclude affiliated sites for. Default empty. + * @type string $search Search term(s) to retrieve matching sites for. Default empty. + * @type array $search_columns Array of column names to be searched. Accepts 'domain' and 'path'. + * Default empty array. + * @type bool $update_site_cache Whether to prime the cache for found sites. Default true. * } */ public function __construct( $query = '' ) { $this->query_var_defaults = array( - 'fields' => '', - 'ID' => '', - 'site__in' => '', - 'site__not_in' => '', - 'number' => 100, - 'offset' => '', - 'no_found_rows' => true, - 'orderby' => 'id', - 'order' => 'ASC', - 'network_id' => 0, - 'network__in' => '', - 'network__not_in' => '', - 'domain' => '', - 'domain__in' => '', - 'domain__not_in' => '', - 'path' => '', - 'path__in' => '', - 'path__not_in' => '', - 'public' => null, - 'archived' => null, - 'mature' => null, - 'spam' => null, - 'deleted' => null, - 'lang_id' => null, - 'lang__in' => '', - 'lang__not_in' => '', - 'search' => '', - 'search_columns' => array(), - 'count' => false, - 'date_query' => null, // See WP_Date_Query. - 'update_site_cache' => true, - 'update_site_meta_cache' => true, - 'meta_query' => '', - 'meta_key' => '', - 'meta_value' => '', - 'meta_type' => '', - 'meta_compare' => '', + 'fields' => '', + 'ID' => '', + 'site__in' => '', + 'site__not_in' => '', + 'number' => 100, + 'offset' => '', + 'no_found_rows' => true, + 'orderby' => 'id', + 'order' => 'ASC', + 'network_id' => 0, + 'network__in' => '', + 'network__not_in' => '', + 'domain' => '', + 'domain__in' => '', + 'domain__not_in' => '', + 'path' => '', + 'path__in' => '', + 'path__not_in' => '', + 'public' => null, + 'archived' => null, + 'mature' => null, + 'spam' => null, + 'deleted' => null, + 'lang_id' => null, + 'lang__in' => '', + 'lang__not_in' => '', + 'search' => '', + 'search_columns' => array(), + 'count' => false, + 'date_query' => null, // See WP_Date_Query + 'update_site_cache' => true, ); if ( ! empty( $query ) ) { @@ -234,7 +182,7 @@ public function __construct( $query = '' ) { /** * Parses arguments passed to the site query with default query parameters. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_Site_Query::__construct() * @@ -250,20 +198,20 @@ public function parse_query( $query = '' ) { /** * Fires after the site query vars have been parsed. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Site_Query $query The WP_Site_Query instance (passed by reference). + * @param WP_Site_Query $this The WP_Site_Query instance (passed by reference). */ do_action_ref_array( 'parse_site_query', array( &$this ) ); } /** - * Sets up the WordPress query for retrieving sites. + * Sets up the ClassicPress query for retrieving sites. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string|array $query Array or URL query string of parameters. - * @return array|int List of WP_Site objects, a list of site IDs when 'fields' is set to 'ids', + * @return array|int List of WP_Site objects, a list of site ids when 'fields' is set to 'ids', * or the number of sites when 'count' is passed as a query var. */ public function query( $query ) { @@ -275,84 +223,28 @@ public function query( $query ) { /** * Retrieves a list of sites matching the query vars. * - * @since 4.6.0 - * - * @global wpdb $wpdb WordPress database abstraction object. + * @since WP-4.6.0 * - * @return array|int List of WP_Site objects, a list of site IDs when 'fields' is set to 'ids', + * @return array|int List of WP_Site objects, a list of site ids when 'fields' is set to 'ids', * or the number of sites when 'count' is passed as a query var. */ public function get_sites() { - global $wpdb; - $this->parse_query(); - // Parse meta query. - $this->meta_query = new WP_Meta_Query(); - $this->meta_query->parse_query_vars( $this->query_vars ); - /** * Fires before sites are retrieved. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Site_Query $query Current instance of WP_Site_Query (passed by reference). + * @param WP_Site_Query $this Current instance of WP_Site_Query (passed by reference). */ do_action_ref_array( 'pre_get_sites', array( &$this ) ); - // Reparse query vars, in case they were modified in a 'pre_get_sites' callback. - $this->meta_query->parse_query_vars( $this->query_vars ); - if ( ! empty( $this->meta_query->queries ) ) { - $this->meta_query_clauses = $this->meta_query->get_sql( 'blog', $wpdb->blogs, 'blog_id', $this ); - } - - $site_data = null; - - /** - * Filters the site data before the get_sites query takes place. - * - * Return a non-null value to bypass WordPress' default site queries. - * - * The expected return type from this filter depends on the value passed - * in the request query vars: - * - When `$this->query_vars['count']` is set, the filter should return - * the site count as an integer. - * - When `'ids' === $this->query_vars['fields']`, the filter should return - * an array of site IDs. - * - Otherwise the filter should return an array of WP_Site objects. - * - * Note that if the filter returns an array of site data, it will be assigned - * to the `sites` property of the current WP_Site_Query instance. - * - * Filtering functions that require pagination information are encouraged to set - * the `found_sites` and `max_num_pages` properties of the WP_Site_Query object, - * passed to the filter by reference. If WP_Site_Query does not perform a database - * query, it will not have enough information to generate these values itself. - * - * @since 5.2.0 - * @since 5.6.0 The returned array of site data is assigned to the `sites` property - * of the current WP_Site_Query instance. - * - * @param array|int|null $site_data Return an array of site data to short-circuit WP's site query, - * the site count as an integer if `$this->query_vars['count']` is set, - * or null to run the normal queries. - * @param WP_Site_Query $query The WP_Site_Query instance, passed by reference. - */ - $site_data = apply_filters_ref_array( 'sites_pre_query', array( $site_data, &$this ) ); - - if ( null !== $site_data ) { - if ( is_array( $site_data ) && ! $this->query_vars['count'] ) { - $this->sites = $site_data; - } - - return $site_data; - } - // $args can include anything. Only use the args defined in the query_var_defaults to compute the key. $_args = wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ); - // Ignore the $fields, $update_site_cache, $update_site_meta_cache argument as the queried result will be the same regardless. - unset( $_args['fields'], $_args['update_site_cache'], $_args['update_site_meta_cache'] ); + // Ignore the $fields argument as the queried result will be the same regardless. + unset( $_args['fields'] ); $key = md5( serialize( $_args ) ); $last_changed = wp_cache_get_last_changed( 'sites' ); @@ -383,15 +275,11 @@ public function get_sites() { // If querying for a count only, there's nothing more to do. if ( $this->query_vars['count'] ) { // $site_ids is actually a count in this case. - return (int) $site_ids; + return intval( $site_ids ); } $site_ids = array_map( 'intval', $site_ids ); - if ( $this->query_vars['update_site_meta_cache'] ) { - wp_lazyload_site_meta( $site_ids ); - } - if ( 'ids' === $this->query_vars['fields'] ) { $this->sites = $site_ids; @@ -400,7 +288,7 @@ public function get_sites() { // Prime site network caches. if ( $this->query_vars['update_site_cache'] ) { - _prime_site_caches( $site_ids, false ); + _prime_site_caches( $site_ids ); } // Fetch full site objects from the primed cache. @@ -415,10 +303,10 @@ public function get_sites() { /** * Filters the site query results. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Site[] $_sites An array of WP_Site objects. - * @param WP_Site_Query $query Current instance of WP_Site_Query (passed by reference). + * @param array $_sites An array of WP_Site objects. + * @param WP_Site_Query $this Current instance of WP_Site_Query (passed by reference). */ $_sites = apply_filters_ref_array( 'the_sites', array( $_sites, &$this ) ); @@ -431,9 +319,9 @@ public function get_sites() { /** * Used internally to get a list of site IDs matching the query vars. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @return int|array A single count of site IDs if a count query. An array of site IDs if a full query. */ @@ -480,7 +368,7 @@ protected function get_site_ids() { $orderby = implode( ', ', $orderby_array ); } else { - $orderby = "{$wpdb->blogs}.blog_id $order"; + $orderby = "blog_id $order"; } $number = absint( $this->query_vars['number'] ); @@ -498,23 +386,23 @@ protected function get_site_ids() { if ( $this->query_vars['count'] ) { $fields = 'COUNT(*)'; } else { - $fields = "{$wpdb->blogs}.blog_id"; + $fields = 'blog_id'; } // Parse site IDs for an IN clause. $site_id = absint( $this->query_vars['ID'] ); if ( ! empty( $site_id ) ) { - $this->sql_clauses['where']['ID'] = $wpdb->prepare( "{$wpdb->blogs}.blog_id = %d", $site_id ); + $this->sql_clauses['where']['ID'] = $wpdb->prepare( 'blog_id = %d', $site_id ); } // Parse site IDs for an IN clause. if ( ! empty( $this->query_vars['site__in'] ) ) { - $this->sql_clauses['where']['site__in'] = "{$wpdb->blogs}.blog_id IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['site__in'] ) ) . ' )'; + $this->sql_clauses['where']['site__in'] = 'blog_id IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['site__in'] ) ) . ' )'; } // Parse site IDs for a NOT IN clause. if ( ! empty( $this->query_vars['site__not_in'] ) ) { - $this->sql_clauses['where']['site__not_in'] = "{$wpdb->blogs}.blog_id NOT IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['site__not_in'] ) ) . ' )'; + $this->sql_clauses['where']['site__not_in'] = 'blog_id NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['site__not_in'] ) ) . ' )'; } $network_id = absint( $this->query_vars['network_id'] ); @@ -618,11 +506,11 @@ protected function get_site_ids() { * * The default columns include 'domain' and 'path. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param string[] $search_columns Array of column names to be searched. + * @param array $search_columns Array of column names to be searched. * @param string $search Text being searched. - * @param WP_Site_Query $query The current WP_Site_Query instance. + * @param WP_Site_Query $this The current WP_Site_Query instance. */ $search_columns = apply_filters( 'site_search_columns', $search_columns, $this->query_vars['search'], $this ); @@ -631,26 +519,13 @@ protected function get_site_ids() { $date_query = $this->query_vars['date_query']; if ( ! empty( $date_query ) && is_array( $date_query ) ) { - $this->date_query = new WP_Date_Query( $date_query, 'registered' ); - - // Strip leading 'AND'. + $this->date_query = new WP_Date_Query( $date_query, 'registered' ); $this->sql_clauses['where']['date_query'] = preg_replace( '/^\s*AND\s*/', '', $this->date_query->get_sql() ); } $join = ''; $groupby = ''; - if ( ! empty( $this->meta_query_clauses ) ) { - $join .= $this->meta_query_clauses['join']; - - // Strip leading 'AND'. - $this->sql_clauses['where']['meta_query'] = preg_replace( '/^\s*AND\s*/', '', $this->meta_query_clauses['where'] ); - - if ( ! $this->query_vars['count'] ) { - $groupby = "{$wpdb->blogs}.blog_id"; - } - } - $where = implode( ' AND ', $this->sql_clauses['where'] ); $pieces = array( 'fields', 'join', 'where', 'orderby', 'limits', 'groupby' ); @@ -658,10 +533,10 @@ protected function get_site_ids() { /** * Filters the site query clauses. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param string[] $clauses An associative array of site query clauses. - * @param WP_Site_Query $query Current instance of WP_Site_Query (passed by reference). + * @param array $pieces A compacted array of site query clauses. + * @param WP_Site_Query $this Current instance of WP_Site_Query (passed by reference). */ $clauses = apply_filters_ref_array( 'sites_clauses', array( compact( $pieces ), &$this ) ); @@ -695,17 +570,10 @@ protected function get_site_ids() { $this->sql_clauses['orderby'] = $orderby; $this->sql_clauses['limits'] = $limits; - $this->request = " - {$this->sql_clauses['select']} - {$this->sql_clauses['from']} - {$where} - {$this->sql_clauses['groupby']} - {$this->sql_clauses['orderby']} - {$this->sql_clauses['limits']} - "; + $this->request = "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} {$this->sql_clauses['orderby']} {$this->sql_clauses['limits']}"; if ( $this->query_vars['count'] ) { - return (int) $wpdb->get_var( $this->request ); + return intval( $wpdb->get_var( $this->request ) ); } $site_ids = $wpdb->get_col( $this->request ); @@ -717,9 +585,9 @@ protected function get_site_ids() { * Populates found_sites and max_num_pages properties for the current query * if the limit clause was used. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. */ private function set_found_sites() { global $wpdb; @@ -728,7 +596,7 @@ private function set_found_sites() { /** * Filters the query used to retrieve found site count. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $found_sites_query SQL query. Default 'SELECT FOUND_ROWS()'. * @param WP_Site_Query $site_query The `WP_Site_Query` instance. @@ -742,21 +610,21 @@ private function set_found_sites() { /** * Used internally to generate an SQL string for searching across multiple columns. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param string $search Search string. - * @param string[] $columns Array of columns to search. + * @param string $string Search string. + * @param array $columns Columns to search. * @return string Search SQL. */ - protected function get_search_sql( $search, $columns ) { + protected function get_search_sql( $string, $columns ) { global $wpdb; - if ( false !== strpos( $search, '*' ) ) { - $like = '%' . implode( '%', array_map( array( $wpdb, 'esc_like' ), explode( '*', $search ) ) ) . '%'; + if ( false !== strpos( $string, '*' ) ) { + $like = '%' . implode( '%', array_map( array( $wpdb, 'esc_like' ), explode( '*', $string ) ) ) . '%'; } else { - $like = '%' . $wpdb->esc_like( $search ) . '%'; + $like = '%' . $wpdb->esc_like( $string ) . '%'; } $searches = array(); @@ -770,9 +638,9 @@ protected function get_search_sql( $search, $columns ) { /** * Parses and sanitizes 'orderby' keys passed to the site query. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $orderby Alias for the field to order by. * @return string|false Value to used in the ORDER clause. False otherwise. @@ -795,11 +663,6 @@ protected function parse_orderby( $orderby ) { case 'last_updated': case 'path': case 'registered': - case 'deleted': - case 'spam': - case 'mature': - case 'archived': - case 'public': $parsed = $orderby; break; case 'network_id': @@ -812,49 +675,17 @@ protected function parse_orderby( $orderby ) { $parsed = 'CHAR_LENGTH(path)'; break; case 'id': - $parsed = "{$wpdb->blogs}.blog_id"; + $parsed = 'blog_id'; break; } - if ( ! empty( $parsed ) || empty( $this->meta_query_clauses ) ) { - return $parsed; - } - - $meta_clauses = $this->meta_query->get_clauses(); - if ( empty( $meta_clauses ) ) { - return $parsed; - } - - $primary_meta_query = reset( $meta_clauses ); - if ( ! empty( $primary_meta_query['key'] ) && $primary_meta_query['key'] === $orderby ) { - $orderby = 'meta_value'; - } - - switch ( $orderby ) { - case 'meta_value': - if ( ! empty( $primary_meta_query['type'] ) ) { - $parsed = "CAST({$primary_meta_query['alias']}.meta_value AS {$primary_meta_query['cast']})"; - } else { - $parsed = "{$primary_meta_query['alias']}.meta_value"; - } - break; - case 'meta_value_num': - $parsed = "{$primary_meta_query['alias']}.meta_value+0"; - break; - default: - if ( isset( $meta_clauses[ $orderby ] ) ) { - $meta_clause = $meta_clauses[ $orderby ]; - $parsed = "CAST({$meta_clause['alias']}.meta_value AS {$meta_clause['cast']})"; - } - } - return $parsed; } /** * Parses an 'order' query variable and cast it to 'ASC' or 'DESC' as necessary. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $order The 'order' query variable. * @return string The sanitized 'order' query variable. diff --git a/wp-includes/class-wp-site.php b/wp-includes/class-wp-site.php index cfe2b4c..20f44b2 100644 --- a/wp-includes/class-wp-site.php +++ b/wp-includes/class-wp-site.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Multisite - * @since 4.5.0 + * @since WP-4.5.0 */ /** @@ -13,7 +13,7 @@ * This class is used during load to populate the `$current_blog` global and * setup the current site. * - * @since 4.5.0 + * @since WP-4.5.0 * * @property int $id * @property int $network_id @@ -22,17 +22,14 @@ * @property int $post_count * @property string $home */ -#[AllowDynamicProperties] final class WP_Site { /** * Site ID. * - * Named "blog" vs. "site" for legacy reasons. - * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $blog_id; @@ -40,7 +37,7 @@ final class WP_Site { /** * Domain of the site. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $domain = ''; @@ -48,7 +45,7 @@ final class WP_Site { /** * Path of the site. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $path = ''; @@ -61,15 +58,15 @@ final class WP_Site { * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $site_id = '0'; /** - * The date and time on which the site was created or registered. + * The date on which the site was created or registered. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string Date in MySQL's datetime format. */ public $registered = '0000-00-00 00:00:00'; @@ -77,7 +74,7 @@ final class WP_Site { /** * The date and time on which site settings were last updated. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string Date in MySQL's datetime format. */ public $last_updated = '0000-00-00 00:00:00'; @@ -87,7 +84,7 @@ final class WP_Site { * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $public = '1'; @@ -97,7 +94,7 @@ final class WP_Site { * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $archived = '0'; @@ -105,12 +102,12 @@ final class WP_Site { /** * Whether the site should be treated as mature. * - * Handling for this does not exist throughout WordPress core, but custom + * Handling for this does not exist throughout ClassicPress core, but custom * implementations exist that require the property to be present. * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $mature = '0'; @@ -120,7 +117,7 @@ final class WP_Site { * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $spam = '0'; @@ -130,7 +127,7 @@ final class WP_Site { * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $deleted = '0'; @@ -140,7 +137,7 @@ final class WP_Site { * * A numeric string, for compatibility reasons. * - * @since 4.5.0 + * @since WP-4.5.0 * @var string */ public $lang_id = '0'; @@ -148,9 +145,10 @@ final class WP_Site { /** * Retrieves a site from the database by its ID. * - * @since 4.5.0 + * @static + * @since WP-4.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $site_id The ID of the site to retrieve. * @return WP_Site|false The site's object if found. False if not. @@ -165,20 +163,16 @@ public static function get_instance( $site_id ) { $_site = wp_cache_get( $site_id, 'sites' ); - if ( false === $_site ) { + if ( ! $_site ) { $_site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->blogs} WHERE blog_id = %d LIMIT 1", $site_id ) ); if ( empty( $_site ) || is_wp_error( $_site ) ) { - $_site = -1; + return false; } wp_cache_add( $site_id, $_site, 'sites' ); } - if ( is_numeric( $_site ) ) { - return false; - } - return new WP_Site( $_site ); } @@ -188,7 +182,7 @@ public static function get_instance( $site_id ) { * Will populate object properties from the object provided and assign other * default properties based on that information. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param WP_Site|object $site A site object. */ @@ -201,7 +195,7 @@ public function __construct( $site ) { /** * Converts an object to array. * - * @since 4.6.0 + * @since WP-4.6.0 * * @return array Object as array. */ @@ -215,7 +209,7 @@ public function to_array() { * Allows current multisite naming conventions when getting properties. * Allows access to extended site properties. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $key Property to get. * @return mixed Value of the property. Null if not available. @@ -250,7 +244,7 @@ public function __get( $key ) { * Allows current multisite naming conventions when checking for properties. * Checks for extended site properties. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $key Property to check if set. * @return bool Whether the property is set. @@ -287,7 +281,7 @@ public function __isset( $key ) { * * Allows current multisite naming conventions while setting properties. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $key Property to set. * @param mixed $value Value to assign to the property. @@ -310,7 +304,7 @@ public function __set( $key, $value ) { * * This method is used internally to lazy-load the extended properties of a site. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_Site::__get() * @@ -322,7 +316,7 @@ private function get_details() { if ( false === $details ) { switch_to_blog( $this->blog_id ); - // Create a raw copy of the object for backward compatibility with the filter below. + // Create a raw copy of the object for backwards compatibility with the filter below. $details = new stdClass(); foreach ( get_object_vars( $this ) as $key => $value ) { $details->$key = $value; @@ -337,12 +331,12 @@ private function get_details() { } /** This filter is documented in wp-includes/ms-blogs.php */ - $details = apply_filters_deprecated( 'blog_details', array( $details ), '4.7.0', 'site_details' ); + $details = apply_filters_deprecated( 'blog_details', array( $details ), 'WP-4.7.0', 'site_details' ); /** * Filters a site's extended properties. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param stdClass $details The site details. */ diff --git a/wp-includes/class-wp-styles.php b/wp-includes/class-wp-styles.php deleted file mode 100644 index b2b7900..0000000 --- a/wp-includes/class-wp-styles.php +++ /dev/null @@ -1,444 +0,0 @@ -<?php -/** - * Dependencies API: WP_Styles class - * - * @since 2.6.0 - * - * @package ClassicPress - * @subpackage Dependencies - */ - -/** - * Core class used to register styles. - * - * @since 2.6.0 - * - * @see WP_Dependencies - */ -class WP_Styles extends WP_Dependencies { - /** - * Base URL for styles. - * - * Full URL with trailing slash. - * - * @since 2.6.0 - * @var string - */ - public $base_url; - - /** - * URL of the content directory. - * - * @since 2.8.0 - * @var string - */ - public $content_url; - - /** - * Default version string for stylesheets. - * - * @since 2.6.0 - * @var string - */ - public $default_version; - - /** - * The current text direction. - * - * @since 2.6.0 - * @var string - */ - public $text_direction = 'ltr'; - - /** - * Holds a list of style handles which will be concatenated. - * - * @since 2.8.0 - * @var string - */ - public $concat = ''; - - /** - * Holds a string which contains style handles and their version. - * - * @since 2.8.0 - * @deprecated 3.4.0 - * @var string - */ - public $concat_version = ''; - - /** - * Whether to perform concatenation. - * - * @since 2.8.0 - * @var bool - */ - public $do_concat = false; - - /** - * Holds HTML markup of styles and additional data if concatenation - * is enabled. - * - * @since 2.8.0 - * @var string - */ - public $print_html = ''; - - /** - * Holds inline styles if concatenation is enabled. - * - * @since 3.3.0 - * @var string - */ - public $print_code = ''; - - /** - * List of default directories. - * - * @since 2.8.0 - * @var array - */ - public $default_dirs; - - /** - * Constructor. - * - * @since 2.6.0 - */ - public function __construct() { - /** - * Fires when the WP_Styles instance is initialized. - * - * @since 2.6.0 - * - * @param WP_Styles $wp_styles WP_Styles instance (passed by reference). - */ - do_action_ref_array( 'wp_default_styles', array( &$this ) ); - } - - /** - * Processes a style dependency. - * - * @since 2.6.0 - * @since 5.5.0 Added the `$group` parameter. - * - * @see WP_Dependencies::do_item() - * - * @param string $handle The style's registered handle. - * @param int|false $group Optional. Group level: level (int), no groups (false). - * Default false. - * @return bool True on success, false on failure. - */ - public function do_item( $handle, $group = false ) { - if ( ! parent::do_item( $handle ) ) { - return false; - } - - $obj = $this->registered[ $handle ]; - - if ( null === $obj->ver ) { - $ver = ''; - } else { - $ver = $obj->ver ? $obj->ver : $this->default_version; - } - - if ( isset( $this->args[ $handle ] ) ) { - $ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ]; - } - - /** This filter is documented in wp-includes/script-loader.php */ - $ver = apply_filters( 'classicpress_asset_version', $ver, 'style', $handle ); - - $src = $obj->src; - $cond_before = ''; - $cond_after = ''; - $conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : ''; - - if ( $conditional ) { - $cond_before = "<!--[if {$conditional}]>\n"; - $cond_after = "<![endif]-->\n"; - } - - $inline_style = $this->print_inline_style( $handle, false ); - - if ( $inline_style ) { - $inline_style_tag = sprintf( - "<style id='%s-inline-css'>\n%s\n</style>\n", - esc_attr( $handle ), - $inline_style - ); - } else { - $inline_style_tag = ''; - } - - if ( $this->do_concat ) { - if ( $this->in_default_dir( $src ) && ! $conditional && ! isset( $obj->extra['alt'] ) ) { - $this->concat .= "$handle,"; - $this->concat_version .= "$handle$ver"; - - $this->print_code .= $inline_style; - - return true; - } - } - - if ( isset( $obj->args ) ) { - $media = esc_attr( $obj->args ); - } else { - $media = 'all'; - } - - // A single item may alias a set of items, by having dependencies, but no source. - if ( ! $src ) { - if ( $inline_style_tag ) { - if ( $this->do_concat ) { - $this->print_html .= $inline_style_tag; - } else { - echo $inline_style_tag; - } - } - - return true; - } - - $href = $this->_css_href( $src, $ver, $handle ); - if ( ! $href ) { - return true; - } - - $rel = isset( $obj->extra['alt'] ) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet'; - $title = isset( $obj->extra['title'] ) ? sprintf( " title='%s'", esc_attr( $obj->extra['title'] ) ) : ''; - - $tag = sprintf( - "<link rel='%s' id='%s-css'%s href='%s' media='%s'>\n", - $rel, - $handle, - $title, - $href, - $media - ); - - /** - * Filters the HTML link tag of an enqueued style. - * - * @since 2.6.0 - * @since 4.3.0 Introduced the `$href` parameter. - * @since 4.5.0 Introduced the `$media` parameter. - * - * @param string $tag The link tag for the enqueued style. - * @param string $handle The style's registered handle. - * @param string $href The stylesheet's source URL. - * @param string $media The stylesheet's media attribute. - */ - $tag = apply_filters( 'style_loader_tag', $tag, $handle, $href, $media ); - - if ( 'rtl' === $this->text_direction && isset( $obj->extra['rtl'] ) && $obj->extra['rtl'] ) { - if ( is_bool( $obj->extra['rtl'] ) || 'replace' === $obj->extra['rtl'] ) { - $suffix = isset( $obj->extra['suffix'] ) ? $obj->extra['suffix'] : ''; - $rtl_href = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $this->_css_href( $src, $ver, "$handle-rtl" ) ); - } else { - $rtl_href = $this->_css_href( $obj->extra['rtl'], $ver, "$handle-rtl" ); - } - - $rtl_tag = sprintf( - "<link rel='%s' id='%s-rtl-css'%s href='%s' media='%s'>\n", - $rel, - $handle, - $title, - $rtl_href, - $media - ); - - /** This filter is documented in wp-includes/class-wp-styles.php */ - $rtl_tag = apply_filters( 'style_loader_tag', $rtl_tag, $handle, $rtl_href, $media ); - - if ( 'replace' === $obj->extra['rtl'] ) { - $tag = $rtl_tag; - } else { - $tag .= $rtl_tag; - } - } - - if ( $this->do_concat ) { - $this->print_html .= $cond_before; - $this->print_html .= $tag; - if ( $inline_style_tag ) { - $this->print_html .= $inline_style_tag; - } - $this->print_html .= $cond_after; - } else { - echo $cond_before; - echo $tag; - $this->print_inline_style( $handle ); - echo $cond_after; - } - - return true; - } - - /** - * Adds extra CSS styles to a registered stylesheet. - * - * @since 3.3.0 - * - * @param string $handle The style's registered handle. - * @param string $code String containing the CSS styles to be added. - * @return bool True on success, false on failure. - */ - public function add_inline_style( $handle, $code ) { - if ( ! $code ) { - return false; - } - - $after = $this->get_data( $handle, 'after' ); - if ( ! $after ) { - $after = array(); - } - - $after[] = $code; - - return $this->add_data( $handle, 'after', $after ); - } - - /** - * Prints extra CSS styles of a registered stylesheet. - * - * @since 3.3.0 - * - * @param string $handle The style's registered handle. - * @param bool $display Optional. Whether to print the inline style - * instead of just returning it. Default true. - * @return string|bool False if no data exists, inline styles if `$display` is true, - * true otherwise. - */ - public function print_inline_style( $handle, $display = true ) { - $output = $this->get_data( $handle, 'after' ); - - if ( empty( $output ) ) { - return false; - } - - $output = implode( "\n", $output ); - - if ( ! $display ) { - return $output; - } - - printf( - "<style id='%s-inline-css'>\n%s\n</style>\n", - esc_attr( $handle ), - $output - ); - - return true; - } - - /** - * Determines style dependencies. - * - * @since 2.6.0 - * - * @see WP_Dependencies::all_deps() - * - * @param string|string[] $handles Item handle (string) or item handles (array of strings). - * @param bool $recursion Optional. Internal flag that function is calling itself. - * Default false. - * @param int|false $group Optional. Group level: level (int), no groups (false). - * Default false. - * @return bool True on success, false on failure. - */ - public function all_deps( $handles, $recursion = false, $group = false ) { - $r = parent::all_deps( $handles, $recursion, $group ); - if ( ! $recursion ) { - /** - * Filters the array of enqueued styles before processing for output. - * - * @since 2.6.0 - * - * @param string[] $to_do The list of enqueued style handles about to be processed. - */ - $this->to_do = apply_filters( 'print_styles_array', $this->to_do ); - } - return $r; - } - - /** - * Generates an enqueued style's fully-qualified URL. - * - * @since 2.6.0 - * - * @param string $src The source of the enqueued style. - * @param string $ver The version of the enqueued style. - * @param string $handle The style's registered handle. - * @return string Style's fully-qualified URL. - */ - public function _css_href( $src, $ver, $handle ) { - if ( ! is_bool( $src ) && ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) { - $src = $this->base_url . $src; - } - - if ( ! empty( $ver ) ) { - $src = add_query_arg( 'ver', $ver, $src ); - } - - /** - * Filters an enqueued style's fully-qualified URL. - * - * @since 2.6.0 - * - * @param string $src The source URL of the enqueued style. - * @param string $handle The style's registered handle. - */ - $src = apply_filters( 'style_loader_src', $src, $handle ); - return esc_url( $src ); - } - - /** - * Whether a handle's source is in a default directory. - * - * @since 2.8.0 - * - * @param string $src The source of the enqueued style. - * @return bool True if found, false if not. - */ - public function in_default_dir( $src ) { - if ( ! $this->default_dirs ) { - return true; - } - - foreach ( (array) $this->default_dirs as $test ) { - if ( 0 === strpos( $src, $test ) ) { - return true; - } - } - return false; - } - - /** - * Processes items and dependencies for the footer group. - * - * HTML 5 allows styles in the body, grab late enqueued items and output them in the footer. - * - * @since 3.3.0 - * - * @see WP_Dependencies::do_items() - * - * @return string[] Handles of items that have been processed. - */ - public function do_footer_items() { - $this->do_items( false, 1 ); - return $this->done; - } - - /** - * Resets class properties. - * - * @since 3.3.0 - */ - public function reset() { - $this->do_concat = false; - $this->concat = ''; - $this->concat_version = ''; - $this->print_html = ''; - } -} diff --git a/wp-includes/class-wp-tax-query.php b/wp-includes/class-wp-tax-query.php index e0ef861..dc59f1f 100644 --- a/wp-includes/class-wp-tax-query.php +++ b/wp-includes/class-wp-tax-query.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Taxonomy - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -17,9 +17,8 @@ * their results by object metadata, by generating `JOIN` and `WHERE` subclauses to be * attached to the primary SQL query string. * - * @since 3.1.0 + * @since WP-3.1.0 */ -#[AllowDynamicProperties] class WP_Tax_Query { /** @@ -27,7 +26,7 @@ class WP_Tax_Query { * * See WP_Tax_Query::__construct() for information on tax query arguments. * - * @since 3.1.0 + * @since WP-3.1.0 * @var array */ public $queries = array(); @@ -35,7 +34,7 @@ class WP_Tax_Query { /** * The relation between the queries. Can be one of 'AND' or 'OR'. * - * @since 3.1.0 + * @since WP-3.1.0 * @var string */ public $relation; @@ -43,7 +42,9 @@ class WP_Tax_Query { /** * Standard response when the query should not return any rows. * - * @since 3.2.0 + * @since WP-3.2.0 + * + * @static * @var string */ private static $no_results = array( @@ -54,7 +55,7 @@ class WP_Tax_Query { /** * A flat list of table aliases used in the JOIN clauses. * - * @since 4.1.0 + * @since WP-4.1.0 * @var array */ protected $table_aliases = array(); @@ -65,7 +66,7 @@ class WP_Tax_Query { * We store this data in a flat array because they are referenced in a * number of places by WP_Query. * - * @since 4.1.0 + * @since WP-4.1.0 * @var array */ public $queried_terms = array(); @@ -73,7 +74,7 @@ class WP_Tax_Query { /** * Database table that where the metadata's objects are stored (eg $wpdb->users). * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $primary_table; @@ -81,7 +82,7 @@ class WP_Tax_Query { /** * Column in 'primary_table' that represents the ID of the object. * - * @since 4.1.0 + * @since WP-4.1.0 * @var string */ public $primary_id_column; @@ -89,16 +90,16 @@ class WP_Tax_Query { /** * Constructor. * - * @since 3.1.0 - * @since 4.1.0 Added support for `$operator` 'NOT EXISTS' and 'EXISTS' values. + * @since WP-3.1.0 + * @since WP-4.1.0 Added support for `$operator` 'NOT EXISTS' and 'EXISTS' values. * * @param array $tax_query { * Array of taxonomy query clauses. * * @type string $relation Optional. The MySQL keyword used to join * the clauses of the query. Accepts 'AND', or 'OR'. Default 'AND'. - * @type array ...$0 { - * An array of first-order clause parameters, or another fully-formed tax query. + * @type array { + * Optional. An array of first-order clause parameters, or another fully-formed tax query. * * @type string $taxonomy Taxonomy being queried. Optional when field=term_taxonomy_id. * @type string|int|array $terms Term or terms to filter by. @@ -123,12 +124,12 @@ public function __construct( $tax_query ) { } /** - * Ensures the 'tax_query' argument passed to the class constructor is well-formed. + * Ensure the 'tax_query' argument passed to the class constructor is well-formed. * * Ensures that each query-level clause has a 'relation' key, and that * each first-order clause contains all the necessary keys from `$defaults`. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $queries Array of queries clauses. * @return array Sanitized array of query clauses. @@ -197,9 +198,9 @@ public function sanitize_query( $queries ) { } /** - * Sanitizes a 'relation' operator. + * Sanitize a 'relation' operator. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param string $relation Raw relation key from the query argument. * @return string Sanitized relation ('AND' or 'OR'). @@ -213,7 +214,7 @@ public function sanitize_relation( $relation ) { } /** - * Determines whether a clause is first-order. + * Determine whether a clause is first-order. * * A "first-order" clause is one that contains any of the first-order * clause keys ('terms', 'taxonomy', 'include_children', 'field', @@ -221,7 +222,9 @@ public function sanitize_relation( $relation ) { * for backward compatibility. Any clause that doesn't meet this is * determined, by process of elimination, to be a higher-order query. * - * @since 4.1.0 + * @since WP-4.1.0 + * + * @static * * @param array $query Tax query arguments. * @return bool Whether the query clause is a first-order clause. @@ -233,11 +236,13 @@ protected static function is_first_order_clause( $query ) { /** * Generates SQL clauses to be appended to a main query. * - * @since 3.1.0 + * @since WP-3.1.0 + * + * @static * * @param string $primary_table Database table where the object being filtered is stored (eg wp_users). * @param string $primary_id_column ID column for the filtered object in $primary_table. - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to the main query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -252,14 +257,14 @@ public function get_sql( $primary_table, $primary_id_column ) { } /** - * Generates SQL clauses to be appended to a main query. + * Generate SQL clauses to be appended to a main query. * * Called by the public WP_Tax_Query::get_sql(), this method * is abstracted out to maintain parity with the other Query classes. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to the main query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -282,17 +287,17 @@ protected function get_sql_clauses() { } /** - * Generates SQL clauses for a single query array. + * Generate SQL clauses for a single query array. * * If nested subqueries are found, this method recurses the tree to * produce the properly nested SQL. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $query Query to parse (passed by reference). * @param int $depth Optional. Number of tree levels deep we currently are. * Used to calculate indentation. Default 0. - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to a single query array. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -366,15 +371,15 @@ protected function get_sql_for_query( &$query, $depth = 0 ) { } /** - * Generates SQL JOIN and WHERE clauses for a "first-order" query clause. + * Generate SQL JOIN and WHERE clauses for a "first-order" query clause. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @global wpdb $wpdb The WordPress database abstraction object. + * @global wpdb $wpdb The ClassicPress database abstraction object. * * @param array $clause Query clause (passed by reference). * @param array $parent_query Parent query array. - * @return string[] { + * @return array { * Array containing JOIN and WHERE SQL clauses to append to a first-order query. * * @type string $join SQL fragment to append to the main JOIN clause. @@ -484,7 +489,7 @@ public function get_sql_for_clause( &$clause, $parent_query ) { } /** - * Identifies an existing table alias that is compatible with the current query clause. + * Identify an existing table alias that is compatible with the current query clause. * * We avoid unnecessary table joins by allowing each clause to look for * an existing table alias that is compatible with the query that it @@ -496,16 +501,16 @@ public function get_sql_for_clause( &$clause, $parent_query ) { * join. In the case of WP_Tax_Query, this only applies to 'IN' * clauses that are connected by the relation 'OR'. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @param array $clause Query clause. - * @param array $parent_query Parent query of $clause. + * @param array $clause Query clause. + * @param array $parent_query Parent query of $clause. * @return string|false Table alias if found, otherwise false. */ protected function find_compatible_table_alias( $clause, $parent_query ) { $alias = false; - // Sanity check. Only IN queries use the JOIN syntax. + // Sanity check. Only IN queries use the JOIN syntax . if ( ! isset( $clause['operator'] ) || 'IN' !== $clause['operator'] ) { return $alias; } @@ -539,7 +544,7 @@ protected function find_compatible_table_alias( $clause, $parent_query ) { /** * Validates a single query. * - * @since 3.2.0 + * @since WP-3.2.0 * * @param array $query The single query. Passed by reference. */ @@ -550,7 +555,7 @@ private function clean_query( &$query ) { return; } - // So long as there are shared terms, 'include_children' requires that a taxonomy is set. + // so long as there are shared terms, include_children requires that a taxonomy is set $query['include_children'] = false; } elseif ( ! taxonomy_exists( $query['taxonomy'] ) ) { $query = new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) ); @@ -587,7 +592,9 @@ private function clean_query( &$query ) { * Operates on the `$query` object by reference. In the case of error, * `$query` is converted to a WP_Error object. * - * @since 3.2.0 + * @since WP-3.2.0 + * + * @global wpdb $wpdb The ClassicPress database abstraction object. * * @param array $query The single query. Passed by reference. * @param string $resulting_field The resulting field. Accepts 'slug', 'name', 'term_taxonomy_id', @@ -636,10 +643,6 @@ public function transform_query( &$query, $resulting_field ) { break; } - if ( ! is_taxonomy_hierarchical( $query['taxonomy'] ) ) { - $args['number'] = count( $terms ); - } - $term_query = new WP_Term_Query(); $term_list = $term_query->query( $args ); diff --git a/wp-includes/class-wp-taxonomy.php b/wp-includes/class-wp-taxonomy.php index 238b0b8..9913f34 100644 --- a/wp-includes/class-wp-taxonomy.php +++ b/wp-includes/class-wp-taxonomy.php @@ -4,20 +4,19 @@ * * @package ClassicPress * @subpackage Taxonomy - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Core class used for interacting with taxonomies. * - * @since 4.7.0 + * @since WP-4.7.0 */ -#[AllowDynamicProperties] final class WP_Taxonomy { /** * Taxonomy key. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $name; @@ -25,36 +24,23 @@ final class WP_Taxonomy { /** * Name of the taxonomy shown in the menu. Usually plural. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $label; /** - * Labels object for this taxonomy. + * An array of labels for this taxonomy. * - * If not set, tag labels are inherited for non-hierarchical types - * and category labels for hierarchical ones. - * - * @see get_taxonomy_labels() - * - * @since 4.7.0 - * @var stdClass - */ - public $labels; - - /** - * Default labels. - * - * @since 6.0.0 - * @var (string|null)[][] $default_labels + * @since WP-4.7.0 + * @var object */ - protected static $default_labels = array(); + public $labels = array(); /** * A short descriptive summary of what the taxonomy is for. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $description = ''; @@ -62,7 +48,7 @@ final class WP_Taxonomy { /** * Whether a taxonomy is intended for use publicly either via the admin interface or by front-end users. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $public = true; @@ -70,7 +56,7 @@ final class WP_Taxonomy { /** * Whether the taxonomy is publicly queryable. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $publicly_queryable = true; @@ -78,7 +64,7 @@ final class WP_Taxonomy { /** * Whether the taxonomy is hierarchical. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $hierarchical = false; @@ -86,7 +72,7 @@ final class WP_Taxonomy { /** * Whether to generate and allow a UI for managing terms in this taxonomy in the admin. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $show_ui = true; @@ -96,7 +82,7 @@ final class WP_Taxonomy { * * If true, the taxonomy is shown as a submenu of the object type menu. If false, no menu is shown. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $show_in_menu = true; @@ -104,7 +90,7 @@ final class WP_Taxonomy { /** * Whether the taxonomy is available for selection in navigation menus. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $show_in_nav_menus = true; @@ -112,7 +98,7 @@ final class WP_Taxonomy { /** * Whether to list the taxonomy in the tag cloud widget controls. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $show_tagcloud = true; @@ -120,7 +106,7 @@ final class WP_Taxonomy { /** * Whether to show the taxonomy in the quick/bulk edit panel. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $show_in_quick_edit = true; @@ -128,7 +114,7 @@ final class WP_Taxonomy { /** * Whether to display a column for the taxonomy on its post type listing screens. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $show_admin_column = false; @@ -136,39 +122,31 @@ final class WP_Taxonomy { /** * The callback function for the meta box display. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool|callable */ public $meta_box_cb = null; - /** - * The callback function for sanitizing taxonomy data saved from a meta box. - * - * @since 5.1.0 - * @var callable - */ - public $meta_box_sanitize_cb = null; - /** * An array of object types this taxonomy is registered for. * - * @since 4.7.0 - * @var string[] + * @since WP-4.7.0 + * @var array */ public $object_type = null; /** * Capabilities for this taxonomy. * - * @since 4.7.0 - * @var stdClass + * @since WP-4.7.0 + * @var array */ public $cap; /** * Rewrites information for this taxonomy. * - * @since 4.7.0 + * @since WP-4.7.0 * @var array|false */ public $rewrite; @@ -176,7 +154,7 @@ final class WP_Taxonomy { /** * Query var string for this taxonomy. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string|false */ public $query_var; @@ -184,7 +162,7 @@ final class WP_Taxonomy { /** * Function that will be called when the count is updated. * - * @since 4.7.0 + * @since WP-4.7.0 * @var callable */ public $update_count_callback; @@ -195,7 +173,7 @@ final class WP_Taxonomy { * Default false. If true, standard endpoints will be registered with * respect to $rest_base and $rest_controller_class. * - * @since 4.7.4 + * @since WP-4.7.4 * @var bool $show_in_rest */ public $show_in_rest; @@ -203,70 +181,25 @@ final class WP_Taxonomy { /** * The base path for this taxonomy's REST API endpoints. * - * @since 4.7.4 + * @since WP-4.7.4 * @var string|bool $rest_base */ public $rest_base; - /** - * The namespace for this taxonomy's REST API endpoints. - * - * @since 5.9.0 - * @var string|bool $rest_namespace - */ - public $rest_namespace; - /** * The controller for this taxonomy's REST API endpoints. * * Custom controllers must extend WP_REST_Controller. * - * @since 4.7.4 + * @since WP-4.7.4 * @var string|bool $rest_controller_class */ public $rest_controller_class; - /** - * The controller instance for this taxonomy's REST API endpoints. - * - * Lazily computed. Should be accessed using {@see WP_Taxonomy::get_rest_controller()}. - * - * @since 5.5.0 - * @var WP_REST_Controller $rest_controller - */ - public $rest_controller; - - /** - * The default term name for this taxonomy. If you pass an array you have - * to set 'name' and optionally 'slug' and 'description'. - * - * @since 5.5.0 - * @var array|string - */ - public $default_term; - - /** - * Whether terms in this taxonomy should be sorted in the order they are provided to `wp_set_object_terms()`. - * - * Use this in combination with `'orderby' => 'term_order'` when fetching terms. - * - * @since 2.5.0 - * @var bool|null - */ - public $sort = null; - - /** - * Array of arguments to automatically use inside `wp_get_object_terms()` for this taxonomy. - * - * @since 2.6.0 - * @var array|null - */ - public $args = null; - /** * Whether it is a built-in taxonomy. * - * @since 4.7.0 + * @since WP-4.7.0 * @var bool */ public $_builtin; @@ -274,9 +207,9 @@ final class WP_Taxonomy { /** * Constructor. * - * See the register_taxonomy() function for accepted arguments for `$args`. + * @since WP-4.7.0 * - * @since 4.7.0 + * @global WP $wp WP instance. * * @param string $taxonomy Taxonomy key, must not exceed 32 characters. * @param array|string $object_type Name of the object type for the taxonomy object. @@ -292,12 +225,10 @@ public function __construct( $taxonomy, $object_type, $args = array() ) { /** * Sets taxonomy properties. * - * See the register_taxonomy() function for accepted arguments for `$args`. + * @since WP-4.7.0 * - * @since 4.7.0 - * - * @param string|string[] $object_type Name or array of names of the object types for the taxonomy. - * @param array|string $args Array or query string of arguments for registering a taxonomy. + * @param array|string $object_type Name of the object type for the taxonomy object. + * @param array|string $args Array or query string of arguments for registering a taxonomy. */ public function set_props( $object_type, $args ) { $args = wp_parse_args( $args ); @@ -305,36 +236,14 @@ public function set_props( $object_type, $args ) { /** * Filters the arguments for registering a taxonomy. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param array $args Array of arguments for registering a taxonomy. - * See the register_taxonomy() function for accepted arguments. - * @param string $taxonomy Taxonomy key. - * @param string[] $object_type Array of names of object types for the taxonomy. + * @param array $args Array of arguments for registering a taxonomy. + * @param string $taxonomy Taxonomy key. + * @param array $object_type Array of names of object types for the taxonomy. */ $args = apply_filters( 'register_taxonomy_args', $args, $this->name, (array) $object_type ); - $taxonomy = $this->name; - - /** - * Filters the arguments for registering a specific taxonomy. - * - * The dynamic portion of the filter name, `$taxonomy`, refers to the taxonomy key. - * - * Possible hook names include: - * - * - `register_category_taxonomy_args` - * - `register_post_tag_taxonomy_args` - * - * @since 6.0.0 - * - * @param array $args Array of arguments for registering a taxonomy. - * See the register_taxonomy() function for accepted arguments. - * @param string $taxonomy Taxonomy key. - * @param string[] $object_type Array of names of object types for the taxonomy. - */ - $args = apply_filters( "register_{$taxonomy}_taxonomy_args", $args, $this->name, (array) $object_type ); - $defaults = array( 'labels' => array(), 'description' => '', @@ -348,24 +257,19 @@ public function set_props( $object_type, $args ) { 'show_in_quick_edit' => null, 'show_admin_column' => false, 'meta_box_cb' => null, - 'meta_box_sanitize_cb' => null, 'capabilities' => array(), 'rewrite' => true, 'query_var' => $this->name, 'update_count_callback' => '', 'show_in_rest' => false, 'rest_base' => false, - 'rest_namespace' => false, 'rest_controller_class' => false, - 'default_term' => null, - 'sort' => null, - 'args' => null, '_builtin' => false, ); $args = array_merge( $defaults, $args ); - // If not set, default to the setting for 'public'. + // If not set, default to the setting for public. if ( null === $args['publicly_queryable'] ) { $args['publicly_queryable'] = $args['public']; } @@ -377,7 +281,7 @@ public function set_props( $object_type, $args ) { $args['query_var'] = sanitize_title_with_dashes( $args['query_var'] ); } } else { - // Force 'query_var' to false for non-public taxonomies. + // Force query_var to false for non-public taxonomies. $args['query_var'] = false; } @@ -396,36 +300,31 @@ public function set_props( $object_type, $args ) { } } - // If not set, default to the setting for 'public'. + // If not set, default to the setting for public. if ( null === $args['show_ui'] ) { $args['show_ui'] = $args['public']; } - // If not set, default to the setting for 'show_ui'. + // If not set, default to the setting for show_ui. if ( null === $args['show_in_menu'] || ! $args['show_ui'] ) { $args['show_in_menu'] = $args['show_ui']; } - // If not set, default to the setting for 'public'. + // If not set, default to the setting for public. if ( null === $args['show_in_nav_menus'] ) { $args['show_in_nav_menus'] = $args['public']; } - // If not set, default to the setting for 'show_ui'. + // If not set, default to the setting for show_ui. if ( null === $args['show_tagcloud'] ) { $args['show_tagcloud'] = $args['show_ui']; } - // If not set, default to the setting for 'show_ui'. + // If not set, default to the setting for show_ui. if ( null === $args['show_in_quick_edit'] ) { $args['show_in_quick_edit'] = $args['show_ui']; } - // If not set, default rest_namespace to wp/v2 if show_in_rest is true. - if ( false === $args['rest_namespace'] && ! empty( $args['show_in_rest'] ) ) { - $args['rest_namespace'] = 'wp/v2'; - } - $default_caps = array( 'manage_terms' => 'manage_categories', 'edit_terms' => 'manage_categories', @@ -438,7 +337,7 @@ public function set_props( $object_type, $args ) { $args['object_type'] = array_unique( (array) $object_type ); - // If not set, use the default meta box. + // If not set, use the default meta box if ( null === $args['meta_box_cb'] ) { if ( $args['hierarchical'] ) { $args['meta_box_cb'] = 'post_categories_meta_box'; @@ -449,35 +348,6 @@ public function set_props( $object_type, $args ) { $args['name'] = $this->name; - // Default meta box sanitization callback depends on the value of 'meta_box_cb'. - if ( null === $args['meta_box_sanitize_cb'] ) { - switch ( $args['meta_box_cb'] ) { - case 'post_categories_meta_box': - $args['meta_box_sanitize_cb'] = 'taxonomy_meta_box_sanitize_cb_checkboxes'; - break; - - case 'post_tags_meta_box': - default: - $args['meta_box_sanitize_cb'] = 'taxonomy_meta_box_sanitize_cb_input'; - break; - } - } - - // Default taxonomy term. - if ( ! empty( $args['default_term'] ) ) { - if ( ! is_array( $args['default_term'] ) ) { - $args['default_term'] = array( 'name' => $args['default_term'] ); - } - $args['default_term'] = wp_parse_args( - $args['default_term'], - array( - 'name' => '', - 'slug' => '', - 'description' => '', - ) - ); - } - foreach ( $args as $property_name => $property_value ) { $this->$property_name = $property_value; } @@ -489,9 +359,9 @@ public function set_props( $object_type, $args ) { /** * Adds the necessary rewrite rules for the taxonomy. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @global WP $wp Current WordPress environment instance. + * @global WP $wp Current ClassicPress environment instance. */ public function add_rewrite_rules() { /* @var WP $wp */ @@ -517,9 +387,9 @@ public function add_rewrite_rules() { /** * Removes any rewrite rules, permastructs, and rules for the taxonomy. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @global WP $wp Current WordPress environment instance. + * @global WP $wp Current ClassicPress environment instance. */ public function remove_rewrite_rules() { /* @var WP $wp */ @@ -540,7 +410,7 @@ public function remove_rewrite_rules() { /** * Registers the ajax callback for the meta box. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function add_hooks() { add_filter( 'wp_ajax_add-' . $this->name, '_wp_ajax_add_hierarchical_term' ); @@ -549,112 +419,9 @@ public function add_hooks() { /** * Removes the ajax callback for the meta box. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function remove_hooks() { remove_filter( 'wp_ajax_add-' . $this->name, '_wp_ajax_add_hierarchical_term' ); } - - /** - * Gets the REST API controller for this taxonomy. - * - * Will only instantiate the controller class once per request. - * - * @since 5.5.0 - * - * @return WP_REST_Controller|null The controller instance, or null if the taxonomy - * is set not to show in rest. - */ - public function get_rest_controller() { - if ( ! $this->show_in_rest ) { - return null; - } - - $class = $this->rest_controller_class ? $this->rest_controller_class : WP_REST_Terms_Controller::class; - - if ( ! class_exists( $class ) ) { - return null; - } - - if ( ! is_subclass_of( $class, WP_REST_Controller::class ) ) { - return null; - } - - if ( ! $this->rest_controller ) { - $this->rest_controller = new $class( $this->name ); - } - - if ( ! ( $this->rest_controller instanceof $class ) ) { - return null; - } - - return $this->rest_controller; - } - - /** - * Returns the default labels for taxonomies. - * - * @since 6.0.0 - * - * @return (string|null)[][] The default labels for taxonomies. - */ - public static function get_default_labels() { - if ( ! empty( self::$default_labels ) ) { - return self::$default_labels; - } - - $name_field_description = __( 'The name is how it appears on your site.' ); - $slug_field_description = __( 'The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ); - $parent_field_description = __( 'Assign a parent term to create a hierarchy. The term Jazz, for example, would be the parent of Bebop and Big Band.' ); - $desc_field_description = __( 'The description is not prominent by default; however, some themes may show it.' ); - - self::$default_labels = array( - 'name' => array( _x( 'Tags', 'taxonomy general name' ), _x( 'Categories', 'taxonomy general name' ) ), - 'singular_name' => array( _x( 'Tag', 'taxonomy singular name' ), _x( 'Category', 'taxonomy singular name' ) ), - 'search_items' => array( __( 'Search Tags' ), __( 'Search Categories' ) ), - 'popular_items' => array( __( 'Popular Tags' ), null ), - 'all_items' => array( __( 'All Tags' ), __( 'All Categories' ) ), - 'parent_item' => array( null, __( 'Parent Category' ) ), - 'parent_item_colon' => array( null, __( 'Parent Category:' ) ), - 'name_field_description' => array( $name_field_description, $name_field_description ), - 'slug_field_description' => array( $slug_field_description, $slug_field_description ), - 'parent_field_description' => array( null, $parent_field_description ), - 'desc_field_description' => array( $desc_field_description, $desc_field_description ), - 'edit_item' => array( __( 'Edit Tag' ), __( 'Edit Category' ) ), - 'view_item' => array( __( 'View Tag' ), __( 'View Category' ) ), - 'update_item' => array( __( 'Update Tag' ), __( 'Update Category' ) ), - 'add_new_item' => array( __( 'Add New Tag' ), __( 'Add New Category' ) ), - 'new_item_name' => array( __( 'New Tag Name' ), __( 'New Category Name' ) ), - 'separate_items_with_commas' => array( __( 'Separate tags with commas' ), null ), - 'add_or_remove_items' => array( __( 'Add or remove tags' ), null ), - 'choose_from_most_used' => array( __( 'Choose from the most used tags' ), null ), - 'not_found' => array( __( 'No tags found.' ), __( 'No categories found.' ) ), - 'no_terms' => array( __( 'No tags' ), __( 'No categories' ) ), - 'filter_by_item' => array( null, __( 'Filter by category' ) ), - 'items_list_navigation' => array( __( 'Tags list navigation' ), __( 'Categories list navigation' ) ), - 'items_list' => array( __( 'Tags list' ), __( 'Categories list' ) ), - /* translators: Tab heading when selecting from the most used terms. */ - 'most_used' => array( _x( 'Most Used', 'tags' ), _x( 'Most Used', 'categories' ) ), - 'back_to_items' => array( __( '← Go to Tags' ), __( '← Go to Categories' ) ), - 'item_link' => array( - _x( 'Tag Link', 'navigation link block title' ), - _x( 'Category Link', 'navigation link block title' ), - ), - 'item_link_description' => array( - _x( 'A link to a tag.', 'navigation link block description' ), - _x( 'A link to a category.', 'navigation link block description' ), - ), - ); - - return self::$default_labels; - } - - /** - * Resets the cache for the default labels. - * - * @since 6.0.0 - */ - public static function reset_default_labels() { - self::$default_labels = array(); - } } diff --git a/wp-includes/class-wp-term-query.php b/wp-includes/class-wp-term-query.php index b02d670..b5ddc5d 100644 --- a/wp-includes/class-wp-term-query.php +++ b/wp-includes/class-wp-term-query.php @@ -5,23 +5,22 @@ * * @package ClassicPress * @subpackage Taxonomy - * @since 4.6.0 + * @since WP-4.6.0 */ /** * Class used for querying terms. * - * @since 4.6.0 + * @since WP-4.6.0 * * @see WP_Term_Query::__construct() for accepted arguments. */ -#[AllowDynamicProperties] class WP_Term_Query { /** * SQL string used to perform database query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var string */ public $request; @@ -29,15 +28,15 @@ class WP_Term_Query { /** * Metadata query container. * - * @since 4.6.0 - * @var WP_Meta_Query A meta query instance. + * @since WP-4.6.0 + * @var object WP_Meta_Query */ public $meta_query = false; /** * Metadata query clauses. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ protected $meta_query_clauses; @@ -45,7 +44,7 @@ class WP_Term_Query { /** * SQL query clauses. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ protected $sql_clauses = array( @@ -59,7 +58,7 @@ class WP_Term_Query { /** * Query vars set by the user. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $query_vars; @@ -67,7 +66,7 @@ class WP_Term_Query { /** * Default values for query vars. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $query_var_defaults; @@ -75,7 +74,7 @@ class WP_Term_Query { /** * List of terms located by the query. * - * @since 4.6.0 + * @since WP-4.6.0 * @var array */ public $terms; @@ -85,112 +84,97 @@ class WP_Term_Query { * * Sets up the term query, based on the query vars passed. * - * @since 4.6.0 - * @since 4.6.0 Introduced 'term_taxonomy_id' parameter. - * @since 4.7.0 Introduced 'object_ids' parameter. - * @since 4.9.0 Added 'slug__in' support for 'orderby'. - * @since 5.1.0 Introduced the 'meta_compare_key' parameter. - * @since 5.3.0 Introduced the 'meta_type_key' parameter. + * @since WP-4.6.0 + * @since WP-4.6.0 Introduced 'term_taxonomy_id' parameter. + * @since WP-4.7.0 Introduced 'object_ids' parameter. + * @since WP-4.9.0 Added 'slug__in' support for 'orderby'. * * @param string|array $query { * Optional. Array or query string of term query parameters. Default empty. * - * @type string|string[] $taxonomy Taxonomy name, or array of taxonomy names, to which results - * should be limited. - * @type int|int[] $object_ids Object ID, or array of object IDs. Results will be - * limited to terms associated with these objects. - * @type string $orderby Field(s) to order terms by. Accepts: - * - Term fields ('name', 'slug', 'term_group', 'term_id', 'id', - * 'description', 'parent', 'term_order'). Unless `$object_ids` - * is not empty, 'term_order' is treated the same as 'term_id'. - * - 'count' to use the number of objects associated with the term. - * - 'include' to match the 'order' of the `$include` param. - * - 'slug__in' to match the 'order' of the `$slug` param. - * - 'meta_value' - * - 'meta_value_num'. - * - The value of `$meta_key`. - * - The array keys of `$meta_query`. - * - 'none' to omit the ORDER BY clause. - * Default 'name'. - * @type string $order Whether to order terms in ascending or descending order. - * Accepts 'ASC' (ascending) or 'DESC' (descending). - * Default 'ASC'. - * @type bool|int $hide_empty Whether to hide terms not assigned to any posts. Accepts - * 1|true or 0|false. Default 1|true. - * @type int[]|string $include Array or comma/space-separated string of term IDs to include. - * Default empty array. - * @type int[]|string $exclude Array or comma/space-separated string of term IDs to exclude. - * If `$include` is non-empty, `$exclude` is ignored. - * Default empty array. - * @type int[]|string $exclude_tree Array or comma/space-separated string of term IDs to exclude - * along with all of their descendant terms. If `$include` is - * non-empty, `$exclude_tree` is ignored. Default empty array. - * @type int|string $number Maximum number of terms to return. Accepts ''|0 (all) or any - * positive number. Default ''|0 (all). Note that `$number` may - * not return accurate results when coupled with `$object_ids`. - * See #41796 for details. - * @type int $offset The number by which to offset the terms query. Default empty. - * @type string $fields Term fields to query for. Accepts: - * - 'all' Returns an array of complete term objects (`WP_Term[]`). - * - 'all_with_object_id' Returns an array of term objects - * with the 'object_id' param (`WP_Term[]`). Works only - * when the `$object_ids` parameter is populated. - * - 'ids' Returns an array of term IDs (`int[]`). - * - 'tt_ids' Returns an array of term taxonomy IDs (`int[]`). - * - 'names' Returns an array of term names (`string[]`). - * - 'slugs' Returns an array of term slugs (`string[]`). - * - 'count' Returns the number of matching terms (`int`). - * - 'id=>parent' Returns an associative array of parent term IDs, - * keyed by term ID (`int[]`). - * - 'id=>name' Returns an associative array of term names, - * keyed by term ID (`string[]`). - * - 'id=>slug' Returns an associative array of term slugs, - * keyed by term ID (`string[]`). - * Default 'all'. - * @type bool $count Whether to return a term count. If true, will take precedence - * over `$fields`. Default false. - * @type string|string[] $name Name or array of names to return term(s) for. - * Default empty. - * @type string|string[] $slug Slug or array of slugs to return term(s) for. - * Default empty. - * @type int|int[] $term_taxonomy_id Term taxonomy ID, or array of term taxonomy IDs, - * to match when querying terms. - * @type bool $hierarchical Whether to include terms that have non-empty descendants - * (even if `$hide_empty` is set to true). Default true. - * @type string $search Search criteria to match terms. Will be SQL-formatted with - * wildcards before and after. Default empty. - * @type string $name__like Retrieve terms with criteria by which a term is LIKE - * `$name__like`. Default empty. - * @type string $description__like Retrieve terms where the description is LIKE - * `$description__like`. Default empty. - * @type bool $pad_counts Whether to pad the quantity of a term's children in the - * quantity of each term's "count" object variable. - * Default false. - * @type string $get Whether to return terms regardless of ancestry or whether the - * terms are empty. Accepts 'all' or '' (disabled). - * Default ''. - * @type int $child_of Term ID to retrieve child terms of. If multiple taxonomies - * are passed, `$child_of` is ignored. Default 0. - * @type int $parent Parent term ID to retrieve direct-child terms of. - * Default empty. - * @type bool $childless True to limit results to terms that have no children. - * This parameter has no effect on non-hierarchical taxonomies. - * Default false. - * @type string $cache_domain Unique cache key to be produced when this query is stored in - * an object cache. Default 'core'. - * @type bool $update_term_meta_cache Whether to prime meta caches for matched terms. Default true. - * @type string|string[] $meta_key Meta key or keys to filter by. - * @type string|string[] $meta_value Meta value or values to filter by. - * @type string $meta_compare MySQL operator used for comparing the meta value. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_compare_key MySQL operator used for comparing the meta key. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type MySQL data type that the meta_value column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type_key MySQL data type that the meta_key column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type array $meta_query An associative array of WP_Meta_Query arguments. - * See WP_Meta_Query::__construct() for accepted values. + * @type string|array $taxonomy Taxonomy name, or array of taxonomies, to which results should + * be limited. + * @type int|array $object_ids Optional. Object ID, or array of object IDs. Results will be + * limited to terms associated with these objects. + * @type string $orderby Field(s) to order terms by. Accepts term fields ('name', + * 'slug', 'term_group', 'term_id', 'id', 'description', 'parent'), + * 'count' for term taxonomy count, 'include' to match the + * 'order' of the $include param, 'slug__in' to match the + * 'order' of the $slug param, 'meta_value', 'meta_value_num', + * the value of `$meta_key`, the array keys of `$meta_query`, or + * 'none' to omit the ORDER BY clause. Defaults to 'name'. + * @type string $order Whether to order terms in ascending or descending order. + * Accepts 'ASC' (ascending) or 'DESC' (descending). + * Default 'ASC'. + * @type bool|int $hide_empty Whether to hide terms not assigned to any posts. Accepts + * 1|true or 0|false. Default 1|true. + * @type array|string $include Array or comma/space-separated string of term ids to include. + * Default empty array. + * @type array|string $exclude Array or comma/space-separated string of term ids to exclude. + * If $include is non-empty, $exclude is ignored. + * Default empty array. + * @type array|string $exclude_tree Array or comma/space-separated string of term ids to exclude + * along with all of their descendant terms. If $include is + * non-empty, $exclude_tree is ignored. Default empty array. + * @type int|string $number Maximum number of terms to return. Accepts ''|0 (all) or any + * positive number. Default ''|0 (all). Note that $number may + * not return accurate results when coupled with $object_ids. + * See https://core.trac.wordpress.org/ticket/41796 for details. + * @type int $offset The number by which to offset the terms query. Default empty. + * @type string $fields Term fields to query for. Accepts 'all' (returns an array of + * complete term objects), 'all_with_object_id' (returns an + * array of term objects with the 'object_id' param; only works + * when the `$fields` parameter is 'object_ids' ), 'ids' + * (returns an array of ids), 'tt_ids' (returns an array of + * term taxonomy ids), 'id=>parent' (returns an associative + * array with ids as keys, parent term IDs as values), 'names' + * (returns an array of term names), 'count' (returns the number + * of matching terms), 'id=>name' (returns an associative array + * with ids as keys, term names as values), or 'id=>slug' + * (returns an associative array with ids as keys, term slugs + * as values). Default 'all'. + * @type bool $count Whether to return a term count (true) or array of term objects + * (false). Will take precedence over `$fields` if true. + * Default false. + * @type string|array $name Optional. Name or array of names to return term(s) for. + * Default empty. + * @type string|array $slug Optional. Slug or array of slugs to return term(s) for. + * Default empty. + * @type int|array $term_taxonomy_id Optional. Term taxonomy ID, or array of term taxonomy IDs, + * to match when querying terms. + * @type bool $hierarchical Whether to include terms that have non-empty descendants (even + * if $hide_empty is set to true). Default true. + * @type string $search Search criteria to match terms. Will be SQL-formatted with + * wildcards before and after. Default empty. + * @type string $name__like Retrieve terms with criteria by which a term is LIKE + * `$name__like`. Default empty. + * @type string $description__like Retrieve terms where the description is LIKE + * `$description__like`. Default empty. + * @type bool $pad_counts Whether to pad the quantity of a term's children in the + * quantity of each term's "count" object variable. + * Default false. + * @type string $get Whether to return terms regardless of ancestry or whether the + * terms are empty. Accepts 'all' or empty (disabled). + * Default empty. + * @type int $child_of Term ID to retrieve child terms of. If multiple taxonomies + * are passed, $child_of is ignored. Default 0. + * @type int|string $parent Parent term ID to retrieve direct-child terms of. + * Default empty. + * @type bool $childless True to limit results to terms that have no children. + * This parameter has no effect on non-hierarchical taxonomies. + * Default false. + * @type string $cache_domain Unique cache key to be produced when this query is stored in + * an object cache. Default is 'core'. + * @type bool $update_term_meta_cache Whether to prime meta caches for matched terms. Default true. + * @type array $meta_query Optional. Meta query clauses to limit retrieved terms by. + * See `WP_Meta_Query`. Default empty. + * @type string $meta_key Limit terms to those matching a specific metadata key. + * Can be used in conjunction with `$meta_value`. Default empty. + * @type string $meta_value Limit terms to those matching a specific metadata value. + * Usually used in conjunction with `$meta_key`. Default empty. + * @type string $meta_type MySQL data type that the `$meta_value` will be CAST to for + * comparisons. Default empty. + * @type string $meta_compare Comparison operator to test the 'meta_value'. Default empty. * } */ public function __construct( $query = '' ) { @@ -236,7 +220,7 @@ public function __construct( $query = '' ) { /** * Parse arguments passed to the term query with default query parameters. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string|array $query WP_Term_Query arguments. See WP_Term_Query::__construct() */ @@ -252,10 +236,10 @@ public function parse_query( $query = '' ) { * * Use {@see 'get_terms_args'} to filter the passed arguments. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param array $defaults An array of default get_terms() arguments. - * @param string[] $taxonomies An array of taxonomy names. + * @param array $defaults An array of default get_terms() arguments. + * @param array $taxonomies An array of taxonomies. */ $this->query_var_defaults = apply_filters( 'get_terms_defaults', $this->query_var_defaults, $taxonomies ); @@ -265,7 +249,7 @@ public function parse_query( $query = '' ) { $query['offset'] = absint( $query['offset'] ); // 'parent' overrides 'child_of'. - if ( 0 < (int) $query['parent'] ) { + if ( 0 < intval( $query['parent'] ) ) { $query['child_of'] = false; } @@ -284,9 +268,9 @@ public function parse_query( $query = '' ) { /** * Fires after term query vars have been parsed. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Term_Query $query Current instance of WP_Term_Query. + * @param WP_Term_Query $this Current instance of WP_Term_Query. */ do_action( 'parse_term_query', $this ); } @@ -297,7 +281,7 @@ public function parse_query( $query = '' ) { * The return type varies depending on the value passed to `$args['fields']`. See * WP_Term_Query::get_terms() for details. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string|array $query Array or URL query string of parameters. * @return WP_Term[]|int[]|string[]|string Array of terms, or number of terms as numeric string @@ -338,9 +322,11 @@ public function query( $query ) { * - 'ids' * - 'tt_ids' * - * @since 4.6.0 + * In all cases, a `WP_Error` object will be returned if an invalid taxonomy is used. * - * @global wpdb $wpdb WordPress database abstraction object. + * @since WP-4.6.0 + * + * @global wpdb $wpdb ClassicPress database abstraction object. * * @return WP_Term[]|int[]|string[]|string Array of terms, or number of terms as numeric string * when 'count' is passed as a query var. @@ -358,11 +344,11 @@ public function get_terms() { /** * Fires before terms are retrieved. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @param WP_Term_Query $query Current instance of WP_Term_Query (passed by reference). + * @param WP_Term_Query $this Current instance of WP_Term_Query. */ - do_action_ref_array( 'pre_get_terms', array( &$this ) ); + do_action( 'pre_get_terms', $this ); $taxonomies = (array) $args['taxonomy']; @@ -374,9 +360,6 @@ public function get_terms() { $has_hierarchical_tax = true; } } - } else { - // When no taxonomies are provided, assume we have to descend the tree. - $has_hierarchical_tax = true; } if ( ! $has_hierarchical_tax ) { @@ -385,7 +368,7 @@ public function get_terms() { } // 'parent' overrides 'child_of'. - if ( 0 < (int) $args['parent'] ) { + if ( 0 < intval( $args['parent'] ) ) { $args['child_of'] = false; } @@ -400,10 +383,10 @@ public function get_terms() { /** * Filters the terms query arguments. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param array $args An array of get_terms() arguments. - * @param string[] $taxonomies An array of taxonomy names. + * @param array $args An array of get_terms() arguments. + * @param array $taxonomies An array of taxonomies. */ $args = apply_filters( 'get_terms_args', $args, $taxonomies ); @@ -430,12 +413,7 @@ public function get_terms() { } if ( ! $in_hierarchy ) { - if ( 'count' === $args['fields'] ) { - return 0; - } else { - $this->terms = array(); - return $this->terms; - } + return array(); } } @@ -444,7 +422,6 @@ public function get_terms() { if ( 'term_order' === $_orderby && empty( $this->query_vars['object_ids'] ) ) { $_orderby = 'term_id'; } - $orderby = $this->parse_orderby( $_orderby ); if ( $orderby ) { @@ -454,16 +431,7 @@ public function get_terms() { $order = $this->parse_order( $this->query_vars['order'] ); if ( $taxonomies ) { - $this->sql_clauses['where']['taxonomy'] = - "tt.taxonomy IN ('" . implode( "', '", array_map( 'esc_sql', $taxonomies ) ) . "')"; - } - - if ( empty( $args['exclude'] ) ) { - $args['exclude'] = array(); - } - - if ( empty( $args['include'] ) ) { - $args['include'] = array(); + $this->sql_clauses['where']['taxonomy'] = "tt.taxonomy IN ('" . implode( "', '", array_map( 'esc_sql', $taxonomies ) ) . "')"; } $exclude = $args['exclude']; @@ -485,21 +453,19 @@ public function get_terms() { if ( ! empty( $exclude_tree ) ) { $exclude_tree = wp_parse_id_list( $exclude_tree ); $excluded_children = $exclude_tree; - foreach ( $exclude_tree as $extrunk ) { $excluded_children = array_merge( $excluded_children, (array) get_terms( + reset( $taxonomies ), array( - 'taxonomy' => reset( $taxonomies ), - 'child_of' => (int) $extrunk, + 'child_of' => intval( $extrunk ), 'fields' => 'ids', 'hide_empty' => 0, ) ) ); } - $exclusions = array_merge( $excluded_children, $exclusions ); } @@ -525,28 +491,24 @@ public function get_terms() { /** * Filters the terms to exclude from the terms query. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param string $exclusions `NOT IN` clause of the terms query. - * @param array $args An array of terms query arguments. - * @param string[] $taxonomies An array of taxonomy names. + * @param string $exclusions `NOT IN` clause of the terms query. + * @param array $args An array of terms query arguments. + * @param array $taxonomies An array of taxonomies. */ $exclusions = apply_filters( 'list_terms_exclusions', $exclusions, $args, $taxonomies ); if ( ! empty( $exclusions ) ) { - // Strip leading 'AND'. Must do string manipulation here for backward compatibility with filter. + // Must do string manipulation here for backward compatibility with filter. $this->sql_clauses['where']['exclusions'] = preg_replace( '/^\s*AND\s*/', '', $exclusions ); } - if ( '' === $args['name'] ) { - $args['name'] = array(); - } else { - $args['name'] = (array) $args['name']; - } - - if ( ! empty( $args['name'] ) ) { - $names = $args['name']; - + if ( + ( ! empty( $args['name'] ) ) || + ( is_string( $args['name'] ) && 0 !== strlen( $args['name'] ) ) + ) { + $names = (array) $args['name']; foreach ( $names as &$_name ) { // `sanitize_term_field()` returns slashed data. $_name = stripslashes( sanitize_term_field( 'name', $_name, 0, reset( $taxonomies ), 'db' ) ); @@ -555,53 +517,43 @@ public function get_terms() { $this->sql_clauses['where']['name'] = "t.name IN ('" . implode( "', '", array_map( 'esc_sql', $names ) ) . "')"; } - if ( '' === $args['slug'] ) { - $args['slug'] = array(); - } else { - $args['slug'] = array_map( 'sanitize_title', (array) $args['slug'] ); - } - - if ( ! empty( $args['slug'] ) ) { - $slug = implode( "', '", $args['slug'] ); - - $this->sql_clauses['where']['slug'] = "t.slug IN ('" . $slug . "')"; - } - - if ( '' === $args['term_taxonomy_id'] ) { - $args['term_taxonomy_id'] = array(); - } else { - $args['term_taxonomy_id'] = array_map( 'intval', (array) $args['term_taxonomy_id'] ); + if ( + ( ! empty( $args['slug'] ) ) || + ( is_string( $args['slug'] ) && 0 !== strlen( $args['slug'] ) ) + ) { + if ( is_array( $args['slug'] ) ) { + $slug = array_map( 'sanitize_title', $args['slug'] ); + $this->sql_clauses['where']['slug'] = "t.slug IN ('" . implode( "', '", $slug ) . "')"; + } else { + $slug = sanitize_title( $args['slug'] ); + $this->sql_clauses['where']['slug'] = "t.slug = '$slug'"; + } } if ( ! empty( $args['term_taxonomy_id'] ) ) { - $tt_ids = implode( ',', $args['term_taxonomy_id'] ); - - $this->sql_clauses['where']['term_taxonomy_id'] = "tt.term_taxonomy_id IN ({$tt_ids})"; + if ( is_array( $args['term_taxonomy_id'] ) ) { + $tt_ids = implode( ',', array_map( 'intval', $args['term_taxonomy_id'] ) ); + $this->sql_clauses['where']['term_taxonomy_id'] = "tt.term_taxonomy_id IN ({$tt_ids})"; + } else { + $this->sql_clauses['where']['term_taxonomy_id'] = $wpdb->prepare( 'tt.term_taxonomy_id = %d', $args['term_taxonomy_id'] ); + } } if ( ! empty( $args['name__like'] ) ) { - $this->sql_clauses['where']['name__like'] = $wpdb->prepare( - 't.name LIKE %s', - '%' . $wpdb->esc_like( $args['name__like'] ) . '%' - ); + $this->sql_clauses['where']['name__like'] = $wpdb->prepare( 't.name LIKE %s', '%' . $wpdb->esc_like( $args['name__like'] ) . '%' ); } if ( ! empty( $args['description__like'] ) ) { - $this->sql_clauses['where']['description__like'] = $wpdb->prepare( - 'tt.description LIKE %s', - '%' . $wpdb->esc_like( $args['description__like'] ) . '%' - ); - } - - if ( '' === $args['object_ids'] ) { - $args['object_ids'] = array(); - } else { - $args['object_ids'] = array_map( 'intval', (array) $args['object_ids'] ); + $this->sql_clauses['where']['description__like'] = $wpdb->prepare( 'tt.description LIKE %s', '%' . $wpdb->esc_like( $args['description__like'] ) . '%' ); } if ( ! empty( $args['object_ids'] ) ) { - $object_ids = implode( ', ', $args['object_ids'] ); + $object_ids = $args['object_ids']; + if ( ! is_array( $object_ids ) ) { + $object_ids = array( $object_ids ); + } + $object_ids = implode( ', ', array_map( 'intval', $object_ids ) ); $this->sql_clauses['where']['object_ids'] = "tr.object_id IN ($object_ids)"; } @@ -654,27 +606,40 @@ public function get_terms() { $meta_clauses = $this->meta_query->get_clauses(); if ( ! empty( $meta_clauses ) ) { - $join .= $mq_sql['join']; - - // Strip leading 'AND'. + $join .= $mq_sql['join']; $this->sql_clauses['where']['meta_query'] = preg_replace( '/^\s*AND\s*/', '', $mq_sql['where'] ); - - $distinct .= 'DISTINCT'; + $distinct .= 'DISTINCT'; } $selects = array(); switch ( $args['fields'] ) { + case 'all': + case 'all_with_object_id': + case 'tt_ids': + case 'slugs': + $selects = array( 't.*', 'tt.*' ); + if ( 'all_with_object_id' === $args['fields'] && ! empty( $args['object_ids'] ) ) { + $selects[] = 'tr.object_id'; + } + break; + case 'ids': + case 'id=>parent': + $selects = array( 't.term_id', 'tt.parent', 'tt.count', 'tt.taxonomy' ); + break; + case 'names': + $selects = array( 't.term_id', 'tt.parent', 'tt.count', 't.name', 'tt.taxonomy' ); + break; case 'count': $orderby = ''; $order = ''; $selects = array( 'COUNT(*)' ); break; - default: - $selects = array( 't.term_id' ); - if ( 'all_with_object_id' === $args['fields'] && ! empty( $args['object_ids'] ) ) { - $selects[] = 'tr.object_id'; - } + case 'id=>name': + $selects = array( 't.term_id', 't.name', 'tt.count', 'tt.taxonomy' ); + break; + case 'id=>slug': + $selects = array( 't.term_id', 't.slug', 'tt.count', 'tt.taxonomy' ); break; } @@ -690,45 +655,32 @@ public function get_terms() { * * Use of this filter can result in unpredictable behavior, and is not recommended. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string[] $selects An array of fields to select for the terms query. - * @param array $args An array of term query arguments. - * @param string[] $taxonomies An array of taxonomy names. + * @param array $selects An array of fields to select for the terms query. + * @param array $args An array of term query arguments. + * @param array $taxonomies An array of taxonomies. */ $fields = implode( ', ', apply_filters( 'get_terms_fields', $selects, $args, $taxonomies ) ); $join .= " INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id"; if ( ! empty( $this->query_vars['object_ids'] ) ) { - $join .= " INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id"; - $distinct = 'DISTINCT'; + $join .= " INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id"; } $where = implode( ' AND ', $this->sql_clauses['where'] ); - $pieces = array( 'fields', 'join', 'where', 'distinct', 'orderby', 'order', 'limits' ); - /** * Filters the terms query SQL clauses. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param string[] $clauses { - * Associative array of the clauses for the query. - * - * @type string $fields The SELECT clause of the query. - * @type string $join The JOIN clause of the query. - * @type string $where The WHERE clause of the query. - * @type string $distinct The DISTINCT clause of the query. - * @type string $orderby The ORDER BY clause of the query. - * @type string $order The ORDER clause of the query. - * @type string $limits The LIMIT clause of the query. - * } - * @param string[] $taxonomies An array of taxonomy names. - * @param array $args An array of term query arguments. + * @param array $pieces Terms query SQL clauses. + * @param array $taxonomies An array of taxonomies. + * @param array $args An array of terms query arguments. */ - $clauses = apply_filters( 'terms_clauses', compact( $pieces ), $taxonomies, $args ); + $clauses = apply_filters( 'terms_clauses', compact( 'fields', 'join', 'where', 'distinct', 'orderby', 'order', 'limits' ), $taxonomies, $args ); $fields = isset( $clauses['fields'] ) ? $clauses['fields'] : ''; $join = isset( $clauses['join'] ) ? $clauses['join'] : ''; @@ -747,52 +699,16 @@ public function get_terms() { $this->sql_clauses['orderby'] = $orderby ? "$orderby $order" : ''; $this->sql_clauses['limits'] = $limits; - $this->request = " - {$this->sql_clauses['select']} - {$this->sql_clauses['from']} - {$where} - {$this->sql_clauses['orderby']} - {$this->sql_clauses['limits']} - "; - - $this->terms = null; - - /** - * Filters the terms array before the query takes place. - * - * Return a non-null value to bypass WordPress' default term queries. - * - * @since 5.3.0 - * - * @param array|null $terms Return an array of term data to short-circuit WP's term query, - * or null to allow WP queries to run normally. - * @param WP_Term_Query $query The WP_Term_Query instance, passed by reference. - */ - $this->terms = apply_filters_ref_array( 'terms_pre_query', array( $this->terms, &$this ) ); - - if ( null !== $this->terms ) { - return $this->terms; - } - - $cache_key = $this->generate_cache_key( $args, $this->request ); - $cache = wp_cache_get( $cache_key, 'terms' ); + $this->request = "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['orderby']} {$this->sql_clauses['limits']}"; + // $args can be anything. Only use the args defined in defaults to compute the key. + $key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $this->query_var_defaults ) ) ) . serialize( $taxonomies ) . $this->request ); + $last_changed = wp_cache_get_last_changed( 'terms' ); + $cache_key = "get_terms:$key:$last_changed"; + $cache = wp_cache_get( $cache_key, 'terms' ); if ( false !== $cache ) { - if ( 'ids' === $_fields ) { - $cache = array_map( 'intval', $cache ); - } elseif ( 'count' !== $_fields ) { - if ( ( 'all_with_object_id' === $_fields && ! empty( $args['object_ids'] ) ) - || ( 'all' === $_fields && $args['pad_counts'] ) - ) { - $term_ids = wp_list_pluck( $cache, 'term_id' ); - } else { - $term_ids = array_map( 'intval', $cache ); - } - - _prime_term_caches( $term_ids, $args['update_term_meta_cache'] ); - - $term_objects = $this->populate_terms( $cache ); - $cache = $this->format_terms( $term_objects, $_fields ); + if ( 'all' === $_fields || 'all_with_object_id' === $_fields ) { + $cache = $this->populate_terms( $cache ); } $this->terms = $cache; @@ -800,27 +716,33 @@ public function get_terms() { } if ( 'count' === $_fields ) { - $count = $wpdb->get_var( $this->request ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared + $count = $wpdb->get_var( $this->request ); wp_cache_set( $cache_key, $count, 'terms' ); return $count; } - $terms = $wpdb->get_results( $this->request ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared + $terms = $wpdb->get_results( $this->request ); + + if ( 'all' === $_fields || 'all_with_object_id' === $_fields ) { + update_term_cache( $terms ); + } + + // Prime termmeta cache. + if ( $args['update_term_meta_cache'] ) { + $term_ids = wp_list_pluck( $terms, 'term_id' ); + update_termmeta_cache( $term_ids ); + } if ( empty( $terms ) ) { - wp_cache_add( $cache_key, array(), 'terms' ); + wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS ); return array(); } - $term_ids = wp_list_pluck( $terms, 'term_id' ); - _prime_term_caches( $term_ids, false ); - $term_objects = $this->populate_terms( $terms ); - if ( $child_of ) { foreach ( $taxonomies as $_tax ) { $children = _get_term_hierarchy( $_tax ); if ( ! empty( $children ) ) { - $term_objects = _get_term_children( $child_of, $term_objects, $_tax ); + $terms = _get_term_children( $child_of, $terms, $_tax ); } } } @@ -828,16 +750,15 @@ public function get_terms() { // Update term counts to include children. if ( $args['pad_counts'] && 'all' === $_fields ) { foreach ( $taxonomies as $_tax ) { - _pad_term_counts( $term_objects, $_tax ); + _pad_term_counts( $terms, $_tax ); } } // Make sure we show empty categories that have children. - if ( $hierarchical && $args['hide_empty'] && is_array( $term_objects ) ) { - foreach ( $term_objects as $k => $term ) { + if ( $hierarchical && $args['hide_empty'] && is_array( $terms ) ) { + foreach ( $terms as $k => $term ) { if ( ! $term->count ) { $children = get_term_children( $term->term_id, $term->taxonomy ); - if ( is_array( $children ) ) { foreach ( $children as $child_id ) { $child = get_term( $child_id, $term->taxonomy ); @@ -848,56 +769,92 @@ public function get_terms() { } // It really is empty. - unset( $term_objects[ $k ] ); + unset( $terms[ $k ] ); } } } - // Hierarchical queries are not limited, so 'offset' and 'number' must be handled now. - if ( $hierarchical && $number && is_array( $term_objects ) ) { - if ( $offset >= count( $term_objects ) ) { - $term_objects = array(); - } else { - $term_objects = array_slice( $term_objects, $offset, $number, true ); + /* + * When querying for terms connected to objects, we may get + * duplicate results. The duplicates should be preserved if + * `$fields` is 'all_with_object_id', but should otherwise be + * removed. + */ + if ( ! empty( $args['object_ids'] ) && 'all_with_object_id' !== $_fields ) { + $_tt_ids = array(); + $_terms = array(); + foreach ( $terms as $term ) { + if ( isset( $_tt_ids[ $term->term_id ] ) ) { + continue; + } + + $_tt_ids[ $term->term_id ] = 1; + $_terms[] = $term; } - } - // Prime termmeta cache. - if ( $args['update_term_meta_cache'] ) { - $term_ids = wp_list_pluck( $term_objects, 'term_id' ); - wp_lazyload_term_meta( $term_ids ); + $terms = $_terms; } - if ( 'all_with_object_id' === $_fields && ! empty( $args['object_ids'] ) ) { - $term_cache = array(); - foreach ( $term_objects as $term ) { - $object = new stdClass(); - $object->term_id = $term->term_id; - $object->object_id = $term->object_id; - $term_cache[] = $object; + $_terms = array(); + if ( 'id=>parent' === $_fields ) { + foreach ( $terms as $term ) { + $_terms[ $term->term_id ] = $term->parent; } - } elseif ( 'all' === $_fields && $args['pad_counts'] ) { - $term_cache = array(); - foreach ( $term_objects as $term ) { - $object = new stdClass(); - $object->term_id = $term->term_id; - $object->count = $term->count; - $term_cache[] = $object; + } elseif ( 'ids' === $_fields ) { + foreach ( $terms as $term ) { + $_terms[] = (int) $term->term_id; + } + } elseif ( 'tt_ids' === $_fields ) { + foreach ( $terms as $term ) { + $_terms[] = (int) $term->term_taxonomy_id; + } + } elseif ( 'names' === $_fields ) { + foreach ( $terms as $term ) { + $_terms[] = $term->name; + } + } elseif ( 'slugs' === $_fields ) { + foreach ( $terms as $term ) { + $_terms[] = $term->slug; + } + } elseif ( 'id=>name' === $_fields ) { + foreach ( $terms as $term ) { + $_terms[ $term->term_id ] = $term->name; + } + } elseif ( 'id=>slug' === $_fields ) { + foreach ( $terms as $term ) { + $_terms[ $term->term_id ] = $term->slug; } - } else { - $term_cache = wp_list_pluck( $term_objects, 'term_id' ); } - wp_cache_add( $cache_key, $term_cache, 'terms' ); - $this->terms = $this->format_terms( $term_objects, $_fields ); + if ( ! empty( $_terms ) ) { + $terms = $_terms; + } + // Hierarchical queries are not limited, so 'offset' and 'number' must be handled now. + if ( $hierarchical && $number && is_array( $terms ) ) { + if ( $offset >= count( $terms ) ) { + $terms = array(); + } else { + $terms = array_slice( $terms, $offset, $number, true ); + } + } + + wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS ); + + if ( 'all' === $_fields || 'all_with_object_id' === $_fields ) { + $terms = $this->populate_terms( $terms ); + } + + $this->terms = $terms; return $this->terms; } /** * Parse and sanitize 'orderby' keys passed to the term query. * - * @since 4.6.0 + * @since WP-4.6.0 + * + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $orderby_raw Alias for the field to order by. * @return string|false Value to used in the ORDER clause. False otherwise. @@ -932,11 +889,11 @@ protected function parse_orderby( $orderby_raw ) { /** * Filters the ORDERBY clause of the terms query. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string $orderby `ORDERBY` clause of the terms query. - * @param array $args An array of term query arguments. - * @param string[] $taxonomies An array of taxonomy names. + * @param string $orderby `ORDERBY` clause of the terms query. + * @param array $args An array of terms query arguments. + * @param array $taxonomies An array of taxonomies. */ $orderby = apply_filters( 'get_terms_orderby', $orderby, $this->query_vars, $this->query_vars['taxonomy'] ); @@ -951,57 +908,10 @@ protected function parse_orderby( $orderby_raw ) { return $orderby; } - /** - * Format response depending on field requested. - * - * @since 6.0.0 - * - * @param WP_Term[] $term_objects Array of term objects. - * @param string $_fields Field to format. - * - * @return WP_Term[]|int[]|string[] Array of terms / strings / ints depending on field requested. - */ - protected function format_terms( $term_objects, $_fields ) { - $_terms = array(); - if ( 'id=>parent' === $_fields ) { - foreach ( $term_objects as $term ) { - $_terms[ $term->term_id ] = $term->parent; - } - } elseif ( 'ids' === $_fields ) { - foreach ( $term_objects as $term ) { - $_terms[] = (int) $term->term_id; - } - } elseif ( 'tt_ids' === $_fields ) { - foreach ( $term_objects as $term ) { - $_terms[] = (int) $term->term_taxonomy_id; - } - } elseif ( 'names' === $_fields ) { - foreach ( $term_objects as $term ) { - $_terms[] = $term->name; - } - } elseif ( 'slugs' === $_fields ) { - foreach ( $term_objects as $term ) { - $_terms[] = $term->slug; - } - } elseif ( 'id=>name' === $_fields ) { - foreach ( $term_objects as $term ) { - $_terms[ $term->term_id ] = $term->name; - } - } elseif ( 'id=>slug' === $_fields ) { - foreach ( $term_objects as $term ) { - $_terms[ $term->term_id ] = $term->slug; - } - } elseif ( 'all' === $_fields || 'all_with_object_id' === $_fields ) { - $_terms = $term_objects; - } - - return $_terms; - } - /** * Generate the ORDER BY clause for an 'orderby' param that is potentially related to a meta query. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $orderby_raw Raw 'orderby' value passed to WP_Term_Query. * @return string ORDER BY clause. @@ -1060,7 +970,7 @@ protected function parse_orderby_meta( $orderby_raw ) { /** * Parse an 'order' query variable and cast it to ASC or DESC as necessary. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param string $order The 'order' query variable. * @return string The sanitized 'order' query variable. @@ -1080,17 +990,17 @@ protected function parse_order( $order ) { /** * Used internally to generate a SQL string related to the 'search' parameter. * - * @since 4.6.0 + * @since WP-4.6.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param string $search Search string. - * @return string Search SQL. + * @param string $string + * @return string */ - protected function get_search_sql( $search ) { + protected function get_search_sql( $string ) { global $wpdb; - $like = '%' . $wpdb->esc_like( $search ) . '%'; + $like = '%' . $wpdb->esc_like( $string ) . '%'; return $wpdb->prepare( '((t.name LIKE %s) OR (t.slug LIKE %s))', $like, $like ); } @@ -1100,67 +1010,25 @@ protected function get_search_sql( $search ) { * * Also discards invalid term objects. * - * @since 4.9.8 + * @since WP-4.9.8 * - * @param Object[]|int[] $terms List of objects or term ids. - * @return WP_Term[] Array of `WP_Term` objects. + * @param array $term_ids Term IDs. + * @return array */ - protected function populate_terms( $terms ) { - $term_objects = array(); - if ( ! is_array( $terms ) ) { - return $term_objects; - } + protected function populate_terms( $term_ids ) { + $terms = array(); - foreach ( $terms as $key => $term_data ) { - if ( is_object( $term_data ) && property_exists( $term_data, 'term_id' ) ) { - $term = get_term( $term_data->term_id ); - if ( property_exists( $term_data, 'object_id' ) ) { - $term->object_id = (int) $term_data->object_id; - } - if ( property_exists( $term_data, 'count' ) ) { - $term->count = (int) $term_data->count; - } - } else { - $term = get_term( $term_data ); - } + if ( ! is_array( $term_ids ) ) { + return $terms; + } + foreach ( $term_ids as $key => $term_id ) { + $term = get_term( $term_id ); if ( $term instanceof WP_Term ) { - $term_objects[ $key ] = $term; + $terms[ $key ] = $term; } } - return $term_objects; - } - - /** - * Generate cache key. - * - * @since 6.2.0 - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $args WP_Term_Query arguments. - * @param string $sql SQL statement. - * - * @return string Cache key. - */ - protected function generate_cache_key( array $args, $sql ) { - global $wpdb; - // $args can be anything. Only use the args defined in defaults to compute the key. - $cache_args = wp_array_slice_assoc( $args, array_keys( $this->query_var_defaults ) ); - - unset( $cache_args['update_term_meta_cache'] ); - - if ( 'count' !== $args['fields'] && 'all_with_object_id' !== $args['fields'] ) { - $cache_args['fields'] = 'all'; - } - $taxonomies = (array) $args['taxonomy']; - - // Replace wpdb placeholder in the SQL statement used by the cache key. - $sql = $wpdb->remove_placeholder_escape( $sql ); - - $key = md5( serialize( $cache_args ) . serialize( $taxonomies ) . $sql ); - $last_changed = wp_cache_get_last_changed( 'terms' ); - return "get_terms:$key:$last_changed"; + return $terms; } } diff --git a/wp-includes/class-wp-term.php b/wp-includes/class-wp-term.php index ddf81f5..f3fb07a 100644 --- a/wp-includes/class-wp-term.php +++ b/wp-includes/class-wp-term.php @@ -4,23 +4,22 @@ * * @package ClassicPress * @subpackage Taxonomy - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to implement the WP_Term object. * - * @since 4.4.0 + * @since WP-4.4.0 * * @property-read object $data Sanitized term data. */ -#[AllowDynamicProperties] final class WP_Term { /** * Term ID. * - * @since 4.4.0 + * @since WP-4.4.0 * @var int */ public $term_id; @@ -28,7 +27,7 @@ final class WP_Term { /** * The term's name. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $name = ''; @@ -36,7 +35,7 @@ final class WP_Term { /** * The term's slug. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $slug = ''; @@ -44,15 +43,15 @@ final class WP_Term { /** * The term's term_group. * - * @since 4.4.0 - * @var int + * @since WP-4.4.0 + * @var string */ public $term_group = ''; /** * Term Taxonomy ID. * - * @since 4.4.0 + * @since WP-4.4.0 * @var int */ public $term_taxonomy_id = 0; @@ -60,7 +59,7 @@ final class WP_Term { /** * The term's taxonomy name. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $taxonomy = ''; @@ -68,7 +67,7 @@ final class WP_Term { /** * The term's description. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $description = ''; @@ -76,7 +75,7 @@ final class WP_Term { /** * ID of a term's parent term. * - * @since 4.4.0 + * @since WP-4.4.0 * @var int */ public $parent = 0; @@ -84,7 +83,7 @@ final class WP_Term { /** * Cached object count for this term. * - * @since 4.4.0 + * @since WP-4.4.0 * @var int */ public $count = 0; @@ -94,7 +93,7 @@ final class WP_Term { * * Does not correspond to a database field. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $filter = 'raw'; @@ -102,9 +101,10 @@ final class WP_Term { /** * Retrieve WP_Term instance. * - * @since 4.4.0 + * @since WP-4.4.0 + * @static * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $term_id Term ID. * @param string $taxonomy Optional. Limit matched terms to those matching `$taxonomy`. Only used for @@ -190,7 +190,7 @@ public static function get_instance( $term_id, $taxonomy = null ) { /** * Constructor. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param WP_Term|object $term Term object. */ @@ -203,9 +203,9 @@ public function __construct( $term ) { /** * Sanitizes term fields, according to the filter type provided. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param string $filter Filter context. Accepts 'edit', 'db', 'display', 'attribute', 'js', 'rss', or 'raw'. + * @param string $filter Filter context. Accepts 'edit', 'db', 'display', 'attribute', 'js', 'raw'. */ public function filter( $filter ) { sanitize_term( $this, $this->taxonomy, $filter ); @@ -214,7 +214,7 @@ public function filter( $filter ) { /** * Converts an object to array. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return array Object as array. */ @@ -225,7 +225,7 @@ public function to_array() { /** * Getter. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $key Property to get. * @return mixed Property value. diff --git a/wp-includes/class-wp-text-diff-renderer-inline.php b/wp-includes/class-wp-text-diff-renderer-inline.php index 1b8cb25..412349b 100644 --- a/wp-includes/class-wp-text-diff-renderer-inline.php +++ b/wp-includes/class-wp-text-diff-renderer-inline.php @@ -4,30 +4,30 @@ * * @package ClassicPress * @subpackage Diff - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Better word splitting than the PEAR package provides. * - * @since 2.6.0 + * @since WP-2.6.0 * @uses Text_Diff_Renderer_inline Extends */ -#[AllowDynamicProperties] class WP_Text_Diff_Renderer_inline extends Text_Diff_Renderer_inline { /** * @ignore - * @since 2.6.0 + * @since WP-2.6.0 * * @param string $string * @param string $newlineEscape * @return string */ - public function _splitOnWords( $string, $newlineEscape = "\n" ) { // phpcs:ignore Universal.NamingConventions.NoReservedKeywordParameterNames.stringFound + public function _splitOnWords( $string, $newlineEscape = "\n" ) { $string = str_replace( "\0", '', $string ); $words = preg_split( '/([^\w])/u', $string, -1, PREG_SPLIT_DELIM_CAPTURE ); $words = str_replace( "\n", $newlineEscape, $words ); return $words; } + } diff --git a/wp-includes/class-wp-text-diff-renderer-table.php b/wp-includes/class-wp-text-diff-renderer-table.php index d715bce..c660810 100644 --- a/wp-includes/class-wp-text-diff-renderer-table.php +++ b/wp-includes/class-wp-text-diff-renderer-table.php @@ -4,29 +4,28 @@ * * @package ClassicPress * @subpackage Diff - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Table renderer to display the diff lines. * - * @since 2.6.0 + * @since WP-2.6.0 * @uses Text_Diff_Renderer Extends */ -#[AllowDynamicProperties] class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer { /** * @see Text_Diff_Renderer::_leading_context_lines * @var int - * @since 2.6.0 + * @since WP-2.6.0 */ public $_leading_context_lines = 10000; /** * @see Text_Diff_Renderer::_trailing_context_lines * @var int - * @since 2.6.0 + * @since WP-2.6.0 */ public $_trailing_context_lines = 10000; @@ -34,7 +33,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer { * Threshold for when a diff should be saved or omitted. * * @var float - * @since 2.6.0 + * @since WP-2.6.0 */ protected $_diff_threshold = 0.6; @@ -42,7 +41,7 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer { * Inline display helper object name. * * @var string - * @since 2.6.0 + * @since WP-2.6.0 */ protected $inline_diff_renderer = 'WP_Text_Diff_Renderer_inline'; @@ -50,34 +49,18 @@ class WP_Text_Diff_Renderer_Table extends Text_Diff_Renderer { * Should we show the split view or not * * @var string - * @since 3.6.0 + * @since WP-3.6.0 */ protected $_show_split_view = true; protected $compat_fields = array( '_show_split_view', 'inline_diff_renderer', '_diff_threshold' ); - /** - * Caches the output of count_chars() in compute_string_distance() - * - * @var array - * @since 5.0.0 - */ - protected $count_cache = array(); - - /** - * Caches the difference calculation in compute_string_distance() - * - * @var array - * @since 5.0.0 - */ - protected $difference_cache = array(); - /** * Constructor - Call parent constructor with params array. * * This will set class properties based on the key value pairs in the array. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param array $params */ @@ -101,7 +84,7 @@ public function _startBlock( $header ) { /** * @ignore * - * @param array $lines + * @param array $lines * @param string $prefix */ public function _lines( $lines, $prefix = ' ' ) { @@ -114,10 +97,8 @@ public function _lines( $lines, $prefix = ' ' ) { * @return string */ public function addedLine( $line ) { - return "<td class='diff-addedline'><span aria-hidden='true' class='dashicons dashicons-plus'></span><span class='screen-reader-text'>" . - /* translators: Hidden accessibility text. */ - __( 'Added:' ) . - " </span>{$line}</td>"; + return "<td class='diff-addedline'>{$line}</td>"; + } /** @@ -127,10 +108,7 @@ public function addedLine( $line ) { * @return string */ public function deletedLine( $line ) { - return "<td class='diff-deletedline'><span aria-hidden='true' class='dashicons dashicons-minus'></span><span class='screen-reader-text'>" . - /* translators: Hidden accessibility text. */ - __( 'Deleted:' ) . - " </span>{$line}</td>"; + return "<td class='diff-deletedline'>{$line}</td>"; } /** @@ -140,10 +118,7 @@ public function deletedLine( $line ) { * @return string */ public function contextLine( $line ) { - return "<td class='diff-context'><span class='screen-reader-text'>" . - /* translators: Hidden accessibility text. */ - __( 'Unchanged:' ) . - " </span>{$line}</td>"; + return "<td class='diff-context'>{$line}</td>"; } /** @@ -159,7 +134,7 @@ public function emptyLine() { * @ignore * * @param array $lines - * @param bool $encode + * @param bool $encode * @return string */ public function _added( $lines, $encode = true ) { @@ -175,17 +150,17 @@ public function _added( $lines, $encode = true ) { * htmlspecialchars. Use this filter to remove or change the processing. Passes a context * indicating if the line is added, deleted or unchanged. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @param string $processed_line The processed diffed line. - * @param string $line The unprocessed diffed line. - * @param string $context The line context. Values are 'added', 'deleted' or 'unchanged'. + * @param String $processed_line The processed diffed line. + * @param String $line The unprocessed diffed line. + * @param string null The line context. Values are 'added', 'deleted' or 'unchanged'. */ $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'added' ); } if ( $this->_show_split_view ) { - $r .= '<tr>' . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n"; + $r .= '<tr>' . $this->emptyLine() . $this->emptyLine() . $this->addedLine( $line ) . "</tr>\n"; } else { $r .= '<tr>' . $this->addedLine( $line ) . "</tr>\n"; } @@ -197,7 +172,7 @@ public function _added( $lines, $encode = true ) { * @ignore * * @param array $lines - * @param bool $encode + * @param bool $encode * @return string */ public function _deleted( $lines, $encode = true ) { @@ -210,7 +185,7 @@ public function _deleted( $lines, $encode = true ) { $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'deleted' ); } if ( $this->_show_split_view ) { - $r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . "</tr>\n"; + $r .= '<tr>' . $this->deletedLine( $line ) . $this->emptyLine() . $this->emptyLine() . "</tr>\n"; } else { $r .= '<tr>' . $this->deletedLine( $line ) . "</tr>\n"; } @@ -222,7 +197,7 @@ public function _deleted( $lines, $encode = true ) { * @ignore * * @param array $lines - * @param bool $encode + * @param bool $encode * @return string */ public function _context( $lines, $encode = true ) { @@ -235,7 +210,7 @@ public function _context( $lines, $encode = true ) { $line = apply_filters( 'process_text_diff_html', $processed_line, $line, 'unchanged' ); } if ( $this->_show_split_view ) { - $r .= '<tr>' . $this->contextLine( $line ) . $this->contextLine( $line ) . "</tr>\n"; + $r .= '<tr>' . $this->contextLine( $line ) . $this->emptyLine() . $this->contextLine( $line ) . "</tr>\n"; } else { $r .= '<tr>' . $this->contextLine( $line ) . "</tr>\n"; } @@ -249,43 +224,41 @@ public function _context( $lines, $encode = true ) { * (TRAC style) sometimes these lines can actually be deleted or added rows. * We do additional processing to figure that out * - * @since 2.6.0 + * @since WP-2.6.0 * * @param array $orig * @param array $final * @return string */ - public function _changed( $orig, $final ) { // phpcs:ignore Universal.NamingConventions.NoReservedKeywordParameterNames.finalFound + public function _changed( $orig, $final ) { $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. - * - match is numeric: an index in other column. - * - 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 index of the $orig or $final array. - * - row < 0: a blank row for that column. - */ + // 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 + // match is numeric: an index in other column + // 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 ); - // These will hold the word changes as determined by an inline diff. + // These will hold the word changes as determined by an inline diff $orig_diffs = array(); $final_diffs = array(); - // Compute word diffs for each matched pair using the inline diff. + // Compute word diffs for each matched pair using the inline diff foreach ( $orig_matches as $o => $f ) { if ( is_numeric( $o ) && is_numeric( $f ) ) { $text_diff = new Text_Diff( 'auto', array( array( $orig[ $o ] ), array( $final[ $f ] ) ) ); - $renderer = new $this->inline_diff_renderer(); + $renderer = new $this->inline_diff_renderer; $diff = $renderer->render( $text_diff ); - // If they're too different, don't include any <ins> or <del>'s. + // If they're too different, don't include any <ins> or <dels> if ( preg_match_all( '!(<ins>.*?</ins>|<del>.*?</del>)!', $diff, $diff_matches ) ) { - // Length of all text between <ins> or <del>. - $stripped_matches = strlen( strip_tags( implode( ' ', $diff_matches[0] ) ) ); - // Since we count length of text between <ins> or <del> (instead of picking just one), - // we double the length of chars not in those tags. + // length of all text between <ins> or <del> + $stripped_matches = strlen( strip_tags( join( ' ', $diff_matches[0] ) ) ); + // since we count lengith of text between <ins> or <del> (instead of picking just one), + // we double the length of chars not in those tags. $stripped_diff = strlen( strip_tags( $diff ) ) * 2 - $stripped_matches; $diff_ratio = $stripped_matches / $stripped_diff; if ( $diff_ratio > $this->_diff_threshold ) { @@ -293,7 +266,7 @@ public function _changed( $orig, $final ) { // phpcs:ignore Universal.NamingConv } } - // Un-inline the diffs by removing <del> or <ins>. + // Un-inline the diffs by removing del or ins $orig_diffs[ $o ] = preg_replace( '|<ins>.*?</ins>|', '', $diff ); $final_diffs[ $f ] = preg_replace( '|<del>.*?</del>|', '', $diff ); } @@ -328,7 +301,7 @@ public function _changed( $orig, $final ) { // phpcs:ignore Universal.NamingConv $r .= $this->_deleted( array( $orig_line ), false ); } else { // A true changed row. if ( $this->_show_split_view ) { - $r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->addedLine( $final_line ) . "</tr>\n"; + $r .= '<tr>' . $this->deletedLine( $orig_line ) . $this->emptyLine() . $this->addedLine( $final_line ) . "</tr>\n"; } else { $r .= '<tr>' . $this->deletedLine( $orig_line ) . '</tr><tr>' . $this->addedLine( $final_line ) . "</tr>\n"; } @@ -341,32 +314,32 @@ public function _changed( $orig, $final ) { // phpcs:ignore Universal.NamingConv /** * Takes changed blocks and matches which rows in orig turned into which rows in final. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param array $orig Lines of the original version of the text. * @param array $final Lines of the final version of the text. * @return array { - * Array containing results of comparing the original text to the final text. - * - * @type array $orig_matches Associative array of original matches. Index == row - * number of `$orig`, value == corresponding row number - * of that same line in `$final` or 'x' if there is no - * corresponding row (indicating it is a deleted line). - * @type array $final_matches Associative array of final matches. Index == row - * number of `$final`, value == corresponding row number - * of that same line in `$orig` or 'x' if there is no - * corresponding row (indicating it is a new line). - * @type array $orig_rows Associative array of interleaved rows of `$orig` with - * blanks to keep matches aligned with side-by-side diff - * of `$final`. A value >= 0 corresponds to index of `$orig`. - * Value < 0 indicates a blank row. - * @type array $final_rows Associative array of interleaved rows of `$final` with - * blanks to keep matches aligned with side-by-side diff - * of `$orig`. A value >= 0 corresponds to index of `$final`. - * Value < 0 indicates a blank row. + * Array containing results of comparing the original text to the final text. + * + * @type array $orig_matches Associative array of original matches. Index == row + * number of `$orig`, value == corresponding row number + * of that same line in `$final` or 'x' if there is no + * corresponding row (indicating it is a deleted line). + * @type array $final_matches Associative array of final matches. Index == row + * number of `$final`, value == corresponding row number + * of that same line in `$orig` or 'x' if there is no + * corresponding row (indicating it is a new line). + * @type array $orig_rows Associative array of interleaved rows of `$orig` with + * blanks to keep matches aligned with side-by-side diff + * of `$final`. A value >= 0 corresponds to index of `$orig`. + * Value < 0 indicates a blank row. + * @type array $final_rows Associative array of interleaved rows of `$final` with + * blanks to keep matches aligned with side-by-side diff + * of `$orig`. A value >= 0 corresponds to index of `$final`. + * Value < 0 indicates a blank row. * } */ - public function interleave_changed_lines( $orig, $final ) { // phpcs:ignore Universal.NamingConventions.NoReservedKeywordParameterNames.finalFound + public function interleave_changed_lines( $orig, $final ) { // Contains all pairwise string comparisons. Keys are such that this need only be a one dimensional array. $matches = array(); @@ -385,35 +358,35 @@ public function interleave_changed_lines( $orig, $final ) { // phpcs:ignore Univ $o = (int) $o; $f = (int) $f; - // Already have better matches for these guys. + // Already have better matches for these guys 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; continue; } - // Best match of this final is already taken? Must mean this final is a new row. + // Best match of this final is already taken? Must mean this final is a new row. if ( isset( $orig_matches[ $o ] ) ) { $final_matches[ $f ] = 'x'; } elseif ( isset( $final_matches[ $f ] ) ) { - // Best match of this orig is already taken? Must mean this orig is a deleted row. + // Best match of this orig is already taken? Must mean this orig is a deleted row. $orig_matches[ $o ] = 'x'; } } - // We read the text in this order. + // We read the text in this order ksort( $orig_matches ); ksort( $final_matches ); // Stores rows and blanks for each column. $orig_rows = array_keys( $orig_matches ); $orig_rows_copy = $orig_rows; - $final_rows = array_keys( $final_matches ); + $final_rows = array_keys( $final_matches ); // Interleaves rows with blanks to keep matches aligned. // We may end up with some extraneous blank rows, but we'll just ignore them later. @@ -424,15 +397,19 @@ public function interleave_changed_lines( $orig, $final ) { // phpcs:ignore Univ 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. - $diff_array = range( -1, $final_pos - $orig_pos ); - array_splice( $final_rows, $orig_pos, 0, $diff_array ); + $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. - $diff_array = range( -1, $orig_pos - $final_pos ); - array_splice( $orig_rows, $orig_pos, 0, $diff_array ); + $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. + // 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 ) { while ( $diff_count < 0 ) { @@ -451,35 +428,19 @@ public function interleave_changed_lines( $orig, $final ) { // phpcs:ignore Univ /** * Computes a number that is intended to reflect the "distance" between two strings. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param string $string1 * @param string $string2 * @return int */ public function compute_string_distance( $string1, $string2 ) { - // Use an md5 hash of the strings for a count cache, as it's fast to generate, and collisions aren't a concern. - $count_key1 = md5( $string1 ); - $count_key2 = md5( $string2 ); - - // Cache vectors containing character frequency for all chars in each string. - if ( ! isset( $this->count_cache[ $count_key1 ] ) ) { - $this->count_cache[ $count_key1 ] = count_chars( $string1 ); - } - if ( ! isset( $this->count_cache[ $count_key2 ] ) ) { - $this->count_cache[ $count_key2 ] = count_chars( $string2 ); - } - - $chars1 = $this->count_cache[ $count_key1 ]; - $chars2 = $this->count_cache[ $count_key2 ]; - - $difference_key = md5( implode( ',', $chars1 ) . ':' . implode( ',', $chars2 ) ); - if ( ! isset( $this->difference_cache[ $difference_key ] ) ) { - // L1-norm of difference vector. - $this->difference_cache[ $difference_key ] = array_sum( array_map( array( $this, 'difference' ), $chars1, $chars2 ) ); - } + // Vectors containing character frequency for all chars in each string + $chars1 = count_chars( $string1 ); + $chars2 = count_chars( $string2 ); - $difference = $this->difference_cache[ $difference_key ]; + // 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. if ( ! $string1 ) { @@ -492,7 +453,7 @@ public function compute_string_distance( $string1, $string2 ) { /** * @ignore - * @since 2.6.0 + * @since WP-2.6.0 * * @param int $a * @param int $b @@ -505,7 +466,7 @@ public function difference( $a, $b ) { /** * Make private properties readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to get. * @return mixed Property. @@ -519,7 +480,7 @@ public function __get( $name ) { /** * Make private properties settable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to check if set. * @param mixed $value Property value. @@ -534,7 +495,7 @@ public function __set( $name, $value ) { /** * Make private properties checkable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to check if set. * @return bool Whether the property is set. @@ -548,7 +509,7 @@ public function __isset( $name ) { /** * Make private properties un-settable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to unset. */ diff --git a/wp-includes/class-wp-textdomain-registry.php b/wp-includes/class-wp-textdomain-registry.php deleted file mode 100644 index c11deaf..0000000 --- a/wp-includes/class-wp-textdomain-registry.php +++ /dev/null @@ -1,233 +0,0 @@ -<?php -/** - * Locale API: WP_Textdomain_Registry class. - * - * This file uses rtrim() instead of untrailingslashit() and trailingslashit() - * to avoid formatting.php dependency. - * - * @package ClassicPress - * @subpackage i18n - * @since 6.1.0 - */ - -/** - * Core class used for registering text domains. - * - * @since 6.1.0 - */ -#[AllowDynamicProperties] -class WP_Textdomain_Registry { - /** - * List of domains and all their language directory paths for each locale. - * - * @since 6.1.0 - * - * @var array - */ - protected $all = array(); - - /** - * List of domains and their language directory path for the current (most recent) locale. - * - * @since 6.1.0 - * - * @var array - */ - protected $current = array(); - - /** - * List of domains and their custom language directory paths. - * - * @see load_plugin_textdomain() - * @see load_theme_textdomain() - * - * @since 6.1.0 - * - * @var array - */ - protected $custom_paths = array(); - - /** - * Holds a cached list of available .mo files to improve performance. - * - * @since 6.1.0 - * - * @var array - */ - protected $cached_mo_files = array(); - - /** - * Holds a cached list of domains with translations to improve performance. - * - * @since 6.2.0 - * - * @var string[] - */ - protected $domains_with_translations = array(); - - /** - * Returns the languages directory path for a specific domain and locale. - * - * @since 6.1.0 - * - * @param string $domain Text domain. - * @param string $locale Locale. - * - * @return string|false MO file path or false if there is none available. - */ - public function get( $domain, $locale ) { - if ( isset( $this->all[ $domain ][ $locale ] ) ) { - return $this->all[ $domain ][ $locale ]; - } - - return $this->get_path_from_lang_dir( $domain, $locale ); - } - - /** - * Determines whether any MO file paths are available for the domain. - * - * This is the case if a path has been set for the current locale, - * or if there is no information stored yet, in which case - * {@see _load_textdomain_just_in_time()} will fetch the information first. - * - * @since 6.1.0 - * - * @param string $domain Text domain. - * @return bool Whether any MO file paths are available for the domain. - */ - public function has( $domain ) { - return ( - ! empty( $this->current[ $domain ] ) || - empty( $this->all[ $domain ] ) || - in_array( $domain, $this->domains_with_translations, true ) - ); - } - - /** - * Sets the language directory path for a specific domain and locale. - * - * Also sets the 'current' property for direct access - * to the path for the current (most recent) locale. - * - * @since 6.1.0 - * - * @param string $domain Text domain. - * @param string $locale Locale. - * @param string|false $path Language directory path or false if there is none available. - */ - public function set( $domain, $locale, $path ) { - $this->all[ $domain ][ $locale ] = $path ? rtrim( $path, '/' ) . '/' : false; - $this->current[ $domain ] = $this->all[ $domain ][ $locale ]; - } - - /** - * Sets the custom path to the plugin's/theme's languages directory. - * - * Used by {@see load_plugin_textdomain()} and {@see load_theme_textdomain()}. - * - * @since 6.1.0 - * - * @param string $domain Text domain. - * @param string $path Language directory path. - */ - public function set_custom_path( $domain, $path ) { - $this->custom_paths[ $domain ] = rtrim( $path, '/' ); - } - - /** - * Returns possible language directory paths for a given text domain. - * - * @since 6.2.0 - * - * @param string $domain Text domain. - * @return string[] Array of language directory paths. - */ - private function get_paths_for_domain( $domain ) { - $locations = array( - WP_LANG_DIR . '/plugins', - WP_LANG_DIR . '/themes', - ); - - if ( isset( $this->custom_paths[ $domain ] ) ) { - $locations[] = $this->custom_paths[ $domain ]; - } - - return $locations; - } - - /** - * Gets the path to the language directory for the current locale. - * - * Checks the plugins and themes language directories as well as any - * custom directory set via {@see load_plugin_textdomain()} or {@see load_theme_textdomain()}. - * - * @since 6.1.0 - * - * @see _get_path_to_translation_from_lang_dir() - * - * @param string $domain Text domain. - * @param string $locale Locale. - * @return string|false Language directory path or false if there is none available. - */ - private function get_path_from_lang_dir( $domain, $locale ) { - $locations = $this->get_paths_for_domain( $domain ); - - $found_location = false; - - foreach ( $locations as $location ) { - if ( ! isset( $this->cached_mo_files[ $location ] ) ) { - $this->set_cached_mo_files( $location ); - } - - $path = "$location/$domain-$locale.mo"; - - foreach ( $this->cached_mo_files[ $location ] as $mo_path ) { - if ( - ! in_array( $domain, $this->domains_with_translations, true ) && - str_starts_with( str_replace( "$location/", '', $mo_path ), "$domain-" ) - ) { - $this->domains_with_translations[] = $domain; - } - - if ( $mo_path === $path ) { - $found_location = rtrim( $location, '/' ) . '/'; - } - } - } - - if ( $found_location ) { - $this->set( $domain, $locale, $found_location ); - - return $found_location; - } - - // If no path is found for the given locale and a custom path has been set - // using load_plugin_textdomain/load_theme_textdomain, use that one. - if ( 'en_US' !== $locale && isset( $this->custom_paths[ $domain ] ) ) { - $fallback_location = rtrim( $this->custom_paths[ $domain ], '/' ) . '/'; - $this->set( $domain, $locale, $fallback_location ); - return $fallback_location; - } - - $this->set( $domain, $locale, false ); - - return false; - } - - /** - * Reads and caches all available MO files from a given directory. - * - * @since 6.1.0 - * - * @param string $path Language directory path. - */ - private function set_cached_mo_files( $path ) { - $this->cached_mo_files[ $path ] = array(); - - $mo_files = glob( $path . '/*.mo' ); - - if ( $mo_files ) { - $this->cached_mo_files[ $path ] = $mo_files; - } - } -} diff --git a/wp-includes/class-wp-theme.php b/wp-includes/class-wp-theme.php index 9088a8f..c4939d1 100644 --- a/wp-includes/class-wp-theme.php +++ b/wp-includes/class-wp-theme.php @@ -4,15 +4,14 @@ * * @package ClassicPress * @subpackage Theme - * @since 3.4.0 + * @since WP-3.4.0 */ -#[AllowDynamicProperties] final class WP_Theme implements ArrayAccess { /** * Whether the theme has been marked as updateable. * - * @since 4.4.0 + * @since WP-4.4.0 * @var bool * * @see WP_MS_Themes_List_Table @@ -22,11 +21,8 @@ final class WP_Theme implements ArrayAccess { /** * Headers for style.css files. * - * @since 3.4.0 - * @since 5.4.0 Added `Requires at least` and `Requires PHP` headers. - * @since 6.1.0 Added `Update URI` header. - * @since CP-2.0.0 Added support for `Requires CP` header and fallback for `Update URI`. - * @var string[] + * @static + * @var array */ private static $file_headers = array( 'Name' => 'Theme Name', @@ -40,10 +36,6 @@ final class WP_Theme implements ArrayAccess { 'Tags' => 'Tags', 'TextDomain' => 'Text Domain', 'DomainPath' => 'Domain Path', - 'RequiresWP' => 'Requires at least', - 'RequiresCP' => 'Requires CP', - 'RequiresPHP' => 'Requires PHP', - 'UpdateURI' => 'Update URI', ); /** @@ -68,8 +60,8 @@ final class WP_Theme implements ArrayAccess { /** * Renamed theme tags. * - * @since 3.8.0 - * @var string[] + * @static + * @var array */ private static $tag_map = array( 'fixed-width' => 'fixed-layout', @@ -79,7 +71,6 @@ final class WP_Theme implements ArrayAccess { /** * Absolute path to the theme root, usually wp-content/themes * - * @since 3.4.0 * @var string */ private $theme_root; @@ -87,7 +78,6 @@ final class WP_Theme implements ArrayAccess { /** * Header data from the theme's style.css file. * - * @since 3.4.0 * @var array */ private $headers = array(); @@ -95,7 +85,6 @@ final class WP_Theme implements ArrayAccess { /** * Header data from the theme's style.css file after being sanitized. * - * @since 3.4.0 * @var array */ private $headers_sanitized; @@ -105,7 +94,6 @@ final class WP_Theme implements ArrayAccess { * * Cached due to sorting functions running over the translated name. * - * @since 3.4.0 * @var string */ private $name_translated; @@ -113,7 +101,6 @@ final class WP_Theme implements ArrayAccess { /** * Errors encountered when initializing the theme. * - * @since 3.4.0 * @var WP_Error */ private $errors; @@ -124,7 +111,6 @@ final class WP_Theme implements ArrayAccess { * In the case of a child theme, this is directory name of the child theme. * Otherwise, 'stylesheet' is the same as 'template'. * - * @since 3.4.0 * @var string */ private $stylesheet; @@ -135,7 +121,6 @@ final class WP_Theme implements ArrayAccess { * In the case of a child theme, this is the directory name of the parent theme. * Otherwise, 'template' is the same as 'stylesheet'. * - * @since 3.4.0 * @var string */ private $template; @@ -143,7 +128,6 @@ final class WP_Theme implements ArrayAccess { /** * A reference to the parent theme, in the case of a child theme. * - * @since 3.4.0 * @var WP_Theme */ private $parent; @@ -151,7 +135,6 @@ final class WP_Theme implements ArrayAccess { /** * URL to the theme root, usually an absolute URL to wp-content/themes * - * @since 3.4.0 * @var string */ private $theme_root_uri; @@ -159,7 +142,6 @@ final class WP_Theme implements ArrayAccess { /** * Flag for whether the theme's textdomain is loaded. * - * @since 3.4.0 * @var bool */ private $textdomain_loaded; @@ -167,7 +149,6 @@ final class WP_Theme implements ArrayAccess { /** * Stores an md5 hash of the theme root, to function as the cache key. * - * @since 3.4.0 * @var string */ private $cache_hash; @@ -177,7 +158,7 @@ final class WP_Theme implements ArrayAccess { * * Default is false. Can be set with the {@see 'wp_cache_themes_persistently'} filter. * - * @since 3.4.0 + * @static * @var bool */ private static $persistently_cache; @@ -187,7 +168,7 @@ final class WP_Theme implements ArrayAccess { * * By default the bucket is not cached, so this value is useless. * - * @since 3.4.0 + * @static * @var bool */ private static $cache_expiration = 1800; @@ -195,13 +176,13 @@ final class WP_Theme implements ArrayAccess { /** * Constructor for WP_Theme. * - * @since 3.4.0 + * @since WP-3.4.0 * * @global array $wp_theme_directories * - * @param string $theme_dir Directory of the theme within the theme_root. - * @param string $theme_root Theme root. - * @param WP_Theme|null $_child If this theme is a parent theme, the child may be passed for validation purposes. + * @param string $theme_dir Directory of the theme within the theme_root. + * @param string $theme_root Theme root. + * @param WP_Error|void $_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; @@ -220,9 +201,6 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { } } - // Handle a numeric theme directory as a string. - $theme_dir = (string) $theme_dir; - $this->theme_root = $theme_root; $this->stylesheet = $theme_dir; @@ -254,14 +232,7 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { } 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', - sprintf( - /* translators: %s: Theme directory name. */ - __( 'The theme directory "%s" does not exist.' ), - esc_html( $this->stylesheet ) - ) - ); + $this->errors = new WP_Error( 'theme_not_found', sprintf( __( 'The theme directory "%s" does not exist.' ), esc_html( $this->stylesheet ) ) ); } else { $this->errors = new WP_Error( 'theme_no_stylesheet', __( 'Stylesheet is missing.' ) ); } @@ -276,7 +247,7 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { ) ); if ( ! file_exists( $this->theme_root ) ) { // Don't cache this one. - $this->errors->add( 'theme_root_missing', __( '<strong>Error:</strong> The themes directory is either empty or does not exist. Please check your installation.' ) ); + $this->errors->add( 'theme_root_missing', __( 'ERROR: The themes directory is either empty or doesn’t exist. Please check your installation.' ) ); } return; } elseif ( ! is_readable( $this->theme_root . '/' . $theme_file ) ) { @@ -295,10 +266,6 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { return; } else { $this->headers = get_file_data( $this->theme_root . '/' . $theme_file, self::$file_headers, 'theme' ); - // If no Update URI is defined and Requires CP is set fall back to ClassicPress directory URL. - if ( ! $this->headers['UpdateURI'] && filter_var( $this->headers['RequiresCP'], FILTER_VALIDATE_FLOAT ) !== false ) { - $this->headers['UpdateURI'] = 'https://directory.classicpress.net/wp-json/wp/v2/themes?byslug=' . preg_replace( '/[^a-zA-Z0-9_\-]/', '', $this->stylesheet ); - } // Default themes always trump their pretenders. // Properly identify default themes that are inside a directory within wp-content/themes. $default_theme_slug = array_search( $this->headers['Name'], self::$default_themes, true ); @@ -310,14 +277,8 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { } if ( ! $this->template && $this->stylesheet === $this->headers['Template'] ) { - $this->errors = new WP_Error( - 'theme_child_invalid', - sprintf( - /* translators: %s: Template. */ - __( 'The theme defines itself as its parent theme. Please check the %s header.' ), - '<code>Template</code>' - ) - ); + /* translators: %s: Template */ + $this->errors = new WP_Error( 'theme_child_invalid', sprintf( __( 'The theme defines itself as its parent theme. Please check the %s header.' ), '<code>Template</code>' ) ); $this->cache_add( 'theme', array( @@ -339,12 +300,10 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { $this->template = $this->stylesheet; if ( ! file_exists( $this->theme_root . '/' . $this->stylesheet . '/index.php' ) ) { $error_message = sprintf( - /* translators: 1: templates/index.html, 2: index.php, 3: Documentation URL, 4: Template, 5: style.css */ - __( 'Template is missing. Standalone themes need to have a %1$s or %2$s template file. <a href="%3$s">Child themes</a> need to have a %4$s header in the %5$s stylesheet.' ), - '<code>templates/index.html</code>', + /* translators: 1: index.php, 2: Codex URL, 3: style.css */ + __( 'Template is missing. Standalone themes need to have a %1$s template file. <a href="%2$s">Child themes</a> need to have a Template header in the %3$s stylesheet.' ), '<code>index.php</code>', - __( 'https://developer.wordpress.org/themes/advanced-topics/child-themes/' ), - '<code>Template</code>', + __( 'https://codex.wordpress.org/Child_Themes' ), '<code>style.css</code>' ); $this->errors = new WP_Error( 'theme_no_index', $error_message ); @@ -365,7 +324,7 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { 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 ); + $parent_dir = dirname( $this->stylesheet ); $directories = search_theme_directories(); if ( '.' !== $parent_dir && file_exists( $this->theme_root . '/' . $parent_dir . '/' . $this->template . '/index.php' ) ) { @@ -376,14 +335,7 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { $theme_root_template = $directories[ $this->template ]['theme_root']; } else { // Parent theme is missing. - $this->errors = new WP_Error( - 'theme_no_parent', - sprintf( - /* translators: %s: Theme directory name. */ - __( 'The parent theme is missing. Please install the "%s" parent theme.' ), - esc_html( $this->template ) - ) - ); + $this->errors = new WP_Error( 'theme_no_parent', sprintf( __( 'The parent theme is missing. Please install the "%s" parent theme.' ), esc_html( $this->template ) ) ); $this->cache_add( 'theme', array( @@ -403,14 +355,7 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { // If we are a parent, then there is a problem. Only two generations allowed! Cancel things out. if ( $_child instanceof WP_Theme && $_child->template == $this->stylesheet ) { $_child->parent = null; - $_child->errors = new WP_Error( - 'theme_parent_invalid', - sprintf( - /* translators: %s: Theme directory name. */ - __( 'The "%s" theme is not a valid parent theme.' ), - esc_html( $_child->template ) - ) - ); + $_child->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $_child->template ) ) ); $_child->cache_add( 'theme', array( @@ -422,14 +367,7 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { ); // 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( - /* translators: %s: Theme directory name. */ - __( 'The "%s" theme is not a valid parent theme.' ), - esc_html( $this->template ) - ) - ); + $this->errors = new WP_Error( 'theme_parent_invalid', sprintf( __( 'The "%s" theme is not a valid parent theme.' ), esc_html( $this->template ) ) ); $this->cache_add( 'theme', array( @@ -446,10 +384,6 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { $this->parent = new WP_Theme( $this->template, isset( $theme_root_template ) ? $theme_root_template : $this->theme_root, $this ); } - if ( wp_paused_themes()->get( $this->stylesheet ) && ( ! is_wp_error( $this->errors ) || ! isset( $this->errors->errors['theme_paused'] ) ) ) { - $this->errors = new WP_Error( 'theme_paused', __( 'This theme failed to load properly and was paused within the admin backend.' ) ); - } - // We're good. If we didn't retrieve from cache, set it. if ( ! is_array( $cache ) ) { $cache = array( @@ -469,7 +403,7 @@ public function __construct( $theme_dir, $theme_root, $_child = null ) { /** * When converting the object to a string, the theme name is returned. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Theme name, ready for display (translated) */ @@ -480,7 +414,9 @@ public function __toString() { /** * __isset() magic method for properties formerly returned by current_theme_info() * - * @since 3.4.0 + * @staticvar array $properties + * + * @since WP-3.4.0 * * @param string $offset Property to check if set. * @return bool Whether the given property is set. @@ -509,7 +445,7 @@ public function __isset( $offset ) { /** * __get() magic method for properties formerly returned by current_theme_info() * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $offset Property to get. * @return mixed Property value. @@ -553,33 +489,32 @@ public function __get( $offset ) { /** * Method to implement ArrayAccess for keys formerly returned by get_themes() * - * @since 3.4.0 + * @since WP-3.4.0 * * @param mixed $offset * @param mixed $value */ - #[ReturnTypeWillChange] public function offsetSet( $offset, $value ) {} /** * Method to implement ArrayAccess for keys formerly returned by get_themes() * - * @since 3.4.0 + * @since WP-3.4.0 * * @param mixed $offset */ - #[ReturnTypeWillChange] public function offsetUnset( $offset ) {} /** * Method to implement ArrayAccess for keys formerly returned by get_themes() * - * @since 3.4.0 + * @staticvar array $keys + * + * @since WP-3.4.0 * * @param mixed $offset * @return bool */ - #[ReturnTypeWillChange] public function offsetExists( $offset ) { static $keys = array( 'Name', @@ -616,12 +551,11 @@ public function offsetExists( $offset ) { * and care should be taken to use `$theme::display( 'Name' )` to get a properly * translated header. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param mixed $offset * @return mixed */ - #[ReturnTypeWillChange] public function offsetGet( $offset ) { switch ( $offset ) { case 'Name': @@ -672,7 +606,7 @@ public function offsetGet( $offset ) { /** * Returns errors property. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return WP_Error|false WP_Error if there are errors, or false. */ @@ -681,12 +615,12 @@ public function errors() { } /** - * Determines whether the theme exists. + * 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 + * @since WP-3.4.0 * * @return bool Whether the theme exists. */ @@ -697,9 +631,9 @@ public function exists() { /** * Returns reference to the parent theme. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @return WP_Theme|false Parent theme, or false if the active theme is not a child theme. + * @return WP_Theme|false Parent theme, or false if the current theme is not a child theme. */ public function parent() { return isset( $this->parent ) ? $this->parent : false; @@ -732,10 +666,10 @@ public function __wakeup() { * * Cache entries keyed by the theme and the type of data. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param string $key Type of data to store (theme, screenshot, headers, post_templates) - * @param array|string $data Data to store + * @param string $key Type of data to store (theme, screenshot, headers, post_templates) + * @param string $data Data to store * @return bool Return value from wp_cache_add() */ private function cache_add( $key, $data ) { @@ -747,7 +681,7 @@ private function cache_add( $key, $data ) { * * Cache entries are keyed by the theme and the type of data. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $key Type of data to retrieve (theme, screenshot, headers, post_templates) * @return mixed Retrieved data @@ -759,7 +693,7 @@ private function cache_get( $key ) { /** * Clears the cache for the theme. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function cache_delete() { foreach ( array( 'theme', 'screenshot', 'headers', 'post_templates' ) as $key ) { @@ -772,25 +706,25 @@ public function cache_delete() { $this->errors = null; $this->headers_sanitized = null; $this->name_translated = null; - $this->headers = array(); + $this->headers = array(); $this->__construct( $this->stylesheet, $this->theme_root ); } /** - * Gets a raw, unformatted theme header. + * 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 + * get_template() takes into account where ClassicPress actually located the theme and * whether it is actually valid. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags. - * @return string|array|false String or array (for Tags header) on success, false on failure. + * @return string|false String on success, false on failure. */ public function get( $header ) { if ( ! isset( $this->headers[ $header ] ) ) { @@ -824,13 +758,12 @@ public function get( $header ) { /** * Gets a theme header, formatted and translated for display. * - * @since 3.4.0 + * @since WP-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|array|false Processed header. An array for Tags if `$markup` is false, string otherwise. - * False on failure. + * @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|false Processed header, false on failure. */ public function display( $header, $markup = true, $translate = true ) { $value = $this->get( $header ); @@ -854,19 +787,16 @@ public function display( $header, $markup = true, $translate = true ) { } /** - * Sanitizes a theme header. + * Sanitize a theme header. * - * @since 3.4.0 - * @since 5.4.0 Added support for `Requires at least` and `Requires PHP` headers. - * @since 6.1.0 Added support for `Update URI` header. - * @since CP-2.0.0 Added support for `Requires CP` header. + * @since WP-3.4.0 * + * @staticvar array $header_tags + * @staticvar array $header_tags_with_a * - * @param string $header Theme header. Accepts 'Name', 'Description', 'Author', 'Version', - * 'ThemeURI', 'AuthorURI', 'Status', 'Tags', 'RequiresWP', - * 'RequiresCP', 'RequiresPHP', 'UpdateURI'. - * @param string $value Value to sanitize. - * @return string|array An array for Tags header, string otherwise. + * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags. + * @param string $value Value to sanitize. + * @return mixed */ private function sanitize_header( $header, $value ) { switch ( $header ) { @@ -884,8 +814,7 @@ private function sanitize_header( $header, $value ) { 'em' => true, 'strong' => true, ); - - $value = wp_kses( $value, $header_tags ); + $value = wp_kses( $value, $header_tags ); break; case 'Author': // There shouldn't be anchor tags in Author, but some themes like to be challenging. @@ -901,21 +830,16 @@ private function sanitize_header( $header, $value ) { 'em' => true, 'strong' => true, ); - - $value = wp_kses( $value, $header_tags_with_a ); + $value = wp_kses( $value, $header_tags_with_a ); break; case 'ThemeURI': case 'AuthorURI': - $value = sanitize_url( $value ); + $value = esc_url_raw( $value ); break; case 'Tags': $value = array_filter( array_map( 'trim', explode( ',', strip_tags( $value ) ) ) ); break; case 'Version': - case 'RequiresWP': - case 'RequiresPHP': - case 'RequiresCP': - case 'UpdateURI': $value = strip_tags( $value ); break; } @@ -924,13 +848,15 @@ private function sanitize_header( $header, $value ) { } /** - * Marks up a theme header. + * Mark up a theme header. + * + * @since WP-3.4.0 * - * @since 3.4.0 + * @staticvar string $comma * - * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags. - * @param string|array $value Value to mark up. An array for Tags header, string otherwise. - * @param string $translate Whether the header has been translated. + * @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 ) { @@ -953,7 +879,8 @@ private function markup_header( $header, $value, $translate ) { case 'Tags': static $comma = null; if ( ! isset( $comma ) ) { - $comma = wp_get_list_item_separator(); + /* translators: used between list items, there is a space after the comma */ + $comma = __( ', ' ); } $value = implode( $comma, $value ); break; @@ -967,13 +894,15 @@ private function markup_header( $header, $value, $translate ) { } /** - * Translates a theme header. + * Translate a theme header. + * + * @since WP-3.4.0 * - * @since 3.4.0 + * @staticvar array $tags_list * - * @param string $header Theme header. Name, Description, Author, Version, ThemeURI, AuthorURI, Status, Tags. - * @param string|array $value Value to translate. An array for Tags header, string otherwise. - * @return string|array Translated value. An array for Tags header, string otherwise. + * @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 ) { @@ -982,10 +911,8 @@ private function translate_header( $header, $value ) { if ( isset( $this->name_translated ) ) { return $this->name_translated; } - // phpcs:ignore WordPress.WP.I18n.LowLevelTranslationFunction,WordPress.WP.I18n.NonSingularStringLiteralText,WordPress.WP.I18n.NonSingularStringLiteralDomain $this->name_translated = translate( $value, $this->get( 'TextDomain' ) ); - return $this->name_translated; case 'Tags': if ( empty( $value ) || ! function_exists( 'get_theme_feature_list' ) ) { @@ -1009,8 +936,8 @@ private function translate_header( $header, $value ) { 'tan' => __( 'Tan' ), 'white' => __( 'White' ), 'yellow' => __( 'Yellow' ), - 'dark' => _x( 'Dark', 'color scheme' ), - 'light' => _x( 'Light', 'color scheme' ), + 'dark' => __( 'Dark' ), + 'light' => __( 'Light' ), 'fixed-layout' => __( 'Fixed Layout' ), 'fluid-layout' => __( 'Fluid Layout' ), 'responsive-layout' => __( 'Responsive Layout' ), @@ -1019,8 +946,7 @@ private function translate_header( $header, $value ) { 'seasonal' => __( 'Seasonal' ), ); - $feature_list = get_theme_feature_list( false ); // No API. - + $feature_list = get_theme_feature_list( false ); // No API foreach ( $feature_list as $tags ) { $tags_list += $tags; } @@ -1044,12 +970,12 @@ private function translate_header( $header, $value ) { } /** - * Returns the directory name of the theme's "stylesheet" files, inside the theme root. + * 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 child theme. * Otherwise, get_stylesheet() is the same as get_template(). * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Stylesheet */ @@ -1058,12 +984,12 @@ public function get_stylesheet() { } /** - * Returns the directory name of the theme's "template" files, inside the theme root. + * 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 + * @since WP-3.4.0 * * @return string Template */ @@ -1077,7 +1003,7 @@ public function get_template() { * 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 + * @since WP-3.4.0 * * @return string Absolute path of the stylesheet directory. */ @@ -1095,7 +1021,7 @@ public function get_stylesheet_directory() { * 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 + * @since WP-3.4.0 * * @return string Absolute path of the template directory. */ @@ -1115,7 +1041,7 @@ public function get_template_directory() { * In the case of a child theme, this is the URL to the directory of the * child theme's files. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string URL to the stylesheet directory. */ @@ -1129,7 +1055,7 @@ public function get_stylesheet_directory_uri() { * In the case of a child theme, this is the URL to the directory of the * parent theme's files. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string URL to the template directory. */ @@ -1144,11 +1070,11 @@ public function get_template_directory_uri() { } /** - * Returns the absolute path to the directory of the theme root. + * The absolute path to the directory of the theme root. * * This is typically the absolute path to wp-content/themes. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Theme root. */ @@ -1163,7 +1089,7 @@ public function get_theme_root() { * 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 {@see 'theme_root_uri'} filter. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return string Theme root URI. */ @@ -1182,7 +1108,7 @@ public function get_theme_root_uri() { * 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 + * @since WP-3.4.0 * * @param string $uri Type of URL to return, either 'relative' or an absolute URI. Defaults to absolute URI. * @return string|false Screenshot file. False if the theme does not have a screenshot. @@ -1198,7 +1124,7 @@ public function get_screenshot( $uri = 'uri' ) { return false; } - foreach ( array( 'png', 'gif', 'jpg', 'jpeg', 'webp' ) as $ext ) { + 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 ) { @@ -1213,17 +1139,15 @@ public function get_screenshot( $uri = 'uri' ) { } /** - * Returns files in the theme's directory. + * Return files in the theme's directory. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param string[]|string $type Optional. Array of extensions to find, string of a single extension, - * or null for all extensions. Default 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. Default false. - * @return string[] Array of files, keyed by the path to the file relative to the theme's directory, with the values - * being absolute paths. + * @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 ); @@ -1232,20 +1156,19 @@ public function get_files( $type = null, $depth = 0, $search_parent = false ) { $files += (array) self::scandir( $this->get_template_directory(), $type, $depth ); } - return array_filter( $files ); + return $files; } /** * Returns the theme's post templates. * - * @since 4.7.0 - * @since 5.8.0 Include block templates. + * @since WP-4.7.0 * - * @return array[] Array of page template arrays, keyed by post type and filename, - * with the value of the translated header name. + * @return array Array of page templates, keyed by filename and post type, + * with the value of the translated header name. */ public function get_post_templates() { - // If you screw up your active theme and we invalidate your parent, most things still work. Let it slide. + // 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(); } @@ -1294,13 +1217,13 @@ public function get_post_templates() { /** * Returns the theme's post templates for a given post type. * - * @since 3.4.0 - * @since 4.7.0 Added the `$post_type` parameter. + * @since WP-3.4.0 + * @since WP-4.7.0 Added the `$post_type` parameter. * * @param WP_Post|null $post Optional. The post being edited, provided for context. * @param string $post_type Optional. Post type to get the templates for. Default 'page'. * If a post is provided, its post type is used. - * @return string[] Array of template header names keyed by the template file name. + * @return array Array of page templates, keyed by filename, with the value of the translated header name. */ public function get_page_templates( $post = null, $post_type = 'page' ) { if ( $post ) { @@ -1313,10 +1236,11 @@ public function get_page_templates( $post = null, $post_type = 'page' ) { /** * Filters list of page templates for a theme. * - * @since 4.9.6 + * @since WP-4.9.6 * - * @param string[] $post_templates Array of template header names keyed by the template file name. - * @param WP_Theme $theme The theme object. + * @param string[] $post_templates Array of page templates. Keys are filenames, + * values are translated names. + * @param WP_Theme $this The theme object. * @param WP_Post|null $post The post being edited, provided for context, or null. * @param string $post_type Post type to get the templates for. */ @@ -1327,18 +1251,13 @@ public function get_page_templates( $post = null, $post_type = 'page' ) { * * The dynamic portion of the hook name, `$post_type`, refers to the post type. * - * Possible hook names include: - * - * - `theme_post_templates` - * - `theme_page_templates` - * - `theme_attachment_templates` - * - * @since 3.9.0 - * @since 4.4.0 Converted to allow complete control over the `$page_templates` array. - * @since 4.7.0 Added the `$post_type` parameter. + * @since WP-3.9.0 + * @since WP-4.4.0 Converted to allow complete control over the `$page_templates` array. + * @since WP-4.7.0 Added the `$post_type` parameter. * - * @param string[] $post_templates Array of template header names keyed by the template file name. - * @param WP_Theme $theme The theme object. + * @param array $post_templates Array of page templates. Keys are filenames, + * values are translated names. + * @param WP_Theme $this The theme object. * @param WP_Post|null $post The post being edited, provided for context, or null. * @param string $post_type Post type to get the templates for. */ @@ -1350,7 +1269,9 @@ public function get_page_templates( $post = null, $post_type = 'page' ) { /** * Scans a directory for files of a certain extension. * - * @since 3.4.0 + * @since WP-3.4.0 + * + * @static * * @param string $path Absolute path to search. * @param array|string|null $extensions Optional. Array of extensions to find, string of a single extension, @@ -1360,8 +1281,8 @@ public function get_page_templates( $post = null, $post_type = 'page' ) { * @param string $relative_path Optional. The basename of the absolute path. Used to control the * returned path for the found files, particularly when this function * recurses to lower depths. Default empty. - * @return string[]|false Array of files, keyed by the path to the file relative to the `$path` directory prepended - * with `$relative_path`, with the values being absolute paths. False otherwise. + * @return array|false Array of files, keyed by the path to the file relative to the `$path` directory prepended + * with `$relative_path`, with the values being absolute paths. False otherwise. */ private static function scandir( $path, $extensions = null, $depth = 0, $relative_path = '' ) { if ( ! is_dir( $path ) ) { @@ -1384,9 +1305,9 @@ private static function scandir( $path, $extensions = null, $depth = 0, $relativ /** * Filters the array of excluded directories and files while scanning theme folder. * - * @since 4.7.4 + * @since WP-4.7.4 * - * @param string[] $exclusions Array of excluded directories and files. + * @param array $exclusions Array of excluded directories and files. */ $exclusions = (array) apply_filters( 'theme_scandir_exclusions', array( 'CVS', 'node_modules', 'vendor', 'bower_components' ) ); @@ -1411,10 +1332,10 @@ private static function scandir( $path, $extensions = null, $depth = 0, $relativ /** * Loads the theme's textdomain. * - * Translation files are not inherited from the parent theme. TODO: If this fails for the + * 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 + * @since WP-3.4.0 * * @return bool 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. @@ -1435,7 +1356,7 @@ public function load_textdomain() { return true; } - $path = $this->get_stylesheet_directory(); + $path = $this->get_stylesheet_directory(); $domainpath = $this->get( 'DomainPath' ); if ( $domainpath ) { $path .= $domainpath; @@ -1448,13 +1369,13 @@ public function load_textdomain() { } /** - * Determines whether the theme is allowed (multisite only). + * Whether the theme is allowed (multisite only). * - * @since 3.4.0 + * @since WP-3.4.0 * - * @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 site. + * @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 site. * @return bool Whether the theme is allowed for the network. Returns true in single-site. */ public function is_allowed( $check = 'both', $blog_id = null ) { @@ -1480,40 +1401,11 @@ public function is_allowed( $check = 'both', $blog_id = null ) { } /** - * Retrieves the path of a file in the theme. - * - * Searches in the stylesheet directory before the template directory so themes - * which inherit from a parent theme can just override one file. - * - * @since 5.9.0 - * - * @param string $file Optional. File to search for in the stylesheet directory. - * @return string The path of the file. - */ - public function get_file_path( $file = '' ) { - $file = ltrim( $file, '/' ); - - $stylesheet_directory = $this->get_stylesheet_directory(); - $template_directory = $this->get_template_directory(); - - if ( empty( $file ) ) { - $path = $stylesheet_directory; - } elseif ( file_exists( $stylesheet_directory . '/' . $file ) ) { - $path = $stylesheet_directory . '/' . $file; - } else { - $path = $template_directory . '/' . $file; - } - - /** This filter is documented in wp-includes/link-template.php */ - return apply_filters( 'theme_file_path', $path, $file ); - } - - /** - * Determines the latest WordPress default theme that is installed. + * Determines the latest ClassicPress default theme that is installed. * * This hits the filesystem. * - * @since 4.4.0 + * @since WP-4.4.0 * * @return WP_Theme|false Object, or false if no theme is installed, which would be bad. */ @@ -1530,10 +1422,12 @@ public static function get_core_default_theme() { /** * Returns array of stylesheet names of themes allowed on the site or network. * - * @since 3.4.0 + * @since WP-3.4.0 + * + * @static * * @param int $blog_id Optional. ID of the site. Defaults to the current site. - * @return string[] Array of stylesheet names. + * @return array Array of stylesheet names. */ public static function get_allowed( $blog_id = null ) { /** @@ -1542,10 +1436,10 @@ public static function get_allowed( $blog_id = null ) { * Site is provided as context so that a list of network allowed themes can * be filtered further. * - * @since 4.5.0 + * @since WP-4.5.0 * - * @param string[] $allowed_themes An array of theme stylesheet names. - * @param int $blog_id ID of the site. + * @param array $allowed_themes An array of theme stylesheet names. + * @param int $blog_id ID of the site. */ $network = (array) apply_filters( 'network_allowed_themes', self::get_allowed_on_network(), $blog_id ); return $network + self::get_allowed_on_site( $blog_id ); @@ -1554,9 +1448,13 @@ public static function get_allowed( $blog_id = null ) { /** * Returns array of stylesheet names of themes allowed on the network. * - * @since 3.4.0 + * @since WP-3.4.0 + * + * @static + * + * @staticvar array $allowed_themes * - * @return string[] Array of stylesheet names. + * @return array Array of stylesheet names. */ public static function get_allowed_on_network() { static $allowed_themes; @@ -1567,9 +1465,9 @@ public static function get_allowed_on_network() { /** * Filters the array of themes allowed on the network. * - * @since MU (3.0.0) + * @since WP-MU (3.0.0) * - * @param string[] $allowed_themes An array of theme stylesheet names. + * @param array $allowed_themes An array of theme stylesheet names. */ $allowed_themes = apply_filters( 'allowed_themes', $allowed_themes ); @@ -1579,10 +1477,14 @@ public static function get_allowed_on_network() { /** * Returns array of stylesheet names of themes allowed on the site. * - * @since 3.4.0 + * @since WP-3.4.0 + * + * @static + * + * @staticvar array $allowed_themes * * @param int $blog_id Optional. ID of the site. Defaults to the current site. - * @return string[] Array of stylesheet names. + * @return array Array of stylesheet names. */ public static function get_allowed_on_site( $blog_id = null ) { static $allowed_themes = array(); @@ -1595,10 +1497,10 @@ public static function get_allowed_on_site( $blog_id = null ) { /** * Filters the array of themes allowed on the site. * - * @since 4.5.0 + * @since WP-4.5.0 * - * @param string[] $allowed_themes An array of theme stylesheet names. - * @param int $blog_id ID of the site. Defaults to current site. + * @param array $allowed_themes An array of theme stylesheet names. + * @param int $blog_id ID of the site. Defaults to current site. */ return (array) apply_filters( 'site_allowed_themes', $allowed_themes[ $blog_id ], $blog_id ); } @@ -1657,9 +1559,10 @@ public static function get_allowed_on_site( $blog_id = null ) { /** * Enables a theme for all sites on the current network. * - * @since 4.6.0 + * @since WP-4.6.0 + * @static * - * @param string|string[] $stylesheets Stylesheet name or array of stylesheet names. + * @param string|array $stylesheets Stylesheet name or array of stylesheet names. */ public static function network_enable_theme( $stylesheets ) { if ( ! is_multisite() ) { @@ -1681,9 +1584,10 @@ public static function network_enable_theme( $stylesheets ) { /** * Disables a theme for all sites on the current network. * - * @since 4.6.0 + * @since WP-4.6.0 + * @static * - * @param string|string[] $stylesheets Stylesheet name or array of stylesheet names. + * @param string|array $stylesheets Stylesheet name or array of stylesheet names. */ public static function network_disable_theme( $stylesheets ) { if ( ! is_multisite() ) { @@ -1707,17 +1611,16 @@ public static function network_disable_theme( $stylesheets ) { /** * Sorts themes by name. * - * @since 3.4.0 + * @since WP-3.4.0 + * + * @static * - * @param WP_Theme[] $themes Array of theme objects to sort (passed by reference). + * @param array $themes Array of themes to sort (passed by reference). */ public static function sort_by_name( &$themes ) { if ( 0 === strpos( get_user_locale(), 'en_' ) ) { uasort( $themes, array( 'WP_Theme', '_name_sort' ) ); } else { - foreach ( $themes as $key => $theme ) { - $theme->translate_header( 'Name', $theme->headers['Name'] ); - } uasort( $themes, array( 'WP_Theme', '_name_sort_i18n' ) ); } } @@ -1728,10 +1631,12 @@ public static function sort_by_name( &$themes ) { * 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 + * @since WP-3.4.0 * - * @param WP_Theme $a First theme. - * @param WP_Theme $b Second theme. + * @static + * + * @param string $a First name. + * @param string $b Second name. * @return int Negative if `$a` falls lower in the natural order than `$b`. Zero if they fall equally. * Greater than 0 if `$a` falls higher in the natural order than `$b`. Used with usort(). */ @@ -1740,17 +1645,20 @@ private static function _name_sort( $a, $b ) { } /** - * Callback function for usort() to naturally sort themes by translated name. + * Name sort (with translation). * - * @since 3.4.0 + * @since WP-3.4.0 + * + * @static * - * @param WP_Theme $a First theme. - * @param WP_Theme $b Second theme. + * @param string $a First name. + * @param string $b Second name. * @return int Negative if `$a` falls lower in the natural order than `$b`. Zero if they fall equally. * Greater than 0 if `$a` falls higher in the natural order than `$b`. Used with usort(). */ private static function _name_sort_i18n( $a, $b ) { - return strnatcasecmp( $a->name_translated, $b->name_translated ); + // Don't mark up; Do translate. + return strnatcasecmp( $a->display( 'Name', false, true ), $b->display( 'Name', false, true ) ); } private static function _check_headers_property_has_correct_type( $headers ) { diff --git a/wp-includes/class-wp-user-meta-session-tokens.php b/wp-includes/class-wp-user-meta-session-tokens.php index c1e1e0a..a717867 100644 --- a/wp-includes/class-wp-user-meta-session-tokens.php +++ b/wp-includes/class-wp-user-meta-session-tokens.php @@ -4,24 +4,22 @@ * * @package ClassicPress * @subpackage Session - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Meta-based user sessions token manager. * - * @since 4.0.0 - * - * @see WP_Session_Tokens + * @since WP-4.0.0 */ class WP_User_Meta_Session_Tokens extends WP_Session_Tokens { /** - * Retrieves all sessions of the user. + * Get all sessions of a user. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @return array Sessions of the user. + * @return array Sessions of a user. */ protected function get_sessions() { $sessions = get_user_meta( $this->user_id, 'session_tokens', true ); @@ -49,11 +47,11 @@ protected function prepare_session( $session ) { } /** - * Retrieves a session based on its verifier (token hash). + * Retrieve a session by its verifier (token hash). * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $verifier Verifier for the session to retrieve. + * @param string $verifier Verifier of the session to retrieve. * @return array|null The session, or null if it does not exist */ protected function get_session( $verifier ) { @@ -67,11 +65,11 @@ protected function get_session( $verifier ) { } /** - * Updates a session based on its verifier (token hash). + * Update a session by its verifier. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $verifier Verifier for the session to update. + * @param string $verifier Verifier of the session to update. * @param array $session Optional. Session. Omitting this argument destroys the session. */ protected function update_session( $verifier, $session = null ) { @@ -87,9 +85,9 @@ protected function update_session( $verifier, $session = null ) { } /** - * Updates the user's sessions in the usermeta table. + * Update a user's sessions in the usermeta table. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param array $sessions Sessions. */ @@ -102,9 +100,9 @@ protected function update_sessions( $sessions ) { } /** - * Destroys all sessions for this user, except the single session with the given verifier. + * Destroy all session tokens for a user, except a single session passed. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $verifier Verifier of the session to keep. */ @@ -114,18 +112,19 @@ protected function destroy_other_sessions( $verifier ) { } /** - * Destroys all session tokens for the user. + * Destroy all session tokens for a user. * - * @since 4.0.0 + * @since WP-4.0.0 */ protected function destroy_all_sessions() { $this->update_sessions( array() ); } /** - * Destroys all sessions for all users. + * Destroy all session tokens for all users. * - * @since 4.0.0 + * @since WP-4.0.0 + * @static */ public static function drop_sessions() { delete_metadata( 'user', 0, 'session_tokens', false, true ); diff --git a/wp-includes/class-wp-user-query.php b/wp-includes/class-wp-user-query.php index a516ab4..ac82c0f 100644 --- a/wp-includes/class-wp-user-query.php +++ b/wp-includes/class-wp-user-query.php @@ -4,31 +4,30 @@ * * @package ClassicPress * @subpackage Users - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used for querying users. * - * @since 3.1.0 + * @since WP-3.1.0 * * @see WP_User_Query::prepare_query() for information on accepted arguments. */ -#[AllowDynamicProperties] class WP_User_Query { /** * Query vars, after parsing * - * @since 3.5.0 + * @since WP-3.5.0 * @var array */ public $query_vars = array(); /** - * List of found user IDs. + * List of found user ids * - * @since 3.1.0 + * @since WP-3.1.0 * @var array */ private $results; @@ -36,7 +35,7 @@ class WP_User_Query { /** * Total number of found users for the current query * - * @since 3.1.0 + * @since WP-3.1.0 * @var int */ private $total_users = 0; @@ -44,7 +43,7 @@ class WP_User_Query { /** * Metadata query container. * - * @since 4.2.0 + * @since WP-4.2.0 * @var WP_Meta_Query */ public $meta_query = false; @@ -52,14 +51,14 @@ class WP_User_Query { /** * The SQL query used to fetch matching users. * - * @since 4.4.0 + * @since WP-4.4.0 * @var string */ public $request; private $compat_fields = array( 'results', 'total_users' ); - // SQL clauses. + // SQL clauses public $query_fields; public $query_from; public $query_where; @@ -69,7 +68,7 @@ class WP_User_Query { /** * PHP5 constructor. * - * @since 3.1.0 + * @since WP-3.1.0 * * @param null|string|array $query Optional. The query variables. */ @@ -83,7 +82,7 @@ public function __construct( $query = null ) { /** * Fills in missing query variables with default values. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $args Query vars, as passed to `WP_User_Query`. * @return array Complete query variables with undefined ones filled in with defaults. @@ -94,9 +93,6 @@ public static function fill_query_vars( $args ) { 'role' => '', 'role__in' => array(), 'role__not_in' => array(), - 'capability' => '', - 'capability__in' => array(), - 'capability__not_in' => array(), 'meta_key' => '', 'meta_value' => '', 'meta_compare' => '', @@ -119,148 +115,101 @@ public static function fill_query_vars( $args ) { 'login' => '', 'login__in' => array(), 'login__not_in' => array(), - 'cache_results' => true, ); return wp_parse_args( $args, $defaults ); } /** - * Prepares the query variables. + * Prepare the query variables. * - * @since 3.1.0 - * @since 4.1.0 Added the ability to order by the `include` value. - * @since 4.2.0 Added 'meta_value_num' support for `$orderby` parameter. Added multi-dimensional array syntax + * @since WP-3.1.0 + * @since WP-4.1.0 Added the ability to order by the `include` value. + * @since WP-4.2.0 Added 'meta_value_num' support for `$orderby` parameter. Added multi-dimensional array syntax * for `$orderby` parameter. - * @since 4.3.0 Added 'has_published_posts' parameter. - * @since 4.4.0 Added 'paged', 'role__in', and 'role__not_in' parameters. The 'role' parameter was updated to + * @since WP-4.3.0 Added 'has_published_posts' parameter. + * @since WP-4.4.0 Added 'paged', 'role__in', and 'role__not_in' parameters. The 'role' parameter was updated to * permit an array or comma-separated list of values. The 'number' parameter was updated to support * querying for all users with using -1. - * @since 4.7.0 Added 'nicename', 'nicename__in', 'nicename__not_in', 'login', 'login__in', + * @since WP-4.7.0 Added 'nicename', 'nicename__in', 'nicename__not_in', 'login', 'login__in', * and 'login__not_in' parameters. - * @since 5.1.0 Introduced the 'meta_compare_key' parameter. - * @since 5.3.0 Introduced the 'meta_type_key' parameter. - * @since 5.9.0 Added 'capability', 'capability__in', and 'capability__not_in' parameters. - * @since 6.3.0 Added 'cache_results' parameter. * - * @global wpdb $wpdb WordPress database abstraction object. - * @global WP_Roles $wp_roles WordPress role management object. + * + * @global wpdb $wpdb ClassicPress database abstraction object. + * @global int $blog_id * * @param string|array $query { * Optional. Array or string of Query parameters. * - * @type int $blog_id The site ID. Default is the current site. - * @type string|string[] $role An array or a comma-separated list of role names that users must match - * to be included in results. Note that this is an inclusive list: users - * must match *each* role. Default empty. - * @type string[] $role__in An array of role names. Matched users must have at least one of these - * roles. Default empty array. - * @type string[] $role__not_in An array of role names to exclude. Users matching one or more of these - * roles will not be included in results. Default empty array. - * @type string|string[] $meta_key Meta key or keys to filter by. - * @type string|string[] $meta_value Meta value or values to filter by. - * @type string $meta_compare MySQL operator used for comparing the meta value. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_compare_key MySQL operator used for comparing the meta key. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type MySQL data type that the meta_value column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type string $meta_type_key MySQL data type that the meta_key column will be CAST to for comparisons. - * See WP_Meta_Query::__construct() for accepted values and default value. - * @type array $meta_query An associative array of WP_Meta_Query arguments. - * See WP_Meta_Query::__construct() for accepted values. - * @type string|string[] $capability An array or a comma-separated list of capability names that users must match - * to be included in results. Note that this is an inclusive list: users - * must match *each* capability. - * Does NOT work for capabilities not in the database or filtered via {@see 'map_meta_cap'}. - * Default empty. - * @type string[] $capability__in An array of capability names. Matched users must have at least one of these - * capabilities. - * Does NOT work for capabilities not in the database or filtered via {@see 'map_meta_cap'}. - * Default empty array. - * @type string[] $capability__not_in An array of capability names to exclude. Users matching one or more of these - * capabilities will not be included in results. - * Does NOT work for capabilities not in the database or filtered via {@see 'map_meta_cap'}. - * Default empty array. - * @type int[] $include An array of user IDs to include. Default empty array. - * @type int[] $exclude An array of user IDs to exclude. Default empty array. - * @type string $search Search keyword. Searches for possible string matches on columns. - * When `$search_columns` is left empty, it tries to determine which - * column to search in based on search string. Default empty. - * @type string[] $search_columns Array of column names to be searched. Accepts 'ID', 'user_login', - * 'user_email', 'user_url', 'user_nicename', 'display_name'. - * Default empty array. - * @type string|array $orderby Field(s) to sort the retrieved users by. May be a single value, - * an array of values, or a multi-dimensional array with fields as - * keys and orders ('ASC' or 'DESC') as values. Accepted values are: - * - 'ID' - * - 'display_name' (or 'name') - * - 'include' - * - 'user_login' (or 'login') - * - 'login__in' - * - 'user_nicename' (or 'nicename'), - * - 'nicename__in' - * - 'user_email (or 'email') - * - 'user_url' (or 'url'), - * - 'user_registered' (or 'registered') - * - 'post_count' - * - 'meta_value', - * - 'meta_value_num' - * - The value of `$meta_key` - * - An array key of `$meta_query` - * To use 'meta_value' or 'meta_value_num', `$meta_key` - * must be also be defined. Default 'user_login'. - * @type string $order Designates ascending or descending order of users. Order values - * passed as part of an `$orderby` array take precedence over this - * parameter. Accepts 'ASC', 'DESC'. Default 'ASC'. - * @type int $offset Number of users to offset in retrieved results. Can be used in - * conjunction with pagination. Default 0. - * @type int $number Number of users to limit the query for. Can be used in - * conjunction with pagination. Value -1 (all) is supported, but - * should be used with caution on larger sites. - * Default -1 (all users). - * @type int $paged When used with number, defines the page of results to return. - * Default 1. - * @type bool $count_total Whether to count the total number of users found. If pagination - * is not needed, setting this to false can improve performance. - * Default true. - * @type string|string[] $fields Which fields to return. Single or all fields (string), or array - * of fields. Accepts: - * - 'ID' - * - 'display_name' - * - 'user_login' - * - 'user_nicename' - * - 'user_email' - * - 'user_url' - * - 'user_registered' - * - 'user_pass' - * - 'user_activation_key' - * - 'user_status' - * - 'spam' (only available on multisite installs) - * - 'deleted' (only available on multisite installs) - * - 'all' for all fields and loads user meta. - * - 'all_with_meta' Deprecated. Use 'all'. - * Default 'all'. - * @type string $who Type of users to query. Accepts 'authors'. - * Default empty (all users). - * @type bool|string[] $has_published_posts Pass an array of post types to filter results to users who have - * published posts in those post types. `true` is an alias for all - * public post types. - * @type string $nicename The user nicename. Default empty. - * @type string[] $nicename__in An array of nicenames to include. Users matching one of these - * nicenames will be included in results. Default empty array. - * @type string[] $nicename__not_in An array of nicenames to exclude. Users matching one of these - * nicenames will not be included in results. Default empty array. - * @type string $login The user login. Default empty. - * @type string[] $login__in An array of logins to include. Users matching one of these - * logins will be included in results. Default empty array. - * @type string[] $login__not_in An array of logins to exclude. Users matching one of these - * logins will not be included in results. Default empty array. - * @type bool $cache_results Whether to cache user information. Default true. + * @type int $blog_id The site ID. Default is the current site. + * @type string|array $role An array or a comma-separated list of role names that users must match + * to be included in results. Note that this is an inclusive list: users + * must match *each* role. Default empty. + * @type array $role__in An array of role names. Matched users must have at least one of these + * roles. Default empty array. + * @type array $role__not_in An array of role names to exclude. Users matching one or more of these + * roles will not be included in results. Default empty array. + * @type string $meta_key User meta key. Default empty. + * @type string $meta_value User meta value. Default empty. + * @type string $meta_compare Comparison operator to test the `$meta_value`. Accepts '=', '!=', + * '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', + * 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS', 'REGEXP', + * 'NOT REGEXP', or 'RLIKE'. Default '='. + * @type array $include An array of user IDs to include. Default empty array. + * @type array $exclude An array of user IDs to exclude. Default empty array. + * @type string $search Search keyword. Searches for possible string matches on columns. + * When `$search_columns` is left empty, it tries to determine which + * column to search in based on search string. Default empty. + * @type array $search_columns Array of column names to be searched. Accepts 'ID', 'login', + * 'nicename', 'email', 'url'. Default empty array. + * @type string|array $orderby Field(s) to sort the retrieved users by. May be a single value, + * an array of values, or a multi-dimensional array with fields as + * keys and orders ('ASC' or 'DESC') as values. Accepted values are + * 'ID', 'display_name' (or 'name'), 'include', 'user_login' + * (or 'login'), 'login__in', 'user_nicename' (or 'nicename'), + * 'nicename__in', 'user_email (or 'email'), 'user_url' (or 'url'), + * 'user_registered' (or 'registered'), 'post_count', 'meta_value', + * 'meta_value_num', the value of `$meta_key`, or an array key of + * `$meta_query`. To use 'meta_value' or 'meta_value_num', `$meta_key` + * must be also be defined. Default 'user_login'. + * @type string $order Designates ascending or descending order of users. Order values + * passed as part of an `$orderby` array take precedence over this + * parameter. Accepts 'ASC', 'DESC'. Default 'ASC'. + * @type int $offset Number of users to offset in retrieved results. Can be used in + * conjunction with pagination. Default 0. + * @type int $number Number of users to limit the query for. Can be used in + * conjunction with pagination. Value -1 (all) is supported, but + * should be used with caution on larger sites. + * Default empty (all users). + * @type int $paged When used with number, defines the page of results to return. + * Default 1. + * @type bool $count_total Whether to count the total number of users found. If pagination + * is not needed, setting this to false can improve performance. + * Default true. + * @type string|array $fields Which fields to return. Single or all fields (string), or array + * of fields. Accepts 'ID', 'display_name', 'user_login', + * 'user_nicename', 'user_email', 'user_url', 'user_registered'. + * Use 'all' for all fields and 'all_with_meta' to include + * meta fields. Default 'all'. + * @type string $who Type of users to query. Accepts 'authors'. + * Default empty (all users). + * @type bool|array $has_published_posts Pass an array of post types to filter results to users who have + * published posts in those post types. `true` is an alias for all + * public post types. + * @type string $nicename The user nicename. Default empty. + * @type array $nicename__in An array of nicenames to include. Users matching one of these + * nicenames will be included in results. Default empty array. + * @type array $nicename__not_in An array of nicenames to exclude. Users matching one of these + * nicenames will not be included in results. Default empty array. + * @type string $login The user login. Default empty. + * @type array $login__in An array of logins to include. Users matching one of these + * logins will be included in results. Default empty array. + * @type array $login__not_in An array of logins to exclude. Users matching one of these + * logins will not be included in results. Default empty array. * } */ public function prepare_query( $query = array() ) { - global $wpdb, $wp_roles; + global $wpdb; if ( empty( $this->query_vars ) || ! empty( $query ) ) { $this->query_limit = null; @@ -270,55 +219,33 @@ public function prepare_query( $query = array() ) { /** * Fires before the WP_User_Query has been parsed. * - * The passed WP_User_Query object contains the query variables, - * not yet passed into SQL. + * The passed WP_User_Query object contains the query variables, not + * yet passed into SQL. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param WP_User_Query $query Current instance of WP_User_Query (passed by reference). + * @param WP_User_Query $this The current WP_User_Query instance, + * passed by reference. */ - do_action_ref_array( 'pre_get_users', array( &$this ) ); + do_action( 'pre_get_users', $this ); // Ensure that query vars are filled after 'pre_get_users'. $qv =& $this->query_vars; $qv = $this->fill_query_vars( $qv ); - $allowed_fields = array( - 'id', - 'user_login', - 'user_pass', - 'user_nicename', - 'user_email', - 'user_url', - 'user_registered', - 'user_activation_key', - 'user_status', - 'display_name', - ); - if ( is_multisite() ) { - $allowed_fields[] = 'spam'; - $allowed_fields[] = 'deleted'; - } - if ( is_array( $qv['fields'] ) ) { - $qv['fields'] = array_map( 'strtolower', $qv['fields'] ); - $qv['fields'] = array_intersect( array_unique( $qv['fields'] ), $allowed_fields ); - - if ( empty( $qv['fields'] ) ) { - $qv['fields'] = array( 'id' ); - } + $qv['fields'] = array_unique( $qv['fields'] ); $this->query_fields = array(); foreach ( $qv['fields'] as $field ) { - $field = 'id' === $field ? 'ID' : sanitize_key( $field ); + $field = 'ID' === $field ? 'ID' : sanitize_key( $field ); $this->query_fields[] = "$wpdb->users.$field"; } $this->query_fields = implode( ',', $this->query_fields ); - } elseif ( 'all_with_meta' === $qv['fields'] || 'all' === $qv['fields'] || ! in_array( $qv['fields'], $allowed_fields, true ) ) { - $this->query_fields = "$wpdb->users.ID"; + } elseif ( 'all' === $qv['fields'] ) { + $this->query_fields = "$wpdb->users.*"; } else { - $field = 'id' === strtolower( $qv['fields'] ) ? 'ID' : sanitize_key( $qv['fields'] ); - $this->query_fields = "$wpdb->users.$field"; + $this->query_fields = "$wpdb->users.ID"; } if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { @@ -352,7 +279,7 @@ public function prepare_query( $query = array() ) { } $posts_table = $wpdb->get_blog_prefix( $blog_id ) . 'posts'; - $this->query_where .= " AND $wpdb->users.ID IN ( SELECT DISTINCT $posts_table.post_author FROM $posts_table WHERE $posts_table.post_status = 'publish' AND $posts_table.post_type IN ( " . implode( ', ', $post_types ) . ' ) )'; + $this->query_where .= " AND $wpdb->users.ID IN ( SELECT DISTINCT $posts_table.post_author FROM $posts_table WHERE $posts_table.post_status = 'publish' AND $posts_table.post_type IN ( " . join( ', ', $post_types ) . ' ) )'; } // nicename @@ -394,17 +321,6 @@ public function prepare_query( $query = array() ) { $this->meta_query->parse_query_vars( $qv ); if ( isset( $qv['who'] ) && 'authors' === $qv['who'] && $blog_id ) { - _deprecated_argument( - 'WP_User_Query', - '5.9.0', - sprintf( - /* translators: 1: who, 2: capability */ - __( '%1$s is deprecated. Use %2$s instead.' ), - '<code>who</code>', - '<code>capability</code>' - ) - ); - $who_query = array( 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'user_level', 'value' => 0, @@ -428,7 +344,6 @@ public function prepare_query( $query = array() ) { $this->meta_query->parse_query_vars( $this->meta_query->queries ); } - // Roles. $roles = array(); if ( isset( $qv['role'] ) ) { if ( is_array( $qv['role'] ) ) { @@ -448,109 +363,6 @@ public function prepare_query( $query = array() ) { $role__not_in = (array) $qv['role__not_in']; } - // Capabilities. - $available_roles = array(); - - if ( ! empty( $qv['capability'] ) || ! empty( $qv['capability__in'] ) || ! empty( $qv['capability__not_in'] ) ) { - $wp_roles->for_site( $blog_id ); - $available_roles = $wp_roles->roles; - } - - $capabilities = array(); - if ( ! empty( $qv['capability'] ) ) { - if ( is_array( $qv['capability'] ) ) { - $capabilities = $qv['capability']; - } elseif ( is_string( $qv['capability'] ) ) { - $capabilities = array_map( 'trim', explode( ',', $qv['capability'] ) ); - } - } - - $capability__in = array(); - if ( ! empty( $qv['capability__in'] ) ) { - $capability__in = (array) $qv['capability__in']; - } - - $capability__not_in = array(); - if ( ! empty( $qv['capability__not_in'] ) ) { - $capability__not_in = (array) $qv['capability__not_in']; - } - - // Keep track of all capabilities and the roles they're added on. - $caps_with_roles = array(); - - foreach ( $available_roles as $role => $role_data ) { - $role_caps = array_keys( array_filter( $role_data['capabilities'] ) ); - - foreach ( $capabilities as $cap ) { - if ( in_array( $cap, $role_caps, true ) ) { - $caps_with_roles[ $cap ][] = $role; - break; - } - } - - foreach ( $capability__in as $cap ) { - if ( in_array( $cap, $role_caps, true ) ) { - $role__in[] = $role; - break; - } - } - - foreach ( $capability__not_in as $cap ) { - if ( in_array( $cap, $role_caps, true ) ) { - $role__not_in[] = $role; - break; - } - } - } - - $role__in = array_merge( $role__in, $capability__in ); - $role__not_in = array_merge( $role__not_in, $capability__not_in ); - - $roles = array_unique( $roles ); - $role__in = array_unique( $role__in ); - $role__not_in = array_unique( $role__not_in ); - - // Support querying by capabilities added directly to users. - if ( $blog_id && ! empty( $capabilities ) ) { - $capabilities_clauses = array( 'relation' => 'AND' ); - - foreach ( $capabilities as $cap ) { - $clause = array( 'relation' => 'OR' ); - - $clause[] = array( - 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities', - 'value' => '"' . $cap . '"', - 'compare' => 'LIKE', - ); - - if ( ! empty( $caps_with_roles[ $cap ] ) ) { - foreach ( $caps_with_roles[ $cap ] as $role ) { - $clause[] = array( - 'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities', - 'value' => '"' . $role . '"', - 'compare' => 'LIKE', - ); - } - } - - $capabilities_clauses[] = $clause; - } - - $role_queries[] = $capabilities_clauses; - - if ( empty( $this->meta_query->queries ) ) { - $this->meta_query->queries[] = $capabilities_clauses; - } else { - // Append the cap query to the original queries and reparse the query. - $this->meta_query->queries = array( - 'relation' => 'AND', - array( $this->meta_query->queries, array( $capabilities_clauses ) ), - ); - } - - $this->meta_query->parse_query_vars( $this->meta_query->queries ); - } - if ( $blog_id && ( ! empty( $roles ) || ! empty( $role__in ) || ! empty( $role__not_in ) || is_multisite() ) ) { $role_queries = array(); @@ -627,7 +439,7 @@ public function prepare_query( $query = array() ) { } } - // Sorting. + // sorting $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : ''; $order = $this->parse_order( $qv['order'] ); @@ -677,7 +489,7 @@ public function prepare_query( $query = array() ) { $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array ); - // Limit. + // limit if ( isset( $qv['number'] ) && $qv['number'] > 0 ) { if ( $qv['offset'] ) { $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] ); @@ -726,14 +538,14 @@ public function prepare_query( $query = array() ) { /** * Filters the columns to search in a WP_User_Query search. * - * The default columns depend on the search term, and include 'ID', 'user_login', - * 'user_email', 'user_url', 'user_nicename', and 'display_name'. + * The default columns depend on the search term, and include 'user_email', + * 'user_login', 'ID', 'user_url', 'display_name', and 'user_nicename'. * - * @since 3.6.0 + * @since WP-3.6.0 * - * @param string[] $search_columns Array of column names to be searched. + * @param array $search_columns Array of column names to be searched. * @param string $search Text being searched. - * @param WP_User_Query $query The current WP_User_Query instance. + * @param WP_User_Query $this The current WP_User_Query instance. */ $search_columns = apply_filters( 'user_search_columns', $search_columns, $search, $this ); @@ -762,144 +574,71 @@ public function prepare_query( $query = array() ) { * The passed WP_User_Query object contains SQL parts formed * from parsing the given query. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param WP_User_Query $query Current instance of WP_User_Query (passed by reference). + * @param WP_User_Query $this The current WP_User_Query instance, + * passed by reference. */ do_action_ref_array( 'pre_user_query', array( &$this ) ); } /** - * Executes the query, with the current variables. + * Execute the query, with the current variables. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. */ public function query() { global $wpdb; - if ( ! did_action( 'plugins_loaded' ) ) { - _doing_it_wrong( - 'WP_User_Query::query', - sprintf( - /* translators: %s: plugins_loaded */ - __( 'User queries should not be run before the %s hook.' ), - '<code>plugins_loaded</code>' - ), - '6.1.1' - ); - } - $qv =& $this->query_vars; - // Do not cache results if more than 3 fields are requested. - if ( is_array( $qv['fields'] ) && count( $qv['fields'] ) > 3 ) { - $qv['cache_results'] = false; + $this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit"; + + if ( is_array( $qv['fields'] ) || 'all' === $qv['fields'] ) { + $this->results = $wpdb->get_results( $this->request ); + } else { + $this->results = $wpdb->get_col( $this->request ); } /** - * Filters the users array before the query takes place. - * - * Return a non-null value to bypass WordPress' default user queries. + * Filters SELECT FOUND_ROWS() query for the current WP_User_Query instance. * - * Filtering functions that require pagination information are encouraged to set - * the `total_users` property of the WP_User_Query object, passed to the filter - * by reference. If WP_User_Query does not perform a database query, it will not - * have enough information to generate these values itself. + * @since WP-3.2.0 * - * @since 5.1.0 + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param array|null $results Return an array of user data to short-circuit WP's user query - * or null to allow WP to run its normal queries. - * @param WP_User_Query $query The WP_User_Query instance (passed by reference). + * @param string $sql The SELECT FOUND_ROWS() query for the current WP_User_Query. */ - $this->results = apply_filters_ref_array( 'users_pre_query', array( null, &$this ) ); - - if ( null === $this->results ) { - $this->request = " - SELECT {$this->query_fields} - {$this->query_from} - {$this->query_where} - {$this->query_orderby} - {$this->query_limit} - "; - $cache_value = false; - $cache_key = $this->generate_cache_key( $qv, $this->request ); - $cache_group = 'user-queries'; - if ( $qv['cache_results'] ) { - $cache_value = wp_cache_get( $cache_key, $cache_group ); - } - if ( false !== $cache_value ) { - $this->results = $cache_value['user_data']; - $this->total_users = $cache_value['total_users']; - } else { - - if ( is_array( $qv['fields'] ) ) { - $this->results = $wpdb->get_results( $this->request ); - } else { - $this->results = $wpdb->get_col( $this->request ); - } - - if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { - /** - * Filters SELECT FOUND_ROWS() query for the current WP_User_Query instance. - * - * @since 3.2.0 - * @since 5.1.0 Added the `$this` parameter. - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param string $sql The SELECT FOUND_ROWS() query for the current WP_User_Query. - * @param WP_User_Query $query The current WP_User_Query instance. - */ - $found_users_query = apply_filters( 'found_users_query', 'SELECT FOUND_ROWS()', $this ); - - $this->total_users = (int) $wpdb->get_var( $found_users_query ); - } - - if ( $qv['cache_results'] ) { - $cache_value = array( - 'user_data' => $this->results, - 'total_users' => $this->total_users, - ); - wp_cache_add( $cache_key, $cache_value, $cache_group ); - } - } + if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { + $this->total_users = (int) $wpdb->get_var( apply_filters( 'found_users_query', 'SELECT FOUND_ROWS()' ) ); } if ( ! $this->results ) { return; } - if ( - is_array( $qv['fields'] ) && - isset( $this->results[0]->ID ) - ) { - foreach ( $this->results as $result ) { - $result->id = $result->ID; - } - } elseif ( 'all_with_meta' === $qv['fields'] || 'all' === $qv['fields'] ) { - if ( function_exists( 'cache_users' ) ) { - cache_users( $this->results ); - } + + if ( 'all_with_meta' === $qv['fields'] ) { + cache_users( $this->results ); $r = array(); foreach ( $this->results as $userid ) { - if ( 'all_with_meta' === $qv['fields'] ) { - $r[ $userid ] = new WP_User( $userid, '', $qv['blog_id'] ); - } else { - $r[] = new WP_User( $userid, '', $qv['blog_id'] ); - } + $r[ $userid ] = new WP_User( $userid, '', $qv['blog_id'] ); } $this->results = $r; + } elseif ( 'all' === $qv['fields'] ) { + foreach ( $this->results as $key => $user ) { + $this->results[ $key ] = new WP_User( $user, '', $qv['blog_id'] ); + } } } /** - * Retrieves query variable. + * Retrieve query variable. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $query_var Query variable key. * @return mixed @@ -913,43 +652,43 @@ public function get( $query_var ) { } /** - * Sets query variable. + * Set query variable. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param string $query_var Query variable key. - * @param mixed $value Query variable value. + * @param mixed $value Query variable value. */ public function set( $query_var, $value ) { $this->query_vars[ $query_var ] = $value; } /** - * Used internally to generate an SQL string for searching across multiple columns. + * Used internally to generate an SQL string for searching across multiple columns * - * @since 3.1.0 + * @since WP-3.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param string $search Search string. - * @param string[] $columns Array of columns to search. - * @param bool $wild Whether to allow wildcard searches. Default is false for Network Admin, true for single site. - * Single site allows leading and trailing wildcards, Network Admin only trailing. + * @param string $string + * @param array $cols + * @param bool $wild Whether to allow wildcard searches. Default is false for Network Admin, true for single site. + * Single site allows leading and trailing wildcards, Network Admin only trailing. * @return string */ - protected function get_search_sql( $search, $columns, $wild = false ) { + protected function get_search_sql( $string, $cols, $wild = false ) { global $wpdb; $searches = array(); $leading_wild = ( 'leading' === $wild || 'both' === $wild ) ? '%' : ''; $trailing_wild = ( 'trailing' === $wild || 'both' === $wild ) ? '%' : ''; - $like = $leading_wild . $wpdb->esc_like( $search ) . $trailing_wild; + $like = $leading_wild . $wpdb->esc_like( $string ) . $trailing_wild; - foreach ( $columns as $column ) { - if ( 'ID' === $column ) { - $searches[] = $wpdb->prepare( "$column = %s", $search ); + foreach ( $cols as $col ) { + if ( 'ID' === $col ) { + $searches[] = $wpdb->prepare( "$col = %s", $string ); } else { - $searches[] = $wpdb->prepare( "$column LIKE %s", $like ); + $searches[] = $wpdb->prepare( "$col LIKE %s", $like ); } } @@ -957,9 +696,9 @@ protected function get_search_sql( $search, $columns, $wild = false ) { } /** - * Returns the list of users. + * Return the list of users. * - * @since 3.1.0 + * @since WP-3.1.0 * * @return array Array of results. */ @@ -968,9 +707,9 @@ public function get_results() { } /** - * Returns the total number of users for the current query. + * Return the total number of users for the current query. * - * @since 3.1.0 + * @since WP-3.1.0 * * @return int Number of total users. */ @@ -979,11 +718,11 @@ public function get_total() { } /** - * Parses and sanitizes 'orderby' keys passed to the user query. + * Parse and sanitize 'orderby' keys passed to the user query. * - * @since 4.2.0 + * @since WP-4.2.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $orderby Alias for the field to order by. * @return string Value to used in the ORDER clause, if `$orderby` is valid. @@ -1038,60 +777,9 @@ protected function parse_orderby( $orderby ) { } /** - * Generate cache key. - * - * @since 6.3.0 - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $args Query arguments. - * @param string $sql SQL statement. - * @return string Cache key. - */ - protected function generate_cache_key( array $args, $sql ) { - global $wpdb; - - // Replace wpdb placeholder in the SQL statement used by the cache key. - $sql = $wpdb->remove_placeholder_escape( $sql ); - - $key = md5( $sql ); - $last_changed = wp_cache_get_last_changed( 'users' ); - - if ( empty( $args['orderby'] ) ) { - // Default order is by 'user_login'. - $ordersby = array( 'user_login' => '' ); - } elseif ( is_array( $args['orderby'] ) ) { - $ordersby = $args['orderby']; - } else { - // 'orderby' values may be a comma- or space-separated list. - $ordersby = preg_split( '/[,\s]+/', $args['orderby'] ); - } - - $blog_id = 0; - if ( isset( $args['blog_id'] ) ) { - $blog_id = absint( $args['blog_id'] ); - } - - if ( $args['has_published_posts'] || in_array( 'post_count', $ordersby, true ) ) { - $switch = $blog_id && get_current_blog_id() !== $blog_id; - if ( $switch ) { - switch_to_blog( $blog_id ); - } - - $last_changed .= wp_cache_get_last_changed( 'posts' ); - - if ( $switch ) { - restore_current_blog(); - } - } - - return "get_users:$key:$last_changed"; - } - - /** - * Parses an 'order' query variable and casts it to ASC or DESC as necessary. + * Parse an 'order' query variable and cast it to ASC or DESC as necessary. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param string $order The 'order' query variable. * @return string The sanitized 'order' query variable. @@ -1109,9 +797,9 @@ protected function parse_order( $order ) { } /** - * Makes private properties readable for backward compatibility. + * Make private properties readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to get. * @return mixed Property. @@ -1123,9 +811,9 @@ public function __get( $name ) { } /** - * Makes private properties settable for backward compatibility. + * Make private properties settable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to check if set. * @param mixed $value Property value. @@ -1138,9 +826,9 @@ public function __set( $name, $value ) { } /** - * Makes private properties checkable for backward compatibility. + * Make private properties checkable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to check if set. * @return bool Whether the property is set. @@ -1152,9 +840,9 @@ public function __isset( $name ) { } /** - * Makes private properties un-settable for backward compatibility. + * Make private properties un-settable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * * @param string $name Property to unset. */ @@ -1165,17 +853,17 @@ public function __unset( $name ) { } /** - * Makes private/protected methods readable for backward compatibility. + * Make private/protected methods readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $name Method to call. - * @param array $arguments Arguments to pass when calling. + * @param callable $name Method to call. + * @param array $arguments Arguments to pass when calling. * @return mixed Return value of the callback, false otherwise. */ public function __call( $name, $arguments ) { if ( 'get_search_sql' === $name ) { - return $this->get_search_sql( ...$arguments ); + return call_user_func_array( array( $this, $name ), $arguments ); } return false; } diff --git a/wp-includes/class-wp-user-request.php b/wp-includes/class-wp-user-request.php deleted file mode 100644 index 8c66dcd..0000000 --- a/wp-includes/class-wp-user-request.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php -/** - * WP_User_Request class. - * - * Represents user request data loaded from a WP_Post object. - * - * @since 4.9.6 - */ -#[AllowDynamicProperties] -final class WP_User_Request { - /** - * Request ID. - * - * @since 4.9.6 - * @var int - */ - public $ID = 0; - - /** - * User ID. - * - * @since 4.9.6 - * @var int - */ - public $user_id = 0; - - /** - * User email. - * - * @since 4.9.6 - * @var string - */ - public $email = ''; - - /** - * Action name. - * - * @since 4.9.6 - * @var string - */ - public $action_name = ''; - - /** - * Current status. - * - * @since 4.9.6 - * @var string - */ - public $status = ''; - - /** - * Timestamp this request was created. - * - * @since 4.9.6 - * @var int|null - */ - public $created_timestamp = null; - - /** - * Timestamp this request was last modified. - * - * @since 4.9.6 - * @var int|null - */ - public $modified_timestamp = null; - - /** - * Timestamp this request was confirmed. - * - * @since 4.9.6 - * @var int|null - */ - public $confirmed_timestamp = null; - - /** - * Timestamp this request was completed. - * - * @since 4.9.6 - * @var int|null - */ - public $completed_timestamp = null; - - /** - * Misc data assigned to this request. - * - * @since 4.9.6 - * @var array - */ - public $request_data = array(); - - /** - * Key used to confirm this request. - * - * @since 4.9.6 - * @var string - */ - public $confirm_key = ''; - - /** - * Constructor. - * - * @since 4.9.6 - * - * @param WP_Post|object $post Post object. - */ - public function __construct( $post ) { - $this->ID = $post->ID; - $this->user_id = $post->post_author; - $this->email = $post->post_title; - $this->action_name = $post->post_name; - $this->status = $post->post_status; - $this->created_timestamp = strtotime( $post->post_date_gmt ); - $this->modified_timestamp = strtotime( $post->post_modified_gmt ); - $this->confirmed_timestamp = (int) get_post_meta( $post->ID, '_wp_user_request_confirmed_timestamp', true ); - $this->completed_timestamp = (int) get_post_meta( $post->ID, '_wp_user_request_completed_timestamp', true ); - $this->request_data = json_decode( $post->post_content, true ); - $this->confirm_key = $post->post_password; - } -} diff --git a/wp-includes/class-wp-user.php b/wp-includes/class-wp-user.php index 4681db2..6b8aafa 100644 --- a/wp-includes/class-wp-user.php +++ b/wp-includes/class-wp-user.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Users - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Core class used to implement the WP_User object. * - * @since 2.0.0 + * @since WP-2.0.0 * * @property string $nickname * @property string $description @@ -34,39 +34,36 @@ * @property string $locale * @property string $rich_editing * @property string $syntax_highlighting - * @property string $use_ssl */ -#[AllowDynamicProperties] class WP_User { /** * User data container. * - * @since 2.0.0 - * @var stdClass + * @since WP-2.0.0 + * @var object */ public $data; /** * The user's ID. * - * @since 2.1.0 + * @since WP-2.1.0 * @var int */ public $ID = 0; /** - * Capabilities that the individual user has been granted outside of those inherited from their role. + * The individual capabilities the user has been given. * - * @since 2.0.0 - * @var bool[] Array of key/value pairs where keys represent a capability name - * and boolean values represent whether the user has that capability. + * @since WP-2.0.0 + * @var array */ public $caps = array(); /** * User metadata option name. * - * @since 2.0.0 + * @since WP-2.0.0 * @var string */ public $cap_key; @@ -74,24 +71,23 @@ class WP_User { /** * The roles the user is part of. * - * @since 2.0.0 - * @var string[] + * @since WP-2.0.0 + * @var array */ public $roles = array(); /** * All capabilities the user has, including individual and role based. * - * @since 2.0.0 - * @var bool[] Array of key/value pairs where keys represent a capability name - * and boolean values represent whether the user has that capability. + * @since WP-2.0.0 + * @var array */ public $allcaps = array(); /** * The filter context applied to user data fields. * - * @since 2.9.0 + * @since WP-2.9.0 * @var string */ public $filter = null; @@ -99,13 +95,14 @@ class WP_User { /** * The site ID the capabilities of this user are initialized for. * - * @since 4.9.0 + * @since WP-4.9.0 * @var int */ private $site_id = 0; /** - * @since 3.3.0 + * @static + * @since WP-3.3.0 * @var array */ private static $back_compat_keys; @@ -115,11 +112,13 @@ class WP_User { * * Retrieves the userdata and passes it to WP_User::init(). * - * @since 2.0.0 + * @since WP-2.0.0 + * + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param int|string|stdClass|WP_User $id User's ID, a WP_User object, or a user object from the DB. - * @param string $name Optional. User's username - * @param int $site_id Optional Site ID, defaults to current site. + * @param int|string|stdClass|WP_User $id User's ID, a WP_User object, or a user object from the DB. + * @param string $name Optional. User's username + * @param int $site_id Optional Site ID, defaults to current site. */ public function __construct( $id = 0, $name = '', $site_id = '' ) { if ( ! isset( self::$back_compat_keys ) ) { @@ -156,22 +155,19 @@ public function __construct( $id = 0, $name = '', $site_id = '' ) { if ( $data ) { $this->init( $data, $site_id ); } else { - $this->data = new stdClass(); + $this->data = new stdClass; } } /** * Sets up object properties, including capabilities. * - * @since 3.3.0 + * @since WP-3.3.0 * * @param object $data User DB row object. * @param int $site_id Optional. The site ID to initialize for. */ public function init( $data, $site_id = '' ) { - if ( ! isset( $data->ID ) ) { - $data->ID = 0; - } $this->data = $data; $this->ID = (int) $data->ID; @@ -179,16 +175,18 @@ public function init( $data, $site_id = '' ) { } /** - * Returns only the main user fields. + * Return only the main user fields + * + * @since WP-3.3.0 + * @since WP-4.4.0 Added 'ID' as an alias of 'id' for the `$field` parameter. * - * @since 3.3.0 - * @since 4.4.0 Added 'ID' as an alias of 'id' for the `$field` parameter. + * @static * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param string $field The field to query against: 'id', 'ID', 'slug', 'email' or 'login'. - * @param string|int $value The field value. - * @return object|false Raw user object. + * @param string $field The field to query against: 'id', 'ID', 'slug', 'email' or 'login'. + * @param string|int $value The field value + * @return object|false Raw user object */ public static function get_data_by( $field, $value ) { global $wpdb; @@ -204,7 +202,7 @@ public static function get_data_by( $field, $value ) { if ( ! is_numeric( $value ) ) { return false; } - $value = (int) $value; + $value = intval( $value ); if ( $value < 1 ) { return false; } @@ -247,7 +245,7 @@ public static function get_data_by( $field, $value ) { $user = $wpdb->get_row( $wpdb->prepare( - "SELECT * FROM $wpdb->users WHERE $db_field = %s LIMIT 1", + "SELECT * FROM $wpdb->users WHERE $db_field = %s", $value ) ); @@ -263,7 +261,7 @@ public static function get_data_by( $field, $value ) { /** * Magic method for checking the existence of a certain custom field. * - * @since 3.3.0 + * @since WP-3.3.0 * * @param string $key User meta key to check if set. * @return bool Whether the given user meta key is set. @@ -272,7 +270,7 @@ public function __isset( $key ) { if ( 'id' === $key ) { _deprecated_argument( 'WP_User->id', - '2.1.0', + 'WP-2.1.0', sprintf( /* translators: %s: WP_User->ID */ __( 'Use %s instead.' ), @@ -296,7 +294,7 @@ public function __isset( $key ) { /** * Magic method for accessing custom fields. * - * @since 3.3.0 + * @since WP-3.3.0 * * @param string $key User meta key to retrieve. * @return mixed Value of the given user meta key (if set). If `$key` is 'id', the user ID. @@ -305,7 +303,7 @@ public function __get( $key ) { if ( 'id' === $key ) { _deprecated_argument( 'WP_User->id', - '2.1.0', + 'WP-2.1.0', sprintf( /* translators: %s: WP_User->ID */ __( 'Use %s instead.' ), @@ -337,7 +335,7 @@ public function __get( $key ) { * This method does not update custom fields in the database. It only stores * the value on the WP_User instance. * - * @since 3.3.0 + * @since WP-3.3.0 * * @param string $key User meta key. * @param mixed $value User meta value. @@ -346,7 +344,7 @@ public function __set( $key, $value ) { if ( 'id' === $key ) { _deprecated_argument( 'WP_User->id', - '2.1.0', + 'WP-2.1.0', sprintf( /* translators: %s: WP_User->ID */ __( 'Use %s instead.' ), @@ -363,7 +361,7 @@ public function __set( $key, $value ) { /** * Magic method for unsetting a certain custom field. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $key User meta key to unset. */ @@ -371,7 +369,7 @@ public function __unset( $key ) { if ( 'id' === $key ) { _deprecated_argument( 'WP_User->id', - '2.1.0', + 'WP-2.1.0', sprintf( /* translators: %s: WP_User->ID */ __( 'Use %s instead.' ), @@ -390,9 +388,9 @@ public function __unset( $key ) { } /** - * Determines whether the user exists in the database. + * Determine whether the user exists in the database. * - * @since 3.4.0 + * @since WP-3.4.0 * * @return bool True if user exists in the database, false if not. */ @@ -401,11 +399,11 @@ public function exists() { } /** - * Retrieves the value of a property or meta key. + * Retrieve the value of a property or meta key. * * Retrieves from the users and usermeta table. * - * @since 3.3.0 + * @since WP-3.3.0 * * @param string $key Property * @return mixed @@ -415,13 +413,13 @@ public function get( $key ) { } /** - * Determines whether a property or meta key is set. + * Determine whether a property or meta key is set * * Consults the users and usermeta tables. * - * @since 3.3.0 + * @since WP-3.3.0 * - * @param string $key Property. + * @param string $key Property * @return bool */ public function has_prop( $key ) { @@ -429,9 +427,9 @@ public function has_prop( $key ) { } /** - * Returns an array representation. + * Return an array representation. * - * @since 3.5.0 + * @since WP-3.5.0 * * @return array Array representation. */ @@ -442,38 +440,38 @@ public function to_array() { /** * Makes private/protected methods readable for backward compatibility. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @param string $name Method to call. - * @param array $arguments Arguments to pass when calling. + * @param callable $name Method to call. + * @param array $arguments Arguments to pass when calling. * @return mixed|false Return value of the callback, false otherwise. */ public function __call( $name, $arguments ) { if ( '_init_caps' === $name ) { - return $this->_init_caps( ...$arguments ); + return call_user_func_array( array( $this, $name ), $arguments ); } return false; } /** - * Sets up capability object properties. + * Set up capability object properties. * * Will set the value for the 'cap_key' property to current database table * prefix, followed by 'capabilities'. Will then check to see if the * property matching the 'cap_key' exists and is an array. If so, it will be * used. * - * @since 2.1.0 - * @deprecated 4.9.0 Use WP_User::for_site() + * @since WP-2.1.0 + * @deprecated WP-4.9.0 Use WP_User::for_site() * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $cap_key Optional capability key */ protected function _init_caps( $cap_key = '' ) { global $wpdb; - _deprecated_function( __METHOD__, '4.9.0', 'WP_User::for_site()' ); + _deprecated_function( __METHOD__, 'WP-4.9.0', 'WP_User::for_site()' ); if ( empty( $cap_key ) ) { $this->cap_key = $wpdb->get_blog_prefix( $this->site_id ) . 'capabilities'; @@ -487,17 +485,16 @@ protected function _init_caps( $cap_key = '' ) { } /** - * Retrieves all of the capabilities of the user's roles, and merges them with - * individual user capabilities. + * Retrieve all of the role capabilities and merge with individual capabilities. * - * All of the capabilities of the user's roles are merged with the user's individual - * capabilities. This means that the user can be denied specific capabilities that - * their role might have, but the user is specifically denied. + * All of the capabilities of the roles the user belongs to are merged with + * the users individual roles. This also means that the user can be denied + * specific roles that their role might have, but the specific user isn't + * granted permission to. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @return bool[] Array of key/value pairs where keys represent a capability name - * and boolean values represent whether the user has that capability. + * @return array List of all capabilities for the user. */ public function get_role_caps() { $switch_site = false; @@ -509,12 +506,12 @@ public function get_role_caps() { $wp_roles = wp_roles(); - // Filter out caps that are not role names and assign to $this->roles. + //Filter out caps that are not role names and assign to $this->roles if ( is_array( $this->caps ) ) { $this->roles = array_filter( array_keys( $this->caps ), array( $wp_roles, 'is_role' ) ); } - // Build $allcaps from role caps, overlay user's $caps. + //Build $allcaps from role caps, overlay user's $caps $this->allcaps = array(); foreach ( (array) $this->roles as $role ) { $the_role = $wp_roles->get_role( $role ); @@ -530,11 +527,11 @@ public function get_role_caps() { } /** - * Adds role to user. + * Add role to user. * * Updates the user's meta data option with capabilities and roles. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. */ @@ -543,10 +540,6 @@ public function add_role( $role ) { return; } - if ( in_array( $role, $this->roles, true ) ) { - return; - } - $this->caps[ $role ] = true; update_user_meta( $this->ID, $this->cap_key, $this->caps ); $this->get_role_caps(); @@ -555,7 +548,7 @@ public function add_role( $role ) { /** * Fires immediately after the user has been given a new role. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param int $user_id The user ID. * @param string $role The new role. @@ -564,9 +557,9 @@ public function add_role( $role ) { } /** - * Removes role from user. + * Remove role from user. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. */ @@ -574,7 +567,6 @@ public function remove_role( $role ) { if ( ! in_array( $role, $this->roles, true ) ) { return; } - unset( $this->caps[ $role ] ); update_user_meta( $this->ID, $this->cap_key, $this->caps ); $this->get_role_caps(); @@ -583,7 +575,7 @@ public function remove_role( $role ) { /** * Fires immediately after a role as been removed from a user. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param int $user_id The user ID. * @param string $role The removed role. @@ -592,13 +584,13 @@ public function remove_role( $role ) { } /** - * Sets the role of the user. + * Set the role of the user. * * This will remove the previous roles of the user and assign the user the * new one. You can set the role to an empty string and it will remove all * of the roles from the user. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $role Role name. */ @@ -612,47 +604,31 @@ public function set_role( $role ) { } $old_roles = $this->roles; - if ( ! empty( $role ) ) { $this->caps[ $role ] = true; $this->roles = array( $role => true ); } else { - $this->roles = array(); + $this->roles = false; } - update_user_meta( $this->ID, $this->cap_key, $this->caps ); $this->get_role_caps(); $this->update_user_level_from_caps(); - foreach ( $old_roles as $old_role ) { - if ( ! $old_role || $old_role === $role ) { - continue; - } - - /** This action is documented in wp-includes/class-wp-user.php */ - do_action( 'remove_user_role', $this->ID, $old_role ); - } - - if ( $role && ! in_array( $role, $old_roles, true ) ) { - /** This action is documented in wp-includes/class-wp-user.php */ - do_action( 'add_user_role', $this->ID, $role ); - } - /** * Fires after the user's role has changed. * - * @since 2.9.0 - * @since 3.6.0 Added $old_roles to include an array of the user's previous roles. + * @since WP-2.9.0 + * @since WP-3.6.0 Added $old_roles to include an array of the user's previous roles. * - * @param int $user_id The user ID. - * @param string $role The new role. - * @param string[] $old_roles An array of the user's previous roles. + * @param int $user_id The user ID. + * @param string $role The new role. + * @param array $old_roles An array of the user's previous roles. */ do_action( 'set_user_role', $this->ID, $role, $old_roles ); } /** - * Chooses the maximum level the user has. + * Choose the maximum level the user has. * * Will compare the level from the $item parameter against the $max * parameter. If the item is incorrect, then just the $max parameter value @@ -663,15 +639,15 @@ public function set_role( $role ) { * then the capability 'level_10' will exist and the user will get that * value. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param int $max Max level of user. + * @param int $max Max level of user. * @param string $item Level capability name. * @return int Max Level. */ public function level_reduction( $max, $item ) { if ( preg_match( '/^level_(10|[0-9])$/i', $item, $matches ) ) { - $level = (int) $matches[1]; + $level = intval( $matches[1] ); return max( $max, $level ); } else { return $max; @@ -679,15 +655,15 @@ public function level_reduction( $max, $item ) { } /** - * Updates the maximum user level for the user. + * Update the maximum user level for the user. * * Updates the 'user_level' user metadata (includes prefix that is the * database table prefix) with the maximum user level. Gets the value from * the all of the capabilities that the user has. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. */ public function update_user_level_from_caps() { global $wpdb; @@ -696,12 +672,12 @@ public function update_user_level_from_caps() { } /** - * Adds capability and grant or deny access to capability. + * Add capability and grant or deny access to capability. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param string $cap Capability name. - * @param bool $grant Whether to grant capability to user. + * @param string $cap Capability name. + * @param bool $grant Whether to grant capability to user. */ public function add_cap( $cap, $grant = true ) { $this->caps[ $cap ] = $grant; @@ -711,9 +687,9 @@ public function add_cap( $cap, $grant = true ) { } /** - * Removes capability from user. + * Remove capability from user. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string $cap Capability name. */ @@ -728,11 +704,11 @@ public function remove_cap( $cap ) { } /** - * Removes all of the capabilities of the user. + * Remove all of the capabilities of the user. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. */ public function remove_all_caps() { global $wpdb; @@ -743,39 +719,32 @@ public function remove_all_caps() { } /** - * Returns whether the user has the specified capability. - * - * This function also accepts an ID of an object to check against if the capability is a meta capability. Meta - * capabilities such as `edit_post` and `edit_user` are capabilities used by the `map_meta_cap()` function to - * map to primitive capabilities that a user or role has, such as `edit_posts` and `edit_others_posts`. - * - * Example usage: - * - * $user->has_cap( 'edit_posts' ); - * $user->has_cap( 'edit_post', $post->ID ); - * $user->has_cap( 'edit_post_meta', $post->ID, $meta_key ); + * Whether the user has a specific capability. * * While checking against a role in place of a capability is supported in part, this practice is discouraged as it * may produce unreliable results. * - * @since 2.0.0 - * @since 5.3.0 Formalized the existing and already documented `...$args` parameter - * by adding it to the function signature. + * @since WP-2.0.0 * * @see map_meta_cap() * - * @param string $cap Capability name. - * @param mixed ...$args Optional further parameters, typically starting with an object ID. - * @return bool Whether the user has the given capability, or, if an object ID is passed, whether the user has + * @param string $cap Capability name. + * @param int $object_id,... Optional. ID of a specific object to check against if `$cap` is a "meta" capability. + * Meta capabilities such as `edit_post` and `edit_user` are capabilities used by + * by the `map_meta_cap()` function to map to primitive capabilities that a user or + * role has, such as `edit_posts` and `edit_others_posts`. + * @return bool Whether the user has the given capability, or, if `$object_id` is passed, whether the user has * the given capability for that object. */ - public function has_cap( $cap, ...$args ) { + public function has_cap( $cap ) { if ( is_numeric( $cap ) ) { - _deprecated_argument( __FUNCTION__, '2.0.0', __( 'Usage of user levels is deprecated. Use capabilities instead.' ) ); + _deprecated_argument( __FUNCTION__, 'WP-2.0.0', __( 'Usage of user levels is deprecated. Use capabilities instead.' ) ); $cap = $this->translate_level_to_cap( $cap ); } - $caps = map_meta_cap( $cap, $this->ID, ...$args ); + $args = array_slice( func_get_args(), 1 ); + $args = array_merge( array( $cap, $this->ID ), $args ); + $caps = call_user_func_array( 'map_meta_cap', $args ); // Multisite super admin has all caps by definition, Unless specifically denied. if ( is_multisite() && is_super_admin( $this->ID ) ) { @@ -785,26 +754,16 @@ public function has_cap( $cap, ...$args ) { return true; } - // Maintain BC for the argument passed to the "user_has_cap" filter. - $args = array_merge( array( $cap, $this->ID ), $args ); - /** * Dynamically filter a user's capabilities. * - * @since 2.0.0 - * @since 3.7.0 Added the `$user` parameter. + * @since WP-2.0.0 + * @since WP-3.7.0 Added the user object. * - * @param bool[] $allcaps Array of key/value pairs where keys represent a capability name - * and boolean values represent whether the user has that capability. - * @param string[] $caps Required primitive capabilities for the requested capability. - * @param array $args { - * Arguments that accompany the requested capability check. - * - * @type string $0 Requested capability. - * @type int $1 Concerned user ID. - * @type mixed ...$2 Optional second and further parameters, typically object ID. - * } - * @param WP_User $user The user object. + * @param array $allcaps An array of all the user's capabilities. + * @param array $caps Actual capabilities for meta capability. + * @param array $args Optional parameters passed to has_cap(), typically object ID. + * @param WP_User $user The user object. */ $capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args, $this ); @@ -825,11 +784,11 @@ public function has_cap( $cap, ...$args ) { } /** - * Converts numeric level to level capability name. + * Convert numeric level to level capability name. * * Prepends 'level_' to level number. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param int $level Level number, 1 to 10. * @return string @@ -839,15 +798,17 @@ public function translate_level_to_cap( $level ) { } /** - * Sets the site to operate on. Defaults to the current site. + * Set the site to operate on. Defaults to the current site. + * + * @since WP-3.0.0 + * @deprecated WP-4.9.0 Use WP_User::for_site() * - * @since 3.0.0 - * @deprecated 4.9.0 Use WP_User::for_site() + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $blog_id Optional. Site ID, defaults to current site. */ public function for_blog( $blog_id = '' ) { - _deprecated_function( __METHOD__, '4.9.0', 'WP_User::for_site()' ); + _deprecated_function( __METHOD__, 'WP-4.9.0', 'WP_User::for_site()' ); $this->for_site( $blog_id ); } @@ -855,9 +816,9 @@ public function for_blog( $blog_id = '' ) { /** * Sets the site to operate on. Defaults to the current site. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $site_id Site ID to initialize user capabilities for. Default is the current site. */ @@ -880,7 +841,7 @@ public function for_site( $site_id = '' ) { /** * Gets the ID of the site for which the user's capabilities are currently initialized. * - * @since 4.9.0 + * @since WP-4.9.0 * * @return int Site ID. */ @@ -891,10 +852,9 @@ public function get_site_id() { /** * Gets the available user capabilities data. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @return bool[] List of capabilities keyed by the capability name, - * e.g. array( 'edit_posts' => true, 'delete_posts' => false ). + * @return array User capabilities array. */ private function get_caps_data() { $caps = get_user_meta( $this->ID, $this->cap_key, true ); diff --git a/wp-includes/class-wp-walker.php b/wp-includes/class-wp-walker.php index 789c690..da1af93 100644 --- a/wp-includes/class-wp-walker.php +++ b/wp-includes/class-wp-walker.php @@ -6,17 +6,16 @@ * do not need to implement all of the abstract methods in the class. The child * only needs to implement the methods that are needed. * - * @since 2.1.0 + * @since WP-2.1.0 * * @package ClassicPress * @abstract */ -#[AllowDynamicProperties] class Walker { /** * What the class handles. * - * @since 2.1.0 + * @since WP-2.1.0 * @var string */ public $tree_type; @@ -24,15 +23,15 @@ class Walker { /** * DB fields to use. * - * @since 2.1.0 - * @var string[] + * @since WP-2.1.0 + * @var array */ public $db_fields; /** - * Max number of pages walked by the paged walker. + * Max number of pages walked by the paged walker * - * @since 2.7.0 + * @since WP-2.7.0 * @var int */ public $max_pages = 1; @@ -42,7 +41,7 @@ class Walker { * * To be used in start_el(). * - * @since 4.0.0 + * @since WP-4.0.0 * @var bool */ public $has_children; @@ -53,7 +52,7 @@ class Walker { * The $args parameter holds additional values that may be used with the child * class methods. This method is called at the start of the output list. * - * @since 2.1.0 + * @since WP-2.1.0 * @abstract * * @param string $output Used to append additional content (passed by reference). @@ -68,7 +67,7 @@ public function start_lvl( &$output, $depth = 0, $args = array() ) {} * The $args parameter holds additional values that may be used with the child * class methods. This method finishes the list at the end of output of the elements. * - * @since 2.1.0 + * @since WP-2.1.0 * @abstract * * @param string $output Used to append additional content (passed by reference). @@ -78,41 +77,39 @@ public function start_lvl( &$output, $depth = 0, $args = array() ) {} public function end_lvl( &$output, $depth = 0, $args = array() ) {} /** - * Starts the element output. + * Start the element output. * * The $args parameter holds additional values that may be used with the child - * class methods. Also includes the element output. + * class methods. Includes the element output also. * - * @since 2.1.0 - * @since 5.9.0 Renamed `$object` (a PHP reserved keyword) to `$data_object` for PHP 8 named parameter support. + * @since WP-2.1.0 * @abstract * * @param string $output Used to append additional content (passed by reference). - * @param object $data_object The data object. + * @param object $object The data object. * @param int $depth Depth of the item. * @param array $args An array of additional arguments. - * @param int $current_object_id Optional. ID of the current item. Default 0. + * @param int $current_object_id ID of the current item. */ - public function start_el( &$output, $data_object, $depth = 0, $args = array(), $current_object_id = 0 ) {} + public function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) {} /** * Ends the element output, if needed. * * The $args parameter holds additional values that may be used with the child class methods. * - * @since 2.1.0 - * @since 5.9.0 Renamed `$object` (a PHP reserved keyword) to `$data_object` for PHP 8 named parameter support. + * @since WP-2.1.0 * @abstract * - * @param string $output Used to append additional content (passed by reference). - * @param object $data_object The data object. - * @param int $depth Depth of the item. - * @param array $args An array of additional arguments. + * @param string $output Used to append additional content (passed by reference). + * @param object $object The data object. + * @param int $depth Depth of the item. + * @param array $args An array of additional arguments. */ - public function end_el( &$output, $data_object, $depth = 0, $args = array() ) {} + public function end_el( &$output, $object, $depth = 0, $args = array() ) {} /** - * Traverses elements to create list from elements. + * Traverse elements to create list from elements. * * Display one element if the element doesn't have any children otherwise, * display the element and its children. Will only traverse up to the max @@ -121,7 +118,7 @@ public function end_el( &$output, $data_object, $depth = 0, $args = array() ) {} * * This method should not be called directly, use the walk() method instead. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param object $element Data object. * @param array $children_elements List of elements to continue traversing (passed by reference). @@ -138,23 +135,25 @@ public function display_element( $element, &$children_elements, $max_depth, $dep $id_field = $this->db_fields['id']; $id = $element->$id_field; - // Display this element. + //display this element $this->has_children = ! empty( $children_elements[ $id ] ); if ( isset( $args[0] ) && is_array( $args[0] ) ) { $args[0]['has_children'] = $this->has_children; // Back-compat. } - $this->start_el( $output, $element, $depth, ...array_values( $args ) ); + $cb_args = array_merge( array( &$output, $element, $depth ), $args ); + call_user_func_array( array( $this, 'start_el' ), $cb_args ); - // Descend only when the depth is right and there are children for this element. + // Descend only when the depth is right and there are childrens for this element. if ( ( 0 == $max_depth || $max_depth > $depth + 1 ) && isset( $children_elements[ $id ] ) ) { foreach ( $children_elements[ $id ] as $child ) { if ( ! isset( $newlevel ) ) { $newlevel = true; - // Start the child delimiter. - $this->start_lvl( $output, $depth, ...array_values( $args ) ); + //start the child delimiter + $cb_args = array_merge( array( &$output, $depth ), $args ); + call_user_func_array( array( $this, 'start_lvl' ), $cb_args ); } $this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output ); } @@ -162,16 +161,18 @@ public function display_element( $element, &$children_elements, $max_depth, $dep } if ( isset( $newlevel ) && $newlevel ) { - // End the child delimiter. - $this->end_lvl( $output, $depth, ...array_values( $args ) ); + //end the child delimiter + $cb_args = array_merge( array( &$output, $depth ), $args ); + call_user_func_array( array( $this, 'end_lvl' ), $cb_args ); } - // End this element. - $this->end_el( $output, $element, $depth, ...array_values( $args ) ); + //end this element + $cb_args = array_merge( array( &$output, $element, $depth ), $args ); + call_user_func_array( array( $this, 'end_el' ), $cb_args ); } /** - * Displays array of elements hierarchically. + * Display array of elements hierarchically. * * Does not assume any existing order of elements. * @@ -179,26 +180,24 @@ public function display_element( $element, &$children_elements, $max_depth, $dep * $max_depth = 0 means display all levels. * $max_depth > 0 specifies the number of display levels. * - * @since 2.1.0 - * @since 5.3.0 Formalized the existing `...$args` parameter by adding it - * to the function signature. + * @since WP-2.1.0 * * @param array $elements An array of elements. * @param int $max_depth The maximum hierarchical depth. - * @param mixed ...$args Optional additional arguments. * @return string The hierarchical item output. */ - public function walk( $elements, $max_depth, ...$args ) { + public function walk( $elements, $max_depth ) { + $args = array_slice( func_get_args(), 2 ); $output = ''; - // Invalid parameter or nothing to walk. + //invalid parameter or nothing to walk if ( $max_depth < -1 || empty( $elements ) ) { return $output; } $parent_field = $this->db_fields['parent']; - // Flat display. + // flat display if ( -1 == $max_depth ) { $empty_array = array(); foreach ( $elements as $e ) { @@ -210,7 +209,7 @@ public function walk( $elements, $max_depth, ...$args ) { /* * Need to display in hierarchical order. * Separate elements into two buckets: top level and children elements. - * Children_elements is two dimensional array. Example: + * Children_elements is two dimensional array, eg. * Children_elements[10][] contains all sub-elements whose parent is 10. */ $top_level_elements = array(); @@ -260,11 +259,11 @@ public function walk( $elements, $max_depth, ...$args ) { } } - return $output; + return $output; } /** - * Produces a page of nested elements. + * paged_walk() - produce a page of nested elements * * Given an array of hierarchical elements, the maximum depth, a specific page number, * and number of elements per page, this function first determines all top level root elements @@ -273,22 +272,20 @@ public function walk( $elements, $max_depth, ...$args ) { * $max_depth = 0 means display all levels. * $max_depth > 0 specifies the number of display levels. * - * @since 2.7.0 - * @since 5.3.0 Formalized the existing `...$args` parameter by adding it - * to the function signature. + * @since WP-2.7.0 * - * @param array $elements An array of elements. + * @param array $elements * @param int $max_depth The maximum hierarchical depth. - * @param int $page_num The specific page number, beginning with 1. - * @param int $per_page Number of elements per page. - * @param mixed ...$args Optional additional arguments. - * @return string XHTML of the specified page of elements. + * @param int $page_num The specific page number, beginning with 1. + * @param int $per_page + * @return string XHTML of the specified page of elements */ - public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$args ) { + public function paged_walk( $elements, $max_depth, $page_num, $per_page ) { if ( empty( $elements ) || $max_depth < -1 ) { return ''; } + $args = array_slice( func_get_args(), 4 ); $output = ''; $parent_field = $this->db_fields['parent']; @@ -298,7 +295,7 @@ public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$arg $total_top = count( $elements ); } if ( $page_num < 1 || $per_page < 0 ) { - // No paging. + // No paging $paging = false; $start = 0; if ( -1 == $max_depth ) { @@ -314,7 +311,7 @@ public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$arg } } - // Flat display. + // flat display if ( -1 == $max_depth ) { if ( ! empty( $args[0]['reverse_top_level'] ) ) { $elements = array_reverse( $elements ); @@ -345,7 +342,7 @@ public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$arg $top_level_elements = array(); $children_elements = array(); foreach ( $elements as $e ) { - if ( empty( $e->$parent_field ) ) { + if ( 0 == $e->$parent_field ) { $top_level_elements[] = $e; } else { $children_elements[ $e->$parent_field ][] = $e; @@ -405,7 +402,7 @@ public function paged_walk( $elements, $max_depth, $page_num, $per_page, ...$arg /** * Calculates the total number of root elements. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param array $elements Elements to list. * @return int Number of root elements. @@ -415,7 +412,7 @@ public function get_number_of_root_elements( $elements ) { $parent_field = $this->db_fields['parent']; foreach ( $elements as $e ) { - if ( empty( $e->$parent_field ) ) { + if ( 0 == $e->$parent_field ) { $num++; } } @@ -423,20 +420,20 @@ public function get_number_of_root_elements( $elements ) { } /** - * Unsets all the children for a given top level element. + * Unset all the children for a given top level element. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param object $element The top level element. - * @param array $children_elements The children elements. + * @param object $e + * @param array $children_elements */ - public function unset_children( $element, &$children_elements ) { - if ( ! $element || ! $children_elements ) { + public function unset_children( $e, &$children_elements ) { + if ( ! $e || ! $children_elements ) { return; } $id_field = $this->db_fields['id']; - $id = $element->$id_field; + $id = $e->$id_field; if ( ! empty( $children_elements[ $id ] ) && is_array( $children_elements[ $id ] ) ) { foreach ( (array) $children_elements[ $id ] as $child ) { @@ -446,4 +443,5 @@ public function unset_children( $element, &$children_elements ) { unset( $children_elements[ $id ] ); } -} + +} // Walker diff --git a/wp-includes/class-wp-widget-factory.php b/wp-includes/class-wp-widget-factory.php index a3b5fc5..3cde435 100644 --- a/wp-includes/class-wp-widget-factory.php +++ b/wp-includes/class-wp-widget-factory.php @@ -4,22 +4,21 @@ * * @package ClassicPress * @subpackage Widgets - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Singleton that registers and instantiates WP_Widget classes. * - * @since 2.8.0 - * @since 4.4.0 Moved to its own file from wp-includes/widgets.php + * @since WP-2.8.0 + * @since WP-4.4.0 Moved to its own file from wp-includes/widgets.php */ -#[AllowDynamicProperties] class WP_Widget_Factory { /** * Widgets array. * - * @since 2.8.0 + * @since WP-2.8.0 * @var array */ public $widgets = array(); @@ -27,7 +26,7 @@ class WP_Widget_Factory { /** * PHP5 constructor. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function __construct() { add_action( 'widgets_init', array( $this, '_register_widgets' ), 100 ); @@ -36,28 +35,67 @@ public function __construct() { /** * PHP4 constructor. * - * @since 2.8.0 - * @deprecated 4.3.0 Use __construct() instead. - * - * @see WP_Widget_Factory::__construct() + * @since WP-2.8.0 */ public function WP_Widget_Factory() { - _deprecated_constructor( 'WP_Widget_Factory', '4.3.0' ); + _deprecated_constructor( 'WP_Widget_Factory', 'WP-4.2.0' ); self::__construct(); } + /** + * Memory for the number of times unique class instances have been hashed. + * + * This can be eliminated in favor of straight spl_object_hash() when 5.3 + * is the minimum requirement for PHP. + * + * @since WP-4.6.0 + * @var array + * + * @see WP_Widget_Factory::hash_object() + */ + private $hashed_class_counts = array(); + + /** + * Hashes an object, doing fallback of `spl_object_hash()` if not available. + * + * This can be eliminated in favor of straight spl_object_hash() when 5.3 + * is the minimum requirement for PHP. + * + * @since WP-4.6.0 + * + * @param WP_Widget $widget Widget. + * @return string Object hash. + */ + private function hash_object( $widget ) { + if ( function_exists( 'spl_object_hash' ) ) { + return spl_object_hash( $widget ); + } else { + $class_name = get_class( $widget ); + $hash = $class_name; + if ( ! isset( $widget->_wp_widget_factory_hash_id ) ) { + if ( ! isset( $this->hashed_class_counts[ $class_name ] ) ) { + $this->hashed_class_counts[ $class_name ] = 0; + } + $this->hashed_class_counts[ $class_name ] += 1; + $widget->_wp_widget_factory_hash_id = $this->hashed_class_counts[ $class_name ]; + } + $hash .= ':' . $widget->_wp_widget_factory_hash_id; + return $hash; + } + } + /** * Registers a widget subclass. * - * @since 2.8.0 - * @since 4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object + * @since WP-2.8.0 + * @since WP-4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object * instead of simply a `WP_Widget` subclass name. * * @param string|WP_Widget $widget Either the name of a `WP_Widget` subclass or an instance of a `WP_Widget` subclass. */ public function register( $widget ) { if ( $widget instanceof WP_Widget ) { - $this->widgets[ spl_object_hash( $widget ) ] = $widget; + $this->widgets[ $this->hash_object( $widget ) ] = $widget; } else { $this->widgets[ $widget ] = new $widget(); } @@ -66,15 +104,15 @@ public function register( $widget ) { /** * Un-registers a widget subclass. * - * @since 2.8.0 - * @since 4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object + * @since WP-2.8.0 + * @since WP-4.6.0 Updated the `$widget` parameter to also accept a WP_Widget instance object * instead of simply a `WP_Widget` subclass name. * * @param string|WP_Widget $widget Either the name of a `WP_Widget` subclass or an instance of a `WP_Widget` subclass. */ public function unregister( $widget ) { if ( $widget instanceof WP_Widget ) { - unset( $this->widgets[ spl_object_hash( $widget ) ] ); + unset( $this->widgets[ $this->hash_object( $widget ) ] ); } else { unset( $this->widgets[ $widget ] ); } @@ -83,7 +121,7 @@ public function unregister( $widget ) { /** * Serves as a utility method for adding widgets to the registered widgets global. * - * @since 2.8.0 + * @since WP-2.8.0 * * @global array $wp_registered_widgets */ @@ -94,7 +132,7 @@ public function _register_widgets() { $registered = array_map( '_get_widget_id_base', $registered ); foreach ( $keys as $key ) { - // Don't register new widget if old widget with the same id is already registered. + // don't register new widget if old widget with the same id is already registered if ( in_array( $this->widgets[ $key ]->id_base, $registered, true ) ) { unset( $this->widgets[ $key ] ); continue; @@ -103,39 +141,4 @@ public function _register_widgets() { $this->widgets[ $key ]->_register(); } } - - /** - * Returns the registered WP_Widget object for the given widget type. - * - * @since 5.8.0 - * - * @param string $id_base Widget type ID. - * @return WP_Widget|null - */ - public function get_widget_object( $id_base ) { - $key = $this->get_widget_key( $id_base ); - if ( '' === $key ) { - return null; - } - - return $this->widgets[ $key ]; - } - - /** - * Returns the registered key for the given widget type. - * - * @since 5.8.0 - * - * @param string $id_base Widget type ID. - * @return string - */ - public function get_widget_key( $id_base ) { - foreach ( $this->widgets as $key => $widget_object ) { - if ( $widget_object->id_base === $id_base ) { - return $key; - } - } - - return ''; - } } diff --git a/wp-includes/class-wp-widget.php b/wp-includes/class-wp-widget.php index 0f3a476..94f155c 100644 --- a/wp-includes/class-wp-widget.php +++ b/wp-includes/class-wp-widget.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Widgets - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -14,16 +14,15 @@ * * If adding widget options, WP_Widget::update() and WP_Widget::form() should also be overridden. * - * @since 2.8.0 - * @since 4.4.0 Moved to its own file from wp-includes/widgets.php + * @since WP-2.8.0 + * @since WP-4.4.0 Moved to its own file from wp-includes/widgets.php */ -#[AllowDynamicProperties] class WP_Widget { /** * Root ID for all widgets of this type. * - * @since 2.8.0 + * @since WP-2.8.0 * @var mixed|string */ public $id_base; @@ -31,7 +30,7 @@ class WP_Widget { /** * Name for this widget type. * - * @since 2.8.0 + * @since WP-2.8.0 * @var string */ public $name; @@ -39,7 +38,7 @@ class WP_Widget { /** * Option name for this widget type. * - * @since 2.8.0 + * @since WP-2.8.0 * @var string */ public $option_name; @@ -47,7 +46,7 @@ class WP_Widget { /** * Alt option name for this widget type. * - * @since 2.8.0 + * @since WP-2.8.0 * @var string */ public $alt_option_name; @@ -55,7 +54,7 @@ class WP_Widget { /** * Option array passed to wp_register_sidebar_widget(). * - * @since 2.8.0 + * @since WP-2.8.0 * @var array */ public $widget_options; @@ -63,7 +62,7 @@ class WP_Widget { /** * Option array passed to wp_register_widget_control(). * - * @since 2.8.0 + * @since WP-2.8.0 * @var array */ public $control_options; @@ -71,7 +70,7 @@ class WP_Widget { /** * Unique ID number of the current instance. * - * @since 2.8.0 + * @since WP-2.8.0 * @var bool|int */ public $number = false; @@ -79,7 +78,7 @@ class WP_Widget { /** * Unique ID string of the current instance (id_base-number). * - * @since 2.8.0 + * @since WP-2.8.0 * @var bool|string */ public $id = false; @@ -90,7 +89,7 @@ class WP_Widget { * Set to true when the data is updated after a POST submit - ensures it does * not happen twice. * - * @since 2.8.0 + * @since WP-2.8.0 * @var bool */ public $updated = false; @@ -102,16 +101,16 @@ class WP_Widget { /** * Echoes the widget content. * - * Subclasses should override this function to generate their widget code. + * Sub-classes should over-ride this function to generate their widget code. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $args Display arguments including 'before_title', 'after_title', * 'before_widget', and 'after_widget'. * @param array $instance The settings for the particular instance of the widget. */ public function widget( $args, $instance ) { - die( 'function WP_Widget::widget() must be overridden in a subclass.' ); + die( 'function WP_Widget::widget() must be over-ridden in a sub-class.' ); } /** @@ -121,7 +120,7 @@ public function widget( $args, $instance ) { * value of `$instance` should be returned. If false is returned, the instance won't be * saved/updated. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $new_instance New settings for this instance as input by the user via * WP_Widget::form(). @@ -135,7 +134,7 @@ public function update( $new_instance, $old_instance ) { /** * Outputs the settings update form. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $instance Current settings. * @return string Default return is 'noform'. @@ -150,30 +149,24 @@ public function form( $instance ) { /** * PHP5 constructor. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string $id_base Base ID for the widget, lowercase and unique. If left empty, - * a portion of the widget's PHP class name will be used. Has to be unique. + * @param string $id_base Optional Base ID for the widget, lowercase and unique. If left empty, + * a portion of the widget's class name will be used Has to be unique. * @param string $name Name for the widget displayed on the configuration page. - * @param array $widget_options Optional. Widget options. See wp_register_sidebar_widget() for - * information on accepted arguments. Default empty array. + * @param array $widget_options Optional. Widget options. See wp_register_sidebar_widget() for information + * on accepted arguments. Default empty array. * @param array $control_options Optional. Widget control options. See wp_register_widget_control() for * information on accepted arguments. Default empty array. */ public function __construct( $id_base, $name, $widget_options = array(), $control_options = array() ) { - if ( ! empty( $id_base ) ) { - $id_base = strtolower( $id_base ); - } else { - $id_base = preg_replace( '/(wp_)?widget_/', '', strtolower( get_class( $this ) ) ); - } - - $this->id_base = $id_base; + $this->id_base = empty( $id_base ) ? preg_replace( '/(wp_)?widget_/', '', strtolower( get_class( $this ) ) ) : strtolower( $id_base ); $this->name = $name; $this->option_name = 'widget_' . $this->id_base; $this->widget_options = wp_parse_args( $widget_options, array( - 'classname' => str_replace( '\\', '_', $this->option_name ), + 'classname' => $this->option_name, 'customize_selective_refresh' => false, ) ); @@ -183,21 +176,20 @@ public function __construct( $id_base, $name, $widget_options = array(), $contro /** * PHP4 constructor. * - * @since 2.8.0 - * @deprecated 4.3.0 Use __construct() instead. + * @since WP-2.8.0 * - * @see WP_Widget::__construct() + * @see __construct() * - * @param string $id_base Base ID for the widget, lowercase and unique. If left empty, - * a portion of the widget's PHP class name will be used. Has to be unique. + * @param string $id_base Optional Base ID for the widget, lowercase and unique. If left empty, + * a portion of the widget's class name will be used Has to be unique. * @param string $name Name for the widget displayed on the configuration page. - * @param array $widget_options Optional. Widget options. See wp_register_sidebar_widget() for - * information on accepted arguments. Default empty array. + * @param array $widget_options Optional. Widget options. See wp_register_sidebar_widget() for information + * on accepted arguments. Default empty array. * @param array $control_options Optional. Widget control options. See wp_register_widget_control() for * information on accepted arguments. Default empty array. */ public function WP_Widget( $id_base, $name, $widget_options = array(), $control_options = array() ) { - _deprecated_constructor( 'WP_Widget', '4.3.0', get_class( $this ) ); + _deprecated_constructor( 'WP_Widget', 'WP-4.3.0', get_class( $this ) ); WP_Widget::__construct( $id_base, $name, $widget_options, $control_options ); } @@ -207,23 +199,19 @@ public function WP_Widget( $id_base, $name, $widget_options = array(), $control_ * This function should be used in form() methods to create name attributes for fields * to be saved by update() * - * @since 2.8.0 - * @since 4.4.0 Array format field names are now accepted. + * @since WP-2.8.0 + * @since WP-4.4.0 Array format field names are now accepted. * - * @param string $field_name Field name. - * @return string Name attribute for `$field_name`. + * @param string $field_name Field name + * @return string Name attribute for $field_name */ public function get_field_name( $field_name ) { $pos = strpos( $field_name, '[' ); - - if ( false !== $pos ) { - // Replace the first occurrence of '[' with ']['. - $field_name = '[' . substr_replace( $field_name, '][', $pos, strlen( '[' ) ); + if ( false === $pos ) { + return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']'; } else { - $field_name = '[' . $field_name . ']'; + return 'widget-' . $this->id_base . '[' . $this->number . '][' . substr_replace( $field_name, '][', $pos, strlen( '[' ) ); } - - return 'widget-' . $this->id_base . '[' . $this->number . ']' . $field_name; } /** @@ -232,23 +220,20 @@ public function get_field_name( $field_name ) { * This function should be used in form() methods to create id attributes * for fields to be saved by WP_Widget::update(). * - * @since 2.8.0 - * @since 4.4.0 Array format field IDs are now accepted. + * @since WP-2.8.0 + * @since WP-4.4.0 Array format field IDs are now accepted. * * @param string $field_name Field name. * @return string ID attribute for `$field_name`. */ public function get_field_id( $field_name ) { - $field_name = str_replace( array( '[]', '[', ']' ), array( '', '-', '' ), $field_name ); - $field_name = trim( $field_name, '-' ); - - return 'widget-' . $this->id_base . '-' . $this->number . '-' . $field_name; + return 'widget-' . $this->id_base . '-' . $this->number . '-' . trim( str_replace( array( '[]', '[', ']' ), array( '', '-', '' ), $field_name ), '-' ); } /** * Register all widget instances of this widget class. * - * @since 2.8.0 + * @since WP-2.8.0 */ public function _register() { $settings = $this->get_settings(); @@ -279,7 +264,7 @@ public function _register() { /** * Sets the internal order number for the widget instance. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param int $number The unique order number of this widget instance compared to other * instances of the same class. @@ -292,7 +277,7 @@ public function _set( $number ) { /** * Retrieves the widget display callback. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return callable Display callback. */ @@ -303,7 +288,7 @@ public function _get_display_callback() { /** * Retrieves the widget update callback. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return callable Update callback. */ @@ -314,7 +299,7 @@ public function _get_update_callback() { /** * Retrieves the form callback. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return callable Form callback. */ @@ -330,7 +315,7 @@ public function _get_form_callback() { * whether they should store anything persistently to the object cache, * to transients, or anywhere else. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global WP_Customize_Manager $wp_customize * @@ -346,7 +331,7 @@ public function is_preview() { * * Finds the instance and calls WP_Widget::widget(). * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $args Display arguments. See WP_Widget::widget() for information * on accepted arguments. @@ -366,7 +351,7 @@ public function display_callback( $args, $widget_args = 1 ) { $this->_set( $widget_args['number'] ); $instances = $this->get_settings(); - if ( isset( $instances[ $this->number ] ) ) { + if ( array_key_exists( $this->number, $instances ) ) { $instance = $instances[ $this->number ]; /** @@ -374,10 +359,10 @@ public function display_callback( $args, $widget_args = 1 ) { * * Returning false will effectively short-circuit display of the widget. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $instance The current widget instance's settings. - * @param WP_Widget $widget The current widget instance. + * @param WP_Widget $this The current widget instance. * @param array $args An array of default widget arguments. */ $instance = apply_filters( 'widget_display_callback', $instance, $this, $args ); @@ -402,7 +387,7 @@ public function display_callback( $args, $widget_args = 1 ) { /** * Handles changed settings (Do NOT override). * - * @since 2.8.0 + * @since WP-2.8.0 * * @global array $wp_registered_widgets * @@ -413,13 +398,13 @@ public function update_callback( $deprecated = 1 ) { $all_instances = $this->get_settings(); - // We need to update the data. + // We need to update the data if ( $this->updated ) { return; } if ( isset( $_POST['delete_widget'] ) && $_POST['delete_widget'] ) { - // Delete the settings for this instance of the widget. + // Delete the settings for this instance of the widget if ( isset( $_POST['the-widget-id'] ) ) { $del_id = $_POST['the-widget-id']; } else { @@ -466,20 +451,19 @@ public function update_callback( $deprecated = 1 ) { * Returning false will effectively short-circuit the widget's ability * to update settings. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $instance The current widget instance's settings. * @param array $new_instance Array of new widget settings. * @param array $old_instance Array of old widget settings. - * @param WP_Widget $widget The current widget instance. + * @param WP_Widget $this The current widget instance. */ $instance = apply_filters( 'widget_update_callback', $instance, $new_instance, $old_instance, $this ); - if ( false !== $instance ) { $all_instances[ $number ] = $instance; } - break; // Run only once. + break; // run only once } } @@ -490,7 +474,7 @@ public function update_callback( $deprecated = 1 ) { /** * Generates the widget control form (Do NOT override). * - * @since 2.8.0 + * @since WP-2.8.0 * * @param int|array $widget_args { * Optional. Internal order number of the widget instance, or array of multi-widget arguments. @@ -509,7 +493,7 @@ public function form_callback( $widget_args = 1 ) { $all_instances = $this->get_settings(); if ( -1 == $widget_args['number'] ) { - // We echo out a form where 'number' can be set later. + // We echo out a form where 'number' can be set later $this->_set( '__i__' ); $instance = array(); } else { @@ -522,15 +506,14 @@ public function form_callback( $widget_args = 1 ) { * * Returning false effectively short-circuits display of the control form. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $instance The current widget instance's settings. - * @param WP_Widget $widget The current widget instance. + * @param WP_Widget $this The current widget instance. */ $instance = apply_filters( 'widget_form_callback', $instance, $this ); $return = null; - if ( false !== $instance ) { $return = $this->form( $instance ); @@ -544,55 +527,35 @@ public function form_callback( $widget_args = 1 ) { * Note: If the widget has no form, the text echoed from the default * form method can be hidden using CSS. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param WP_Widget $widget The widget instance (passed by reference). + * @param WP_Widget $this The widget instance (passed by reference). * @param null $return Return null if new fields are added. * @param array $instance An array of the widget's settings. */ do_action_ref_array( 'in_widget_form', array( &$this, &$return, $instance ) ); } - return $return; } /** * Registers an instance of the widget class. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param int $number Optional. The unique order number of this widget instance - * compared to other instances of the same class. Default -1. + * @param integer $number Optional. The unique order number of this widget instance + * compared to other instances of the same class. Default -1. */ public function _register_one( $number = -1 ) { - wp_register_sidebar_widget( - $this->id, - $this->name, - $this->_get_display_callback(), - $this->widget_options, - array( 'number' => $number ) - ); - - _register_widget_update_callback( - $this->id_base, - $this->_get_update_callback(), - $this->control_options, - array( 'number' => -1 ) - ); - - _register_widget_form_callback( - $this->id, - $this->name, - $this->_get_form_callback(), - $this->control_options, - array( 'number' => $number ) - ); + wp_register_sidebar_widget( $this->id, $this->name, $this->_get_display_callback(), $this->widget_options, array( 'number' => $number ) ); + _register_widget_update_callback( $this->id_base, $this->_get_update_callback(), $this->control_options, array( 'number' => -1 ) ); + _register_widget_form_callback( $this->id, $this->name, $this->_get_form_callback(), $this->control_options, array( 'number' => $number ) ); } /** * Saves the settings for all instances of the widget class. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param array $settings Multi-dimensional array of widget instance settings. */ @@ -604,7 +567,7 @@ public function save_settings( $settings ) { /** * Retrieves the settings for all instances of the widget class. * - * @since 2.8.0 + * @since WP-2.8.0 * * @return array Multi-dimensional array of widget instance settings. */ @@ -613,16 +576,12 @@ public function get_settings() { $settings = get_option( $this->option_name ); if ( false === $settings ) { - $settings = array(); if ( isset( $this->alt_option_name ) ) { - // Get settings from alternative (legacy) option. - $settings = get_option( $this->alt_option_name, array() ); - - // Delete the alternative (legacy) option as the new option will be created using `$this->option_name`. - delete_option( $this->alt_option_name ); + $settings = get_option( $this->alt_option_name ); + } else { + // Save an option so it can be autoloaded next time. + $this->save_settings( array() ); } - // Save an option so it can be autoloaded next time. - $this->save_settings( $settings ); } if ( ! is_array( $settings ) && ! ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) ) { @@ -635,7 +594,6 @@ public function get_settings() { } unset( $settings['_multiwidget'], $settings['__i__'] ); - return $settings; } } diff --git a/wp-includes/class-wp-xmlrpc-server.php b/wp-includes/class-wp-xmlrpc-server.php index 93c35f0..9c2c0d9 100644 --- a/wp-includes/class-wp-xmlrpc-server.php +++ b/wp-includes/class-wp-xmlrpc-server.php @@ -14,13 +14,12 @@ * options, etc. * * As of WordPress 3.5.0, XML-RPC is enabled by default. It can be disabled - * via the {@see 'xmlrpc_enabled'} filter found in wp_xmlrpc_server::set_is_enabled(). + * via the {@see 'xmlrpc_enabled'} filter found in wp_xmlrpc_server::login(). * - * @since 1.5.0 + * @since WP-1.5.0 * * @see IXR_Server */ -#[AllowDynamicProperties] class wp_xmlrpc_server extends IXR_Server { /** * Methods. @@ -50,25 +49,18 @@ class wp_xmlrpc_server extends IXR_Server { */ protected $auth_failed = false; - /** - * Flags that XML-RPC is enabled - * - * @var bool - */ - private $is_enabled; - /** * Registers all of the XMLRPC methods that XMLRPC server understands. * - * Sets up server and method property. Passes XMLRPC methods through the - * {@see 'xmlrpc_methods'} filter to allow plugins to extend or replace - * XML-RPC methods. + * Sets up server and method property. Passes XMLRPC + * methods through the {@see 'xmlrpc_methods'} filter to allow plugins to extend + * or replace XML-RPC methods. * - * @since 1.5.0 + * @since WP-1.5.0 */ public function __construct() { $this->methods = array( - // ClassicPress API. + // ClassicPress API 'wp.getUsersBlogs' => 'this:wp_getUsersBlogs', 'wp.newPost' => 'this:wp_newPost', 'wp.editPost' => 'this:wp_editPost', @@ -93,13 +85,13 @@ public function __construct() { 'wp.editPage' => 'this:wp_editPage', 'wp.getPageList' => 'this:wp_getPageList', 'wp.getAuthors' => 'this:wp_getAuthors', - 'wp.getCategories' => 'this:mw_getCategories', // Alias. + 'wp.getCategories' => 'this:mw_getCategories', // Alias 'wp.getTags' => 'this:wp_getTags', 'wp.newCategory' => 'this:wp_newCategory', 'wp.deleteCategory' => 'this:wp_deleteCategory', 'wp.suggestCategories' => 'this:wp_suggestCategories', - 'wp.uploadFile' => 'this:mw_newMediaObject', // Alias. - 'wp.deleteFile' => 'this:wp_deletePost', // Alias. + 'wp.uploadFile' => 'this:mw_newMediaObject', // Alias + 'wp.deleteFile' => 'this:wp_deletePost', // Alias 'wp.getCommentCount' => 'this:wp_getCommentCount', 'wp.getPostStatusList' => 'this:wp_getPostStatusList', 'wp.getPageStatusList' => 'this:wp_getPageStatusList', @@ -120,7 +112,7 @@ public function __construct() { 'wp.getRevisions' => 'this:wp_getRevisions', 'wp.restoreRevision' => 'this:wp_restoreRevision', - // Blogger API. + // Blogger API 'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs', 'blogger.getUserInfo' => 'this:blogger_getUserInfo', 'blogger.getPost' => 'this:blogger_getPost', @@ -129,7 +121,7 @@ public function __construct() { 'blogger.editPost' => 'this:blogger_editPost', 'blogger.deletePost' => 'this:blogger_deletePost', - // MetaWeblog API (with MT extensions to structs). + // MetaWeblog API (with MT extensions to structs) 'metaWeblog.newPost' => 'this:mw_newPost', 'metaWeblog.editPost' => 'this:mw_editPost', 'metaWeblog.getPost' => 'this:mw_getPost', @@ -137,12 +129,12 @@ public function __construct() { 'metaWeblog.getCategories' => 'this:mw_getCategories', 'metaWeblog.newMediaObject' => 'this:mw_newMediaObject', - // MetaWeblog API aliases for Blogger API. - // See http://www.xmlrpc.com/stories/storyReader$2460 + // MetaWeblog API aliases for Blogger API + // see http://www.xmlrpc.com/stories/storyReader$2460 'metaWeblog.deletePost' => 'this:blogger_deletePost', 'metaWeblog.getUsersBlogs' => 'this:blogger_getUsersBlogs', - // MovableType API. + // MovableType API 'mt.getCategoryList' => 'this:mt_getCategoryList', 'mt.getRecentPostTitles' => 'this:mt_getRecentPostTitles', 'mt.getPostCategories' => 'this:mt_getPostCategories', @@ -152,7 +144,7 @@ public function __construct() { 'mt.getTrackbackPings' => 'this:mt_getTrackbackPings', 'mt.publishPost' => 'this:mt_publishPost', - // Pingback. + // PingBack 'pingback.ping' => 'this:pingback_ping', 'pingback.extensions.getPingbacks' => 'this:pingback_extensions_getPingbacks', @@ -167,70 +159,25 @@ public function __construct() { * * This filter can be used to add new methods, and remove built-in methods. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $methods An array of XML-RPC methods, keyed by their methodName. + * @param array $methods An array of XML-RPC methods. */ $this->methods = apply_filters( 'xmlrpc_methods', $this->methods ); - - $this->set_is_enabled(); - } - - /** - * Sets wp_xmlrpc_server::$is_enabled property. - * - * Determines whether the xmlrpc server is enabled on this WordPress install - * and set the is_enabled property accordingly. - * - * @since 5.7.3 - */ - private function set_is_enabled() { - /* - * Respect old get_option() filters left for back-compat when the 'enable_xmlrpc' - * option was deprecated in 3.5.0. Use the {@see 'xmlrpc_enabled'} hook instead. - */ - $is_enabled = apply_filters( 'pre_option_enable_xmlrpc', false ); - if ( false === $is_enabled ) { - $is_enabled = apply_filters( 'option_enable_xmlrpc', true ); - } - - /** - * Filters whether XML-RPC methods requiring authentication are enabled. - * - * Contrary to the way it's named, this filter does not control whether XML-RPC is *fully* - * enabled, rather, it only controls whether XML-RPC methods requiring authentication - such - * as for publishing purposes - are enabled. - * - * Further, the filter does not control whether pingbacks or other custom endpoints that don't - * require authentication are enabled. This behavior is expected, and due to how parity was matched - * with the `enable_xmlrpc` UI option the filter replaced when it was introduced in 3.5. - * - * To disable XML-RPC methods that require authentication, use: - * - * add_filter( 'xmlrpc_enabled', '__return_false' ); - * - * For more granular control over all XML-RPC methods and requests, see the {@see 'xmlrpc_methods'} - * and {@see 'xmlrpc_element_limit'} hooks. - * - * @since 3.5.0 - * - * @param bool $is_enabled Whether XML-RPC is enabled. Default true. - */ - $this->is_enabled = apply_filters( 'xmlrpc_enabled', $is_enabled ); } /** - * Makes private/protected methods readable for backward compatibility. + * Make private/protected methods readable for backward compatibility. * - * @since 4.0.0 + * @since WP-4.0.0 * - * @param string $name Method to call. - * @param array $arguments Arguments to pass when calling. + * @param callable $name Method to call. + * @param array $arguments Arguments to pass when calling. * @return array|IXR_Error|false Return value of the callback, false otherwise. */ public function __call( $name, $arguments ) { if ( '_multisite_getUsersBlogs' === $name ) { - return $this->_multisite_getUsersBlogs( ...$arguments ); + return call_user_func_array( array( $this, $name ), $arguments ); } return false; } @@ -238,16 +185,16 @@ public function __call( $name, $arguments ) { /** * Serves the XML-RPC request. * - * @since 2.9.0 + * @since WP-2.9.0 */ public function serve_request() { $this->IXR_Server( $this->methods ); } /** - * Tests XMLRPC API by saying, "Hello!" to client. + * Test XMLRPC API by saying, "Hello!" to client. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return string Hello string response. */ @@ -256,15 +203,15 @@ public function sayHello() { } /** - * Tests XMLRPC API by adding two numbers for client. + * Test XMLRPC API by adding two numbers for client. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 A number to add. - * @type int $1 A second number to add. + * @type int $number1 A number to add. + * @type int $number2 A second number to add. * } * @return int Sum of the two given numbers. */ @@ -275,16 +222,49 @@ public function addTwoNumbers( $args ) { } /** - * Logs user in. + * Log user in. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $username User's username. * @param string $password User's password. - * @return WP_User|false WP_User object if authentication passed, false otherwise. + * @return WP_User|bool WP_User object if authentication passed, false otherwise */ public function login( $username, $password ) { - if ( ! $this->is_enabled ) { + /* + * Respect old get_option() filters left for back-compat when the 'enable_xmlrpc' + * option was deprecated in WP-3.5.0. Use the 'xmlrpc_enabled' hook instead. + */ + $enabled = apply_filters( 'pre_option_enable_xmlrpc', false ); + if ( false === $enabled ) { + $enabled = apply_filters( 'option_enable_xmlrpc', true ); + } + + /** + * Filters whether XML-RPC methods requiring authentication are enabled. + * + * Contrary to the way it's named, this filter does not control whether XML-RPC is *fully* + * enabled, rather, it only controls whether XML-RPC methods requiring authentication - such + * as for publishing purposes - are enabled. + * + * Further, the filter does not control whether pingbacks or other custom endpoints that don't + * require authentication are enabled. This behavior is expected, and due to how parity was matched + * with the `enable_xmlrpc` UI option the filter replaced when it was introduced in WP-3.5. + * + * To disable XML-RPC methods that require authentication, use: + * + * add_filter( 'xmlrpc_enabled', '__return_false' ); + * + * For more granular control over all XML-RPC methods and requests, see the {@see 'xmlrpc_methods'} + * and {@see 'xmlrpc_element_limit'} hooks. + * + * @since WP-3.5.0 + * + * @param bool $enabled Whether XML-RPC is enabled. Default true. + */ + $enabled = apply_filters( 'xmlrpc_enabled', $enabled ); + + if ( ! $enabled ) { $this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this site.' ) ) ); return false; } @@ -298,16 +278,16 @@ public function login( $username, $password ) { if ( is_wp_error( $user ) ) { $this->error = new IXR_Error( 403, __( 'Incorrect username or password.' ) ); - // Flag that authentication has failed once on this wp_xmlrpc_server instance. + // Flag that authentication has failed once on this wp_xmlrpc_server instance $this->auth_failed = true; /** * Filters the XML-RPC user login error message. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param IXR_Error $error The XML-RPC error message. - * @param WP_Error $user WP_Error object. + * @param string $error The XML-RPC error message. + * @param WP_User $user WP_User object. */ $this->error = apply_filters( 'xmlrpc_login_error', $this->error, $user ); return false; @@ -318,10 +298,10 @@ public function login( $username, $password ) { } /** - * Checks user's credentials. Deprecated. + * Check user's credentials. Deprecated. * - * @since 1.5.0 - * @deprecated 2.8.0 Use wp_xmlrpc_server::login() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use wp_xmlrpc_server::login() * @see wp_xmlrpc_server::login() * * @param string $username User's username. @@ -333,9 +313,9 @@ public function login_pass_ok( $username, $password ) { } /** - * Escapes string or array of strings for database. + * Escape string or array of strings for database. * - * @since 1.5.2 + * @since WP-1.5.2 * * @param string|array $data Escape single string or array of strings. * @return string|void Returns with string is passed, alters by-reference @@ -356,33 +336,9 @@ public function escape( &$data ) { } /** - * Sends error response to client. - * - * Sends an XML error response to the client. If the endpoint is enabled - * an HTTP 200 response is always sent per the XML-RPC specification. + * Retrieve custom fields for post. * - * @since 5.7.3 - * - * @param IXR_Error|string $error Error code or an error object. - * @param false $message Error message. Optional. - */ - public function error( $error, $message = false ) { - // Accepts either an error object or an error code and message - if ( $message && ! is_object( $error ) ) { - $error = new IXR_Error( $error, $message ); - } - - if ( ! $this->is_enabled ) { - status_header( $error->code ); - } - - $this->output( $error->getXml() ); - } - - /** - * Retrieves custom fields for post. - * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $post_id Post ID. * @return array Custom fields, if exist. @@ -409,12 +365,12 @@ public function get_custom_fields( $post_id ) { } /** - * Sets custom fields for post. + * Set custom fields for post. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param int $post_id Post ID. - * @param array $fields Custom fields. + * @param int $post_id Post ID. + * @param array $fields Custom fields. */ public function set_custom_fields( $post_id, $fields ) { $post_id = (int) $post_id; @@ -447,9 +403,9 @@ public function set_custom_fields( $post_id, $fields ) { } /** - * Retrieves custom fields for a term. + * Retrieve custom fields for a term. * - * @since 4.9.0 + * @since WP-4.9.0 * * @param int $term_id Term ID. * @return array Array of custom fields, if they exist. @@ -476,12 +432,12 @@ public function get_term_custom_fields( $term_id ) { } /** - * Sets custom fields for a term. + * Set custom fields for a term. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @param int $term_id Term ID. - * @param array $fields Custom fields. + * @param int $term_id Term ID. + * @param array $fields Custom fields. */ public function set_term_custom_fields( $term_id, $fields ) { $term_id = (int) $term_id; @@ -509,15 +465,15 @@ public function set_term_custom_fields( $term_id, $fields ) { } /** - * Sets up blog options property. + * Set up blog options property. * * Passes property through {@see 'xmlrpc_blog_options'} filter. * - * @since 2.6.0 + * @since WP-2.6.0 */ public function initialise_blog_option_info() { $this->blog_options = array( - // Read-only options. + // Read only options 'software_name' => array( 'desc' => __( 'Software Name' ), 'readonly' => true, @@ -579,7 +535,7 @@ public function initialise_blog_option_info() { 'value' => current_theme_supports( 'post-thumbnails' ), ), - // Updatable options. + // Updatable options 'time_zone' => array( 'desc' => __( 'Time Zone' ), 'readonly' => false, @@ -656,12 +612,12 @@ public function initialise_blog_option_info() { 'option' => 'large_size_h', ), 'default_comment_status' => array( - 'desc' => __( 'Allow people to submit comments on new posts.' ), + '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) on new posts.' ), + 'desc' => __( 'Allow link notifications from other blogs (pingbacks and trackbacks) on new articles' ), 'readonly' => false, 'option' => 'default_ping_status', ), @@ -670,7 +626,7 @@ public function initialise_blog_option_info() { /** * Filters the XML-RPC blog options property. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param array $blog_options An array of XML-RPC blog options. */ @@ -678,15 +634,15 @@ public function initialise_blog_option_info() { } /** - * Retrieves the blogs of the user. + * Retrieve the blogs of the user. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type string $0 Username. - * @type string $1 Password. + * @type string $username Username. + * @type string $password Password. * } * @return array|IXR_Error Array contains: * - 'isAdmin' @@ -701,7 +657,7 @@ public function wp_getUsersBlogs( $args ) { return $this->error; } - // If this isn't on WPMU then just use blogger_getUsersBlogs(). + // If this isn't on WPMU then just use blogger_getUsersBlogs if ( ! is_multisite() ) { array_unshift( $args, 1 ); return $this->blogger_getUsersBlogs( $args ); @@ -724,14 +680,11 @@ public function wp_getUsersBlogs( $args ) { * All built-in XML-RPC methods use the action xmlrpc_call, with a parameter * equal to the method's name, e.g., wp.getUsersBlogs, wp.newPost, etc. * - * @since 2.5.0 - * @since 5.7.0 Added the `$args` and `$server` parameters. + * @since WP-2.5.0 * - * @param string $name The method name. - * @param array|string $args The escaped arguments passed to the method. - * @param wp_xmlrpc_server $server The XML-RPC server instance. + * @param string $name The method name. */ - do_action( 'xmlrpc_call', 'wp.getUsersBlogs', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getUsersBlogs' ); $blogs = (array) get_blogs_of_user( $user->ID ); $struct = array(); @@ -772,11 +725,11 @@ public function wp_getUsersBlogs( $args ) { /** * Checks if the method received at least the minimum number of arguments. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $args An array of arguments to check. - * @param int $count Minimum number of arguments. - * @return bool True if `$args` contains at least `$count` arguments, false otherwise. + * @param int $count Minimum number of arguments. + * @return bool if `$args` contains at least $count arguments. */ protected function minimum_args( $args, $count ) { if ( ! is_array( $args ) || count( $args ) < $count ) { @@ -790,8 +743,9 @@ protected function minimum_args( $args, $count ) { /** * Prepares taxonomy data for return in an XML-RPC object. * - * @param WP_Taxonomy $taxonomy The unprepared taxonomy data. - * @param array $fields The subset of taxonomy fields to return. + * + * @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 ) { @@ -813,7 +767,7 @@ protected function _prepare_taxonomy( $taxonomy, $fields ) { } if ( in_array( 'menu', $fields, true ) ) { - $_taxonomy['show_in_menu'] = (bool) $taxonomy->show_in_menu; + $_taxonomy['show_in_menu'] = (bool) $_taxonomy->show_in_menu; } if ( in_array( 'object_type', $fields, true ) ) { @@ -823,7 +777,7 @@ protected function _prepare_taxonomy( $taxonomy, $fields ) { /** * Filters XML-RPC-prepared data for the given taxonomy. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $_taxonomy An array of taxonomy data. * @param WP_Taxonomy $taxonomy Taxonomy object. @@ -835,6 +789,7 @@ protected function _prepare_taxonomy( $taxonomy, $fields ) { /** * Prepares term data for return in an XML-RPC object. * + * * @param array|object $term The unprepared term data. * @return array The prepared term data. */ @@ -845,13 +800,13 @@ protected function _prepare_term( $term ) { } // For integers which may be larger than XML-RPC supports ensure we return strings. - $_term['term_id'] = (string) $_term['term_id']; - $_term['term_group'] = (string) $_term['term_group']; - $_term['term_taxonomy_id'] = (string) $_term['term_taxonomy_id']; - $_term['parent'] = (string) $_term['parent']; + $_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'] = (int) $_term['count']; + $_term['count'] = intval( $_term['count'] ); // Get term meta. $_term['custom_fields'] = $this->get_term_custom_fields( $_term['term_id'] ); @@ -859,7 +814,7 @@ protected function _prepare_term( $term ) { /** * Filters XML-RPC-prepared data for the given term. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $_term An array of term data. * @param array|object $term Term object or array. @@ -868,7 +823,8 @@ protected function _prepare_term( $term ) { } /** - * Converts a WordPress date string to an IXR_Date object. + * Convert a ClassicPress date string to an IXR_Date object. + * * * @param string $date Date string to convert. * @return IXR_Date IXR_Date object. @@ -881,9 +837,10 @@ protected function _convert_date( $date ) { } /** - * Converts a WordPress GMT date string to an IXR_Date object. + * Convert a ClassicPress GMT date string to an IXR_Date object. * - * @param string $date_gmt WordPress GMT date string. + * + * @param string $date_gmt ClassicPress GMT date string. * @param string $date Date string. * @return IXR_Date IXR_Date object. */ @@ -897,13 +854,14 @@ protected function _convert_date_gmt( $date_gmt, $date ) { /** * Prepares post data for return in an XML-RPC object. * + * * @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' => (string) $post['ID'] ); + $_post = array( 'post_id' => strval( $post['ID'] ) ); // Prepare common post fields. $post_fields = array( @@ -919,11 +877,11 @@ protected function _prepare_post( $post, $fields ) { 'post_password' => $post['post_password'], 'post_excerpt' => $post['post_excerpt'], 'post_content' => $post['post_content'], - 'post_parent' => (string) $post['post_parent'], + 'post_parent' => strval( $post['post_parent'] ), 'post_mime_type' => $post['post_mime_type'], 'link' => get_permalink( $post['ID'] ), 'guid' => $post['guid'], - 'menu_order' => (int) $post['menu_order'], + 'menu_order' => intval( $post['menu_order'] ), 'comment_status' => $post['comment_status'], 'ping_status' => $post['ping_status'], 'sticky' => ( 'post' === $post['post_type'] && is_sticky( $post['ID'] ) ), @@ -985,7 +943,7 @@ protected function _prepare_post( $post, $fields ) { /** * Filters XML-RPC-prepared date for the given post. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $_post An array of modified post data. * @param array $post An array of post data. @@ -997,8 +955,8 @@ protected function _prepare_post( $post, $fields ) { /** * Prepares post data for return in an XML-RPC object. * - * @since 3.4.0 - * @since 4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object. + * @since WP-3.4.0 + * @since WP-4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object. * * @param WP_Post_Type $post_type Post type object. * @param array $fields The subset of post fields to return. @@ -1038,8 +996,8 @@ protected function _prepare_post_type( $post_type, $fields ) { /** * Filters XML-RPC-prepared date for the given post type. * - * @since 3.4.0 - * @since 4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object. + * @since WP-3.4.0 + * @since WP-4.6.0 Converted the `$post_type` parameter to accept a WP_Post_Type object. * * @param array $_post_type An array of post type data. * @param WP_Post_Type $post_type Post type object. @@ -1050,13 +1008,14 @@ protected function _prepare_post_type( $post_type, $fields ) { /** * Prepares media item data for return in an XML-RPC object. * - * @param WP_Post $media_item The unprepared media item data. - * @param string $thumbnail_size The image size to use for the thumbnail URL. + * + * @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' => (string) $media_item->ID, + '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 ), @@ -1077,11 +1036,11 @@ protected function _prepare_media_item( $media_item, $thumbnail_size = 'thumbnai /** * Filters XML-RPC-prepared data for the given media item. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param array $_media_item An array of media item data. - * @param WP_Post $media_item Media item object. - * @param string $thumbnail_size Image size. + * @param array $_media_item An array of media item data. + * @param object $media_item Media item object. + * @param string $thumbnail_size Image size. */ return apply_filters( 'xmlrpc_prepare_media_item', $_media_item, $media_item, $thumbnail_size ); } @@ -1089,7 +1048,8 @@ protected function _prepare_media_item( $media_item, $thumbnail_size = 'thumbnai /** * Prepares page data for return in an XML-RPC object. * - * @param WP_Post $page The unprepared page data. + * + * @param object $page The unprepared page data. * @return array The prepared page data. */ protected function _prepare_page( $page ) { @@ -1158,7 +1118,7 @@ protected function _prepare_page( $page ) { /** * Filters XML-RPC-prepared data for the given page. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $_page An array of page data. * @param WP_Post $page Page object. @@ -1169,7 +1129,8 @@ protected function _prepare_page( $page ) { /** * Prepares comment data for return in an XML-RPC object. * - * @param WP_Comment $comment The unprepared comment data. + * + * @param object $comment The unprepared comment data. * @return array The prepared comment data. */ protected function _prepare_comment( $comment ) { @@ -1205,7 +1166,7 @@ protected function _prepare_comment( $comment ) { /** * Filters XML-RPC-prepared data for the given comment. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $_comment An array of prepared comment data. * @param WP_Comment $comment Comment object. @@ -1216,12 +1177,13 @@ protected function _prepare_comment( $comment ) { /** * Prepares user data for return in an XML-RPC object. * + * * @param WP_User $user The unprepared user object. * @param array $fields The subset of user fields to return. * @return array The prepared user data. */ protected function _prepare_user( $user, $fields ) { - $_user = array( 'user_id' => (string) $user->ID ); + $_user = array( 'user_id' => strval( $user->ID ) ); $user_fields = array( 'username' => $user->user_login, @@ -1251,7 +1213,7 @@ protected function _prepare_user( $user, $fields ) { /** * Filters XML-RPC-prepared data for the given user. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param array $_user An array of user data. * @param WP_User $user User object. @@ -1261,19 +1223,19 @@ protected function _prepare_user( $user, $fields ) { } /** - * Creates a new post for any registered post type. + * Create a new post for any registered post type. * - * @since 3.4.0 + * @since WP-3.4.0 * * @link https://en.wikipedia.org/wiki/RSS_enclosure for information on RSS enclosures. * - * @param array $args { + * @param array $args { * Method arguments. Note: top-level arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 { + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type array $content_struct { * Content struct for adding a new post. See wp_insert_post() for information on * additional post fields * @@ -1323,15 +1285,13 @@ public function wp_newPost( $args ) { return $this->error; } - // Convert the date field back to IXR form. + // convert the date field back to IXR form if ( isset( $content_struct['post_date'] ) && ! ( $content_struct['post_date'] instanceof IXR_Date ) ) { $content_struct['post_date'] = $this->_convert_date( $content_struct['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. - */ + // 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 ( isset( $content_struct['post_date_gmt'] ) && ! ( $content_struct['post_date_gmt'] instanceof IXR_Date ) ) { if ( '0000-00-00 00:00:00' === $content_struct['post_date_gmt'] || isset( $content_struct['post_date'] ) ) { unset( $content_struct['post_date_gmt'] ); @@ -1341,7 +1301,7 @@ public function wp_newPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.newPost', $args, $this ); + do_action( 'xmlrpc_call', 'wp.newPost' ); unset( $content_struct['ID'] ); @@ -1351,20 +1311,19 @@ public function wp_newPost( $args ) { /** * Helper method for filtering out elements from an array. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param int $count Number to compare to one. - * @return bool True if the number is greater than one, false otherwise. */ private function _is_greater_than_one( $count ) { return $count > 1; } /** - * Encapsulates the logic for sticking a post and determining if - * the user has permission to do so. + * Encapsulate the logic for sticking a post + * and determining if the user has permission to do so * - * @since 4.3.0 + * @since WP-4.3.0 * * @param array $post_data * @param bool $update @@ -1400,7 +1359,7 @@ private function _toggle_sticky( $post_data, $update = false ) { /** * Helper method for wp_newPost() and wp_editPost(), containing shared logic. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see wp_insert_post() * @@ -1412,19 +1371,19 @@ 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_date' => '', - 'post_date_gmt' => '', + 'post_author' => null, + 'post_password' => null, + 'post_excerpt' => null, + 'post_content' => null, + 'post_title' => null, + 'post_date' => null, + 'post_date_gmt' => null, 'post_format' => null, 'post_name' => null, 'post_thumbnail' => null, - 'post_parent' => 0, - 'ping_status' => '', - 'comment_status' => '', + 'post_parent' => null, + 'ping_status' => null, + 'comment_status' => null, 'custom_fields' => null, 'terms_names' => null, 'terms' => null, @@ -1499,11 +1458,11 @@ protected function _insert_post( $user, $content_struct ) { $post_data['post_author'] = $user->ID; } - if ( 'open' !== $post_data['comment_status'] && 'closed' !== $post_data['comment_status'] ) { + if ( isset( $post_data['comment_status'] ) && 'open' !== $post_data['comment_status'] && 'closed' !== $post_data['comment_status'] ) { unset( $post_data['comment_status'] ); } - if ( 'open' !== $post_data['ping_status'] && 'closed' !== $post_data['ping_status'] ) { + if ( isset( $post_data['ping_status'] ) && 'open' !== $post_data['ping_status'] && 'closed' !== $post_data['ping_status'] ) { unset( $post_data['ping_status'] ); } @@ -1519,8 +1478,8 @@ protected function _insert_post( $user, $content_struct ) { $post_data['edit_date'] = false; if ( ! empty( $dateCreated ) ) { - $post_data['post_date'] = iso8601_to_datetime( $dateCreated ); - $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'gmt' ); + $post_data['post_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); + $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' ); // Flag the post date to be edited. $post_data['edit_date'] = true; @@ -1529,7 +1488,7 @@ protected function _insert_post( $user, $content_struct ) { if ( ! isset( $post_data['ID'] ) ) { $post_data['ID'] = get_default_post_to_edit( $post_data['post_type'], true )->ID; } - $post_id = $post_data['ID']; + $post_ID = $post_data['ID']; if ( 'post' === $post_data['post_type'] ) { $error = $this->_toggle_sticky( $post_data, $update ); @@ -1539,18 +1498,18 @@ protected function _insert_post( $user, $content_struct ) { } if ( isset( $post_data['post_thumbnail'] ) ) { - // Empty value deletes, non-empty value adds/updates. + // empty value deletes, non-empty value adds/updates. if ( ! $post_data['post_thumbnail'] ) { - delete_post_thumbnail( $post_id ); + delete_post_thumbnail( $post_ID ); } elseif ( ! get_post( absint( $post_data['post_thumbnail'] ) ) ) { return new IXR_Error( 404, __( 'Invalid attachment ID.' ) ); } - set_post_thumbnail( $post_id, $post_data['post_thumbnail'] ); + set_post_thumbnail( $post_ID, $post_data['post_thumbnail'] ); unset( $content_struct['post_thumbnail'] ); } if ( isset( $post_data['custom_fields'] ) ) { - $this->set_custom_fields( $post_id, $post_data['custom_fields'] ); + $this->set_custom_fields( $post_ID, $post_data['custom_fields'] ); } if ( isset( $post_data['terms'] ) || isset( $post_data['terms_names'] ) ) { @@ -1563,7 +1522,7 @@ protected function _insert_post( $user, $content_struct ) { if ( isset( $post_data['terms'] ) && is_array( $post_data['terms'] ) ) { $taxonomies = array_keys( $post_data['terms'] ); - // Validating term IDs. + // 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.' ) ); @@ -1607,8 +1566,8 @@ protected function _insert_post( $user, $content_struct ) { $ambiguous_terms = array(); if ( is_taxonomy_hierarchical( $taxonomy ) ) { $tax_term_names = get_terms( + $taxonomy, array( - 'taxonomy' => $taxonomy, 'fields' => 'names', 'hide_empty' => false, ) @@ -1656,7 +1615,7 @@ protected function _insert_post( $user, $content_struct ) { } if ( isset( $post_data['post_format'] ) ) { - $format = set_post_format( $post_id, $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() ); @@ -1667,60 +1626,48 @@ protected function _insert_post( $user, $content_struct ) { // Handle enclosures. $enclosure = isset( $post_data['enclosure'] ) ? $post_data['enclosure'] : null; - $this->add_enclosure_if_new( $post_id, $enclosure ); + $this->add_enclosure_if_new( $post_ID, $enclosure ); - $this->attach_uploads( $post_id, $post_data['post_content'] ); + $this->attach_uploads( $post_ID, $post_data['post_content'] ); /** * Filters post data array to be inserted via XML-RPC. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $post_data Parsed array of post data. * @param array $content_struct Post data array. */ $post_data = apply_filters( 'xmlrpc_wp_insert_post_data', $post_data, $content_struct ); - // Remove all null values to allow for using the insert/update post default values for those keys instead. - $post_data = array_filter( - $post_data, - static function ( $value ) { - return null !== $value; - } - ); - - $post_id = $update ? wp_update_post( $post_data, true ) : wp_insert_post( $post_data, true ); - if ( is_wp_error( $post_id ) ) { - return new IXR_Error( 500, $post_id->get_error_message() ); + $post_ID = $update ? wp_update_post( $post_data, true ) : 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 ) { - if ( $update ) { - return new IXR_Error( 401, __( 'Sorry, the post could not be updated.' ) ); - } else { - return new IXR_Error( 401, __( 'Sorry, the post could not be created.' ) ); - } + if ( ! $post_ID ) { + return new IXR_Error( 401, __( 'Sorry, your entry could not be posted.' ) ); } - return (string) $post_id; + return strval( $post_ID ); } /** - * Edits a post for any registered post type. + * 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 + * @since WP-3.4.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Post ID. - * @type array $4 Extra content arguments. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type int $post_id Post ID. + * @type array $content_struct Extra content arguments. * } * @return true|IXR_Error True on success, IXR_Error on failure. */ @@ -1742,7 +1689,7 @@ public function wp_editPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.editPost', $args, $this ); + do_action( 'xmlrpc_call', 'wp.editPost' ); $post = get_post( $post_id, ARRAY_A ); @@ -1770,12 +1717,12 @@ public function wp_editPost( $args ) { $post['post_date_gmt'] = $this->_convert_date( $post['post_date_gmt'] ); } - /* - * If the API client did not provide 'post_date', then we must not perpetuate the value that - * was stored in the database, or it will appear to be an intentional edit. Conveying it here - * as if it was coming from the API client will cause an otherwise zeroed out 'post_date_gmt' - * to get set with the value that was originally stored in the database when the draft was created. - */ + // https://core.trac.wordpress.org/attachment/ticket/45322/fix-wp-editpost-draft-dates.patch + // If the API client did not provide post_date then we must not perpetuate the + // value that was stored in the database, or it will appear to be an intentional + // edit. Conveying it here as if it were coming from the API client will cause an + // otherwise zeroed out post_date_gmt to get set with the value that was originally + // stored in the database when the draft was created. if ( ! isset( $content_struct['post_date'] ) ) { unset( $post['post_date'] ); } @@ -1792,19 +1739,19 @@ public function wp_editPost( $args ) { } /** - * Deletes a post for any registered post type. + * Delete a post for any registered post type. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see wp_delete_post() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Post ID. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type int $post_id Post ID. * } * @return true|IXR_Error True on success, IXR_Error instance on failure. */ @@ -1825,7 +1772,7 @@ public function wp_deletePost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.deletePost', $args, $this ); + do_action( 'xmlrpc_call', 'wp.deletePost' ); $post = get_post( $post_id, ARRAY_A ); if ( empty( $post['ID'] ) ) { @@ -1839,16 +1786,16 @@ public function wp_deletePost( $args ) { $result = wp_delete_post( $post_id ); if ( ! $result ) { - return new IXR_Error( 500, __( 'Sorry, the post could not be deleted.' ) ); + return new IXR_Error( 500, __( 'The post cannot be deleted.' ) ); } return true; } /** - * Retrieves a post. + * Retrieve a post. * - * @since 3.4.0 + * @since WP-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 @@ -1864,11 +1811,11 @@ public function wp_deletePost( $args ) { * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Post ID. - * @type array $4 Optional. The subset of post type fields to return. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type int $post_id Post ID. + * @type array $fields The subset of post type fields to return. * } * @return array|IXR_Error Array contains (based on $fields parameter): * - 'post_id' @@ -1911,7 +1858,7 @@ public function wp_getPost( $args ) { /** * Filters the list of post query fields used by the given XML-RPC method. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $fields Array of post fields. Default array contains 'post', 'terms', and 'custom_fields'. * @param string $method Method name. @@ -1925,7 +1872,7 @@ public function wp_getPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPost', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPost' ); $post = get_post( $post_id, ARRAY_A ); @@ -1941,9 +1888,9 @@ public function wp_getPost( $args ) { } /** - * Retrieves posts. + * Retrieve posts. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see wp_get_recent_posts() * @see wp_getPost() for more on `$fields` @@ -1952,13 +1899,13 @@ public function wp_getPost( $args ) { * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Optional. Modifies the query used to retrieve posts. Accepts 'post_type', - * 'post_status', 'number', 'offset', 'orderby', 's', and 'order'. - * Default empty array. - * @type array $4 Optional. The subset of post type fields to return in the response array. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type array $filter Optional. Modifies the query used to retrieve posts. Accepts 'post_type', + * 'post_status', 'number', 'offset', 'orderby', 's', and 'order'. + * Default empty array. + * @type array $fields Optional. The subset of post type fields to return in the response array. * } * @return array|IXR_Error Array contains a collection of posts. */ @@ -1986,7 +1933,7 @@ public function wp_getPosts( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPosts', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPosts' ); $query = array(); @@ -2050,21 +1997,21 @@ public function wp_getPosts( $args ) { } /** - * Creates a new term. + * Create a new term. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see wp_insert_term() * * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Content struct for adding a new term. The struct must contain - * the term 'name' and 'taxonomy'. Optional accepted values include - * 'parent', 'description', and 'slug'. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type array $content_struct Content struct for adding a new term. The struct must contain + * the term 'name' and 'taxonomy'. Optional accepted values include + * 'parent', 'description', and 'slug'. * } * @return int|IXR_Error The term ID on success, or an IXR_Error object on failure. */ @@ -2085,7 +2032,7 @@ public function wp_newTerm( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.newTerm', $args, $this ); + do_action( 'xmlrpc_call', 'wp.newTerm' ); if ( ! taxonomy_exists( $content_struct['taxonomy'] ) ) { return new IXR_Error( 403, __( 'Invalid taxonomy.' ) ); @@ -2099,7 +2046,7 @@ public function wp_newTerm( $args ) { $taxonomy = (array) $taxonomy; - // Hold the data of the term. + // hold the data of the term $term_data = array(); $term_data['name'] = trim( $content_struct['name'] ); @@ -2141,7 +2088,7 @@ public function wp_newTerm( $args ) { } if ( ! $term ) { - return new IXR_Error( 500, __( 'Sorry, the term could not be created.' ) ); + return new IXR_Error( 500, __( 'Sorry, your term could not be created.' ) ); } // Add term meta. @@ -2149,26 +2096,26 @@ public function wp_newTerm( $args ) { $this->set_term_custom_fields( $term['term_id'], $content_struct['custom_fields'] ); } - return (string) $term['term_id']; + return strval( $term['term_id'] ); } /** - * Edits a term. + * Edit a term. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see wp_update_term() * * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Term ID. - * @type array $4 Content struct for editing a term. The struct must contain the - * term 'taxonomy'. Optional accepted values include 'name', 'parent', - * 'description', and 'slug'. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type int $term_id Term ID. + * @type array $content_struct Content struct for editing a term. The struct must contain the + * term ''taxonomy'. Optional accepted values include 'name', 'parent', + * 'description', and 'slug'. * } * @return true|IXR_Error True on success, IXR_Error instance on failure. */ @@ -2190,7 +2137,7 @@ public function wp_editTerm( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.editTerm', $args, $this ); + do_action( 'xmlrpc_call', 'wp.editTerm' ); if ( ! taxonomy_exists( $content_struct['taxonomy'] ) ) { return new IXR_Error( 403, __( 'Invalid taxonomy.' ) ); @@ -2200,7 +2147,7 @@ public function wp_editTerm( $args ) { $taxonomy = (array) $taxonomy; - // Hold the data of the term. + // hold the data of the term $term_data = array(); $term = get_term( $term_id, $content_struct['taxonomy'] ); @@ -2271,22 +2218,22 @@ public function wp_editTerm( $args ) { } /** - * Deletes a term. + * Delete a term. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see wp_delete_term() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type string $3 Taxonomy name. - * @type int $4 Term ID. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type string $taxnomy_name Taxonomy name. + * @type int $term_id Term ID. * } - * @return true|IXR_Error True on success, IXR_Error instance on failure. + * @return bool|IXR_Error True on success, IXR_Error instance on failure. */ public function wp_deleteTerm( $args ) { if ( ! $this->minimum_args( $args, 5 ) ) { @@ -2306,7 +2253,7 @@ public function wp_deleteTerm( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.deleteTerm', $args, $this ); + do_action( 'xmlrpc_call', 'wp.deleteTerm' ); if ( ! taxonomy_exists( $taxonomy ) ) { return new IXR_Error( 403, __( 'Invalid taxonomy.' ) ); @@ -2341,20 +2288,20 @@ public function wp_deleteTerm( $args ) { } /** - * Retrieves a term. + * Retrieve a term. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see get_term() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type string $3 Taxonomy name. - * @type int $4 Term ID. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type string $taxnomy Taxonomy name. + * @type string $term_id Term ID. * } * @return array|IXR_Error IXR_Error on failure, array on success, containing: * - 'term_id' @@ -2385,7 +2332,7 @@ public function wp_getTerm( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getTerm', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getTerm' ); if ( ! taxonomy_exists( $taxonomy ) ) { return new IXR_Error( 403, __( 'Invalid taxonomy.' ) ); @@ -2411,24 +2358,24 @@ public function wp_getTerm( $args ) { } /** - * Retrieves all terms for a taxonomy. + * Retrieve all terms for a taxonomy. * - * @since 3.4.0 + * @since WP-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'. * * @see get_terms() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type string $3 Taxonomy name. - * @type array $4 Optional. Modifies the query used to retrieve posts. Accepts 'number', - * 'offset', 'orderby', 'order', 'hide_empty', and 'search'. Default empty array. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type string $taxnomy Taxonomy name. + * @type array $filter Optional. Modifies the query used to retrieve posts. Accepts 'number', + * 'offset', 'orderby', 'order', 'hide_empty', and 'search'. Default empty array. * } * @return array|IXR_Error An associative array of terms data on success, IXR_Error instance otherwise. */ @@ -2450,7 +2397,7 @@ public function wp_getTerms( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getTerms', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getTerms' ); if ( ! taxonomy_exists( $taxonomy ) ) { return new IXR_Error( 403, __( 'Invalid taxonomy.' ) ); @@ -2462,7 +2409,7 @@ public function wp_getTerms( $args ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to assign terms in this taxonomy.' ) ); } - $query = array( 'taxonomy' => $taxonomy->name ); + $query = array(); if ( isset( $filter['number'] ) ) { $query['number'] = absint( $filter['number'] ); @@ -2490,7 +2437,7 @@ public function wp_getTerms( $args ) { $query['search'] = $filter['search']; } - $terms = get_terms( $query ); + $terms = get_terms( $taxonomy->name, $query ); if ( is_wp_error( $terms ) ) { return new IXR_Error( 500, $terms->get_error_message() ); @@ -2506,22 +2453,22 @@ public function wp_getTerms( $args ) { } /** - * Retrieves a taxonomy. + * Retrieve a taxonomy. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see get_taxonomy() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type string $3 Taxonomy name. - * @type array $4 Optional. Array of taxonomy fields to limit to in the return. - * Accepts 'labels', 'cap', 'menu', and 'object_type'. - * Default empty array. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type string $taxnomy Taxonomy name. + * @type array $fields Optional. Array of taxonomy fields to limit to in the return. + * Accepts 'labels', 'cap', 'menu', and 'object_type'. + * Default empty array. * } * @return array|IXR_Error An array of taxonomy data on success, IXR_Error instance otherwise. */ @@ -2542,7 +2489,7 @@ public function wp_getTaxonomy( $args ) { /** * Filters the taxonomy query fields used by the given XML-RPC method. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $fields An array of taxonomy fields to retrieve. * @param string $method The method name. @@ -2556,7 +2503,7 @@ public function wp_getTaxonomy( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getTaxonomy', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getTaxonomy' ); if ( ! taxonomy_exists( $taxonomy ) ) { return new IXR_Error( 403, __( 'Invalid taxonomy.' ) ); @@ -2572,20 +2519,20 @@ public function wp_getTaxonomy( $args ) { } /** - * Retrieves all taxonomies. + * Retrieve all taxonomies. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see get_taxonomies() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Optional. An array of arguments for retrieving taxonomies. - * @type array $4 Optional. The subset of taxonomy fields to return. + * @type int $blog_id Blog ID (unused). + * @type string $username Username. + * @type string $password Password. + * @type array $filter Optional. An array of arguments for retrieving taxonomies. + * @type array $fields Optional. The subset of taxonomy fields to return. * } * @return array|IXR_Error An associative array of taxonomy data with returned fields determined * by `$fields`, or an IXR_Error instance on failure. @@ -2614,15 +2561,15 @@ public function wp_getTaxonomies( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getTaxonomies', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getTaxonomies' ); $taxonomies = get_taxonomies( $filter, 'objects' ); - // Holds all the taxonomy data. + // holds all the taxonomy data $struct = array(); foreach ( $taxonomies as $taxonomy ) { - // Capability check for post types. + // capability check for post_types if ( ! current_user_can( $taxonomy->cap->assign_terms ) ) { continue; } @@ -2634,7 +2581,7 @@ public function wp_getTaxonomies( $args ) { } /** - * Retrieves a user. + * Retrieve a user. * * The optional $fields parameter specifies what fields will be included * in the response array. This should be a list of field names. 'user_id' will @@ -2646,14 +2593,14 @@ public function wp_getTaxonomies( $args ) { * * @uses get_userdata() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 User ID. - * @type array $4 Optional. Array of fields to return. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $user_id + * @type array $fields (optional) * } * @return array|IXR_Error Array contains (based on $fields parameter): * - 'user_id' @@ -2686,7 +2633,7 @@ public function wp_getUser( $args ) { /** * Filters the default user query fields used by the given XML-RPC method. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param array $fields User query fields for given method. Default 'all'. * @param string $method The method name. @@ -2700,7 +2647,7 @@ public function wp_getUser( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getUser', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getUser' ); if ( ! current_user_can( 'edit_user', $user_id ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this user.' ) ); @@ -2716,7 +2663,7 @@ public function wp_getUser( $args ) { } /** - * Retrieves users. + * Retrieve users. * * The optional $filter parameter modifies the query used to retrieve users. * Accepted keys are 'number' (default: 50), 'offset' (default: 0), 'role', @@ -2728,14 +2675,14 @@ public function wp_getUser( $args ) { * @uses get_users() * @see wp_getUser() for more on $fields and return values * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Optional. Arguments for the user query. - * @type array $4 Optional. Fields to return. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $filter (optional) + * @type array $fields (optional) * } * @return array|IXR_Error users data */ @@ -2763,7 +2710,7 @@ public function wp_getUsers( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getUsers', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getUsers' ); if ( ! current_user_can( 'list_users' ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to list users.' ) ); @@ -2806,17 +2753,17 @@ public function wp_getUsers( $args ) { } /** - * Retrieves information about the requesting user. + * Retrieve information about the requesting user. * * @uses get_userdata() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username - * @type string $2 Password - * @type array $3 Optional. Fields to return. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $fields (optional) * } * @return array|IXR_Error (@see wp_getUser) */ @@ -2843,7 +2790,7 @@ public function wp_getProfile( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getProfile', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getProfile' ); if ( ! current_user_can( 'edit_user', $user->ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit your profile.' ) ); @@ -2855,17 +2802,17 @@ public function wp_getProfile( $args ) { } /** - * Edits user's profile. + * Edit user's profile. * * @uses wp_update_user() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Content struct. It can optionally contain: + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $content_struct It can optionally contain: * - 'first_name' * - 'last_name' * - 'website' @@ -2893,17 +2840,17 @@ public function wp_editProfile( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.editProfile', $args, $this ); + do_action( 'xmlrpc_call', 'wp.editProfile' ); if ( ! current_user_can( 'edit_user', $user->ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit your profile.' ) ); } - // Holds data of the user. + // holds data of the user $user_data = array(); $user_data['ID'] = $user->ID; - // Only set the user details if they were given. + // only set the user details if it was given if ( isset( $content_struct['first_name'] ) ) { $user_data['first_name'] = $content_struct['first_name']; } @@ -2939,24 +2886,24 @@ public function wp_editProfile( $args ) { } if ( ! $result ) { - return new IXR_Error( 500, __( 'Sorry, the user could not be updated.' ) ); + return new IXR_Error( 500, __( 'Sorry, the user cannot be updated.' ) ); } return true; } /** - * Retrieves a page. + * Retrieve page. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type int $1 Page ID. - * @type string $2 Username. - * @type string $3 Password. + * @type int $blog_id (unused) + * @type int $page_id + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -2982,29 +2929,29 @@ public function wp_getPage( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPage', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPage' ); // If we found the page then format the data. if ( $page->ID && ( 'page' === $page->post_type ) ) { return $this->_prepare_page( $page ); } else { - // If the page doesn't exist, indicate that. + // If the page doesn't exist indicate that. return new IXR_Error( 404, __( 'Sorry, no such page.' ) ); } } /** - * Retrieves Pages. + * Retrieve Pages. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Optional. Number of pages. Default 10. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $num_pages * } * @return array|IXR_Error */ @@ -3025,7 +2972,7 @@ public function wp_getPages( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPages', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPages' ); $pages = get_posts( array( @@ -3053,24 +3000,24 @@ public function wp_getPages( $args ) { } /** - * Creates a new page. + * Create new page. * - * @since 2.2.0 + * @since WP-2.2.0 * * @see wp_xmlrpc_server::mw_newPost() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Content struct. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $content_struct * } * @return int|IXR_Error */ public function wp_newPage( $args ) { - // Items not escaped here will be escaped in wp_newPost(). + // Items not escaped here will be escaped in newPost. $username = $this->escape( $args[1] ); $password = $this->escape( $args[2] ); @@ -3080,27 +3027,27 @@ public function wp_newPage( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.newPage', $args, $this ); + do_action( 'xmlrpc_call', 'wp.newPage' ); // Mark this as content for a page. $args[3]['post_type'] = 'page'; - // Let mw_newPost() do all of the heavy lifting. + // Let mw_newPost do all of the heavy lifting. return $this->mw_newPost( $args ); } /** - * Deletes a page. + * Delete page. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Page ID. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $page_id * } * @return true|IXR_Error True, if success. */ @@ -3117,9 +3064,9 @@ public function wp_deletePage( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.deletePage', $args, $this ); + do_action( 'xmlrpc_call', 'wp.deletePage' ); - // Get the current page based on the 'page_id' and + // Get the current page based on the page_id and // make sure it is a page and not a post. $actual_page = get_post( $page_id, ARRAY_A ); if ( ! $actual_page || ( 'page' !== $actual_page['post_type'] ) ) { @@ -3140,7 +3087,7 @@ public function wp_deletePage( $args ) { /** * Fires after a page has been successfully deleted via XML-RPC. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param int $page_id ID of the deleted page. * @param array $args An array of arguments to delete the page. @@ -3151,24 +3098,24 @@ public function wp_deletePage( $args ) { } /** - * Edits a page. + * Edit page. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type int $1 Page ID. - * @type string $2 Username. - * @type string $3 Password. - * @type string $4 Content. - * @type int $5 Publish flag. 0 for draft, 1 for publish. + * @type int $blog_id (unused) + * @type int $page_id + * @type string $username + * @type string $password + * @type string $content + * @type string $publish * } * @return array|IXR_Error */ public function wp_editPage( $args ) { - // Items will be escaped in mw_editPost(). + // Items will be escaped in mw_editPost. $page_id = (int) $args[1]; $username = $args[2]; $password = $args[3]; @@ -3184,7 +3131,7 @@ public function wp_editPage( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.editPage', $args, $this ); + do_action( 'xmlrpc_call', 'wp.editPage' ); // Get the page data and make sure it is a page. $actual_page = get_post( $page_id, ARRAY_A ); @@ -3200,7 +3147,7 @@ public function wp_editPage( $args ) { // Mark this as content for a page. $content['post_type'] = 'page'; - // Arrange args in the way mw_editPost() understands. + // Arrange args in the way mw_editPost understands. $args = array( $page_id, $username, @@ -3209,23 +3156,23 @@ public function wp_editPage( $args ) { $publish, ); - // Let mw_editPost() do all of the heavy lifting. + // Let mw_editPost do all of the heavy lifting. return $this->mw_editPost( $args ); } /** - * Retrieves page list. + * Retrieve page list. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -3247,9 +3194,9 @@ public function wp_getPageList( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPageList', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPageList' ); - // Get list of page IDs and titles. + // Get list of pages ids and titles $page_list = $wpdb->get_results( " SELECT ID page_id, @@ -3279,16 +3226,16 @@ public function wp_getPageList( $args ) { } /** - * Retrieves authors list. + * Retrieve authors list. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -3308,7 +3255,7 @@ public function wp_getAuthors( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getAuthors', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getAuthors' ); $authors = array(); foreach ( get_users( array( 'fields' => array( 'ID', 'user_login', 'display_name' ) ) ) as $user ) { @@ -3323,16 +3270,16 @@ public function wp_getAuthors( $args ) { } /** - * Gets the list of all tags. + * Get list of all tags * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -3352,7 +3299,7 @@ public function wp_getTags( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getKeywords', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getKeywords' ); $tags = array(); @@ -3375,17 +3322,17 @@ public function wp_getTags( $args ) { } /** - * Creates a new category. + * Create new category. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Category. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $category * } * @return int|IXR_Error Category ID. */ @@ -3402,26 +3349,26 @@ public function wp_newCategory( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.newCategory', $args, $this ); + do_action( 'xmlrpc_call', 'wp.newCategory' ); // Make sure the user is allowed to add a category. if ( ! current_user_can( 'manage_categories' ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to add a category.' ) ); } - // If no slug was provided, make it empty - // so that WordPress will generate one. + // If no slug was provided make it empty so that + // ClassicPress will generate one. if ( empty( $category['slug'] ) ) { $category['slug'] = ''; } - // If no parent_id was provided, make it empty - // so that it will be a top-level page (no parent). + // If no parent_id was provided make it empty + // so that it will be a top level page (no parent). if ( ! isset( $category['parent_id'] ) ) { $category['parent_id'] = ''; } - // If no description was provided, make it empty. + // If no description was provided make it empty. if ( empty( $category['description'] ) ) { $category['description'] = ''; } @@ -3438,16 +3385,16 @@ public function wp_newCategory( $args ) { if ( 'term_exists' === $cat_id->get_error_code() ) { return (int) $cat_id->get_error_data(); } else { - return new IXR_Error( 500, __( 'Sorry, the category could not be created.' ) ); + return new IXR_Error( 500, __( 'Sorry, the new category failed.' ) ); } } elseif ( ! $cat_id ) { - return new IXR_Error( 500, __( 'Sorry, the category could not be created.' ) ); + return new IXR_Error( 500, __( 'Sorry, the new category failed.' ) ); } /** * Fires after a new category has been successfully created via XML-RPC. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param int $cat_id ID of the new category. * @param array $args An array of new category arguments. @@ -3458,17 +3405,17 @@ public function wp_newCategory( $args ) { } /** - * Deletes a category. + * Remove category. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Category ID. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $category_id * } * @return bool|IXR_Error See wp_delete_term() for return info. */ @@ -3485,7 +3432,7 @@ public function wp_deleteCategory( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.deleteCategory', $args, $this ); + do_action( 'xmlrpc_call', 'wp.deleteCategory' ); if ( ! current_user_can( 'delete_term', $category_id ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this category.' ) ); @@ -3497,7 +3444,7 @@ public function wp_deleteCategory( $args ) { /** * Fires after a category has been successfully deleted via XML-RPC. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param int $category_id ID of the deleted category. * @param array $args An array of arguments to delete the category. @@ -3509,18 +3456,18 @@ public function wp_deleteCategory( $args ) { } /** - * Retrieves category list. + * Retrieve category list. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Category - * @type int $4 Max number of results. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $category + * @type int $max_results * } * @return array|IXR_Error */ @@ -3542,7 +3489,7 @@ public function wp_suggestCategories( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.suggestCategories', $args, $this ); + do_action( 'xmlrpc_call', 'wp.suggestCategories' ); $category_suggestions = array(); $args = array( @@ -3561,17 +3508,17 @@ public function wp_suggestCategories( $args ) { } /** - * Retrieves a comment. + * Retrieve comment. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Comment ID. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $comment_id * } * @return array|IXR_Error */ @@ -3588,7 +3535,7 @@ public function wp_getComment( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getComment', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getComment' ); $comment = get_comment( $comment_id ); if ( ! $comment ) { @@ -3603,7 +3550,7 @@ public function wp_getComment( $args ) { } /** - * Retrieves comments. + * Retrieve comments. * * Besides the common blog_id (unused), username, and password arguments, it takes a filter * array as last argument. @@ -3616,18 +3563,17 @@ public function wp_getComment( $args ) { * - 'number' - Default is 10. Total number of media items to retrieve. * - 'offset' - Default is 0. See WP_Query::query() for more. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Optional. Query arguments. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $struct * } - * @return array|IXR_Error Contains a collection of comments. See wp_xmlrpc_server::wp_getComment() - * for a description of each item contents. + * @return array|IXR_Error Contains a collection of comments. See wp_xmlrpc_server::wp_getComment() for a description of each item contents */ public function wp_getComments( $args ) { $this->escape( $args ); @@ -3642,7 +3588,7 @@ public function wp_getComments( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getComments', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getComments' ); if ( isset( $struct['status'] ) ) { $status = $struct['status']; @@ -3699,20 +3645,20 @@ public function wp_getComments( $args ) { } /** - * Deletes a comment. + * Delete a comment. * - * By default, the comment will be moved to the Trash instead of deleted. + * By default, the comment will be moved to the trash instead of deleted. * See wp_delete_comment() for more information on this behavior. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Comment ID. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $comment_ID * } * @return bool|IXR_Error See wp_delete_comment(). */ @@ -3721,43 +3667,43 @@ public function wp_deleteComment( $args ) { $username = $args[1]; $password = $args[2]; - $comment_id = (int) $args[3]; + $comment_ID = (int) $args[3]; $user = $this->login( $username, $password ); if ( ! $user ) { return $this->error; } - if ( ! get_comment( $comment_id ) ) { + if ( ! get_comment( $comment_ID ) ) { return new IXR_Error( 404, __( 'Invalid comment ID.' ) ); } - if ( ! current_user_can( 'edit_comment', $comment_id ) ) { + if ( ! current_user_can( 'edit_comment', $comment_ID ) ) { return new IXR_Error( 403, __( 'Sorry, you are not allowed to delete this comment.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.deleteComment', $args, $this ); + do_action( 'xmlrpc_call', 'wp.deleteComment' ); - $status = wp_delete_comment( $comment_id ); + $status = wp_delete_comment( $comment_ID ); if ( $status ) { /** * Fires after a comment has been successfully deleted via XML-RPC. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $comment_id ID of the deleted comment. + * @param int $comment_ID ID of the deleted comment. * @param array $args An array of arguments to delete the comment. */ - do_action( 'xmlrpc_call_success_wp_deleteComment', $comment_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_wp_deleteComment', $comment_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase } return $status; } /** - * Edits a comment. + * Edit comment. * * Besides the common blog_id (unused), username, and password arguments, it takes a * comment_id integer and a content_struct array as last argument. @@ -3768,18 +3714,18 @@ public function wp_deleteComment( $args ) { * - 'author_email' * - 'content' * - 'date_created_gmt' - * - 'status'. Common statuses are 'approve', 'hold', 'spam'. See get_comment_statuses() for more details. + * - 'status'. Common statuses are 'approve', 'hold', 'spam'. See get_comment_statuses() for more details * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Comment ID. - * @type array $4 Content structure. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $comment_ID + * @type array $content_struct * } * @return true|IXR_Error True, on success. */ @@ -3788,7 +3734,7 @@ public function wp_editComment( $args ) { $username = $args[1]; $password = $args[2]; - $comment_id = (int) $args[3]; + $comment_ID = (int) $args[3]; $content_struct = $args[4]; $user = $this->login( $username, $password ); @@ -3796,18 +3742,18 @@ public function wp_editComment( $args ) { return $this->error; } - if ( ! get_comment( $comment_id ) ) { + if ( ! get_comment( $comment_ID ) ) { return new IXR_Error( 404, __( 'Invalid comment ID.' ) ); } - if ( ! current_user_can( 'edit_comment', $comment_id ) ) { + if ( ! current_user_can( 'edit_comment', $comment_ID ) ) { return new IXR_Error( 403, __( 'Sorry, you are not allowed to moderate or edit this comment.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.editComment', $args, $this ); + do_action( 'xmlrpc_call', 'wp.editComment' ); $comment = array( - 'comment_ID' => $comment_id, + 'comment_ID' => $comment_ID, ); if ( isset( $content_struct['status'] ) ) { @@ -3817,16 +3763,16 @@ public function wp_editComment( $args ) { if ( ! in_array( $content_struct['status'], $statuses, true ) ) { return new IXR_Error( 401, __( 'Invalid comment status.' ) ); } - $comment['comment_approved'] = $content_struct['status']; } - // Do some timestamp voodoo. + // Do some timestamp voodoo if ( ! empty( $content_struct['date_created_gmt'] ) ) { - // 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['comment_date'] = get_date_from_gmt( $dateCreated ); - $comment['comment_date_gmt'] = iso8601_to_datetime( $dateCreated, 'gmt' ); + $comment['comment_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); + $comment['comment_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' ); } if ( isset( $content_struct['content'] ) ) { @@ -3845,41 +3791,41 @@ public function wp_editComment( $args ) { $comment['comment_author_email'] = $content_struct['author_email']; } - $result = wp_update_comment( $comment, true ); + $result = wp_update_comment( $comment ); if ( is_wp_error( $result ) ) { return new IXR_Error( 500, $result->get_error_message() ); } if ( ! $result ) { - return new IXR_Error( 500, __( 'Sorry, the comment could not be updated.' ) ); + return new IXR_Error( 500, __( 'Sorry, the comment could not be edited.' ) ); } /** * Fires after a comment has been successfully updated via XML-RPC. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $comment_id ID of the updated comment. + * @param int $comment_ID ID of the updated comment. * @param array $args An array of arguments to update the comment. */ - do_action( 'xmlrpc_call_success_wp_editComment', $comment_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_wp_editComment', $comment_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase return true; } /** - * Creates a new comment. + * Create new comment. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type string|int $3 Post ID or URL. - * @type array $4 Content structure. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type string|int $post + * @type array $content_struct * } * @return int|IXR_Error See wp_new_comment(). */ @@ -3894,7 +3840,7 @@ public function wp_newComment( $args ) { /** * Filters whether to allow anonymous comments over XML-RPC. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param bool $allow Whether to allow anonymous commenting via XML-RPC. * Default false. @@ -3906,7 +3852,7 @@ public function wp_newComment( $args ) { if ( ! $user ) { $logged_in = false; if ( $allow_anon && get_option( 'comment_registration' ) ) { - return new IXR_Error( 403, __( 'Sorry, you must be logged in to comment.' ) ); + return new IXR_Error( 403, __( 'You must be registered to comment.' ) ); } elseif ( ! $allow_anon ) { return $this->error; } @@ -3932,6 +3878,10 @@ public function wp_newComment( $args ) { return new IXR_Error( 403, __( 'Sorry, comments are closed for this item.' ) ); } + if ( empty( $content_struct['content'] ) ) { + return new IXR_Error( 403, __( 'Comment is required.' ) ); + } + if ( 'publish' === get_post_status( $post_id ) && ! current_user_can( 'edit_post', $post_id ) && @@ -3949,7 +3899,7 @@ public function wp_newComment( $args ) { $comment = array( 'comment_post_ID' => $post_id, - 'comment_content' => trim( $content_struct['content'] ), + 'comment_content' => $content_struct['content'], ); if ( $logged_in ) { @@ -3960,7 +3910,7 @@ public function wp_newComment( $args ) { $comment['comment_author'] = $this->escape( $display_name ); $comment['comment_author_email'] = $this->escape( $user_email ); $comment['comment_author_url'] = $this->escape( $user_url ); - $comment['user_id'] = $user->ID; + $comment['user_ID'] = $user->ID; } else { $comment['comment_author'] = ''; if ( isset( $content_struct['author'] ) ) { @@ -3977,10 +3927,10 @@ public function wp_newComment( $args ) { $comment['comment_author_url'] = $content_struct['author_url']; } - $comment['user_id'] = 0; + $comment['user_ID'] = 0; if ( get_option( 'require_name_email' ) ) { - if ( strlen( $comment['comment_author_email'] ) < 6 || '' === $comment['comment_author'] ) { + if ( strlen( $comment['comment_author_email'] < 6 ) || '' === $comment['comment_author'] ) { return new IXR_Error( 403, __( 'Comment author name and email are required.' ) ); } elseif ( ! is_email( $comment['comment_author_email'] ) ) { return new IXR_Error( 403, __( 'A valid email address is required.' ) ); @@ -3990,49 +3940,42 @@ public function wp_newComment( $args ) { $comment['comment_parent'] = isset( $content_struct['comment_parent'] ) ? absint( $content_struct['comment_parent'] ) : 0; - /** This filter is documented in wp-includes/comment.php */ - $allow_empty = apply_filters( 'allow_empty_comment', false, $comment ); - - if ( ! $allow_empty && '' === $comment['comment_content'] ) { - return new IXR_Error( 403, __( 'Comment is required.' ) ); - } - /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.newComment', $args, $this ); + do_action( 'xmlrpc_call', 'wp.newComment' ); - $comment_id = wp_new_comment( $comment, true ); - if ( is_wp_error( $comment_id ) ) { - return new IXR_Error( 403, $comment_id->get_error_message() ); + $comment_ID = wp_new_comment( $comment, true ); + if ( is_wp_error( $comment_ID ) ) { + return new IXR_Error( 403, $comment_ID->get_error_message() ); } - if ( ! $comment_id ) { + if ( ! $comment_ID ) { return new IXR_Error( 403, __( 'Something went wrong.' ) ); } /** * Fires after a new comment has been successfully created via XML-RPC. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $comment_id ID of the new comment. + * @param int $comment_ID ID of the new comment. * @param array $args An array of new comment arguments. */ - do_action( 'xmlrpc_call_success_wp_newComment', $comment_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_wp_newComment', $comment_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase - return $comment_id; + return $comment_ID; } /** - * Retrieves all of the comment status. + * Retrieve all of the comment status. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -4048,27 +3991,27 @@ public function wp_getCommentStatusList( $args ) { } if ( ! current_user_can( 'publish_posts' ) ) { - return new IXR_Error( 403, __( 'Sorry, you are not allowed to access details about this site.' ) ); + return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getCommentStatusList', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getCommentStatusList' ); return get_comment_statuses(); } /** - * Retrieves comment counts. + * Retrieve comment count. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Post ID. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $post_id * } * @return array|IXR_Error */ @@ -4090,11 +4033,11 @@ public function wp_getCommentCount( $args ) { } if ( ! current_user_can( 'edit_post', $post_id ) ) { - return new IXR_Error( 403, __( 'Sorry, you are not allowed to access details of this post.' ) ); + return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details of this post.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getCommentCount', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getCommentCount' ); $count = wp_count_comments( $post_id ); @@ -4107,16 +4050,16 @@ public function wp_getCommentCount( $args ) { } /** - * Retrieves post statuses. + * Retrieve post statuses. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -4132,26 +4075,26 @@ public function wp_getPostStatusList( $args ) { } if ( ! current_user_can( 'edit_posts' ) ) { - return new IXR_Error( 403, __( 'Sorry, you are not allowed to access details about this site.' ) ); + return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPostStatusList', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPostStatusList' ); return get_post_statuses(); } /** - * Retrieves page statuses. + * Retrieve page statuses. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -4167,26 +4110,26 @@ public function wp_getPageStatusList( $args ) { } if ( ! current_user_can( 'edit_pages' ) ) { - return new IXR_Error( 403, __( 'Sorry, you are not allowed to access details about this site.' ) ); + return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPageStatusList', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPageStatusList' ); return get_page_statuses(); } /** - * Retrieves page templates. + * Retrieve page templates. * - * @since 2.6.0 + * @since WP-2.6.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -4202,7 +4145,7 @@ public function wp_getPageTemplates( $args ) { } if ( ! current_user_can( 'edit_pages' ) ) { - return new IXR_Error( 403, __( 'Sorry, you are not allowed to access details about this site.' ) ); + return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) ); } $templates = get_page_templates(); @@ -4212,17 +4155,17 @@ public function wp_getPageTemplates( $args ) { } /** - * Retrieves blog options. + * Retrieve blog options. * - * @since 2.6.0 + * @since WP-2.6.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Optional. Options. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $options * } * @return array|IXR_Error */ @@ -4238,7 +4181,7 @@ public function wp_getOptions( $args ) { return $this->error; } - // If no specific options where asked for, return all of them. + // If no specific options where asked for, return all of them if ( count( $options ) == 0 ) { $options = array_keys( $this->blog_options ); } @@ -4247,9 +4190,9 @@ public function wp_getOptions( $args ) { } /** - * Retrieves blog options value from list. + * Retrieve blog options value from list. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param array $options Options to retrieve. * @return array @@ -4260,7 +4203,7 @@ public function _getOptions( $options ) { foreach ( $options as $option ) { if ( array_key_exists( $option, $this->blog_options ) ) { $data[ $option ] = $this->blog_options[ $option ]; - // Is the value static or dynamic? + //Is the value static or dynamic? if ( isset( $data[ $option ]['option'] ) ) { $data[ $option ]['value'] = get_option( $data[ $option ]['option'] ); unset( $data[ $option ]['option'] ); @@ -4276,17 +4219,17 @@ public function _getOptions( $options ) { } /** - * Updates blog options. + * Update blog options. * - * @since 2.6.0 + * @since WP-2.6.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Options. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $options * } * @return array|IXR_Error */ @@ -4320,22 +4263,22 @@ public function wp_setOptions( $args ) { update_option( $this->blog_options[ $o_name ]['option'], wp_unslash( $o_value ) ); } - // Now return the updated values. + //Now return the updated values return $this->_getOptions( $option_names ); } /** - * Retrieves a media item by ID. + * Retrieve a media item by ID * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Attachment ID. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $attachment_id * } * @return array|IXR_Error Associative array contains: * - 'date_created_gmt' @@ -4364,7 +4307,7 @@ public function wp_getMediaItem( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getMediaItem', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getMediaItem' ); $attachment = get_post( $attachment_id ); if ( ! $attachment || 'attachment' !== $attachment->post_type ) { @@ -4375,7 +4318,7 @@ public function wp_getMediaItem( $args ) { } /** - * Retrieves a collection of media library items (or attachments). + * Retrieves a collection of media library items (or attachments) * * Besides the common blog_id (unused), username, and password arguments, it takes a filter * array as last argument. @@ -4388,19 +4331,17 @@ public function wp_getMediaItem( $args ) { * - 'parent_id' - Default is ''. The post where the media item is attached. Empty string shows all media items. 0 shows unattached media items. * - 'mime_type' - Default is ''. Filter by mime type (e.g., 'image/jpeg', 'application/pdf') * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Query arguments. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $struct * } - * @return array|IXR_Error Contains a collection of media items. - * See wp_xmlrpc_server::wp_getMediaItem() for - * a description of each item contents. + * @return array|IXR_Error Contains a collection of media items. See wp_xmlrpc_server::wp_getMediaItem() for a description of each item contents */ public function wp_getMediaLibrary( $args ) { $this->escape( $args ); @@ -4419,7 +4360,7 @@ public function wp_getMediaLibrary( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getMediaLibrary', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getMediaLibrary' ); $parent_id = ( isset( $struct['parent_id'] ) ) ? absint( $struct['parent_id'] ) : ''; $mime_type = ( isset( $struct['mime_type'] ) ) ? $struct['mime_type'] : ''; @@ -4448,14 +4389,14 @@ public function wp_getMediaLibrary( $args ) { /** * Retrieves a list of post formats used by the site. * - * @since 3.1.0 + * @since WP-3.1.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error List of post formats, otherwise IXR_Error object. */ @@ -4471,15 +4412,15 @@ public function wp_getPostFormats( $args ) { } if ( ! current_user_can( 'edit_posts' ) ) { - return new IXR_Error( 403, __( 'Sorry, you are not allowed to access details about this site.' ) ); + return new IXR_Error( 403, __( 'Sorry, you are not allowed access to details about this site.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPostFormats', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPostFormats' ); $formats = get_post_format_strings(); - // Find out if they want a list of currently supports formats. + // find out if they want a list of currently supports formats if ( isset( $args[3] ) && is_array( $args[3] ) ) { if ( $args[3]['show-supported'] ) { if ( current_theme_supports( 'post-formats' ) ) { @@ -4498,20 +4439,20 @@ public function wp_getPostFormats( $args ) { } /** - * Retrieves a post type. + * Retrieves a post type * - * @since 3.4.0 + * @since WP-3.4.0 * * @see get_post_type_object() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type string $3 Post type name. - * @type array $4 Optional. Fields to fetch. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type string $post_type_name + * @type array $fields (optional) * } * @return array|IXR_Error Array contains: * - 'labels' @@ -4541,7 +4482,7 @@ public function wp_getPostType( $args ) { /** * Filters the default query fields used by the given XML-RPC method. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param array $fields An array of post type query fields for the given method. * @param string $method The method name. @@ -4555,7 +4496,7 @@ public function wp_getPostType( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPostType', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPostType' ); if ( ! post_type_exists( $post_type_name ) ) { return new IXR_Error( 403, __( 'Invalid post type.' ) ); @@ -4571,20 +4512,20 @@ public function wp_getPostType( $args ) { } /** - * Retrieves post types. + * Retrieves a post types * - * @since 3.4.0 + * @since WP-3.4.0 * * @see get_post_types() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Optional. Query arguments. - * @type array $4 Optional. Fields to fetch. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $filter (optional) + * @type array $fields (optional) * } * @return array|IXR_Error */ @@ -4612,7 +4553,7 @@ public function wp_getPostTypes( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getPostTypes', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getPostTypes' ); $post_types = get_post_types( $filter, 'objects' ); @@ -4630,9 +4571,9 @@ public function wp_getPostTypes( $args ) { } /** - * Retrieves revisions for a specific post. + * Retrieve revisions for a specific post. * - * @since 3.5.0 + * @since WP-3.5.0 * * The optional $fields parameter specifies what fields will be included * in the response array. @@ -4640,14 +4581,14 @@ public function wp_getPostTypes( $args ) { * @uses wp_get_post_revisions() * @see wp_getPost() for more on $fields * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Post ID. - * @type array $4 Optional. Fields to fetch. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $post_id + * @type array $fields (optional) * } * @return array|IXR_Error contains a collection of posts. */ @@ -4668,7 +4609,7 @@ public function wp_getRevisions( $args ) { /** * Filters the default revision query fields used by the given XML-RPC method. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param array $field An array of revision query fields. * @param string $method The method name. @@ -4682,7 +4623,7 @@ public function wp_getRevisions( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.getRevisions', $args, $this ); + do_action( 'xmlrpc_call', 'wp.getRevisions' ); $post = get_post( $post_id ); if ( ! $post ) { @@ -4711,7 +4652,7 @@ public function wp_getRevisions( $args ) { continue; } - // Skip autosaves. + // Skip autosaves if ( wp_is_post_autosave( $revision ) ) { continue; } @@ -4723,19 +4664,19 @@ public function wp_getRevisions( $args ) { } /** - * Restores a post revision. + * Restore a post revision * - * @since 3.5.0 + * @since WP-3.5.0 * * @uses wp_restore_post_revision() * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Revision ID. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $revision_id * } * @return bool|IXR_Error false if there was an error restoring, true if success. */ @@ -4756,7 +4697,7 @@ public function wp_restoreRevision( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'wp.restoreRevision', $args, $this ); + do_action( 'xmlrpc_call', 'wp.restoreRevision' ); $revision = wp_get_post_revision( $revision_id ); if ( ! $revision ) { @@ -4786,24 +4727,23 @@ public function wp_restoreRevision( $args ) { return (bool) $post; } - /* - * Blogger API functions. - * Specs on http://plant.blogger.com/api and https://groups.yahoo.com/group/bloggerDev/ + /* Blogger API functions. + * specs on http://plant.blogger.com/api and https://groups.yahoo.com/group/bloggerDev/ */ /** - * Retrieves blogs that user owns. + * Retrieve blogs that user owns. * * Will make more sense once we support multiple blogs. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -4827,7 +4767,7 @@ public function blogger_getUsersBlogs( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'blogger.getUsersBlogs', $args, $this ); + do_action( 'xmlrpc_call', 'blogger.getUsersBlogs' ); $is_admin = current_user_can( 'manage_options' ); @@ -4843,16 +4783,15 @@ public function blogger_getUsersBlogs( $args ) { } /** - * Private function for retrieving a users blogs for multisite setups. + * Private function for retrieving a users blogs for multisite setups * - * @since 3.0.0 + * @since WP-3.0.0 * * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type string $username Username. + * @type string $password Password. * } * @return array|IXR_Error */ @@ -4862,9 +4801,12 @@ protected function _multisite_getUsersBlogs( $args ) { $domain = $current_blog->domain; $path = $current_blog->path . 'xmlrpc.php'; - $blogs = $this->wp_getUsersBlogs( $args ); - if ( $blogs instanceof IXR_Error ) { - return $blogs; + $rpc = new IXR_Client( set_url_scheme( "http://{$domain}{$path}" ) ); + $rpc->query( 'wp.getUsersBlogs', $args[1], $args[2] ); + $blogs = $rpc->getResponse(); + + if ( isset( $blogs['faultCode'] ) ) { + return new IXR_Error( $blogs['faultCode'], $blogs['faultString'] ); } if ( $_SERVER['HTTP_HOST'] == $domain && $_SERVER['REQUEST_URI'] == $path ) { @@ -4880,18 +4822,18 @@ protected function _multisite_getUsersBlogs( $args ) { } /** - * Retrieves user's data. + * Retrieve user's data. * * Gives your client some info about you, so you don't have to. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -4911,7 +4853,7 @@ public function blogger_getUserInfo( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'blogger.getUserInfo', $args, $this ); + do_action( 'xmlrpc_call', 'blogger.getUserInfo' ); $struct = array( 'nickname' => $user->nickname, @@ -4925,24 +4867,24 @@ public function blogger_getUserInfo( $args ) { } /** - * Retrieves a post. + * Retrieve post. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type int $1 Post ID. - * @type string $2 Username. - * @type string $3 Password. + * @type int $blog_id (unused) + * @type int $post_ID + * @type string $username + * @type string $password * } * @return array|IXR_Error */ public function blogger_getPost( $args ) { $this->escape( $args ); - $post_id = (int) $args[1]; + $post_ID = (int) $args[1]; $username = $args[2]; $password = $args[3]; @@ -4951,19 +4893,19 @@ public function blogger_getPost( $args ) { return $this->error; } - $post_data = get_post( $post_id, ARRAY_A ); + $post_data = get_post( $post_ID, ARRAY_A ); if ( ! $post_data ) { return new IXR_Error( 404, __( 'Invalid post ID.' ) ); } - if ( ! current_user_can( 'edit_post', $post_id ) ) { + if ( ! current_user_can( 'edit_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'blogger.getPost', $args, $this ); + do_action( 'xmlrpc_call', 'blogger.getPost' ); - $categories = implode( ',', wp_get_post_categories( $post_id ) ); + $categories = implode( ',', wp_get_post_categories( $post_ID ) ); $content = '<title>' . wp_unslash( $post_data['post_title'] ) . ''; $content .= '' . $categories . ''; @@ -4980,18 +4922,18 @@ public function blogger_getPost( $args ) { } /** - * Retrieves the list of recent posts. + * Retrieve list of recent posts. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type string $0 App key (unused). - * @type int $1 Blog ID (unused). - * @type string $2 Username. - * @type string $3 Password. - * @type int $4 Optional. Number of posts. + * @type string $appkey (unused) + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $numberposts (optional) * } * @return array|IXR_Error */ @@ -4999,7 +4941,7 @@ public function blogger_getRecentPosts( $args ) { $this->escape( $args ); - // $args[0] = appkey - ignored. + // $args[0] = appkey - ignored $username = $args[2]; $password = $args[3]; if ( isset( $args[4] ) ) { @@ -5018,7 +4960,7 @@ public function blogger_getRecentPosts( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'blogger.getRecentPosts', $args, $this ); + do_action( 'xmlrpc_call', 'blogger.getRecentPosts' ); $posts_list = wp_get_recent_posts( $query ); @@ -5054,43 +4996,43 @@ public function blogger_getRecentPosts( $args ) { /** * Deprecated. * - * @since 1.5.0 - * @deprecated 3.5.0 + * @since WP-1.5.0 + * @deprecated WP-3.5.0 * * @param array $args Unused. * @return IXR_Error Error object. */ public function blogger_getTemplate( $args ) { - return new IXR_Error( 403, __( 'Sorry, this method is not supported.' ) ); + return new IXR_Error( 403, __( 'Sorry, that file cannot be edited.' ) ); } /** * Deprecated. * - * @since 1.5.0 - * @deprecated 3.5.0 + * @since WP-1.5.0 + * @deprecated WP-3.5.0 * * @param array $args Unused. * @return IXR_Error Error object. */ public function blogger_setTemplate( $args ) { - return new IXR_Error( 403, __( 'Sorry, this method is not supported.' ) ); + return new IXR_Error( 403, __( 'Sorry, that file cannot be edited.' ) ); } /** - * Creates a new post. + * Creates new post. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type string $0 App key (unused). - * @type int $1 Blog ID (unused). - * @type string $2 Username. - * @type string $3 Password. - * @type string $4 Content. - * @type int $5 Publish flag. 0 for draft, 1 for publish. + * @type string $appkey (unused) + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type string $content + * @type string $publish * } * @return int|IXR_Error */ @@ -5108,7 +5050,7 @@ public function blogger_newPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'blogger.newPost', $args, $this ); + do_action( 'xmlrpc_call', 'blogger.newPost' ); $cap = ( $publish ) ? 'publish_posts' : 'edit_posts'; if ( ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) || ! current_user_can( $cap ) ) { @@ -5128,44 +5070,44 @@ public function blogger_newPost( $args ) { $post_data = compact( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status' ); - $post_id = wp_insert_post( $post_data ); - if ( is_wp_error( $post_id ) ) { - return new IXR_Error( 500, $post_id->get_error_message() ); + $post_ID = wp_insert_post( $post_data ); + if ( is_wp_error( $post_ID ) ) { + return new IXR_Error( 500, $post_ID->get_error_message() ); } - if ( ! $post_id ) { - return new IXR_Error( 500, __( 'Sorry, the post could not be created.' ) ); + if ( ! $post_ID ) { + return new IXR_Error( 500, __( 'Sorry, your entry could not be posted.' ) ); } - $this->attach_uploads( $post_id, $post_content ); + $this->attach_uploads( $post_ID, $post_content ); /** * Fires after a new post has been successfully created via the XML-RPC Blogger API. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $post_id ID of the new post. + * @param int $post_ID ID of the new post. * @param array $args An array of new post arguments. */ - do_action( 'xmlrpc_call_success_blogger_newPost', $post_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_blogger_newPost', $post_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase - return $post_id; + return $post_ID; } /** - * Edits a post. + * Edit a post. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type int $1 Post ID. - * @type string $2 Username. - * @type string $3 Password. - * @type string $4 Content - * @type int $5 Publish flag. 0 for draft, 1 for publish. + * @type int $blog_id (unused) + * @type int $post_ID + * @type string $username + * @type string $password + * @type string $content + * @type bool $publish * } * @return true|IXR_Error true when done. */ @@ -5173,7 +5115,7 @@ public function blogger_editPost( $args ) { $this->escape( $args ); - $post_id = (int) $args[1]; + $post_ID = (int) $args[1]; $username = $args[2]; $password = $args[3]; $content = $args[4]; @@ -5185,9 +5127,9 @@ public function blogger_editPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'blogger.editPost', $args, $this ); + do_action( 'xmlrpc_call', 'blogger.editPost' ); - $actual_post = get_post( $post_id, ARRAY_A ); + $actual_post = get_post( $post_ID, ARRAY_A ); if ( ! $actual_post || 'post' !== $actual_post['post_type'] ) { return new IXR_Error( 404, __( 'Sorry, no such post.' ) ); @@ -5195,7 +5137,7 @@ public function blogger_editPost( $args ) { $this->escape( $actual_post ); - if ( ! current_user_can( 'edit_post', $post_id ) ) { + if ( ! current_user_can( 'edit_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) ); } if ( 'publish' === $actual_post['post_status'] && ! current_user_can( 'publish_posts' ) ) { @@ -5214,42 +5156,42 @@ public function blogger_editPost( $args ) { $result = wp_update_post( $postdata ); if ( ! $result ) { - return new IXR_Error( 500, __( 'Sorry, the post could not be updated.' ) ); + return new IXR_Error( 500, __( 'For some strange yet very annoying reason, this post could not be edited.' ) ); } $this->attach_uploads( $actual_post['ID'], $postdata['post_content'] ); /** * Fires after a post has been successfully updated via the XML-RPC Blogger API. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $post_id ID of the updated post. + * @param int $post_ID ID of the updated post. * @param array $args An array of arguments for the post to edit. */ - do_action( 'xmlrpc_call_success_blogger_editPost', $post_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_blogger_editPost', $post_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase return true; } /** - * Deletes a post. + * Remove a post. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type int $1 Post ID. - * @type string $2 Username. - * @type string $3 Password. + * @type int $blog_id (unused) + * @type int $post_ID + * @type string $username + * @type string $password * } * @return true|IXR_Error True when post is deleted. */ public function blogger_deletePost( $args ) { $this->escape( $args ); - $post_id = (int) $args[1]; + $post_ID = (int) $args[1]; $username = $args[2]; $password = $args[3]; @@ -5259,44 +5201,43 @@ public function blogger_deletePost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'blogger.deletePost', $args, $this ); + do_action( 'xmlrpc_call', 'blogger.deletePost' ); - $actual_post = get_post( $post_id, ARRAY_A ); + $actual_post = get_post( $post_ID, ARRAY_A ); if ( ! $actual_post || 'post' !== $actual_post['post_type'] ) { return new IXR_Error( 404, __( 'Sorry, no such post.' ) ); } - if ( ! current_user_can( 'delete_post', $post_id ) ) { + if ( ! current_user_can( 'delete_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this post.' ) ); } - $result = wp_delete_post( $post_id ); + $result = wp_delete_post( $post_ID ); if ( ! $result ) { - return new IXR_Error( 500, __( 'Sorry, the post could not be deleted.' ) ); + return new IXR_Error( 500, __( 'The post cannot be deleted.' ) ); } /** * Fires after a post has been successfully deleted via the XML-RPC Blogger API. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $post_id ID of the deleted post. + * @param int $post_ID ID of the deleted post. * @param array $args An array of arguments to delete the post. */ - do_action( 'xmlrpc_call_success_blogger_deletePost', $post_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_blogger_deletePost', $post_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase return true; } - /* - * MetaWeblog API functions. - * Specs on wherever Dave Winer wants them to be. + /* MetaWeblog API functions + * specs on wherever Dave Winer wants them to be */ /** - * Creates a new post. + * Create a new post. * * The 'content_struct' argument must contain: * - title @@ -5320,16 +5261,16 @@ public function blogger_deletePost( $args ) { * - dateCreated * - wp_post_thumbnail * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Content structure. - * @type int $4 Optional. Publish flag. 0 for draft, 1 for publish. Default 0. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $content_struct + * @type int $publish * } * @return int|IXR_Error */ @@ -5347,7 +5288,7 @@ public function mw_newPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'metaWeblog.newPost', $args, $this ); + do_action( 'xmlrpc_call', 'metaWeblog.newPost' ); $page_template = ''; if ( ! empty( $content_struct['post_type'] ) ) { @@ -5375,7 +5316,7 @@ public function mw_newPost( $args ) { $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. + // No other post_type values are allowed here return new IXR_Error( 401, __( 'Invalid post type.' ) ); } } else { @@ -5397,7 +5338,7 @@ public function mw_newPost( $args ) { return new IXR_Error( 401, $error_message ); } - // Check for a valid post format if one was given. + // Check for a valid post format if one was given if ( isset( $content_struct['wp_post_format'] ) ) { $content_struct['wp_post_format'] = sanitize_key( $content_struct['wp_post_format'] ); if ( ! array_key_exists( $content_struct['wp_post_format'], get_post_format_strings() ) ) { @@ -5405,29 +5346,32 @@ public function mw_newPost( $args ) { } } - // Let WordPress generate the 'post_name' (slug) unless + // Let ClassicPress generate the post_name (slug) unless // one has been provided. - $post_name = null; + $post_name = ''; if ( isset( $content_struct['wp_slug'] ) ) { $post_name = $content_struct['wp_slug']; } // Only use a password if one was given. - $post_password = ''; if ( isset( $content_struct['wp_password'] ) ) { $post_password = $content_struct['wp_password']; + } else { + $post_password = ''; } - // Only set a post parent if one was given. - $post_parent = 0; + // Only set a post parent if one was provided. if ( isset( $content_struct['wp_page_parent_id'] ) ) { $post_parent = $content_struct['wp_page_parent_id']; + } else { + $post_parent = 0; } - // Only set the 'menu_order' if it was given. - $menu_order = 0; + // Only set the menu_order if it was provided. if ( isset( $content_struct['wp_page_order'] ) ) { $menu_order = $content_struct['wp_page_order']; + } else { + $menu_order = 0; } $post_author = $user->ID; @@ -5455,8 +5399,8 @@ public function mw_newPost( $args ) { $post_author = $content_struct['wp_author_id']; } - $post_title = isset( $content_struct['title'] ) ? $content_struct['title'] : ''; - $post_content = isset( $content_struct['description'] ) ? $content_struct['description'] : ''; + $post_title = isset( $content_struct['title'] ) ? $content_struct['title'] : null; + $post_content = isset( $content_struct['description'] ) ? $content_struct['description'] : null; $post_status = $publish ? 'publish' : 'draft'; @@ -5469,15 +5413,15 @@ public function mw_newPost( $args ) { $post_status = $content_struct[ "{$post_type}_status" ]; break; default: - // Deliberably left empty. + $post_status = $publish ? 'publish' : 'draft'; break; } } - $post_excerpt = isset( $content_struct['mt_excerpt'] ) ? $content_struct['mt_excerpt'] : ''; - $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : ''; + $post_excerpt = isset( $content_struct['mt_excerpt'] ) ? $content_struct['mt_excerpt'] : null; + $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : null; - $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : array(); + $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : null; if ( isset( $content_struct['mt_allow_comments'] ) ) { if ( ! is_numeric( $content_struct['mt_allow_comments'] ) ) { @@ -5541,10 +5485,10 @@ public function mw_newPost( $args ) { } if ( $post_more ) { - $post_content .= '' . $post_more; + $post_content = $post_content . '' . $post_more; } - $to_ping = ''; + $to_ping = null; if ( isset( $content_struct['mt_tb_ping_urls'] ) ) { $to_ping = $content_struct['mt_tb_ping_urls']; if ( is_array( $to_ping ) ) { @@ -5552,19 +5496,20 @@ public function mw_newPost( $args ) { } } - // Do some timestamp voodoo. + // Do some timestamp voodoo if ( ! empty( $content_struct['date_created_gmt'] ) ) { - // 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(); } - $post_date = ''; - $post_date_gmt = ''; if ( ! empty( $dateCreated ) ) { - $post_date = iso8601_to_datetime( $dateCreated ); - $post_date_gmt = iso8601_to_datetime( $dateCreated, 'gmt' ); + $post_date = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); + $post_date_gmt = iso8601_to_datetime( $dateCreated, 'GMT' ); + } else { + $post_date = ''; + $post_date_gmt = ''; } $post_category = array(); @@ -5580,8 +5525,8 @@ public function mw_newPost( $args ) { $postdata = compact( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_category', 'post_status', 'post_excerpt', 'comment_status', 'ping_status', 'to_ping', 'post_type', 'post_name', 'post_password', 'post_parent', 'menu_order', 'tags_input', 'page_template' ); - $post_id = get_default_post_to_edit( $post_type, true )->ID; - $postdata['ID'] = $post_id; + $post_ID = get_default_post_to_edit( $post_type, true )->ID; + $postdata['ID'] = $post_ID; // Only posts can be sticky. if ( 'post' === $post_type && isset( $content_struct['sticky'] ) ) { @@ -5594,67 +5539,67 @@ public function mw_newPost( $args ) { } if ( isset( $content_struct['custom_fields'] ) ) { - $this->set_custom_fields( $post_id, $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 ) { + 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. + // Handle enclosures $thisEnclosure = isset( $content_struct['enclosure'] ) ? $content_struct['enclosure'] : null; - $this->add_enclosure_if_new( $post_id, $thisEnclosure ); + $this->add_enclosure_if_new( $post_ID, $thisEnclosure ); - $this->attach_uploads( $post_id, $post_content ); + $this->attach_uploads( $post_ID, $post_content ); // Handle post formats if assigned, value is validated earlier - // in this function. + // in this function if ( isset( $content_struct['wp_post_format'] ) ) { - set_post_format( $post_id, $content_struct['wp_post_format'] ); + set_post_format( $post_ID, $content_struct['wp_post_format'] ); } - $post_id = wp_insert_post( $postdata, true ); - if ( is_wp_error( $post_id ) ) { - return new IXR_Error( 500, $post_id->get_error_message() ); + $post_ID = wp_insert_post( $postdata, true ); + if ( is_wp_error( $post_ID ) ) { + return new IXR_Error( 500, $post_ID->get_error_message() ); } - if ( ! $post_id ) { - return new IXR_Error( 500, __( 'Sorry, the post could not be created.' ) ); + if ( ! $post_ID ) { + return new IXR_Error( 500, __( 'Sorry, your entry could not be posted.' ) ); } /** * Fires after a new post has been successfully created via the XML-RPC MovableType API. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $post_id ID of the new post. + * @param int $post_ID ID of the new post. * @param array $args An array of arguments to create the new post. */ - do_action( 'xmlrpc_call_success_mw_newPost', $post_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_mw_newPost', $post_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase - return (string) $post_id; + return strval( $post_ID ); } /** * Adds an enclosure to a post if it's new. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param int $post_id Post ID. - * @param array $enclosure Enclosure data. + * @param integer $post_ID Post ID. + * @param array $enclosure Enclosure data. */ - public function add_enclosure_if_new( $post_id, $enclosure ) { + public function add_enclosure_if_new( $post_ID, $enclosure ) { if ( is_array( $enclosure ) && isset( $enclosure['url'] ) && isset( $enclosure['length'] ) && isset( $enclosure['type'] ) ) { - $encstring = $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type'] . "\n"; - $found = false; - $enclosures = get_post_meta( $post_id, 'enclosure' ); + $encstring = $enclosure['url'] . "\n" . $enclosure['length'] . "\n" . $enclosure['type'] . "\n"; + $found = false; + $enclosures = get_post_meta( $post_ID, 'enclosure' ); if ( $enclosures ) { foreach ( $enclosures as $enc ) { - // This method used to omit the trailing new line. #23219 + // This method used to omit the trailing new line. https://core.trac.wordpress.org/ticket/23219 if ( rtrim( $enc, "\n" ) == rtrim( $encstring, "\n" ) ) { $found = true; break; @@ -5662,55 +5607,55 @@ public function add_enclosure_if_new( $post_id, $enclosure ) { } } if ( ! $found ) { - add_post_meta( $post_id, 'enclosure', $encstring ); + add_post_meta( $post_ID, 'enclosure', $encstring ); } } } /** - * Attaches an upload to a post. + * Attach upload to a post. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param int $post_id Post ID. + * @param int $post_ID Post ID. * @param string $post_content Post Content for attachment. */ - public function attach_uploads( $post_id, $post_content ) { + public function attach_uploads( $post_ID, $post_content ) { global $wpdb; - // Find any unattached files. + // find any unattached files $attachments = $wpdb->get_results( "SELECT ID, guid FROM {$wpdb->posts} WHERE post_parent = '0' AND post_type = 'attachment'" ); if ( is_array( $attachments ) ) { foreach ( $attachments as $file ) { if ( ! empty( $file->guid ) && strpos( $post_content, $file->guid ) !== false ) { - $wpdb->update( $wpdb->posts, array( 'post_parent' => $post_id ), array( 'ID' => $file->ID ) ); + $wpdb->update( $wpdb->posts, array( 'post_parent' => $post_ID ), array( 'ID' => $file->ID ) ); } } } } /** - * Edits a post. + * Edit a post. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Post ID. - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Content structure. - * @type int $4 Optional. Publish flag. 0 for draft, 1 for publish. Default 0. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $content_struct + * @type int $publish * } - * @return true|IXR_Error True on success. + * @return bool|IXR_Error True on success. */ public function mw_editPost( $args ) { $this->escape( $args ); - $post_id = (int) $args[0]; + $post_ID = (int) $args[0]; $username = $args[1]; $password = $args[2]; $content_struct = $args[3]; @@ -5722,19 +5667,19 @@ public function mw_editPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'metaWeblog.editPost', $args, $this ); + do_action( 'xmlrpc_call', 'metaWeblog.editPost' ); - $postdata = get_post( $post_id, ARRAY_A ); + $postdata = get_post( $post_ID, ARRAY_A ); /* - * If there is no post data for the give post ID, stop now and return an error. + * If there is no post data for the give post id, stop now and return an error. * Otherwise 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 ) ) { + if ( ! current_user_can( 'edit_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) ); } @@ -5748,7 +5693,7 @@ public function mw_editPost( $args ) { return new IXR_Error( 401, __( 'The post type may not be changed.' ) ); } - // Check for a valid post format if one was given. + // Check for a valid post format if one was given if ( isset( $content_struct['wp_post_format'] ) ) { $content_struct['wp_post_format'] = sanitize_key( $content_struct['wp_post_format'] ); if ( ! array_key_exists( $content_struct['wp_post_format'], get_post_format_strings() ) ) { @@ -5769,7 +5714,7 @@ public function mw_editPost( $args ) { $ping_status = $postdata['ping_status']; $comment_status = $postdata['comment_status']; - // Let WordPress manage slug if none was provided. + // Let ClassicPress manage slug if none was provided. $post_name = $postdata['post_name']; if ( isset( $content_struct['wp_slug'] ) ) { $post_name = $content_struct['wp_slug']; @@ -5785,19 +5730,19 @@ public function mw_editPost( $args ) { $post_parent = $content_struct['wp_page_parent_id']; } - // Only set the 'menu_order' if it was given. + // Only set the menu_order if it was given. if ( isset( $content_struct['wp_page_order'] ) ) { $menu_order = $content_struct['wp_page_order']; } - $page_template = ''; + $page_template = null; if ( ! empty( $content_struct['wp_page_template'] ) && 'page' === $post_type ) { $page_template = $content_struct['wp_page_template']; } $post_author = $postdata['post_author']; - // If an author id was provided then use it instead. + // Only set the post_author if one is set. if ( isset( $content_struct['wp_author_id'] ) ) { // Check permissions if attempting to switch author to or from another user. if ( $user->ID != $content_struct['wp_author_id'] || $user->ID != $post_author ) { @@ -5898,7 +5843,7 @@ public function mw_editPost( $args ) { $post_excerpt = $content_struct['mt_excerpt']; } - $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : ''; + $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : null; $post_status = $publish ? 'publish' : 'draft'; if ( isset( $content_struct[ "{$post_type}_status" ] ) ) { @@ -5915,7 +5860,7 @@ public function mw_editPost( $args ) { } } - $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : array(); + $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : null; if ( 'publish' === $post_status || 'private' === $post_status ) { if ( 'page' === $post_type && ! current_user_can( 'publish_pages' ) ) { @@ -5929,7 +5874,7 @@ public function mw_editPost( $args ) { $post_content = $post_content . '' . $post_more; } - $to_ping = ''; + $to_ping = null; if ( isset( $content_struct['mt_tb_ping_urls'] ) ) { $to_ping = $content_struct['mt_tb_ping_urls']; if ( is_array( $to_ping ) ) { @@ -5949,8 +5894,8 @@ public function mw_editPost( $args ) { $edit_date = false; if ( ! empty( $dateCreated ) ) { - $post_date = iso8601_to_datetime( $dateCreated ); - $post_date_gmt = iso8601_to_datetime( $dateCreated, 'gmt' ); + $post_date = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) ); + $post_date_gmt = iso8601_to_datetime( $dateCreated, 'GMT' ); // Flag the post date to be edited. $edit_date = true; @@ -5968,7 +5913,7 @@ public function mw_editPost( $args ) { } if ( ! $result ) { - return new IXR_Error( 500, __( 'Sorry, the post could not be updated.' ) ); + return new IXR_Error( 500, __( 'Sorry, your entry could not be edited.' ) ); } // Only posts can be sticky. @@ -5983,16 +5928,16 @@ public function mw_editPost( $args ) { } if ( isset( $content_struct['custom_fields'] ) ) { - $this->set_custom_fields( $post_id, $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 ); + delete_post_thumbnail( $post_ID ); } else { - if ( set_post_thumbnail( $post_id, $content_struct['wp_post_thumbnail'] ) === false ) { + if ( set_post_thumbnail( $post_ID, $content_struct['wp_post_thumbnail'] ) === false ) { return new IXR_Error( 404, __( 'Invalid attachment ID.' ) ); } } @@ -6001,46 +5946,47 @@ public function mw_editPost( $args ) { // Handle enclosures. $thisEnclosure = isset( $content_struct['enclosure'] ) ? $content_struct['enclosure'] : null; - $this->add_enclosure_if_new( $post_id, $thisEnclosure ); + $this->add_enclosure_if_new( $post_ID, $thisEnclosure ); $this->attach_uploads( $ID, $post_content ); // Handle post formats if assigned, validation is handled earlier in this function. if ( isset( $content_struct['wp_post_format'] ) ) { - set_post_format( $post_id, $content_struct['wp_post_format'] ); + set_post_format( $post_ID, $content_struct['wp_post_format'] ); } /** * Fires after a post has been successfully updated via the XML-RPC MovableType API. * - * @since 3.4.0 + * @since WP-3.4.0 * - * @param int $post_id ID of the updated post. + * @param int $post_ID ID of the updated post. * @param array $args An array of arguments to update the post. */ - do_action( 'xmlrpc_call_success_mw_editPost', $post_id, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + do_action( 'xmlrpc_call_success_mw_editPost', $post_ID, $args ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase return true; } /** - * Retrieves a post. + * Retrieve post. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Post ID. - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type int $post_ID + * @type string $username + * @type string $password * } * @return array|IXR_Error */ public function mw_getPost( $args ) { $this->escape( $args ); - $post_id = (int) $args[0]; + $post_ID = (int) $args[0]; $username = $args[1]; $password = $args[2]; @@ -6049,17 +5995,17 @@ public function mw_getPost( $args ) { return $this->error; } - $postdata = get_post( $post_id, ARRAY_A ); + $postdata = get_post( $post_ID, ARRAY_A ); if ( ! $postdata ) { return new IXR_Error( 404, __( 'Invalid post ID.' ) ); } - if ( ! current_user_can( 'edit_post', $post_id ) ) { + if ( ! current_user_can( 'edit_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'metaWeblog.getPost', $args, $this ); + do_action( 'xmlrpc_call', 'metaWeblog.getPost' ); if ( '' !== $postdata['post_date'] ) { $post_date = $this->_convert_date( $postdata['post_date'] ); @@ -6068,13 +6014,13 @@ public function mw_getPost( $args ) { $post_modified_gmt = $this->_convert_date_gmt( $postdata['post_modified_gmt'], $postdata['post_modified'] ); $categories = array(); - $catids = wp_get_post_categories( $post_id ); + $catids = wp_get_post_categories( $post_ID ); foreach ( $catids as $catid ) { $categories[] = get_cat_name( $catid ); } $tagnames = array(); - $tags = wp_get_post_tags( $post_id ); + $tags = wp_get_post_tags( $post_ID ); if ( ! empty( $tags ) ) { foreach ( $tags as $tag ) { $tagnames[] = $tag->name; @@ -6098,19 +6044,19 @@ public function mw_getPost( $args ) { $postdata['post_status'] = 'publish'; } - // Get post format. - $post_format = get_post_format( $post_id ); + // Get post format + $post_format = get_post_format( $post_ID ); if ( empty( $post_format ) ) { $post_format = 'standard'; } $sticky = false; - if ( is_sticky( $post_id ) ) { + if ( is_sticky( $post_ID ) ) { $sticky = true; } $enclosure = array(); - foreach ( (array) get_post_custom( $post_id ) as $key => $val ) { + foreach ( (array) get_post_custom( $post_ID ) as $key => $val ) { if ( 'enclosure' === $key ) { foreach ( (array) $val as $enc ) { $encdata = explode( "\n", $enc ); @@ -6130,8 +6076,8 @@ public function mw_getPost( $args ) { 'title' => $postdata['post_title'], 'link' => $link, 'permaLink' => $link, - // Commented out because no other tool seems to use this. - // 'content' => $entry['post_content'], + // commented out because no other tool seems to use this + // 'content' => $entry['post_content'], 'categories' => $categories, 'mt_excerpt' => $postdata['post_excerpt'], 'mt_text_more' => $post['extended'], @@ -6145,7 +6091,7 @@ public function mw_getPost( $args ) { '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 ), + 'custom_fields' => $this->get_custom_fields( $post_ID ), 'wp_post_format' => $post_format, 'sticky' => $sticky, 'date_modified' => $post_modified, @@ -6165,17 +6111,17 @@ public function mw_getPost( $args ) { } /** - * Retrieves list of recent posts. + * Retrieve list of recent posts. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Optional. Number of posts. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $numberposts * } * @return array|IXR_Error */ @@ -6200,7 +6146,7 @@ public function mw_getRecentPosts( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'metaWeblog.getRecentPosts', $args, $this ); + do_action( 'xmlrpc_call', 'metaWeblog.getRecentPosts' ); $posts_list = wp_get_recent_posts( $query ); @@ -6250,7 +6196,7 @@ public function mw_getRecentPosts( $args ) { $entry['post_status'] = 'publish'; } - // Get post format. + // Get post format $post_format = get_post_format( $entry['ID'] ); if ( empty( $post_format ) ) { $post_format = 'standard'; @@ -6264,7 +6210,7 @@ public function mw_getRecentPosts( $args ) { 'title' => $entry['post_title'], 'link' => $link, 'permaLink' => $link, - // Commented out because no other tool seems to use this. + // commented out because no other tool seems to use this // 'content' => $entry['post_content'], 'categories' => $categories, 'mt_excerpt' => $entry['post_excerpt'], @@ -6292,16 +6238,16 @@ public function mw_getRecentPosts( $args ) { } /** - * Retrieves the list of categories on a given blog. + * Retrieve the list of categories on a given blog. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -6321,7 +6267,7 @@ public function mw_getCategories( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'metaWeblog.getCategories', $args, $this ); + do_action( 'xmlrpc_call', 'metaWeblog.getCategories' ); $categories_struct = array(); @@ -6351,17 +6297,17 @@ public function mw_getCategories( $args ) { * * @link http://mycvs.org/archives/2004/06/30/file-upload-to-wordpress-in-ecto/ * - * @since 1.5.0 + * @since WP-1.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Data. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type array $data * } * @return array|IXR_Error */ @@ -6382,7 +6328,7 @@ public function mw_newMediaObject( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'metaWeblog.newMediaObject', $args, $this ); + do_action( 'xmlrpc_call', 'metaWeblog.newMediaObject' ); if ( ! current_user_can( 'upload_files' ) ) { $this->error = new IXR_Error( 401, __( 'Sorry, you are not allowed to upload files.' ) ); @@ -6390,24 +6336,17 @@ public function mw_newMediaObject( $args ) { } if ( is_multisite() && upload_is_user_over_quota( false ) ) { - $this->error = new IXR_Error( - 401, - sprintf( - /* translators: %s: Allowed space allocation. */ - __( 'Sorry, you have used your space allocation of %s. Please delete some files to upload more files.' ), - size_format( get_space_allowed() * MB_IN_BYTES ) - ) - ); + $this->error = new IXR_Error( 401, __( 'Sorry, you have used your space allocation.' ) ); return $this->error; } /** * Filters whether to preempt the XML-RPC media upload. * - * Returning a truthy value will effectively short-circuit the media upload, + * Passing a truthy value will effectively short-circuit the media upload, * returning that value as a 500 error instead. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param bool $error Whether to pre-empt the media upload. Default false. */ @@ -6418,11 +6357,11 @@ public function mw_newMediaObject( $args ) { $upload = wp_upload_bits( $name, null, $bits ); if ( ! empty( $upload['error'] ) ) { - /* translators: 1: File name, 2: Error message. */ + /* translators: 1: file name, 2: error message */ $errorString = sprintf( __( 'Could not write file %1$s (%2$s).' ), $name, $upload['error'] ); return new IXR_Error( 500, $errorString ); } - // Construct the attachment array. + // Construct the attachment array $post_id = 0; if ( ! empty( $data['post_id'] ) ) { $post_id = (int) $data['post_id']; @@ -6440,14 +6379,14 @@ public function mw_newMediaObject( $args ) { 'guid' => $upload['url'], ); - // Save the data. + // Save the data $id = wp_insert_attachment( $attachment, $upload['file'], $post_id ); wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $upload['file'] ) ); /** * Fires after a new attachment has been added via the XML-RPC MovableType API. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param int $id ID of the new attachment. * @param array $args An array of arguments to add the attachment. @@ -6456,7 +6395,7 @@ public function mw_newMediaObject( $args ) { $struct = $this->_prepare_media_item( get_post( $id ) ); - // Deprecated values. + // Deprecated values $struct['id'] = $struct['attachment_id']; $struct['file'] = $struct['title']; $struct['url'] = $struct['link']; @@ -6464,23 +6403,22 @@ public function mw_newMediaObject( $args ) { return $struct; } - /* - * MovableType API functions. - * Specs on http://www.movabletype.org/docs/mtmanual_programmatic.html + /* MovableType API functions + * specs on http://www.movabletype.org/docs/mtmanual_programmatic.html */ /** - * Retrieves the post titles of recent posts. + * Retrieve the post titles of recent posts. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. - * @type int $3 Optional. Number of posts. + * @type int $blog_id (unused) + * @type string $username + * @type string $password + * @type int $numberposts * } * @return array|IXR_Error */ @@ -6501,7 +6439,7 @@ public function mt_getRecentPostTitles( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.getRecentPostTitles', $args, $this ); + do_action( 'xmlrpc_call', 'mt.getRecentPostTitles' ); $posts_list = wp_get_recent_posts( $query ); @@ -6534,16 +6472,16 @@ public function mt_getRecentPostTitles( $args ) { } /** - * Retrieves the list of all categories on a blog. + * Retrieve list of all categories on blog. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Blog ID (unused). - * @type string $1 Username. - * @type string $2 Password. + * @type int $blog_id (unused) + * @type string $username + * @type string $password * } * @return array|IXR_Error */ @@ -6563,7 +6501,7 @@ public function mt_getCategoryList( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.getCategoryList', $args, $this ); + do_action( 'xmlrpc_call', 'mt.getCategoryList' ); $categories_struct = array(); @@ -6587,23 +6525,23 @@ public function mt_getCategoryList( $args ) { } /** - * Retrieves post categories. + * Retrieve post categories. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Post ID. - * @type string $1 Username. - * @type string $2 Password. + * @type int $post_ID + * @type string $username + * @type string $password * } * @return array|IXR_Error */ public function mt_getPostCategories( $args ) { $this->escape( $args ); - $post_id = (int) $args[0]; + $post_ID = (int) $args[0]; $username = $args[1]; $password = $args[2]; @@ -6612,20 +6550,20 @@ public function mt_getPostCategories( $args ) { return $this->error; } - if ( ! get_post( $post_id ) ) { + if ( ! get_post( $post_ID ) ) { return new IXR_Error( 404, __( 'Invalid post ID.' ) ); } - if ( ! current_user_can( 'edit_post', $post_id ) ) { + if ( ! current_user_can( 'edit_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) ); } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.getPostCategories', $args, $this ); + do_action( 'xmlrpc_call', 'mt.getPostCategories' ); $categories = array(); - $catids = wp_get_post_categories( (int) $post_id ); - // First listed category will be the primary category. + $catids = wp_get_post_categories( intval( $post_ID ) ); + // first listed category will be the primary category $isPrimary = true; foreach ( $catids as $catid ) { $categories[] = array( @@ -6642,22 +6580,22 @@ public function mt_getPostCategories( $args ) { /** * Sets categories for a post. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Post ID. - * @type string $1 Username. - * @type string $2 Password. - * @type array $3 Categories. + * @type int $post_ID + * @type string $username + * @type string $password + * @type array $categories * } * @return true|IXR_Error True on success. */ public function mt_setPostCategories( $args ) { $this->escape( $args ); - $post_id = (int) $args[0]; + $post_ID = (int) $args[0]; $username = $args[1]; $password = $args[2]; $categories = $args[3]; @@ -6668,13 +6606,13 @@ public function mt_setPostCategories( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.setPostCategories', $args, $this ); + do_action( 'xmlrpc_call', 'mt.setPostCategories' ); - if ( ! get_post( $post_id ) ) { + if ( ! get_post( $post_ID ) ) { return new IXR_Error( 404, __( 'Invalid post ID.' ) ); } - if ( ! current_user_can( 'edit_post', $post_id ) ) { + if ( ! current_user_can( 'edit_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this post.' ) ); } @@ -6683,38 +6621,38 @@ public function mt_setPostCategories( $args ) { $catids[] = $cat['categoryId']; } - wp_set_post_categories( $post_id, $catids ); + wp_set_post_categories( $post_ID, $catids ); return true; } /** - * Retrieves an array of methods supported by this server. + * Retrieve an array of methods supported by this server. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return array */ public function mt_supportedMethods() { /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.supportedMethods', array(), $this ); + do_action( 'xmlrpc_call', 'mt.supportedMethods' ); return array_keys( $this->methods ); } /** - * Retrieves an empty array because we don't support per-post text filters. + * Retrieve an empty array because we don't support per-post text filters. * - * @since 1.5.0 + * @since WP-1.5.0 */ public function mt_supportedTextFilters() { /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.supportedTextFilters', array(), $this ); + do_action( 'xmlrpc_call', 'mt.supportedTextFilters' ); /** * Filters the MoveableType text filters list for XML-RPC. * - * @since 2.2.0 + * @since WP-2.2.0 * * @param array $filters An array of text filters. */ @@ -6722,28 +6660,28 @@ public function mt_supportedTextFilters() { } /** - * Retrieves trackbacks sent to a given post. + * Retrieve trackbacks sent to a given post. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param int $post_id + * @param int $post_ID * @return array|IXR_Error */ - public function mt_getTrackbackPings( $post_id ) { + public function mt_getTrackbackPings( $post_ID ) { global $wpdb; /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.getTrackbackPings', $post_id, $this ); + do_action( 'xmlrpc_call', 'mt.getTrackbackPings' ); - $actual_post = get_post( $post_id, ARRAY_A ); + $actual_post = get_post( $post_ID, ARRAY_A ); if ( ! $actual_post ) { return new IXR_Error( 404, __( 'Sorry, no such post.' ) ); } - $comments = $wpdb->get_results( $wpdb->prepare( "SELECT comment_author_url, comment_content, comment_author_IP, comment_type FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ) ); + $comments = $wpdb->get_results( $wpdb->prepare( "SELECT comment_author_url, comment_content, comment_author_IP, comment_type FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID ) ); if ( ! $comments ) { return array(); @@ -6768,21 +6706,21 @@ public function mt_getTrackbackPings( $post_id ) { /** * Sets a post's publish status to 'publish'. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type int $0 Post ID. - * @type string $1 Username. - * @type string $2 Password. + * @type int $post_ID + * @type string $username + * @type string $password * } * @return int|IXR_Error */ public function mt_publishPost( $args ) { $this->escape( $args ); - $post_id = (int) $args[0]; + $post_ID = (int) $args[0]; $username = $args[1]; $password = $args[2]; @@ -6792,43 +6730,41 @@ public function mt_publishPost( $args ) { } /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'mt.publishPost', $args, $this ); + do_action( 'xmlrpc_call', 'mt.publishPost' ); - $postdata = get_post( $post_id, ARRAY_A ); + $postdata = get_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 ) ) { + if ( ! current_user_can( 'publish_posts' ) || ! current_user_can( 'edit_post', $post_ID ) ) { return new IXR_Error( 401, __( 'Sorry, you are not allowed to publish this post.' ) ); } $postdata['post_status'] = 'publish'; - // Retain old categories. - $postdata['post_category'] = wp_get_post_categories( $post_id ); + // retain old cats + $cats = wp_get_post_categories( $post_ID ); + $postdata['post_category'] = $cats; $this->escape( $postdata ); return wp_update_post( $postdata ); } - /* - * Pingback functions. - * Specs on www.hixie.ch/specs/pingback/pingback + /* PingBack functions + * specs on www.hixie.ch/specs/pingback/pingback */ /** * Retrieves a pingback and registers it. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param array $args { + * @param array $args { * Method arguments. Note: arguments must be ordered as documented. * - * @type string $0 URL of page linked from. - * @type string $1 URL of page linked to. + * @type string $pagelinkedfrom + * @type string $pagelinkedto * } * @return string|IXR_Error */ @@ -6836,7 +6772,7 @@ public function pingback_ping( $args ) { global $wpdb; /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'pingback.ping', $args, $this ); + do_action( 'xmlrpc_call', 'pingback.ping' ); $this->escape( $args ); @@ -6847,7 +6783,7 @@ public function pingback_ping( $args ) { /** * Filters the pingback source URI. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param string $pagelinkedfrom URI of the page linked from. * @param string $pagelinkedto URI of the page linked to. @@ -6858,82 +6794,79 @@ public function pingback_ping( $args ) { return $this->pingback_error( 0, __( 'A valid URL was not provided.' ) ); } - // Check if the page linked to is on our site. + // Check if the page linked to is in our site $pos1 = strpos( $pagelinkedto, str_replace( array( 'http://www.', 'http://', 'https://www.', 'https://' ), '', get_option( 'home' ) ) ); if ( ! $pos1 ) { return $this->pingback_error( 0, __( 'Is there no link to us?' ) ); } - /* - * Let's find which post is linked to. - * FIXME: Does url_to_postid() cover all these cases already? - * If so, then let's use it and drop the old code. - */ + // let's find which post is linked to + // FIXME: does url_to_postid() cover all these cases already? + // if so, then let's use it and drop the old code. $urltest = parse_url( $pagelinkedto ); - $post_id = url_to_postid( $pagelinkedto ); - if ( $post_id ) { + $post_ID = url_to_postid( $pagelinkedto ); + if ( $post_ID ) { // $way } elseif ( isset( $urltest['path'] ) && preg_match( '#p/[0-9]{1,}#', $urltest['path'], $match ) ) { - // The path defines the post_ID (archives/p/XXXX). + // the path defines the post_ID (archives/p/XXXX) $blah = explode( '/', $match[0] ); - $post_id = (int) $blah[1]; + $post_ID = (int) $blah[1]; } elseif ( isset( $urltest['query'] ) && preg_match( '#p=[0-9]{1,}#', $urltest['query'], $match ) ) { - // The query string defines the post_ID (?p=XXXX). + // the querystring defines the post_ID (?p=XXXX) $blah = explode( '=', $match[0] ); - $post_id = (int) $blah[1]; + $post_ID = (int) $blah[1]; } elseif ( isset( $urltest['fragment'] ) ) { - // An #anchor is there, it's either... - if ( (int) $urltest['fragment'] ) { - // ...an integer #XXXX (simplest case), - $post_id = (int) $urltest['fragment']; + // an #anchor is there, it's either... + if ( intval( $urltest['fragment'] ) ) { + // ...an integer #XXXX (simplest case) + $post_ID = (int) $urltest['fragment']; } elseif ( preg_match( '/post-[0-9]+/', $urltest['fragment'] ) ) { - // ...a post ID in the form 'post-###', - $post_id = preg_replace( '/[^0-9]+/', '', $urltest['fragment'] ); + // ...a post id in the form 'post-###' + $post_ID = preg_replace( '/[^0-9]+/', '', $urltest['fragment'] ); } elseif ( is_string( $urltest['fragment'] ) ) { - // ...or a string #title, a little more complicated. - $title = preg_replace( '/[^a-z0-9]/i', '.', $urltest['fragment'] ); - $sql = $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title RLIKE %s", $title ); - $post_id = $wpdb->get_var( $sql ); - if ( ! $post_id ) { - // Returning unknown error '0' is better than die()'ing. + // ...or a string #title, a little more complicated + $title = preg_replace( '/[^a-z0-9]/i', '.', $urltest['fragment'] ); + $sql = $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title RLIKE %s", $title ); + $post_ID = $wpdb->get_var( $sql ); + if ( ! $post_ID ) { + // returning unknown error '0' is better than die()ing return $this->pingback_error( 0, '' ); } } } else { - // TODO: Attempt to extract a post ID from the given URL. - return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either does not exist, or it is not a pingback-enabled resource.' ) ); + // TODO: Attempt to extract a post ID from the given URL + return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either doesn’t exist, or it is not a pingback-enabled resource.' ) ); } - $post_id = (int) $post_id; + $post_ID = (int) $post_ID; - $post = get_post( $post_id ); + $post = get_post( $post_ID ); - if ( ! $post ) { // Post not found. - return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either does not exist, or it is not a pingback-enabled resource.' ) ); + if ( ! $post ) { // Post_ID not found + return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either doesn’t exist, or it is not a pingback-enabled resource.' ) ); } - if ( url_to_postid( $pagelinkedfrom ) == $post_id ) { + if ( url_to_postid( $pagelinkedfrom ) == $post_ID ) { return $this->pingback_error( 0, __( 'The source URL and the target URL cannot both point to the same resource.' ) ); } - // Check if pings are on. + // Check if pings are on if ( ! pings_open( $post ) ) { - return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either does not exist, or it is not a pingback-enabled resource.' ) ); + return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either doesn’t exist, or it is not a pingback-enabled resource.' ) ); } - // Let's check that the remote site didn't already pingback this entry. - if ( $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_author_url = %s", $post_id, $pagelinkedfrom ) ) ) { + // Let's check that the remote site didn't already pingback this entry + if ( $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_author_url = %s", $post_ID, $pagelinkedfrom ) ) ) { return $this->pingback_error( 48, __( 'The pingback has already been registered.' ) ); } - // Very stupid, but gives time to the 'from' server to publish! + // very stupid, but gives time to the 'from' server to publish ! sleep( 1 ); $remote_ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] ); - /** This filter is documented in wp-includes/class-wp-http.php */ - $user_agent = apply_filters( 'http_headers_useragent', 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ), $pagelinkedfrom ); + $user_agent = classicpress_user_agent(); - // Let's check the remote site. + // Let's check the remote site $http_api_args = array( 'timeout' => 10, 'redirection' => 0, @@ -6944,7 +6877,7 @@ public function pingback_ping( $args ) { ), ); - $request = wp_safe_remote_get( $pagelinkedfrom, $http_api_args ); + $request = wp_safe_remote_get( $pagelinkedfrom, $http_api_args ); $remote_source = wp_remote_retrieve_body( $request ); $remote_source_original = $remote_source; @@ -6955,7 +6888,7 @@ public function pingback_ping( $args ) { /** * Filters the pingback remote source. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $remote_source Response source for the page linked from. * @param string $pagelinkedto URL of the page linked to. @@ -6970,29 +6903,26 @@ public function pingback_ping( $args ) { preg_match( '|([^<]*?)|is', $remote_source, $matchtitle ); $title = isset( $matchtitle[1] ) ? $matchtitle[1] : ''; if ( empty( $title ) ) { - return $this->pingback_error( 32, __( 'A title on that page cannot be found.' ) ); + return $this->pingback_error( 32, __( 'We cannot find a title on that page.' ) ); } - // Remove all script and style tags including their content. - $remote_source = preg_replace( '@<(script|style)[^>]*?>.*?@si', '', $remote_source ); - // Just keep the tag we need. - $remote_source = strip_tags( $remote_source, '
        ' ); + $remote_source = strip_tags( $remote_source, '' ); // just keep the tag we need $p = explode( "\n\n", $remote_source ); $preg_target = preg_quote( $pagelinkedto, '|' ); foreach ( $p as $para ) { - if ( strpos( $para, $pagelinkedto ) !== false ) { // It exists, but is it a link? + if ( strpos( $para, $pagelinkedto ) !== false ) { // it exists, but is it a link? preg_match( '|]+?' . $preg_target . '[^>]*>([^>]+?)|', $para, $context ); - // If the URL isn't in a link context, keep looking. + // If the URL isn't in a link context, keep looking if ( empty( $context ) ) { continue; } - // We're going to use this fake tag to mark the context in a bit. - // The marker is needed in case the link text appears more than once in the paragraph. + // We're going to use this fake tag to mark the context in a bit + // the marker is needed in case the link text appears more than once in the paragraph $excerpt = preg_replace( '|\|', '', $para ); // prevent really long link text @@ -7000,18 +6930,18 @@ public function pingback_ping( $args ) { $context[1] = substr( $context[1], 0, 100 ) . '…'; } - $marker = '' . $context[1] . ''; // Set up our marker. - $excerpt = str_replace( $context[0], $marker, $excerpt ); // Swap out the link for our marker. - $excerpt = strip_tags( $excerpt, '' ); // Strip all tags but our context marker. + $marker = '' . $context[1] . ''; // set up our marker + $excerpt = str_replace( $context[0], $marker, $excerpt ); // swap out the link for our marker + $excerpt = strip_tags( $excerpt, '' ); // strip all tags but our context marker $excerpt = trim( $excerpt ); $preg_marker = preg_quote( $marker, '|' ); $excerpt = preg_replace( "|.*?\s(.{0,100}$preg_marker.{0,100})\s.*|s", '$1', $excerpt ); - $excerpt = strip_tags( $excerpt ); // YES, again, to remove the marker wrapper. + $excerpt = strip_tags( $excerpt ); // YES, again, to remove the marker wrapper break; } } - if ( empty( $context ) ) { // Link to target not found. + if ( empty( $context ) ) { // Link to target not found return $this->pingback_error( 17, __( 'The source URL does not contain a link to the target URL, and so cannot be used as a source.' ) ); } @@ -7020,7 +6950,7 @@ public function pingback_ping( $args ) { $context = '[…] ' . esc_html( $excerpt ) . ' […]'; $pagelinkedfrom = $this->escape( $pagelinkedfrom ); - $comment_post_id = (int) $post_id; + $comment_post_ID = (int) $post_ID; $comment_author = $title; $comment_author_email = ''; $this->escape( $comment_author ); @@ -7029,11 +6959,8 @@ public function pingback_ping( $args ) { $this->escape( $comment_content ); $comment_type = 'pingback'; - $commentdata = array( - 'comment_post_ID' => $comment_post_id, - ); - - $commentdata += compact( + $commentdata = compact( + 'comment_post_ID', 'comment_author', 'comment_author_url', 'comment_author_email', @@ -7043,33 +6970,33 @@ public function pingback_ping( $args ) { 'remote_source_original' ); - $comment_id = wp_new_comment( $commentdata ); + $comment_ID = wp_new_comment( $commentdata ); - if ( is_wp_error( $comment_id ) ) { - return $this->pingback_error( 0, $comment_id->get_error_message() ); + if ( is_wp_error( $comment_ID ) ) { + return $this->pingback_error( 0, $comment_ID->get_error_message() ); } /** * Fires after a post pingback has been sent. * - * @since 0.71 + * @since WP-0.71 * - * @param int $comment_id Comment ID. + * @param int $comment_ID Comment ID. */ - do_action( 'pingback_post', $comment_id ); + do_action( 'pingback_post', $comment_ID ); - /* translators: 1: URL of the page linked from, 2: URL of the page linked to. */ + /* translators: 1: URL of the page linked from, 2: URL of the page linked to */ return sprintf( __( 'Pingback from %1$s to %2$s registered. Keep the web talking! :-)' ), $pagelinkedfrom, $pagelinkedto ); } /** - * Retrieves an array of URLs that pingbacked the given URL. + * Retrieve array of URLs that pingbacked the given URL. * * Specs on http://www.aquarionics.com/misc/archives/blogite/0198.html * - * @since 1.5.0 + * @since WP-1.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $url * @return array|IXR_Error @@ -7078,24 +7005,24 @@ public function pingback_extensions_getPingbacks( $url ) { global $wpdb; /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */ - do_action( 'xmlrpc_call', 'pingback.extensions.getPingbacks', $url, $this ); + do_action( 'xmlrpc_call', 'pingback.extensions.getPingbacks' ); $url = $this->escape( $url ); - $post_id = url_to_postid( $url ); - if ( ! $post_id ) { - // We aren't sure that the resource is available and/or pingback enabled. - return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either does not exist, or it is not a pingback-enabled resource.' ) ); + $post_ID = url_to_postid( $url ); + if ( ! $post_ID ) { + // We aren't sure that the resource is available and/or pingback enabled + return $this->pingback_error( 33, __( 'The specified target URL cannot be used as a target. It either doesn’t exist, or it is not a pingback-enabled resource.' ) ); } - $actual_post = get_post( $post_id, ARRAY_A ); + $actual_post = get_post( $post_ID, ARRAY_A ); if ( ! $actual_post ) { - // No such post = resource not found. + // No such post = resource not found return $this->pingback_error( 32, __( 'The specified target URL does not exist.' ) ); } - $comments = $wpdb->get_results( $wpdb->prepare( "SELECT comment_author_url, comment_content, comment_author_IP, comment_type FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ) ); + $comments = $wpdb->get_results( $wpdb->prepare( "SELECT comment_author_url, comment_content, comment_author_IP, comment_type FROM $wpdb->comments WHERE comment_post_ID = %d", $post_ID ) ); if ( ! $comments ) { return array(); @@ -7114,7 +7041,7 @@ public function pingback_extensions_getPingbacks( $url ) { /** * Sends a pingback error based on the given error code and message. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param int $code Error code. * @param string $message Error message. @@ -7124,7 +7051,7 @@ protected function pingback_error( $code, $message ) { /** * Filters the XML-RPC pingback error return. * - * @since 3.5.1 + * @since WP-3.5.1 * * @param IXR_Error $error An IXR_Error object containing the error code and message. */ diff --git a/wp-includes/class-wp.php b/wp-includes/class-wp.php index e83b4d6..b1b1c04 100644 --- a/wp-includes/class-wp.php +++ b/wp-includes/class-wp.php @@ -3,90 +3,89 @@ * ClassicPress environment setup class. * * @package ClassicPress - * @since 2.0.0 + * @since WP-2.0.0 */ -#[AllowDynamicProperties] class WP { /** * Public query variables. * * Long list of public query variables. * - * @since 2.0.0 - * @var string[] + * @since WP-2.0.0 + * @var array */ - public $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', 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'favicon', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' ); + public $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', 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' ); /** * Private query variables. * * Long list of private query variables. * - * @since 2.0.0 - * @var string[] + * @since WP-2.0.0 + * @var array */ public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'title', 'fields' ); /** * Extra query variables set by the user. * - * @since 2.1.0 + * @since WP-2.1.0 * @var array */ public $extra_query_vars = array(); /** - * Query variables for setting up the WordPress Query Loop. + * Query variables for setting up the ClassicPress Query Loop. * - * @since 2.0.0 + * @since WP-2.0.0 * @var array */ - public $query_vars = array(); + public $query_vars; /** * String parsed to set the query variables. * - * @since 2.0.0 + * @since WP-2.0.0 * @var string */ - public $query_string = ''; + public $query_string; /** * The request path, e.g. 2015/05/06. * - * @since 2.0.0 + * @since WP-2.0.0 * @var string */ - public $request = ''; + public $request; /** * Rewrite rule the request matched. * - * @since 2.0.0 + * @since WP-2.0.0 * @var string */ - public $matched_rule = ''; + public $matched_rule; /** * Rewrite query the request matched. * - * @since 2.0.0 + * @since WP-2.0.0 * @var string */ - public $matched_query = ''; + public $matched_query; /** * Whether already did the permalink. * - * @since 2.0.0 + * @since WP-2.0.0 * @var bool */ public $did_permalink = false; /** - * Adds a query variable to the list of public query variables. + * Add name to list of public query variables. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param string $qv Query variable name. */ @@ -99,7 +98,7 @@ public function add_query_var( $qv ) { /** * Removes a query variable from a list of public query variables. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param string $name Query variable name. */ @@ -108,30 +107,28 @@ public function remove_query_var( $name ) { } /** - * Sets the value of a query variable. + * Set the value of a query variable. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param string $key Query variable name. - * @param mixed $value Query variable value. + * @param string $key Query variable name. + * @param mixed $value Query variable value. */ public function set_query_var( $key, $value ) { $this->query_vars[ $key ] = $value; } /** - * Parses the request to find the correct WordPress query. + * Parse request to find correct ClassicPress query. * * Sets up the query variables based on the request. There are also many * filters and actions that can be used to further manipulate the result. * - * @since 2.0.0 - * @since 6.0.0 A return value was added. + * @since WP-2.0.0 * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. + * @global WP_Rewrite $wp_rewrite * * @param array|string $extra_query_vars Set the extra query variables. - * @return bool Whether the request was parsed. */ public function parse_request( $extra_query_vars = '' ) { global $wp_rewrite; @@ -139,14 +136,14 @@ public function parse_request( $extra_query_vars = '' ) { /** * Filters whether to parse the request. * - * @since 3.5.0 + * @since WP-3.5.0 * * @param bool $bool Whether or not to parse the request. Default true. - * @param WP $wp Current WordPress environment instance. + * @param WP $this Current ClassicPress environment instance. * @param array|string $extra_query_vars Extra passed query variables. */ if ( ! apply_filters( 'do_parse_request', true, $this, $extra_query_vars ) ) { - return false; + return; } $this->query_vars = array(); @@ -173,35 +170,26 @@ public function parse_request( $extra_query_vars = '' ) { list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] ); $self = $_SERVER['PHP_SELF']; + $home_path = trim( parse_url( home_url(), PHP_URL_PATH ), '/' ); + $home_path_regex = sprintf( '|^%s|i', preg_quote( $home_path, '|' ) ); - $home_path = parse_url( home_url(), PHP_URL_PATH ); - $home_path_regex = ''; - if ( is_string( $home_path ) && '' !== $home_path ) { - $home_path = trim( $home_path, '/' ); - $home_path_regex = sprintf( '|^%s|i', preg_quote( $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 requested permalink. - */ + // 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 + // requested permalink. $req_uri = str_replace( $pathinfo, '', $req_uri ); $req_uri = trim( $req_uri, '/' ); + $req_uri = preg_replace( $home_path_regex, '', $req_uri ); + $req_uri = trim( $req_uri, '/' ); + $pathinfo = trim( $pathinfo, '/' ); + $pathinfo = preg_replace( $home_path_regex, '', $pathinfo ); $pathinfo = trim( $pathinfo, '/' ); $self = trim( $self, '/' ); - - if ( ! empty( $home_path_regex ) ) { - $req_uri = preg_replace( $home_path_regex, '', $req_uri ); - $req_uri = trim( $req_uri, '/' ); - $pathinfo = preg_replace( $home_path_regex, '', $pathinfo ); - $pathinfo = trim( $pathinfo, '/' ); - $self = preg_replace( $home_path_regex, '', $self ); - $self = trim( $self, '/' ); - } + $self = preg_replace( $home_path_regex, '', $self ); + $self = trim( $self, '/' ); // The requested permalink is in $pathinfo for path info requests and - // $req_uri for other requests. + // $req_uri for other requests. if ( ! empty( $pathinfo ) && ! preg_match( '|^.*' . $wp_rewrite->index . '$|', $pathinfo ) ) { $requested_path = $pathinfo; } else { @@ -218,7 +206,7 @@ public function parse_request( $extra_query_vars = '' ) { // Look for matches. $request_match = $requested_path; if ( empty( $request_match ) ) { - // An empty request could only match against ^$ regex. + // An empty request could only match against ^$ regex if ( isset( $rewrite['$'] ) ) { $this->matched_rule = '$'; $query = $rewrite['$']; @@ -255,7 +243,7 @@ public function parse_request( $extra_query_vars = '' ) { } } - if ( ! empty( $this->matched_rule ) ) { + if ( isset( $this->matched_rule ) ) { // Trim the query of everything up to the '?'. $query = preg_replace( '!^.+\?!', '', $query ); @@ -286,15 +274,15 @@ public function parse_request( $extra_query_vars = '' ) { } /** - * Filters the query variables allowed before processing. + * Filters the query variables whitelist before processing. * * Allows (publicly allowed) query vars to be added, removed, or changed prior * to executing the query. Needed to allow custom rewrite rules using your own arguments * to work, or any other custom query variables you want to be publicly available. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string[] $public_query_vars The array of allowed query variable names. + * @param array $public_query_vars The array of whitelisted query variables. */ $this->public_query_vars = apply_filters( 'query_vars', $this->public_query_vars ); @@ -322,7 +310,7 @@ public function parse_request( $extra_query_vars = '' ) { $this->query_vars[ $wpvar ] = (string) $this->query_vars[ $wpvar ]; } else { foreach ( $this->query_vars[ $wpvar ] as $vkey => $v ) { - if ( is_scalar( $v ) ) { + if ( ! is_object( $v ) ) { $this->query_vars[ $wpvar ][ $vkey ] = (string) $v; } } @@ -335,7 +323,7 @@ public function parse_request( $extra_query_vars = '' ) { } } - // Convert urldecoded spaces back into '+'. + // Convert urldecoded spaces back into + foreach ( get_taxonomies( array(), 'objects' ) as $taxonomy => $t ) { if ( $t->query_var && isset( $this->query_vars[ $t->query_var ] ) ) { $this->query_vars[ $t->query_var ] = str_replace( ' ', '+', $this->query_vars[ $t->query_var ] ); @@ -355,7 +343,7 @@ public function parse_request( $extra_query_vars = '' ) { } } - // Limit publicly queried post_types to those that are 'publicly_queryable'. + // Limit publicly queried post_types to those that are publicly_queryable if ( isset( $this->query_vars['post_type'] ) ) { $queryable_post_types = get_post_types( array( 'publicly_queryable' => true ) ); if ( ! is_array( $this->query_vars['post_type'] ) ) { @@ -383,7 +371,7 @@ public function parse_request( $extra_query_vars = '' ) { /** * Filters the array of parsed query variables. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param array $query_vars The array of requested query variables. */ @@ -392,13 +380,11 @@ public function parse_request( $extra_query_vars = '' ) { /** * Fires once all query variables for the current request have been parsed. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param WP $wp Current WordPress environment instance (passed by reference). + * @param WP $this Current ClassicPress environment instance (passed by reference). */ do_action_ref_array( 'parse_request', array( &$this ) ); - - return true; } /** @@ -407,31 +393,16 @@ public function parse_request( $extra_query_vars = '' ) { * Sets the Content-Type header. Sets the 'error' status (if passed) and optionally exits. * If showing a feed, it will also send Last-Modified, ETag, and 304 status if needed. * - * @since 2.0.0 - * @since 4.4.0 `X-Pingback` header is added conditionally for single posts that allow pings. - * @since 6.1.0 Runs after posts have been queried. - * - * @global WP_Query $wp_query WordPress Query object. + * @since WP-2.0.0 + * @since WP-4.4.0 `X-Pingback` header is added conditionally after posts have been queried in handle_404(). */ public function send_headers() { - global $wp_query; - $headers = array(); $status = null; $exit_required = false; - $date_format = 'D, d M Y H:i:s'; if ( is_user_logged_in() ) { $headers = array_merge( $headers, wp_get_nocache_headers() ); - } elseif ( ! empty( $_GET['unapproved'] ) && ! empty( $_GET['moderation-hash'] ) ) { - // Unmoderated comments are only visible for 10 minutes via the moderation hash. - $expires = 10 * MINUTE_IN_SECONDS; - - $headers['Expires'] = gmdate( $date_format, time() + $expires ); - $headers['Cache-Control'] = sprintf( - 'max-age=%d, must-revalidate', - $expires - ); } if ( ! empty( $this->query_vars['error'] ) ) { $status = (int) $this->query_vars['error']; @@ -446,7 +417,7 @@ public function send_headers() { } elseif ( empty( $this->query_vars['feed'] ) ) { $headers['Content-Type'] = get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ); } else { - // Set the correct content type for feeds. + // Set the correct content type for feeds $type = $this->query_vars['feed']; if ( 'feed' === $this->query_vars['feed'] ) { $type = get_default_feed(); @@ -455,30 +426,24 @@ public function send_headers() { // We're showing a feed, so WP is indeed the only thing that last changed. if ( ! empty( $this->query_vars['withcomments'] ) - || false !== strpos( $this->query_vars['feed'], 'comments-' ) - || ( empty( $this->query_vars['withoutcomments'] ) - && ( ! empty( $this->query_vars['p'] ) - || ! empty( $this->query_vars['name'] ) - || ! empty( $this->query_vars['page_id'] ) - || ! empty( $this->query_vars['pagename'] ) - || ! empty( $this->query_vars['attachment'] ) - || ! empty( $this->query_vars['attachment_id'] ) - ) - ) + || false !== strpos( $this->query_vars['feed'], 'comments-' ) + || ( empty( $this->query_vars['withoutcomments'] ) + && ( ! empty( $this->query_vars['p'] ) + || ! empty( $this->query_vars['name'] ) + || ! empty( $this->query_vars['page_id'] ) + || ! empty( $this->query_vars['pagename'] ) + || ! empty( $this->query_vars['attachment'] ) + || ! empty( $this->query_vars['attachment_id'] ) + ) + ) ) { - $wp_last_modified_post = mysql2date( $date_format, get_lastpostmodified( 'GMT' ), false ); - $wp_last_modified_comment = mysql2date( $date_format, get_lastcommentmodified( 'GMT' ), false ); - if ( strtotime( $wp_last_modified_post ) > strtotime( $wp_last_modified_comment ) ) { - $wp_last_modified = $wp_last_modified_post; - } else { - $wp_last_modified = $wp_last_modified_comment; - } + $wp_last_modified = mysql2date( 'D, d M Y H:i:s', get_lastcommentmodified( 'GMT' ), false ); } else { - $wp_last_modified = mysql2date( $date_format, get_lastpostmodified( 'GMT' ), false ); + $wp_last_modified = mysql2date( 'D, d M Y H:i:s', get_lastpostmodified( 'GMT' ), false ); } if ( ! $wp_last_modified ) { - $wp_last_modified = gmdate( $date_format ); + $wp_last_modified = date( 'D, d M Y H:i:s' ); } $wp_last_modified .= ' GMT'; @@ -487,7 +452,7 @@ public function send_headers() { $headers['Last-Modified'] = $wp_last_modified; $headers['ETag'] = $wp_etag; - // Support for conditional GET. + // Support for Conditional GET if ( isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) ) { $client_etag = wp_unslash( $_SERVER['HTTP_IF_NONE_MATCH'] ); } else { @@ -495,36 +460,27 @@ public function send_headers() { } $client_last_modified = empty( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ? '' : trim( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ); - // If string is empty, return 0. If not, attempt to parse into a timestamp. + // 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.. + // 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 ) ) ) { + ( ( $client_modified_timestamp >= $wp_modified_timestamp ) && ( $client_etag == $wp_etag ) ) : + ( ( $client_modified_timestamp >= $wp_modified_timestamp ) || ( $client_etag == $wp_etag ) ) ) { $status = 304; $exit_required = true; } } - if ( is_singular() ) { - $post = isset( $wp_query->post ) ? $wp_query->post : null; - - // Only set X-Pingback for single posts that allow pings. - if ( $post && pings_open( $post ) ) { - $headers['X-Pingback'] = get_bloginfo( 'pingback_url', 'display' ); - } - } - /** * Filters the HTTP headers before they're sent to the browser. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string[] $headers Associative array of headers to be sent. - * @param WP $wp Current WordPress environment instance. + * @param array $headers The list of headers to be sent. + * @param WP $this Current ClassicPress environment instance. */ $headers = apply_filters( 'wp_headers', $headers, $this ); @@ -554,9 +510,9 @@ public function send_headers() { /** * Fires once the requested HTTP headers for caching, content type, etc. have been sent. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param WP $wp Current WordPress environment instance (passed by reference). + * @param WP $this Current ClassicPress environment instance (passed by reference). */ do_action_ref_array( 'send_headers', array( &$this ) ); } @@ -567,7 +523,7 @@ public function send_headers() { * The {@see 'query_string'} filter is deprecated, but still works. Plugins should * use the {@see 'request'} filter instead. * - * @since 2.0.0 + * @since WP-2.0.0 */ public function build_query_string() { $this->query_string = ''; @@ -585,38 +541,33 @@ public function build_query_string() { /** * Filters the query string before parsing. * - * @since 1.5.0 - * @deprecated 2.1.0 Use {@see 'query_vars'} or {@see 'request'} filters instead. + * @since WP-1.5.0 + * @deprecated WP-2.1.0 Use 'query_vars' or 'request' filters instead. * * @param string $query_string The query string to modify. */ - $this->query_string = apply_filters_deprecated( - 'query_string', - array( $this->query_string ), - '2.1.0', - 'query_vars, request' - ); + $this->query_string = apply_filters( 'query_string', $this->query_string ); parse_str( $this->query_string, $this->query_vars ); } } /** - * Set up the WordPress Globals. + * Set up the ClassicPress Globals. * * The query_vars property will be extracted to the GLOBALS. So care should * be taken when naming global variables that might interfere with the - * WordPress environment. + * ClassicPress environment. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @global WP_Query $wp_query WordPress Query object. + * @global WP_Query $wp_query * @global string $query_string Query string for the loop. - * @global array $posts The found posts. - * @global WP_Post|null $post The current post, if available. - * @global string $request The SQL statement for the request. - * @global int $more Only set, if single page or post. - * @global int $single If single page or post. Only set, if single page or post. - * @global WP_User $authordata Only set, if author archive. + * @global array $posts The found posts. + * @global WP_Post|null $post The current post, if available. + * @global string $request The SQL statement for the request. + * @global int $more Only set, if single page or post. + * @global int $single If single page or post. Only set, if single page or post. + * @global WP_User $authordata Only set, if author archive. */ public function register_globals() { global $wp_query; @@ -636,15 +587,15 @@ public function register_globals() { $GLOBALS['single'] = 1; } - if ( $wp_query->is_author() ) { - $GLOBALS['authordata'] = get_userdata( get_queried_object_id() ); + if ( $wp_query->is_author() && isset( $wp_query->post ) ) { + $GLOBALS['authordata'] = get_userdata( $wp_query->post->post_author ); } } /** * Set up the current user. * - * @since 2.0.0 + * @since WP-2.0.0 */ public function init() { wp_get_current_user(); @@ -653,9 +604,9 @@ public function init() { /** * Set up the Loop based on the query variables. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @global WP_Query $wp_the_query WordPress Query object. + * @global WP_Query $wp_the_query */ public function query_posts() { global $wp_the_query; @@ -666,19 +617,19 @@ public function query_posts() { /** * Set the Headers for 404, if nothing is found for requested URL. * - * Issue a 404 if a request doesn't match any posts and doesn't match any object - * (e.g. an existing-but-empty category, tag, author) and a 404 was not already issued, - * and if the request was not a search or the homepage. + * Issue a 404 if a request doesn't match any posts and doesn't match + * any object (e.g. an existing-but-empty category, tag, author) and a 404 was not already + * issued, and if the request was not a search or the homepage. * * Otherwise, issue a 200. * - * This sets headers after posts have been queried. handle_404() really means "handle status". + * This sets headers after posts have been queried. handle_404() really means "handle status." * By inspecting the result of querying posts, seemingly successful requests can be switched to * a 404 so that canonical redirection logic can kick in. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @global WP_Query $wp_query WordPress Query object. + * @global WP_Query $wp_query */ public function handle_404() { global $wp_query; @@ -689,10 +640,10 @@ public function handle_404() { * Returning a non-false value from the filter will short-circuit the handling * and return early. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param bool $preempt Whether to short-circuit default header status handling. Default false. - * @param WP_Query $wp_query WordPress Query object. + * @param WP_Query $wp_query ClassicPress Query object. */ if ( false !== apply_filters( 'pre_handle_404', false, $wp_query ) ) { return; @@ -703,96 +654,90 @@ public function handle_404() { return; } - $set_404 = true; + // Never 404 for the admin, robots, or if we found posts. + if ( is_admin() || is_robots() || $wp_query->posts ) { - // Never 404 for the admin, robots, or favicon. - if ( is_admin() || is_robots() || is_favicon() ) { - $set_404 = false; + $success = true; + if ( is_singular() ) { + $p = false; - // If posts were found, check for paged content. - } elseif ( $wp_query->posts ) { - $content_found = true; + if ( $wp_query->post instanceof WP_Post ) { + $p = clone $wp_query->post; + } - if ( is_singular() ) { - $post = isset( $wp_query->post ) ? $wp_query->post : null; - $next = ''; + // Only set X-Pingback for single posts that allow pings. + if ( $p && pings_open( $p ) && ! headers_sent() ) { + header( 'X-Pingback: ' . get_bloginfo( 'pingback_url', 'display' ) ); + } - // Check for paged content that exceeds the max number of pages. - if ( $post && ! empty( $this->query_vars['page'] ) ) { - // Check if content is actually intended to be paged. - if ( false !== strpos( $post->post_content, $next ) ) { - $page = trim( $this->query_vars['page'], '/' ); - $content_found = (int) $page <= ( substr_count( $post->post_content, $next ) + 1 ); - } else { - $content_found = false; - } + // check for paged content that exceeds the max number of pages + $next = ''; + if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars['page'] ) ) { + $page = trim( $this->query_vars['page'], '/' ); + $success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 ); } } - // The posts page does not support the pagination. - if ( $wp_query->is_posts_page && ! empty( $this->query_vars['page'] ) ) { - $content_found = false; + if ( $success ) { + status_header( 200 ); + return; } + } - if ( $content_found ) { - $set_404 = false; - } + // We will 404 for paged queries, as no posts were found. + if ( ! is_paged() ) { - // We will 404 for paged queries, as no posts were found. - } elseif ( ! is_paged() ) { + // Don't 404 for authors without posts as long as they matched an author on this site. $author = get_query_var( 'author' ); + if ( is_author() && is_numeric( $author ) && $author > 0 && is_user_member_of_blog( $author ) ) { + status_header( 200 ); + return; + } - // Don't 404 for authors without posts as long as they matched an author on this site. - if ( is_author() && is_numeric( $author ) && $author > 0 && is_user_member_of_blog( $author ) - // Don't 404 for these queries if they matched an object. - || ( is_tag() || is_category() || is_tax() || is_post_type_archive() ) && get_queried_object() - // Don't 404 for these queries either. - || is_home() || is_search() || is_feed() - ) { - $set_404 = false; + // Don't 404 for these queries if they matched an object. + if ( ( is_tag() || is_category() || is_tax() || is_post_type_archive() ) && get_queried_object() ) { + status_header( 200 ); + return; } - } - if ( $set_404 ) { - // Guess it's time to 404. - $wp_query->set_404(); - status_header( 404 ); - nocache_headers(); - } else { - status_header( 200 ); + // Don't 404 for these queries either. + if ( is_home() || is_search() || is_feed() ) { + status_header( 200 ); + return; + } } + + // Guess it's time to 404. + $wp_query->set_404(); + status_header( 404 ); + nocache_headers(); } /** - * Sets up all of the variables required by the WordPress environment. + * Sets up all of the variables required by the ClassicPress environment. * * The action {@see 'wp'} has one parameter that references the WP object. It * allows for accessing the properties and methods to further manipulate the * object. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param string|array $query_args Passed to parse_request(). */ public function main( $query_args = '' ) { $this->init(); - - $parsed = $this->parse_request( $query_args ); - - if ( $parsed ) { - $this->query_posts(); - $this->handle_404(); - $this->register_globals(); - } - + $this->parse_request( $query_args ); $this->send_headers(); + $this->query_posts(); + $this->handle_404(); + $this->register_globals(); /** - * Fires once the WordPress environment has been set up. + * Fires once the ClassicPress environment has been set up. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param WP $wp Current WordPress environment instance (passed by reference). + * @param WP $this Current ClassicPress environment instance (passed by reference). */ do_action_ref_array( 'wp', array( &$this ) ); } diff --git a/wp-includes/class-wpdb.php b/wp-includes/class-wpdb.php deleted file mode 100644 index 09847b5..0000000 --- a/wp-includes/class-wpdb.php +++ /dev/null @@ -1,3980 +0,0 @@ - '%d'. - * - * @since 2.8.0 - * - * @see wpdb::prepare() - * @see wpdb::insert() - * @see wpdb::update() - * @see wpdb::delete() - * @see wp_set_wpdb_vars() - * @var array - */ - public $field_types = array(); - - /** - * Database table columns charset. - * - * @since 2.2.0 - * - * @var string - */ - public $charset; - - /** - * Database table columns collate. - * - * @since 2.2.0 - * - * @var string - */ - public $collate; - - /** - * Database Username. - * - * @since 2.9.0 - * - * @var string - */ - protected $dbuser; - - /** - * Database Password. - * - * @since 3.1.0 - * - * @var string - */ - protected $dbpassword; - - /** - * Database Name. - * - * @since 3.1.0 - * - * @var string - */ - protected $dbname; - - /** - * Database Host. - * - * @since 3.1.0 - * - * @var string - */ - protected $dbhost; - - /** - * Database handle. - * - * Possible values: - * - * - `mysqli` instance during normal operation - * - `null` if the connection is yet to be made or has been closed - * - `false` if the connection has failed - * - * @since 0.71 - * - * @var mysqli|false|null - */ - protected $dbh; - - /** - * A textual description of the last query/get_row/get_var call. - * - * @since 3.0.0 - * - * @var string - */ - public $func_call; - - /** - * Whether MySQL is used as the database engine. - * - * Set in wpdb::db_connect() to true, by default. This is used when checking - * against the required MySQL version for WordPress. Normally, a replacement - * database drop-in (db.php) will skip these checks, but setting this to true - * will force the checks to occur. - * - * @since 3.3.0 - * - * @var bool - */ - public $is_mysql = null; - - /** - * A list of incompatible SQL modes. - * - * @since 3.9.0 - * - * @var string[] - */ - protected $incompatible_modes = array( - 'NO_ZERO_DATE', - 'ONLY_FULL_GROUP_BY', - 'STRICT_TRANS_TABLES', - 'STRICT_ALL_TABLES', - 'TRADITIONAL', - 'ANSI', - ); - - /** - * Backward compatibility, where wpdb::prepare() has not quoted formatted/argnum placeholders. - * - * This is often used for table/field names (before %i was supported), and sometimes string formatting, e.g. - * - * $wpdb->prepare( 'WHERE `%1$s` = "%2$s something %3$s" OR %1$s = "%4$-10s"', 'field_1', 'a', 'b', 'c' ); - * - * But it's risky, e.g. forgetting to add quotes, resulting in SQL Injection vulnerabilities: - * - * $wpdb->prepare( 'WHERE (id = %1s) OR (id = %2$s)', $_GET['id'], $_GET['id'] ); // ?id=id - * - * This feature is preserved while plugin authors update their code to use safer approaches: - * - * $_GET['key'] = 'a`b'; - * - * $wpdb->prepare( 'WHERE %1s = %s', $_GET['key'], $_GET['value'] ); // WHERE a`b = 'value' - * $wpdb->prepare( 'WHERE `%1$s` = "%2$s"', $_GET['key'], $_GET['value'] ); // WHERE `a`b` = "value" - * - * $wpdb->prepare( 'WHERE %i = %s', $_GET['key'], $_GET['value'] ); // WHERE `a``b` = 'value' - * - * While changing to false will be fine for queries not using formatted/argnum placeholders, - * any remaining cases are most likely going to result in SQL errors (good, in a way): - * - * $wpdb->prepare( 'WHERE %1$s = "%2$-10s"', 'my_field', 'my_value' ); - * true = WHERE my_field = "my_value " - * false = WHERE 'my_field' = "'my_value '" - * - * But there may be some queries that result in an SQL Injection vulnerability: - * - * $wpdb->prepare( 'WHERE id = %1$s', $_GET['id'] ); // ?id=id - * - * So there may need to be a `_doing_it_wrong()` phase, after we know everyone can use - * identifier placeholders (%i), but before this feature is disabled or removed. - * - * @since 6.2.0 - * @var bool - */ - private $allow_unsafe_unquoted_parameters = true; - - /** - * Whether to use mysqli over mysql. Default false. - * - * @since 3.9.0 - * @since CP-2.0.0 Defaults to true for backward compatibility. - * - * @var bool - */ - private $use_mysqli = true; - - /** - * Whether we've managed to successfully connect at some point. - * - * @since 3.9.0 - * - * @var bool - */ - private $has_connected = false; - - /** - * Time when the last query was performed. - * - * Only set when `SAVEQUERIES` is defined and truthy. - * - * @since 1.5.0 - * - * @var float - */ - public $time_start = null; - - /** - * The last SQL error that was encountered. - * - * @since 2.5.0 - * - * @var WP_Error|string - */ - public $error = null; - - /** - * Connects to the database server and selects a database. - * - * Does the actual setting up - * of the class properties and connection to the database. - * - * @since 2.0.8 - * - * @link https://core.trac.wordpress.org/ticket/3354 - * - * @param string $dbuser Database user. - * @param string $dbpassword Database password. - * @param string $dbname Database name. - * @param string $dbhost Database host. - */ - public function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) { - if ( WP_DEBUG && WP_DEBUG_DISPLAY ) { - $this->show_errors(); - } - - $this->dbuser = $dbuser; - $this->dbpassword = $dbpassword; - $this->dbname = $dbname; - $this->dbhost = $dbhost; - - // wp-config.php creation will manually connect when ready. - if ( defined( 'WP_SETUP_CONFIG' ) ) { - return; - } - - $this->db_connect(); - } - - /** - * Makes private properties readable for backward compatibility. - * - * @since 3.5.0 - * - * @param string $name The private member to get, and optionally process. - * @return mixed The private member. - */ - public function __get( $name ) { - if ( 'col_info' === $name ) { - $this->load_col_info(); - } - - return $this->$name; - } - - /** - * Makes private properties settable for backward compatibility. - * - * @since 3.5.0 - * - * @param string $name The private member to set. - * @param mixed $value The value to set. - */ - public function __set( $name, $value ) { - $protected_members = array( - 'col_meta', - 'table_charset', - 'check_current_query', - 'allow_unsafe_unquoted_parameters', - ); - if ( in_array( $name, $protected_members, true ) ) { - return; - } - $this->$name = $value; - } - - /** - * Makes private properties check-able for backward compatibility. - * - * @since 3.5.0 - * - * @param string $name The private member to check. - * @return bool If the member is set or not. - */ - public function __isset( $name ) { - return isset( $this->$name ); - } - - /** - * Makes private properties un-settable for backward compatibility. - * - * @since 3.5.0 - * - * @param string $name The private member to unset - */ - public function __unset( $name ) { - unset( $this->$name ); - } - - /** - * Sets $this->charset and $this->collate. - * - * @since 3.1.0 - */ - public function init_charset() { - $charset = ''; - $collate = ''; - - if ( function_exists( 'is_multisite' ) && is_multisite() ) { - $charset = 'utf8'; - if ( defined( 'DB_COLLATE' ) && DB_COLLATE ) { - $collate = DB_COLLATE; - } else { - $collate = 'utf8_general_ci'; - } - } elseif ( defined( 'DB_COLLATE' ) ) { - $collate = DB_COLLATE; - } - - if ( defined( 'DB_CHARSET' ) ) { - $charset = DB_CHARSET; - } - - $charset_collate = $this->determine_charset( $charset, $collate ); - - $this->charset = $charset_collate['charset']; - $this->collate = $charset_collate['collate']; - } - - /** - * Determines the best charset and collation to use given a charset and collation. - * - * For example, when able, utf8mb4 should be used instead of utf8. - * - * @since 4.6.0 - * - * @param string $charset The character set to check. - * @param string $collate The collation to check. - * @return array { - * The most appropriate character set and collation to use. - * - * @type string $charset Character set. - * @type string $collate Collation. - * } - */ - public function determine_charset( $charset, $collate ) { - if ( ( ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) { - return compact( 'charset', 'collate' ); - } - - if ( 'utf8' === $charset && $this->has_cap( 'utf8mb4' ) ) { - $charset = 'utf8mb4'; - } - - if ( 'utf8mb4' === $charset && ! $this->has_cap( 'utf8mb4' ) ) { - $charset = 'utf8'; - $collate = str_replace( 'utf8mb4_', 'utf8_', $collate ); - } - - if ( 'utf8mb4' === $charset ) { - // _general_ is outdated, so we can upgrade it to _unicode_, instead. - if ( ! $collate || 'utf8_general_ci' === $collate ) { - $collate = 'utf8mb4_unicode_ci'; - } else { - $collate = str_replace( 'utf8_', 'utf8mb4_', $collate ); - } - } - - // _unicode_520_ is a better collation, we should use that when it's available. - if ( $this->has_cap( 'utf8mb4_520' ) && 'utf8mb4_unicode_ci' === $collate ) { - $collate = 'utf8mb4_unicode_520_ci'; - } - - return compact( 'charset', 'collate' ); - } - - /** - * Sets the connection's character set. - * - * @since 3.1.0 - * - * @param mysqli $dbh The connection returned by `mysqli_connect()`. - * @param string $charset Optional. The character set. Default null. - * @param string $collate Optional. The collation. Default null. - */ - public function set_charset( $dbh, $charset = null, $collate = null ) { - if ( ! isset( $charset ) ) { - $charset = $this->charset; - } - if ( ! isset( $collate ) ) { - $collate = $this->collate; - } - if ( $this->has_cap( 'collation' ) && ! empty( $charset ) ) { - $set_charset_succeeded = true; - - if ( function_exists( 'mysqli_set_charset' ) && $this->has_cap( 'set_charset' ) ) { - $set_charset_succeeded = mysqli_set_charset( $dbh, $charset ); - } - - if ( $set_charset_succeeded ) { - $query = $this->prepare( 'SET NAMES %s', $charset ); - if ( ! empty( $collate ) ) { - $query .= $this->prepare( ' COLLATE %s', $collate ); - } - mysqli_query( $dbh, $query ); - } - } - } - - /** - * Changes the current SQL mode, and ensures its WordPress compatibility. - * - * If no modes are passed, it will ensure the current MySQL server modes are compatible. - * - * @since 3.9.0 - * - * @param array $modes Optional. A list of SQL modes to set. Default empty array. - */ - public function set_sql_mode( $modes = array() ) { - if ( empty( $modes ) ) { - $res = mysqli_query( $this->dbh, 'SELECT @@SESSION.sql_mode' ); - - if ( empty( $res ) ) { - return; - } - - $modes_array = mysqli_fetch_array( $res ); - - if ( empty( $modes_array[0] ) ) { - return; - } - - $modes_str = $modes_array[0]; - - if ( empty( $modes_str ) ) { - return; - } - - $modes = explode( ',', $modes_str ); - } - - $modes = array_change_key_case( $modes, CASE_UPPER ); - - /** - * Filters the list of incompatible SQL modes to exclude. - * - * @since 3.9.0 - * - * @param array $incompatible_modes An array of incompatible modes. - */ - $incompatible_modes = (array) apply_filters( 'incompatible_sql_modes', $this->incompatible_modes ); - - foreach ( $modes as $i => $mode ) { - if ( in_array( $mode, $incompatible_modes, true ) ) { - unset( $modes[ $i ] ); - } - } - - $modes_str = implode( ',', $modes ); - - mysqli_query( $this->dbh, "SET SESSION sql_mode='$modes_str'" ); - } - - /** - * Sets the table prefix for the WordPress tables. - * - * @since 2.5.0 - * - * @param string $prefix Alphanumeric name for the new prefix. - * @param bool $set_table_names Optional. Whether the table names, e.g. wpdb::$posts, - * should be updated or not. Default true. - * @return string|WP_Error Old prefix or WP_Error on error. - */ - public function set_prefix( $prefix, $set_table_names = true ) { - - if ( preg_match( '|[^a-z0-9_]|i', $prefix ) ) { - return new WP_Error( 'invalid_db_prefix', 'Invalid database prefix' ); - } - - $old_prefix = is_multisite() ? '' : $prefix; - - if ( isset( $this->base_prefix ) ) { - $old_prefix = $this->base_prefix; - } - - $this->base_prefix = $prefix; - - if ( $set_table_names ) { - foreach ( $this->tables( 'global' ) as $table => $prefixed_table ) { - $this->$table = $prefixed_table; - } - - if ( is_multisite() && empty( $this->blogid ) ) { - return $old_prefix; - } - - $this->prefix = $this->get_blog_prefix(); - - foreach ( $this->tables( 'blog' ) as $table => $prefixed_table ) { - $this->$table = $prefixed_table; - } - - foreach ( $this->tables( 'old' ) as $table => $prefixed_table ) { - $this->$table = $prefixed_table; - } - } - return $old_prefix; - } - - /** - * Sets blog ID. - * - * @since 3.0.0 - * - * @param int $blog_id - * @param int $network_id Optional. Network ID. Default 0. - * @return int Previous blog ID. - */ - public function set_blog_id( $blog_id, $network_id = 0 ) { - if ( ! empty( $network_id ) ) { - $this->siteid = $network_id; - } - - $old_blog_id = $this->blogid; - $this->blogid = $blog_id; - - $this->prefix = $this->get_blog_prefix(); - - foreach ( $this->tables( 'blog' ) as $table => $prefixed_table ) { - $this->$table = $prefixed_table; - } - - foreach ( $this->tables( 'old' ) as $table => $prefixed_table ) { - $this->$table = $prefixed_table; - } - - return $old_blog_id; - } - - /** - * Gets blog prefix. - * - * @since 3.0.0 - * - * @param int $blog_id Optional. Blog ID to retrieve the table prefix for. - * Defaults to the current blog ID. - * @return string Blog prefix. - */ - public function get_blog_prefix( $blog_id = null ) { - if ( is_multisite() ) { - if ( null === $blog_id ) { - $blog_id = $this->blogid; - } - - $blog_id = (int) $blog_id; - - if ( defined( 'MULTISITE' ) && ( 0 === $blog_id || 1 === $blog_id ) ) { - return $this->base_prefix; - } else { - return $this->base_prefix . $blog_id . '_'; - } - } else { - return $this->base_prefix; - } - } - - /** - * Returns an array of WordPress tables. - * - * Also allows for the `CUSTOM_USER_TABLE` and `CUSTOM_USER_META_TABLE` to override the WordPress users - * and usermeta tables that would otherwise be determined by the prefix. - * - * The `$scope` argument can take one of the following: - * - * - 'all' - returns 'all' and 'global' tables. No old tables are returned. - * - 'blog' - returns the blog-level tables for the queried blog. - * - 'global' - returns the global tables for the installation, returning multisite tables only on multisite. - * - 'ms_global' - returns the multisite global tables, regardless if current installation is multisite. - * - 'old' - returns tables which are deprecated. - * - * @since 3.0.0 - * @since 6.1.0 `old` now includes deprecated multisite global tables only on multisite. - * - * @uses wpdb::$tables - * @uses wpdb::$old_tables - * @uses wpdb::$global_tables - * @uses wpdb::$ms_global_tables - * @uses wpdb::$old_ms_global_tables - * - * @param string $scope Optional. Possible values include 'all', 'global', 'ms_global', 'blog', - * or 'old' tables. Default 'all'. - * @param bool $prefix Optional. Whether to include table prefixes. If blog prefix is requested, - * then the custom users and usermeta tables will be mapped. Default true. - * @param int $blog_id Optional. The blog_id to prefix. Used only when prefix is requested. - * Defaults to `wpdb::$blogid`. - * @return string[] Table names. When a prefix is requested, the key is the unprefixed table name. - */ - public function tables( $scope = 'all', $prefix = true, $blog_id = 0 ) { - switch ( $scope ) { - case 'all': - $tables = array_merge( $this->global_tables, $this->tables ); - if ( is_multisite() ) { - $tables = array_merge( $tables, $this->ms_global_tables ); - } - break; - case 'blog': - $tables = $this->tables; - break; - case 'global': - $tables = $this->global_tables; - if ( is_multisite() ) { - $tables = array_merge( $tables, $this->ms_global_tables ); - } - break; - case 'ms_global': - $tables = $this->ms_global_tables; - break; - case 'old': - $tables = $this->old_tables; - if ( is_multisite() ) { - $tables = array_merge( $tables, $this->old_ms_global_tables ); - } - break; - default: - return array(); - } - - if ( $prefix ) { - if ( ! $blog_id ) { - $blog_id = $this->blogid; - } - $blog_prefix = $this->get_blog_prefix( $blog_id ); - $base_prefix = $this->base_prefix; - $global_tables = array_merge( $this->global_tables, $this->ms_global_tables ); - foreach ( $tables as $k => $table ) { - if ( in_array( $table, $global_tables, true ) ) { - $tables[ $table ] = $base_prefix . $table; - } else { - $tables[ $table ] = $blog_prefix . $table; - } - unset( $tables[ $k ] ); - } - - if ( isset( $tables['users'] ) && defined( 'CUSTOM_USER_TABLE' ) ) { - $tables['users'] = CUSTOM_USER_TABLE; - } - - if ( isset( $tables['usermeta'] ) && defined( 'CUSTOM_USER_META_TABLE' ) ) { - $tables['usermeta'] = CUSTOM_USER_META_TABLE; - } - } - - return $tables; - } - - /** - * Selects a database using the current or provided database connection. - * - * The database name will be changed based on the current database connection. - * On failure, the execution will bail and display a DB error. - * - * @since 0.71 - * - * @param string $db Database name. - * @param mysqli $dbh Optional. Database connection. - * Defaults to the current database handle. - */ - public function select( $db, $dbh = null ) { - if ( is_null( $dbh ) ) { - $dbh = $this->dbh; - } - - $success = mysqli_select_db( $dbh, $db ); - - if ( ! $success ) { - $this->ready = false; - if ( ! did_action( 'template_redirect' ) ) { - wp_load_translations_early(); - - $message = '

        ' . __( 'Cannot select database' ) . "

        \n"; - - $message .= '

        ' . sprintf( - /* translators: %s: Database name. */ - __( 'The database server could be connected to (which means your username and password is okay) but the %s database could not be selected.' ), - '' . htmlspecialchars( $db, ENT_QUOTES ) . '' - ) . "

        \n"; - - $message .= "
          \n"; - $message .= '
        • ' . __( 'Are you sure it exists?' ) . "
        • \n"; - - $message .= '
        • ' . sprintf( - /* translators: 1: Database user, 2: Database name. */ - __( 'Does the user %1$s have permission to use the %2$s database?' ), - '' . htmlspecialchars( $this->dbuser, ENT_QUOTES ) . '', - '' . htmlspecialchars( $db, ENT_QUOTES ) . '' - ) . "
        • \n"; - - $message .= '
        • ' . sprintf( - /* translators: %s: Database name. */ - __( 'On some systems the name of your database is prefixed with your username, so it would be like username_%1$s. Could that be the problem?' ), - htmlspecialchars( $db, ENT_QUOTES ) - ) . "
        • \n"; - - $message .= "
        \n"; - - $message .= '

        ' . sprintf( - /* translators: %s: Support forums URL. */ - __( 'If you do not know how to set up a database you should contact your host. If all else fails you may find help at the Support forums.' ), - __( 'https://wordpress.org/support/forums/' ) - ) . "

        \n"; - - $this->bail( $message, 'db_select_fail' ); - } - } - } - - /** - * Do not use, deprecated. - * - * Use esc_sql() or wpdb::prepare() instead. - * - * @since 2.8.0 - * @deprecated 3.6.0 Use wpdb::prepare() - * @see wpdb::prepare() - * @see esc_sql() - * - * @param string $data - * @return string - */ - public function _weak_escape( $data ) { - if ( func_num_args() === 1 && function_exists( '_deprecated_function' ) ) { - _deprecated_function( __METHOD__, '3.6.0', 'wpdb::prepare() or esc_sql()' ); - } - return addslashes( $data ); - } - - /** - * Real escape using mysqli_real_escape_string(). - * - * @since 2.8.0 - * - * @see mysqli_real_escape_string() - * - * @param string $data String to escape. - * @return string Escaped string. - */ - public function _real_escape( $data ) { - if ( ! is_scalar( $data ) ) { - return ''; - } - - if ( $this->dbh ) { - $escaped = mysqli_real_escape_string( $this->dbh, $data ); - } else { - $class = get_class( $this ); - - wp_load_translations_early(); - /* translators: %s: Database access abstraction class, usually wpdb or a class extending wpdb. */ - _doing_it_wrong( $class, sprintf( __( '%s must set a database connection for use with escaping.' ), $class ), '3.6.0' ); - - $escaped = addslashes( $data ); - } - - return $this->add_placeholder_escape( $escaped ); - } - - /** - * Escapes data. Works on arrays. - * - * @since 2.8.0 - * - * @uses wpdb::_real_escape() - * - * @param string|array $data Data to escape. - * @return string|array Escaped data, in the same type as supplied. - */ - public function _escape( $data ) { - if ( is_array( $data ) ) { - foreach ( $data as $k => $v ) { - if ( is_array( $v ) ) { - $data[ $k ] = $this->_escape( $v ); - } else { - $data[ $k ] = $this->_real_escape( $v ); - } - } - } else { - $data = $this->_real_escape( $data ); - } - - return $data; - } - - /** - * Do not use, deprecated. - * - * Use esc_sql() or wpdb::prepare() instead. - * - * @since 0.71 - * @deprecated 3.6.0 Use wpdb::prepare() - * @see wpdb::prepare() - * @see esc_sql() - * - * @param string|array $data Data to escape. - * @return string|array Escaped data, in the same type as supplied. - */ - public function escape( $data ) { - if ( func_num_args() === 1 && function_exists( '_deprecated_function' ) ) { - _deprecated_function( __METHOD__, '3.6.0', 'wpdb::prepare() or esc_sql()' ); - } - if ( is_array( $data ) ) { - foreach ( $data as $k => $v ) { - if ( is_array( $v ) ) { - $data[ $k ] = $this->escape( $v, 'recursive' ); - } else { - $data[ $k ] = $this->_weak_escape( $v, 'internal' ); - } - } - } else { - $data = $this->_weak_escape( $data, 'internal' ); - } - - return $data; - } - - /** - * Escapes content by reference for insertion into the database, for security. - * - * @uses wpdb::_real_escape() - * - * @since 2.3.0 - * - * @param string $data String to escape. - */ - public function escape_by_ref( &$data ) { - if ( ! is_float( $data ) ) { - $data = $this->_real_escape( $data ); - } - } - - /** - * Quotes an identifier for a MySQL database, e.g. table/field names. - * - * @since 6.2.0 - * - * @param string $identifier Identifier to escape. - * @return string Escaped identifier. - */ - public function quote_identifier( $identifier ) { - return '`' . $this->_escape_identifier_value( $identifier ) . '`'; - } - - /** - * Escapes an identifier value without adding the surrounding quotes. - * - * - Permitted characters in quoted identifiers include the full Unicode - * Basic Multilingual Plane (BMP), except U+0000. - * - To quote the identifier itself, you need to double the character, e.g. `a``b`. - * - * @since 6.2.0 - * - * @link https://dev.mysql.com/doc/refman/8.0/en/identifiers.html - * - * @param string $identifier Identifier to escape. - * @return string Escaped identifier. - */ - private function _escape_identifier_value( $identifier ) { - return str_replace( '`', '``', $identifier ); - } - - /** - * Prepares a SQL query for safe execution. - * - * Uses sprintf()-like syntax. The following placeholders can be used in the query string: - * - * - %d (integer) - * - %f (float) - * - %s (string) - * - %i (identifier, e.g. table/field names) - * - * All placeholders MUST be left unquoted in the query string. A corresponding argument - * MUST be passed for each placeholder. - * - * Note: There is one exception to the above: for compatibility with old behavior, - * numbered or formatted string placeholders (eg, `%1$s`, `%5s`) will not have quotes - * added by this function, so should be passed with appropriate quotes around them. - * - * Literal percentage signs (`%`) in the query string must be written as `%%`. Percentage wildcards - * (for example, to use in LIKE syntax) must be passed via a substitution argument containing - * the complete LIKE string, these cannot be inserted directly in the query string. - * Also see wpdb::esc_like(). - * - * Arguments may be passed as individual arguments to the method, or as a single array - * containing all arguments. A combination of the two is not supported. - * - * Examples: - * - * $wpdb->prepare( - * "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d OR `other_field` LIKE %s", - * array( 'foo', 1337, '%bar' ) - * ); - * - * $wpdb->prepare( - * "SELECT DATE_FORMAT(`field`, '%%c') FROM `table` WHERE `column` = %s", - * 'foo' - * ); - * - * @since 2.3.0 - * @since 5.3.0 Formalized the existing and already documented `...$args` parameter - * by updating the function signature. The second parameter was changed - * from `$args` to `...$args`. - * @since 6.2.0 Added `%i` for identifiers, e.g. table or field names. - * Check support via `wpdb::has_cap( 'identifier_placeholders' )`. - * This preserves compatibility with sprintf(), as the C version uses - * `%d` and `$i` as a signed integer, whereas PHP only supports `%d`. - * - * @link https://www.php.net/sprintf Description of syntax. - * - * @param string $query Query statement with sprintf()-like placeholders. - * @param array|mixed $args The array of variables to substitute into the query's placeholders - * if being called with an array of arguments, or the first variable - * to substitute into the query's placeholders if being called with - * individual arguments. - * @param mixed ...$args Further variables to substitute into the query's placeholders - * if being called with individual arguments. - * @return string|void Sanitized query string, if there is a query to prepare. - */ - public function prepare( $query, ...$args ) { - if ( is_null( $query ) ) { - return; - } - - // This is not meant to be foolproof -- but it will catch obviously incorrect usage. - if ( strpos( $query, '%' ) === false ) { - wp_load_translations_early(); - _doing_it_wrong( - 'wpdb::prepare', - sprintf( - /* translators: %s: wpdb::prepare() */ - __( 'The query argument of %s must have a placeholder.' ), - 'wpdb::prepare()' - ), - '3.9.0' - ); - } - - /* - * Specify the formatting allowed in a placeholder. The following are allowed: - * - * - Sign specifier, e.g. $+d - * - Numbered placeholders, e.g. %1$s - * - Padding specifier, including custom padding characters, e.g. %05s, %'#5s - * - Alignment specifier, e.g. %05-s - * - Precision specifier, e.g. %.2f - */ - $allowed_format = '(?:[1-9][0-9]*[$])?[-+0-9]*(?: |0|\'.)?[-+0-9]*(?:\.[0-9]+)?'; - - /* - * If a %s placeholder already has quotes around it, removing the existing quotes - * and re-inserting them ensures the quotes are consistent. - * - * For backward compatibility, this is only applied to %s, and not to placeholders like %1$s, - * which are frequently used in the middle of longer strings, or as table name placeholders. - */ - $query = str_replace( "'%s'", '%s', $query ); // Strip any existing single quotes. - $query = str_replace( '"%s"', '%s', $query ); // Strip any existing double quotes. - - // Escape any unescaped percents (i.e. anything unrecognised). - $query = preg_replace( "/%(?:%|$|(?!($allowed_format)?[sdfFi]))/", '%%\\1', $query ); - - // Extract placeholders from the query. - $split_query = preg_split( "/(^|[^%]|(?:%%)+)(%(?:$allowed_format)?[sdfFi])/", $query, -1, PREG_SPLIT_DELIM_CAPTURE ); - - $split_query_count = count( $split_query ); - - /* - * Split always returns with 1 value before the first placeholder (even with $query = "%s"), - * then 3 additional values per placeholder. - */ - $placeholder_count = ( ( $split_query_count - 1 ) / 3 ); - - // If args were passed as an array, as in vsprintf(), move them up. - $passed_as_array = ( isset( $args[0] ) && is_array( $args[0] ) && 1 === count( $args ) ); - if ( $passed_as_array ) { - $args = $args[0]; - } - - $new_query = ''; - $key = 2; // Keys 0 and 1 in $split_query contain values before the first placeholder. - $arg_id = 0; - $arg_identifiers = array(); - $arg_strings = array(); - - while ( $key < $split_query_count ) { - $placeholder = $split_query[ $key ]; - - $format = substr( $placeholder, 1, -1 ); - $type = substr( $placeholder, -1 ); - - if ( 'f' === $type && true === $this->allow_unsafe_unquoted_parameters - && '%' === substr( $split_query[ $key - 1 ], -1, 1 ) - ) { - - /* - * Before WP 6.2 the "force floats to be locale-unaware" RegEx didn't - * convert "%%%f" to "%%%F" (note the uppercase F). - * This was because it didn't check to see if the leading "%" was escaped. - * And because the "Escape any unescaped percents" RegEx used "[sdF]" in its - * negative lookahead assertion, when there was an odd number of "%", it added - * an extra "%", to give the fully escaped "%%%%f" (not a placeholder). - */ - - $s = $split_query[ $key - 2 ] . $split_query[ $key - 1 ]; - $k = 1; - $l = strlen( $s ); - while ( $k <= $l && '%' === $s[ $l - $k ] ) { - $k++; - } - - $placeholder = '%' . ( $k % 2 ? '%' : '' ) . $format . $type; - - --$placeholder_count; - - } else { - - // Force floats to be locale-unaware. - if ( 'f' === $type ) { - $type = 'F'; - $placeholder = '%' . $format . $type; - } - - if ( 'i' === $type ) { - $placeholder = '`%' . $format . 's`'; - // Using a simple strpos() due to previous checking (e.g. $allowed_format). - $argnum_pos = strpos( $format, '$' ); - - if ( false !== $argnum_pos ) { - // sprintf() argnum starts at 1, $arg_id from 0. - $arg_identifiers[] = ( ( (int) substr( $format, 0, $argnum_pos ) ) - 1 ); - } else { - $arg_identifiers[] = $arg_id; - } - } elseif ( 'd' !== $type && 'F' !== $type ) { - /* - * i.e. ( 's' === $type ), where 'd' and 'F' keeps $placeholder unchanged, - * and we ensure string escaping is used as a safe default (e.g. even if 'x'). - */ - $argnum_pos = strpos( $format, '$' ); - - if ( false !== $argnum_pos ) { - $arg_strings[] = ( ( (int) substr( $format, 0, $argnum_pos ) ) - 1 ); - } else { - $arg_strings[] = $arg_id; - } - - /* - * Unquoted strings for backward compatibility (dangerous). - * First, "numbered or formatted string placeholders (eg, %1$s, %5s)". - * Second, if "%s" has a "%" before it, even if it's unrelated (e.g. "LIKE '%%%s%%'"). - */ - if ( true !== $this->allow_unsafe_unquoted_parameters - || ( '' === $format && '%' !== substr( $split_query[ $key - 1 ], -1, 1 ) ) - ) { - $placeholder = "'%" . $format . "s'"; - } - } - } - - // Glue (-2), any leading characters (-1), then the new $placeholder. - $new_query .= $split_query[ $key - 2 ] . $split_query[ $key - 1 ] . $placeholder; - - $key += 3; - $arg_id++; - } - - // Replace $query; and add remaining $query characters, or index 0 if there were no placeholders. - $query = $new_query . $split_query[ $key - 2 ]; - - $dual_use = array_intersect( $arg_identifiers, $arg_strings ); - - if ( count( $dual_use ) > 0 ) { - wp_load_translations_early(); - - $used_placeholders = array(); - - $key = 2; - $arg_id = 0; - // Parse again (only used when there is an error). - while ( $key < $split_query_count ) { - $placeholder = $split_query[ $key ]; - - $format = substr( $placeholder, 1, -1 ); - - $argnum_pos = strpos( $format, '$' ); - - if ( false !== $argnum_pos ) { - $arg_pos = ( ( (int) substr( $format, 0, $argnum_pos ) ) - 1 ); - } else { - $arg_pos = $arg_id; - } - - $used_placeholders[ $arg_pos ][] = $placeholder; - - $key += 3; - $arg_id++; - } - - $conflicts = array(); - foreach ( $dual_use as $arg_pos ) { - $conflicts[] = implode( ' and ', $used_placeholders[ $arg_pos ] ); - } - - _doing_it_wrong( - 'wpdb::prepare', - sprintf( - /* translators: %s: A list of placeholders found to be a problem. */ - __( 'Arguments cannot be prepared as both an Identifier and Value. Found the following conflicts: %s' ), - implode( ', ', $conflicts ) - ), - '6.2.0' - ); - - return; - } - - $args_count = count( $args ); - - if ( $args_count !== $placeholder_count ) { - if ( 1 === $placeholder_count && $passed_as_array ) { - /* - * If the passed query only expected one argument, - * but the wrong number of arguments was sent as an array, bail. - */ - wp_load_translations_early(); - _doing_it_wrong( - 'wpdb::prepare', - __( 'The query only expected one placeholder, but an array of multiple placeholders was sent.' ), - '4.9.0' - ); - - return; - } else { - /* - * If we don't have the right number of placeholders, - * but they were passed as individual arguments, - * or we were expecting multiple arguments in an array, throw a warning. - */ - wp_load_translations_early(); - _doing_it_wrong( - 'wpdb::prepare', - sprintf( - /* translators: 1: Number of placeholders, 2: Number of arguments passed. */ - __( 'The query does not contain the correct number of placeholders (%1$d) for the number of arguments passed (%2$d).' ), - $placeholder_count, - $args_count - ), - '4.8.3' - ); - - /* - * If we don't have enough arguments to match the placeholders, - * return an empty string to avoid a fatal error on PHP 8. - */ - if ( $args_count < $placeholder_count ) { - $max_numbered_placeholder = 0; - - for ( $i = 2, $l = $split_query_count; $i < $l; $i += 3 ) { - // Assume a leading number is for a numbered placeholder, e.g. '%3$s'. - $argnum = (int) substr( $split_query[ $i ], 1 ); - - if ( $max_numbered_placeholder < $argnum ) { - $max_numbered_placeholder = $argnum; - } - } - - if ( ! $max_numbered_placeholder || $args_count < $max_numbered_placeholder ) { - return ''; - } - } - } - } - - $args_escaped = array(); - - foreach ( $args as $i => $value ) { - if ( in_array( $i, $arg_identifiers, true ) ) { - $args_escaped[] = $this->_escape_identifier_value( $value ); - } elseif ( is_int( $value ) || is_float( $value ) ) { - $args_escaped[] = $value; - } else { - if ( ! is_scalar( $value ) && ! is_null( $value ) ) { - wp_load_translations_early(); - _doing_it_wrong( - 'wpdb::prepare', - sprintf( - /* translators: %s: Value type. */ - __( 'Unsupported value type (%s).' ), - gettype( $value ) - ), - '4.8.2' - ); - - // Preserving old behavior, where values are escaped as strings. - $value = ''; - } - - $args_escaped[] = $this->_real_escape( $value ); - } - } - - $query = vsprintf( $query, $args_escaped ); - - return $this->add_placeholder_escape( $query ); - } - - /** - * First half of escaping for `LIKE` special characters `%` and `_` before preparing for SQL. - * - * Use this only before wpdb::prepare() or esc_sql(). Reversing the order is very bad for security. - * - * Example Prepared Statement: - * - * $wild = '%'; - * $find = 'only 43% of planets'; - * $like = $wild . $wpdb->esc_like( $find ) . $wild; - * $sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE %s", $like ); - * - * Example Escape Chain: - * - * $sql = esc_sql( $wpdb->esc_like( $input ) ); - * - * @since 4.0.0 - * - * @param string $text The raw text to be escaped. The input typed by the user - * should have no extra or deleted slashes. - * @return string Text in the form of a LIKE phrase. The output is not SQL safe. - * Call wpdb::prepare() or wpdb::_real_escape() next. - */ - public function esc_like( $text ) { - return addcslashes( $text, '_%\\' ); - } - - /** - * Prints SQL/DB error. - * - * @since 0.71 - * - * @global array $EZSQL_ERROR Stores error information of query and error string. - * - * @param string $str The error to display. - * @return void|false Void if the showing of errors is enabled, false if disabled. - */ - public function print_error( $str = '' ) { - global $EZSQL_ERROR; - - if ( ! $str ) { - $str = mysqli_error( $this->dbh ); - } - - $EZSQL_ERROR[] = array( - 'query' => $this->last_query, - 'error_str' => $str, - ); - - if ( $this->suppress_errors ) { - return false; - } - - $caller = $this->get_caller(); - if ( $caller ) { - // Not translated, as this will only appear in the error log. - $error_str = sprintf( 'WordPress database error %1$s for query %2$s made by %3$s', $str, $this->last_query, $caller ); - } else { - $error_str = sprintf( 'WordPress database error %1$s for query %2$s', $str, $this->last_query ); - } - - error_log( $error_str ); - - // Are we showing errors? - if ( ! $this->show_errors ) { - return false; - } - - wp_load_translations_early(); - - // If there is an error then take note of it. - if ( is_multisite() ) { - $msg = sprintf( - "%s [%s]\n%s\n", - __( 'ClassicPress database error:' ), - $str, - $this->last_query - ); - - if ( defined( 'ERRORLOGFILE' ) ) { - error_log( $msg, 3, ERRORLOGFILE ); - } - if ( defined( 'DIEONDBERROR' ) ) { - wp_die( $msg ); - } - } else { - $str = htmlspecialchars( $str, ENT_QUOTES ); - $query = htmlspecialchars( $this->last_query, ENT_QUOTES ); - - printf( - '

        %s [%s]
        %s

        ', - __( 'ClassicPress database error:' ), - $str, - $query - ); - } - } - - /** - * Enables showing of database errors. - * - * This function should be used only to enable showing of errors. - * wpdb::hide_errors() should be used instead for hiding errors. - * - * @since 0.71 - * - * @see wpdb::hide_errors() - * - * @param bool $show Optional. Whether to show errors. Default true. - * @return bool Whether showing of errors was previously active. - */ - public function show_errors( $show = true ) { - $errors = $this->show_errors; - $this->show_errors = $show; - return $errors; - } - - /** - * Disables showing of database errors. - * - * By default database errors are not shown. - * - * @since 0.71 - * - * @see wpdb::show_errors() - * - * @return bool Whether showing of errors was previously active. - */ - public function hide_errors() { - $show = $this->show_errors; - $this->show_errors = false; - return $show; - } - - /** - * Enables or disables suppressing of database errors. - * - * By default database errors are suppressed. - * - * @since 2.5.0 - * - * @see wpdb::hide_errors() - * - * @param bool $suppress Optional. Whether to suppress errors. Default true. - * @return bool Whether suppressing of errors was previously active. - */ - public function suppress_errors( $suppress = true ) { - $errors = $this->suppress_errors; - $this->suppress_errors = (bool) $suppress; - return $errors; - } - - /** - * Kills cached query results. - * - * @since 0.71 - */ - public function flush() { - $this->last_result = array(); - $this->col_info = null; - $this->last_query = null; - $this->rows_affected = 0; - $this->num_rows = 0; - $this->last_error = ''; - - if ( $this->result instanceof mysqli_result ) { - mysqli_free_result( $this->result ); - $this->result = null; - - // Sanity check before using the handle. - if ( empty( $this->dbh ) || ! ( $this->dbh instanceof mysqli ) ) { - return; - } - - // Clear out any results from a multi-query. - while ( mysqli_more_results( $this->dbh ) ) { - mysqli_next_result( $this->dbh ); - } - } - } - - /** - * Connects to and selects database. - * - * If `$allow_bail` is false, the lack of database connection will need to be handled manually. - * - * @since 3.0.0 - * @since 3.9.0 $allow_bail parameter added. - * - * @param bool $allow_bail Optional. Allows the function to bail. Default true. - * @return bool True with a successful connection, false on failure. - */ - public function db_connect( $allow_bail = true ) { - $this->is_mysql = true; - - $client_flags = defined( 'MYSQL_CLIENT_FLAGS' ) ? MYSQL_CLIENT_FLAGS : 0; - - /* - * Set the MySQLi error reporting off because WordPress handles its own. - * This is due to the default value change from `MYSQLI_REPORT_OFF` - * to `MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT` in PHP 8.1. - */ - mysqli_report( MYSQLI_REPORT_OFF ); - - $this->dbh = mysqli_init(); - - $host = $this->dbhost; - $port = null; - $socket = null; - $is_ipv6 = false; - - $host_data = $this->parse_db_host( $this->dbhost ); - if ( $host_data ) { - list( $host, $port, $socket, $is_ipv6 ) = $host_data; - } - - /* - * If using the `mysqlnd` library, the IPv6 address needs to be enclosed - * in square brackets, whereas it doesn't while using the `libmysqlclient` library. - * @see https://bugs.php.net/bug.php?id=67563 - */ - if ( $is_ipv6 && extension_loaded( 'mysqlnd' ) ) { - $host = "[$host]"; - } - - if ( WP_DEBUG ) { - mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags ); - } else { - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - @mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags ); - } - - if ( $this->dbh->connect_errno ) { - $this->dbh = null; - } - - if ( ! $this->dbh && $allow_bail ) { - wp_load_translations_early(); - - // Load custom DB error template, if present. - if ( file_exists( WP_CONTENT_DIR . '/db-error.php' ) ) { - require_once WP_CONTENT_DIR . '/db-error.php'; - die(); - } - - $message = '

        ' . __( 'Error establishing a database connection' ) . "

        \n"; - - $message .= '

        ' . sprintf( - /* translators: 1: wp-config.php, 2: Database host. */ - __( 'This either means that the username and password information in your %1$s file is incorrect or that contact with the database server at %2$s could not be established. This could mean your host’s database server is down.' ), - 'wp-config.php', - '' . htmlspecialchars( $this->dbhost, ENT_QUOTES ) . '' - ) . "

        \n"; - - $message .= "
          \n"; - $message .= '
        • ' . __( 'Are you sure you have the correct username and password?' ) . "
        • \n"; - $message .= '
        • ' . __( 'Are you sure you have typed the correct hostname?' ) . "
        • \n"; - $message .= '
        • ' . __( 'Are you sure the database server is running?' ) . "
        • \n"; - $message .= "
        \n"; - - $message .= '

        ' . sprintf( - /* translators: %s: Support forums URL. */ - __( 'If you are unsure what these terms mean you should probably contact your host. If you still need help you can always visit the ClassicPress support forums.' ), - __( 'https://wordpress.org/support/forums/' ) - ) . "

        \n"; - - $this->bail( $message, 'db_connect_fail' ); - - return false; - } elseif ( $this->dbh ) { - if ( ! $this->has_connected ) { - $this->init_charset(); - } - - $this->has_connected = true; - - $this->set_charset( $this->dbh ); - - $this->ready = true; - $this->set_sql_mode(); - $this->select( $this->dbname, $this->dbh ); - - return true; - } - - return false; - } - - /** - * Parses the DB_HOST setting to interpret it for mysqli_real_connect(). - * - * mysqli_real_connect() doesn't support the host param including a port or socket - * like mysql_connect() does. This duplicates how mysql_connect() detects a port - * and/or socket file. - * - * @since 4.9.0 - * - * @param string $host The DB_HOST setting to parse. - * @return array|false { - * Array containing the host, the port, the socket and - * whether it is an IPv6 address, in that order. - * False if the host couldn't be parsed. - * - * @type string $0 Host name. - * @type string|null $1 Port. - * @type string|null $2 Socket. - * @type bool $3 Whether it is an IPv6 address. - * } - */ - public function parse_db_host( $host ) { - $socket = null; - $is_ipv6 = false; - - // First peel off the socket parameter from the right, if it exists. - $socket_pos = strpos( $host, ':/' ); - if ( false !== $socket_pos ) { - $socket = substr( $host, $socket_pos + 1 ); - $host = substr( $host, 0, $socket_pos ); - } - - // We need to check for an IPv6 address first. - // An IPv6 address will always contain at least two colons. - if ( substr_count( $host, ':' ) > 1 ) { - $pattern = '#^(?:\[)?(?P[0-9a-fA-F:]+)(?:\]:(?P[\d]+))?#'; - $is_ipv6 = true; - } else { - // We seem to be dealing with an IPv4 address. - $pattern = '#^(?P[^:/]*)(?::(?P[\d]+))?#'; - } - - $matches = array(); - $result = preg_match( $pattern, $host, $matches ); - - if ( 1 !== $result ) { - // Couldn't parse the address, bail. - return false; - } - - $host = ! empty( $matches['host'] ) ? $matches['host'] : ''; - // MySQLi port cannot be a string; must be null or an integer. - $port = ! empty( $matches['port'] ) ? absint( $matches['port'] ) : null; - - return array( $host, $port, $socket, $is_ipv6 ); - } - - /** - * Checks that the connection to the database is still up. If not, try to reconnect. - * - * If this function is unable to reconnect, it will forcibly die, or if called - * after the {@see 'template_redirect'} hook has been fired, return false instead. - * - * If `$allow_bail` is false, the lack of database connection will need to be handled manually. - * - * @since 3.9.0 - * - * @param bool $allow_bail Optional. Allows the function to bail. Default true. - * @return bool|void True if the connection is up. - */ - public function check_connection( $allow_bail = true ) { - if ( ! empty( $this->dbh ) && mysqli_ping( $this->dbh ) ) { - return true; - } - - $error_reporting = false; - - // Disable warnings, as we don't want to see a multitude of "unable to connect" messages. - if ( WP_DEBUG ) { - $error_reporting = error_reporting(); - error_reporting( $error_reporting & ~E_WARNING ); - } - - for ( $tries = 1; $tries <= $this->reconnect_retries; $tries++ ) { - // On the last try, re-enable warnings. We want to see a single instance - // of the "unable to connect" message on the bail() screen, if it appears. - if ( $this->reconnect_retries === $tries && WP_DEBUG ) { - error_reporting( $error_reporting ); - } - - if ( $this->db_connect( false ) ) { - if ( $error_reporting ) { - error_reporting( $error_reporting ); - } - - return true; - } - - sleep( 1 ); - } - - // If template_redirect has already happened, it's too late for wp_die()/dead_db(). - // Let's just return and hope for the best. - if ( did_action( 'template_redirect' ) ) { - return false; - } - - if ( ! $allow_bail ) { - return false; - } - - wp_load_translations_early(); - - $message = '

        ' . __( 'Error reconnecting to the database' ) . "

        \n"; - - $message .= '

        ' . sprintf( - /* translators: %s: Database host. */ - __( 'This means that the contact with the database server at %s was lost. This could mean your host’s database server is down.' ), - '' . htmlspecialchars( $this->dbhost, ENT_QUOTES ) . '' - ) . "

        \n"; - - $message .= "
          \n"; - $message .= '
        • ' . __( 'Are you sure the database server is running?' ) . "
        • \n"; - $message .= '
        • ' . __( 'Are you sure the database server is not under particularly heavy load?' ) . "
        • \n"; - $message .= "
        \n"; - - $message .= '

        ' . sprintf( - /* translators: %s: Support forums URL. */ - __( 'If you are unsure what these terms mean you should probably contact your host. If you still need help you can always visit the ClassicPress support forums.' ), - __( 'https://wordpress.org/support/forums/' ) - ) . "

        \n"; - - // We weren't able to reconnect, so we better bail. - $this->bail( $message, 'db_connect_fail' ); - - // Call dead_db() if bail didn't die, because this database is no more. - // It has ceased to be (at least temporarily). - dead_db(); - } - - /** - * Performs a database query, using current database connection. - * - * More information can be found on the documentation page. - * - * @since 0.71 - * - * @link https://developer.wordpress.org/reference/classes/wpdb/ - * - * @param string $query Database query. - * @return int|bool Boolean true for CREATE, ALTER, TRUNCATE and DROP queries. Number of rows - * affected/selected for all other queries. Boolean false on error. - */ - public function query( $query ) { - if ( ! $this->ready ) { - $this->check_current_query = true; - return false; - } - - /** - * Filters the database query. - * - * Some queries are made before the plugins have been loaded, - * and thus cannot be filtered with this method. - * - * @since 2.1.0 - * - * @param string $query Database query. - */ - $query = apply_filters( 'query', $query ); - - if ( ! $query ) { - $this->insert_id = 0; - return false; - } - - $this->flush(); - - // Log how the function was called. - $this->func_call = "\$db->query(\"$query\")"; - - // If we're writing to the database, make sure the query will write safely. - if ( $this->check_current_query && ! $this->check_ascii( $query ) ) { - $stripped_query = $this->strip_invalid_text_from_query( $query ); - // strip_invalid_text_from_query() can perform queries, so we need - // to flush again, just to make sure everything is clear. - $this->flush(); - if ( $stripped_query !== $query ) { - $this->insert_id = 0; - $this->last_query = $query; - - wp_load_translations_early(); - - $this->last_error = __( 'ClassicPress database error: Could not perform query because it contains invalid data.' ); - - return false; - } - } - - $this->check_current_query = true; - - // Keep track of the last query for debug. - $this->last_query = $query; - - $this->_do_query( $query ); - - // Database server has gone away, try to reconnect. - $mysql_errno = 0; - - if ( $this->dbh instanceof mysqli ) { - $mysql_errno = mysqli_errno( $this->dbh ); - } else { - // $dbh is defined, but isn't a real connection. - // Something has gone horribly wrong, let's try a reconnect. - $mysql_errno = 2006; - } - - if ( empty( $this->dbh ) || 2006 === $mysql_errno ) { - if ( $this->check_connection() ) { - $this->_do_query( $query ); - } else { - $this->insert_id = 0; - return false; - } - } - - // If there is an error then take note of it. - if ( $this->dbh instanceof mysqli ) { - $this->last_error = mysqli_error( $this->dbh ); - } else { - $this->last_error = __( 'Unable to retrieve the error message from MySQL' ); - } - - if ( $this->last_error ) { - // Clear insert_id on a subsequent failed insert. - if ( $this->insert_id && preg_match( '/^\s*(insert|replace)\s/i', $query ) ) { - $this->insert_id = 0; - } - - $this->print_error(); - return false; - } - - if ( preg_match( '/^\s*(create|alter|truncate|drop)\s/i', $query ) ) { - $return_val = $this->result; - } elseif ( preg_match( '/^\s*(insert|delete|update|replace)\s/i', $query ) ) { - $this->rows_affected = mysqli_affected_rows( $this->dbh ); - - // Take note of the insert_id. - if ( preg_match( '/^\s*(insert|replace)\s/i', $query ) ) { - $this->insert_id = mysqli_insert_id( $this->dbh ); - } - - // Return number of rows affected. - $return_val = $this->rows_affected; - } else { - $num_rows = 0; - - if ( $this->result instanceof mysqli_result ) { - while ( $row = mysqli_fetch_object( $this->result ) ) { - $this->last_result[ $num_rows ] = $row; - $num_rows++; - } - } - - // Log and return the number of rows selected. - $this->num_rows = $num_rows; - $return_val = $num_rows; - } - - return $return_val; - } - - /** - * Internal function to perform the mysqli_query() call. - * - * @since 3.9.0 - * - * @see wpdb::query() - * - * @param string $query The query to run. - */ - private function _do_query( $query ) { - if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) { - $this->timer_start(); - } - - if ( ! empty( $this->dbh ) ) { - $this->result = mysqli_query( $this->dbh, $query ); - } - - $this->num_queries++; - - if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES ) { - $this->log_query( - $query, - $this->timer_stop(), - $this->get_caller(), - $this->time_start, - array() - ); - } - } - - /** - * Logs query data. - * - * @since 5.3.0 - * - * @param string $query The query's SQL. - * @param float $query_time Total time spent on the query, in seconds. - * @param string $query_callstack Comma-separated list of the calling functions. - * @param float $query_start Unix timestamp of the time at the start of the query. - * @param array $query_data Custom query data. - */ - public function log_query( $query, $query_time, $query_callstack, $query_start, $query_data ) { - /** - * Filters the custom data to log alongside a query. - * - * Caution should be used when modifying any of this data, it is recommended that any additional - * information you need to store about a query be added as a new associative array element. - * - * @since 5.3.0 - * - * @param array $query_data Custom query data. - * @param string $query The query's SQL. - * @param float $query_time Total time spent on the query, in seconds. - * @param string $query_callstack Comma-separated list of the calling functions. - * @param float $query_start Unix timestamp of the time at the start of the query. - */ - $query_data = apply_filters( 'log_query_custom_data', $query_data, $query, $query_time, $query_callstack, $query_start ); - - $this->queries[] = array( - $query, - $query_time, - $query_callstack, - $query_start, - $query_data, - ); - } - - /** - * Generates and returns a placeholder escape string for use in queries returned by ::prepare(). - * - * @since 4.8.3 - * - * @return string String to escape placeholders. - */ - public function placeholder_escape() { - static $placeholder; - - if ( ! $placeholder ) { - // If ext/hash is not present, compat.php's hash_hmac() does not support sha256. - $algo = function_exists( 'hash' ) ? 'sha256' : 'sha1'; - // Old WP installs may not have AUTH_SALT defined. - $salt = defined( 'AUTH_SALT' ) && AUTH_SALT ? AUTH_SALT : (string) rand(); - - $placeholder = '{' . hash_hmac( $algo, uniqid( $salt, true ), $salt ) . '}'; - } - - /* - * Add the filter to remove the placeholder escaper. Uses priority 0, so that anything - * else attached to this filter will receive the query with the placeholder string removed. - */ - if ( false === has_filter( 'query', array( $this, 'remove_placeholder_escape' ) ) ) { - add_filter( 'query', array( $this, 'remove_placeholder_escape' ), 0 ); - } - - return $placeholder; - } - - /** - * Adds a placeholder escape string, to escape anything that resembles a printf() placeholder. - * - * @since 4.8.3 - * - * @param string $query The query to escape. - * @return string The query with the placeholder escape string inserted where necessary. - */ - public function add_placeholder_escape( $query ) { - /* - * To prevent returning anything that even vaguely resembles a placeholder, - * we clobber every % we can find. - */ - return str_replace( '%', $this->placeholder_escape(), $query ); - } - - /** - * Removes the placeholder escape strings from a query. - * - * @since 4.8.3 - * - * @param string $query The query from which the placeholder will be removed. - * @return string The query with the placeholder removed. - */ - public function remove_placeholder_escape( $query ) { - return str_replace( $this->placeholder_escape(), '%', $query ); - } - - /** - * Inserts a row into the table. - * - * Examples: - * - * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 'bar' ) ) - * wpdb::insert( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) ) - * - * @since 2.5.0 - * - * @see wpdb::prepare() - * @see wpdb::$field_types - * @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). - * Sending a null value will cause the column to be set to NULL - the corresponding - * format is ignored in this case. - * @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. Default null. - * @return int|false The number of rows inserted, or false on error. - */ - public function insert( $table, $data, $format = null ) { - return $this->_insert_replace_helper( $table, $data, $format, 'INSERT' ); - } - - /** - * Replaces a row in the table. - * - * Examples: - * - * wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 'bar' ) ) - * wpdb::replace( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( '%s', '%d' ) ) - * - * @since 3.0.0 - * - * @see wpdb::prepare() - * @see wpdb::$field_types - * @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). - * Sending a null value will cause the column to be set to NULL - the corresponding - * format is ignored in this case. - * @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. Default null. - * @return int|false The number of rows affected, or false on error. - */ - public function replace( $table, $data, $format = null ) { - return $this->_insert_replace_helper( $table, $data, $format, 'REPLACE' ); - } - - /** - * Helper function for insert and replace. - * - * Runs an insert or replace query based on $type argument. - * - * @since 3.0.0 - * - * @see wpdb::prepare() - * @see wpdb::$field_types - * @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). - * Sending a null value will cause the column to be set to NULL - the corresponding - * format is ignored in this case. - * @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. Default null. - * @param string $type Optional. Type of operation. Possible values include 'INSERT' or 'REPLACE'. - * Default 'INSERT'. - * @return int|false The number of rows affected, or false on error. - */ - public function _insert_replace_helper( $table, $data, $format = null, $type = 'INSERT' ) { - $this->insert_id = 0; - - if ( ! in_array( strtoupper( $type ), array( 'REPLACE', 'INSERT' ), true ) ) { - return false; - } - - $data = $this->process_fields( $table, $data, $format ); - if ( false === $data ) { - return false; - } - - $formats = array(); - $values = array(); - foreach ( $data as $value ) { - if ( is_null( $value['value'] ) ) { - $formats[] = 'NULL'; - continue; - } - - $formats[] = $value['format']; - $values[] = $value['value']; - } - - $fields = '`' . implode( '`, `', array_keys( $data ) ) . '`'; - $formats = implode( ', ', $formats ); - - $sql = "$type INTO `$table` ($fields) VALUES ($formats)"; - - $this->check_current_query = false; - return $this->query( $this->prepare( $sql, $values ) ); - } - - /** - * Updates a row in the table. - * - * Examples: - * - * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 'bar' ), array( 'ID' => 1 ) ) - * wpdb::update( 'table', array( 'column' => 'foo', 'field' => 1337 ), array( 'ID' => 1 ), array( '%s', '%d' ), array( '%d' ) ) - * - * @since 2.5.0 - * - * @see wpdb::prepare() - * @see wpdb::$field_types - * @see wp_set_wpdb_vars() - * - * @param string $table Table name. - * @param array $data Data to update (in column => value pairs). - * Both $data columns and $data values should be "raw" (neither should be SQL escaped). - * Sending a null value will cause the column to be set to NULL - the corresponding - * format is ignored in this case. - * @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". - * Sending a null value will create an IS NULL comparison - the corresponding - * format will be ignored in this case. - * @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. Default null. - * @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. Default null. - * @return int|false The number of rows updated, or false on error. - */ - public function update( $table, $data, $where, $format = null, $where_format = null ) { - if ( ! is_array( $data ) || ! is_array( $where ) ) { - return false; - } - - $data = $this->process_fields( $table, $data, $format ); - if ( false === $data ) { - return false; - } - $where = $this->process_fields( $table, $where, $where_format ); - if ( false === $where ) { - return false; - } - - $fields = array(); - $conditions = array(); - $values = array(); - foreach ( $data as $field => $value ) { - if ( is_null( $value['value'] ) ) { - $fields[] = "`$field` = NULL"; - continue; - } - - $fields[] = "`$field` = " . $value['format']; - $values[] = $value['value']; - } - foreach ( $where as $field => $value ) { - if ( is_null( $value['value'] ) ) { - $conditions[] = "`$field` IS NULL"; - continue; - } - - $conditions[] = "`$field` = " . $value['format']; - $values[] = $value['value']; - } - - $fields = implode( ', ', $fields ); - $conditions = implode( ' AND ', $conditions ); - - $sql = "UPDATE `$table` SET $fields WHERE $conditions"; - - $this->check_current_query = false; - return $this->query( $this->prepare( $sql, $values ) ); - } - - /** - * Deletes a row in the table. - * - * Examples: - * - * wpdb::delete( 'table', array( 'ID' => 1 ) ) - * wpdb::delete( 'table', array( 'ID' => 1 ), array( '%d' ) ) - * - * @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". - * Sending a null value will create an IS NULL comparison - the corresponding - * format will be ignored in this case. - * @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 $data will be treated as strings unless otherwise - * specified in wpdb::$field_types. Default null. - * @return int|false The number of rows deleted, or false on error. - */ - public function delete( $table, $where, $where_format = null ) { - if ( ! is_array( $where ) ) { - return false; - } - - $where = $this->process_fields( $table, $where, $where_format ); - if ( false === $where ) { - return false; - } - - $conditions = array(); - $values = array(); - foreach ( $where as $field => $value ) { - if ( is_null( $value['value'] ) ) { - $conditions[] = "`$field` IS NULL"; - continue; - } - - $conditions[] = "`$field` = " . $value['format']; - $values[] = $value['value']; - } - - $conditions = implode( ' AND ', $conditions ); - - $sql = "DELETE FROM `$table` WHERE $conditions"; - - $this->check_current_query = false; - return $this->query( $this->prepare( $sql, $values ) ); - } - - /** - * Processes arrays of field/value pairs and field formats. - * - * This is a helper method for wpdb's CRUD methods, which take field/value pairs - * for inserts, updates, and where clauses. This method first pairs each value - * with a format. Then it determines the charset of that field, using that - * to determine if any invalid text would be stripped. If text is stripped, - * then field processing is rejected and the query fails. - * - * @since 4.2.0 - * - * @param string $table Table name. - * @param array $data Field/value pair. - * @param mixed $format Format for each field. - * @return array|false An array of fields that contain paired value and formats. - * False for invalid values. - */ - protected function process_fields( $table, $data, $format ) { - $data = $this->process_field_formats( $data, $format ); - if ( false === $data ) { - return false; - } - - $data = $this->process_field_charsets( $data, $table ); - if ( false === $data ) { - return false; - } - - $data = $this->process_field_lengths( $data, $table ); - if ( false === $data ) { - return false; - } - - $converted_data = $this->strip_invalid_text( $data ); - - if ( $data !== $converted_data ) { - - $problem_fields = array(); - foreach ( $data as $field => $value ) { - if ( $value !== $converted_data[ $field ] ) { - $problem_fields[] = $field; - } - } - - wp_load_translations_early(); - - if ( 1 === count( $problem_fields ) ) { - $this->last_error = sprintf( - /* translators: %s: Database field where the error occurred. */ - __( 'ClassicPress database error: Processing the value for the following field failed: %s. The supplied value may be too long or contains invalid data.' ), - reset( $problem_fields ) - ); - } else { - $this->last_error = sprintf( - /* translators: %s: Database fields where the error occurred. */ - __( 'ClassicPress database error: Processing the values for the following fields failed: %s. The supplied values may be too long or contain invalid data.' ), - implode( ', ', $problem_fields ) - ); - } - - return false; - } - - return $data; - } - - /** - * Prepares arrays of value/format pairs as passed to wpdb CRUD methods. - * - * @since 4.2.0 - * - * @param array $data Array of fields to values. - * @param mixed $format Formats to be mapped to the values in $data. - * @return array Array, keyed by field names with values being an array - * of 'value' and 'format' keys. - */ - protected function process_field_formats( $data, $format ) { - $formats = (array) $format; - $original_formats = $formats; - - foreach ( $data as $field => $value ) { - $value = array( - 'value' => $value, - 'format' => '%s', - ); - - if ( ! empty( $format ) ) { - $value['format'] = array_shift( $formats ); - if ( ! $value['format'] ) { - $value['format'] = reset( $original_formats ); - } - } elseif ( isset( $this->field_types[ $field ] ) ) { - $value['format'] = $this->field_types[ $field ]; - } - - $data[ $field ] = $value; - } - - return $data; - } - - /** - * Adds field charsets to field/value/format arrays generated by wpdb::process_field_formats(). - * - * @since 4.2.0 - * - * @param array $data As it comes from the wpdb::process_field_formats() method. - * @param string $table Table name. - * @return array|false The same array as $data with additional 'charset' keys. - * False on failure. - */ - protected function process_field_charsets( $data, $table ) { - foreach ( $data as $field => $value ) { - if ( '%d' === $value['format'] || '%f' === $value['format'] ) { - /* - * We can skip this field if we know it isn't a string. - * This checks %d/%f versus ! %s because its sprintf() could take more. - */ - $value['charset'] = false; - } else { - $value['charset'] = $this->get_col_charset( $table, $field ); - if ( is_wp_error( $value['charset'] ) ) { - return false; - } - } - - $data[ $field ] = $value; - } - - return $data; - } - - /** - * For string fields, records the maximum string length that field can safely save. - * - * @since 4.2.1 - * - * @param array $data As it comes from the wpdb::process_field_charsets() method. - * @param string $table Table name. - * @return array|false The same array as $data with additional 'length' keys, or false if - * any of the values were too long for their corresponding field. - */ - protected function process_field_lengths( $data, $table ) { - foreach ( $data as $field => $value ) { - if ( '%d' === $value['format'] || '%f' === $value['format'] ) { - /* - * We can skip this field if we know it isn't a string. - * This checks %d/%f versus ! %s because its sprintf() could take more. - */ - $value['length'] = false; - } else { - $value['length'] = $this->get_col_length( $table, $field ); - if ( is_wp_error( $value['length'] ) ) { - return false; - } - } - - $data[ $field ] = $value; - } - - return $data; - } - - /** - * Retrieves one variable from the database. - * - * Executes a SQL query and returns the value from the SQL result. - * If the SQL result contains more than one column and/or more than one row, - * the value in the column and row specified is returned. If $query is null, - * the value in the specified column and row from the previous SQL result is returned. - * - * @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. Default 0. - * @param int $y Optional. Row of value to return. Indexed from 0. Default 0. - * @return string|null Database query result (as string), or null on failure. - */ - public function get_var( $query = null, $x = 0, $y = 0 ) { - $this->func_call = "\$db->get_var(\"$query\", $x, $y)"; - - if ( $query ) { - if ( $this->check_current_query && $this->check_safe_collation( $query ) ) { - $this->check_current_query = false; - } - - $this->query( $query ); - } - - // Extract var out of cached results based on x,y vals. - if ( ! empty( $this->last_result[ $y ] ) ) { - $values = array_values( get_object_vars( $this->last_result[ $y ] ) ); - } - - // If there is a value return it, else return null. - return ( isset( $values[ $x ] ) && '' !== $values[ $x ] ) ? $values[ $x ] : null; - } - - /** - * Retrieves one row from the database. - * - * Executes a SQL query and returns the row from the SQL result. - * - * @since 0.71 - * - * @param string|null $query SQL query. - * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which - * correspond to an stdClass object, an associative array, or a numeric array, - * respectively. Default OBJECT. - * @param int $y Optional. Row to return. Indexed from 0. Default 0. - * @return array|object|null|void Database query result in format specified by $output or null on failure. - */ - public function get_row( $query = null, $output = OBJECT, $y = 0 ) { - $this->func_call = "\$db->get_row(\"$query\",$output,$y)"; - - if ( $query ) { - if ( $this->check_current_query && $this->check_safe_collation( $query ) ) { - $this->check_current_query = false; - } - - $this->query( $query ); - } else { - return null; - } - - if ( ! isset( $this->last_result[ $y ] ) ) { - return null; - } - - if ( OBJECT === $output ) { - return $this->last_result[ $y ] ? $this->last_result[ $y ] : null; - } elseif ( ARRAY_A === $output ) { - return $this->last_result[ $y ] ? get_object_vars( $this->last_result[ $y ] ) : null; - } elseif ( ARRAY_N === $output ) { - return $this->last_result[ $y ] ? array_values( get_object_vars( $this->last_result[ $y ] ) ) : null; - } elseif ( OBJECT === strtoupper( $output ) ) { - // Back compat for OBJECT being previously case-insensitive. - return $this->last_result[ $y ] ? $this->last_result[ $y ] : null; - } else { - $this->print_error( ' $db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N' ); - } - } - - /** - * Retrieves one column from the database. - * - * Executes a SQL query and returns the column from the SQL result. - * If the SQL result contains more than one column, the column specified is returned. - * If $query is null, the specified column from the previous SQL result is returned. - * - * @since 0.71 - * - * @param string|null $query Optional. SQL query. Defaults to previous query. - * @param int $x Optional. Column to return. Indexed from 0. Default 0. - * @return array Database query result. Array indexed from 0 by SQL result row number. - */ - public function get_col( $query = null, $x = 0 ) { - if ( $query ) { - if ( $this->check_current_query && $this->check_safe_collation( $query ) ) { - $this->check_current_query = false; - } - - $this->query( $query ); - } - - $new_array = array(); - // Extract the column values. - if ( $this->last_result ) { - for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) { - $new_array[ $i ] = $this->get_var( null, $x, $i ); - } - } - return $new_array; - } - - /** - * Retrieves an entire SQL result set from the database (i.e., many rows). - * - * Executes a SQL query and returns the entire SQL result. - * - * @since 0.71 - * - * @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. - * Default OBJECT. - * @return array|object|null Database query results. - */ - public function get_results( $query = null, $output = OBJECT ) { - $this->func_call = "\$db->get_results(\"$query\", $output)"; - - if ( $query ) { - if ( $this->check_current_query && $this->check_safe_collation( $query ) ) { - $this->check_current_query = false; - } - - $this->query( $query ); - } else { - return null; - } - - $new_array = array(); - if ( OBJECT === $output ) { - // Return an integer-keyed array of row objects. - return $this->last_result; - } elseif ( OBJECT_K === $output ) { - // Return an array of row objects with keys from column 1. - // (Duplicates are discarded.) - if ( $this->last_result ) { - foreach ( $this->last_result as $row ) { - $var_by_ref = get_object_vars( $row ); - $key = array_shift( $var_by_ref ); - if ( ! isset( $new_array[ $key ] ) ) { - $new_array[ $key ] = $row; - } - } - } - return $new_array; - } elseif ( ARRAY_A === $output || ARRAY_N === $output ) { - // Return an integer-keyed array of... - if ( $this->last_result ) { - foreach ( (array) $this->last_result as $row ) { - if ( ARRAY_N === $output ) { - // ...integer-keyed row arrays. - $new_array[] = array_values( get_object_vars( $row ) ); - } else { - // ...column name-keyed row arrays. - $new_array[] = get_object_vars( $row ); - } - } - } - return $new_array; - } elseif ( strtoupper( $output ) === OBJECT ) { - // Back compat for OBJECT being previously case-insensitive. - return $this->last_result; - } - return null; - } - - /** - * Retrieves the character set for the given table. - * - * @since 4.2.0 - * - * @param string $table Table name. - * @return string|WP_Error Table character set, WP_Error object if it couldn't be found. - */ - protected function get_table_charset( $table ) { - $tablekey = strtolower( $table ); - - /** - * Filters the table charset value before the DB is checked. - * - * Returning a non-null value from the filter will effectively short-circuit - * checking the DB for the charset, returning that value instead. - * - * @since 4.2.0 - * - * @param string|WP_Error|null $charset The character set to use, WP_Error object - * if it couldn't be found. Default null. - * @param string $table The name of the table being checked. - */ - $charset = apply_filters( 'pre_get_table_charset', null, $table ); - if ( null !== $charset ) { - return $charset; - } - - if ( isset( $this->table_charset[ $tablekey ] ) ) { - return $this->table_charset[ $tablekey ]; - } - - $charsets = array(); - $columns = array(); - - $table_parts = explode( '.', $table ); - $table = '`' . implode( '`.`', $table_parts ) . '`'; - $results = $this->get_results( "SHOW FULL COLUMNS FROM $table" ); - if ( ! $results ) { - return new WP_Error( 'wpdb_get_table_charset_failure', __( 'Could not retrieve table charset.' ) ); - } - - foreach ( $results as $column ) { - $columns[ strtolower( $column->Field ) ] = $column; - } - - $this->col_meta[ $tablekey ] = $columns; - - foreach ( $columns as $column ) { - if ( ! empty( $column->Collation ) ) { - list( $charset ) = explode( '_', $column->Collation ); - - // If the current connection can't support utf8mb4 characters, let's only send 3-byte utf8 characters. - if ( 'utf8mb4' === $charset && ! $this->has_cap( 'utf8mb4' ) ) { - $charset = 'utf8'; - } - - $charsets[ strtolower( $charset ) ] = true; - } - - list( $type ) = explode( '(', $column->Type ); - - // A binary/blob means the whole query gets treated like this. - if ( in_array( strtoupper( $type ), array( 'BINARY', 'VARBINARY', 'TINYBLOB', 'MEDIUMBLOB', 'BLOB', 'LONGBLOB' ), true ) ) { - $this->table_charset[ $tablekey ] = 'binary'; - return 'binary'; - } - } - - // utf8mb3 is an alias for utf8. - if ( isset( $charsets['utf8mb3'] ) ) { - $charsets['utf8'] = true; - unset( $charsets['utf8mb3'] ); - } - - // Check if we have more than one charset in play. - $count = count( $charsets ); - if ( 1 === $count ) { - $charset = key( $charsets ); - } elseif ( 0 === $count ) { - // No charsets, assume this table can store whatever. - $charset = false; - } else { - // More than one charset. Remove latin1 if present and recalculate. - unset( $charsets['latin1'] ); - $count = count( $charsets ); - if ( 1 === $count ) { - // Only one charset (besides latin1). - $charset = key( $charsets ); - } elseif ( 2 === $count && isset( $charsets['utf8'], $charsets['utf8mb4'] ) ) { - // Two charsets, but they're utf8 and utf8mb4, use utf8. - $charset = 'utf8'; - } else { - // Two mixed character sets. ascii. - $charset = 'ascii'; - } - } - - $this->table_charset[ $tablekey ] = $charset; - return $charset; - } - - /** - * Retrieves the character set for the given column. - * - * @since 4.2.0 - * - * @param string $table Table name. - * @param string $column Column name. - * @return string|false|WP_Error Column character set as a string. False if the column has - * no character set. WP_Error object if there was an error. - */ - public function get_col_charset( $table, $column ) { - $tablekey = strtolower( $table ); - $columnkey = strtolower( $column ); - - /** - * Filters the column charset value before the DB is checked. - * - * Passing a non-null value to the filter will short-circuit - * checking the DB for the charset, returning that value instead. - * - * @since 4.2.0 - * - * @param string|null $charset The character set to use. Default null. - * @param string $table The name of the table being checked. - * @param string $column The name of the column being checked. - */ - $charset = apply_filters( 'pre_get_col_charset', null, $table, $column ); - if ( null !== $charset ) { - return $charset; - } - - // Skip this entirely if this isn't a MySQL database. - if ( empty( $this->is_mysql ) ) { - return false; - } - - if ( empty( $this->table_charset[ $tablekey ] ) ) { - // This primes column information for us. - $table_charset = $this->get_table_charset( $table ); - if ( is_wp_error( $table_charset ) ) { - return $table_charset; - } - } - - // If still no column information, return the table charset. - if ( empty( $this->col_meta[ $tablekey ] ) ) { - return $this->table_charset[ $tablekey ]; - } - - // If this column doesn't exist, return the table charset. - if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) { - return $this->table_charset[ $tablekey ]; - } - - // Return false when it's not a string column. - if ( empty( $this->col_meta[ $tablekey ][ $columnkey ]->Collation ) ) { - return false; - } - - list( $charset ) = explode( '_', $this->col_meta[ $tablekey ][ $columnkey ]->Collation ); - return $charset; - } - - /** - * Retrieves the maximum string length allowed in a given column. - * - * The length may either be specified as a byte length or a character length. - * - * @since 4.2.1 - * - * @param string $table Table name. - * @param string $column Column name. - * @return array|false|WP_Error { - * Array of column length information, false if the column has no length (for - * example, numeric column), WP_Error object if there was an error. - * - * @type int $length The column length. - * @type string $type One of 'byte' or 'char'. - */ - public function get_col_length( $table, $column ) { - $tablekey = strtolower( $table ); - $columnkey = strtolower( $column ); - - // Skip this entirely if this isn't a MySQL database. - if ( empty( $this->is_mysql ) ) { - return false; - } - - if ( empty( $this->col_meta[ $tablekey ] ) ) { - // This primes column information for us. - $table_charset = $this->get_table_charset( $table ); - if ( is_wp_error( $table_charset ) ) { - return $table_charset; - } - } - - if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) { - return false; - } - - $typeinfo = explode( '(', $this->col_meta[ $tablekey ][ $columnkey ]->Type ); - - $type = strtolower( $typeinfo[0] ); - if ( ! empty( $typeinfo[1] ) ) { - $length = trim( $typeinfo[1], ')' ); - } else { - $length = false; - } - - switch ( $type ) { - case 'char': - case 'varchar': - return array( - 'type' => 'char', - 'length' => (int) $length, - ); - - case 'binary': - case 'varbinary': - return array( - 'type' => 'byte', - 'length' => (int) $length, - ); - - case 'tinyblob': - case 'tinytext': - return array( - 'type' => 'byte', - 'length' => 255, // 2^8 - 1 - ); - - case 'blob': - case 'text': - return array( - 'type' => 'byte', - 'length' => 65535, // 2^16 - 1 - ); - - case 'mediumblob': - case 'mediumtext': - return array( - 'type' => 'byte', - 'length' => 16777215, // 2^24 - 1 - ); - - case 'longblob': - case 'longtext': - return array( - 'type' => 'byte', - 'length' => 4294967295, // 2^32 - 1 - ); - - default: - return false; - } - } - - /** - * Checks if a string is ASCII. - * - * The negative regex is faster for non-ASCII strings, as it allows - * the search to finish as soon as it encounters a non-ASCII character. - * - * @since 4.2.0 - * - * @param string $input_string String to check. - * @return bool True if ASCII, false if not. - */ - protected function check_ascii( $input_string ) { - if ( function_exists( 'mb_check_encoding' ) ) { - if ( mb_check_encoding( $input_string, 'ASCII' ) ) { - return true; - } - } elseif ( ! preg_match( '/[^\x00-\x7F]/', $input_string ) ) { - return true; - } - - return false; - } - - /** - * Checks if the query is accessing a collation considered safe on the current version of MySQL. - * - * @since 4.2.0 - * - * @param string $query The query to check. - * @return bool True if the collation is safe, false if it isn't. - */ - protected function check_safe_collation( $query ) { - if ( $this->checking_collation ) { - return true; - } - - // We don't need to check the collation for queries that don't read data. - $query = ltrim( $query, "\r\n\t (" ); - if ( preg_match( '/^(?:SHOW|DESCRIBE|DESC|EXPLAIN|CREATE)\s/i', $query ) ) { - return true; - } - - // All-ASCII queries don't need extra checking. - if ( $this->check_ascii( $query ) ) { - return true; - } - - $table = $this->get_table_from_query( $query ); - if ( ! $table ) { - return false; - } - - $this->checking_collation = true; - $collation = $this->get_table_charset( $table ); - $this->checking_collation = false; - - // Tables with no collation, or latin1 only, don't need extra checking. - if ( false === $collation || 'latin1' === $collation ) { - return true; - } - - $table = strtolower( $table ); - if ( empty( $this->col_meta[ $table ] ) ) { - return false; - } - - // If any of the columns don't have one of these collations, it needs more sanity checking. - $safe_collations = array( - 'utf8_bin', - 'utf8_general_ci', - 'utf8mb3_bin', - 'utf8mb3_general_ci', - 'utf8mb4_bin', - 'utf8mb4_general_ci', - ); - - foreach ( $this->col_meta[ $table ] as $col ) { - if ( empty( $col->Collation ) ) { - continue; - } - - if ( ! in_array( $col->Collation, $safe_collations, true ) ) { - return false; - } - } - - return true; - } - - /** - * Strips any invalid characters based on value/charset pairs. - * - * @since 4.2.0 - * - * @param array $data Array of value arrays. Each value array has the keys 'value' and 'charset'. - * An optional 'ascii' key can be set to false to avoid redundant ASCII checks. - * @return array|WP_Error The $data parameter, with invalid characters removed from each value. - * This works as a passthrough: any additional keys such as 'field' are - * retained in each value array. If we cannot remove invalid characters, - * a WP_Error object is returned. - */ - protected function strip_invalid_text( $data ) { - $db_check_string = false; - - foreach ( $data as &$value ) { - $charset = $value['charset']; - - if ( is_array( $value['length'] ) ) { - $length = $value['length']['length']; - $truncate_by_byte_length = 'byte' === $value['length']['type']; - } else { - $length = false; - // Since we have no length, we'll never truncate. Initialize the variable to false. - // True would take us through an unnecessary (for this case) codepath below. - $truncate_by_byte_length = false; - } - - // There's no charset to work with. - if ( false === $charset ) { - continue; - } - - // Column isn't a string. - if ( ! is_string( $value['value'] ) ) { - continue; - } - - $needs_validation = true; - if ( - // latin1 can store any byte sequence. - 'latin1' === $charset - || - // ASCII is always OK. - ( ! isset( $value['ascii'] ) && $this->check_ascii( $value['value'] ) ) - ) { - $truncate_by_byte_length = true; - $needs_validation = false; - } - - if ( $truncate_by_byte_length ) { - mbstring_binary_safe_encoding(); - if ( false !== $length && strlen( $value['value'] ) > $length ) { - $value['value'] = substr( $value['value'], 0, $length ); - } - reset_mbstring_encoding(); - - if ( ! $needs_validation ) { - continue; - } - } - - // utf8 can be handled by regex, which is a bunch faster than a DB lookup. - if ( ( 'utf8' === $charset || 'utf8mb3' === $charset || 'utf8mb4' === $charset ) && function_exists( 'mb_strlen' ) ) { - $regex = '/ - ( - (?: [\x00-\x7F] # single-byte sequences 0xxxxxxx - | [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx - | \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2 - | [\xE1-\xEC][\x80-\xBF]{2} - | \xED[\x80-\x9F][\x80-\xBF] - | [\xEE-\xEF][\x80-\xBF]{2}'; - - if ( 'utf8mb4' === $charset ) { - $regex .= ' - | \xF0[\x90-\xBF][\x80-\xBF]{2} # four-byte sequences 11110xxx 10xxxxxx * 3 - | [\xF1-\xF3][\x80-\xBF]{3} - | \xF4[\x80-\x8F][\x80-\xBF]{2} - '; - } - - $regex .= '){1,40} # ...one or more times - ) - | . # anything else - /x'; - $value['value'] = preg_replace( $regex, '$1', $value['value'] ); - - if ( false !== $length && mb_strlen( $value['value'], 'UTF-8' ) > $length ) { - $value['value'] = mb_substr( $value['value'], 0, $length, 'UTF-8' ); - } - continue; - } - - // We couldn't use any local conversions, send it to the DB. - $value['db'] = true; - $db_check_string = true; - } - unset( $value ); // Remove by reference. - - if ( $db_check_string ) { - $queries = array(); - foreach ( $data as $col => $value ) { - if ( ! empty( $value['db'] ) ) { - // We're going to need to truncate by characters or bytes, depending on the length value we have. - if ( isset( $value['length']['type'] ) && 'byte' === $value['length']['type'] ) { - // Using binary causes LEFT() to truncate by bytes. - $charset = 'binary'; - } else { - $charset = $value['charset']; - } - - if ( $this->charset ) { - $connection_charset = $this->charset; - } else { - $connection_charset = mysqli_character_set_name( $this->dbh ); - } - - if ( is_array( $value['length'] ) ) { - $length = sprintf( '%.0f', $value['length']['length'] ); - $queries[ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING $charset ), $length ) USING $connection_charset )", $value['value'] ); - } elseif ( 'binary' !== $charset ) { - // If we don't have a length, there's no need to convert binary - it will always return the same result. - $queries[ $col ] = $this->prepare( "CONVERT( CONVERT( %s USING $charset ) USING $connection_charset )", $value['value'] ); - } - - unset( $data[ $col ]['db'] ); - } - } - - $sql = array(); - foreach ( $queries as $column => $query ) { - if ( ! $query ) { - continue; - } - - $sql[] = $query . " AS x_$column"; - } - - $this->check_current_query = false; - $row = $this->get_row( 'SELECT ' . implode( ', ', $sql ), ARRAY_A ); - if ( ! $row ) { - return new WP_Error( 'wpdb_strip_invalid_text_failure', __( 'Could not strip invalid text.' ) ); - } - - foreach ( array_keys( $data ) as $column ) { - if ( isset( $row[ "x_$column" ] ) ) { - $data[ $column ]['value'] = $row[ "x_$column" ]; - } - } - } - - return $data; - } - - /** - * Strips any invalid characters from the query. - * - * @since 4.2.0 - * - * @param string $query Query to convert. - * @return string|WP_Error The converted query, or a WP_Error object if the conversion fails. - */ - protected function strip_invalid_text_from_query( $query ) { - // We don't need to check the collation for queries that don't read data. - $trimmed_query = ltrim( $query, "\r\n\t (" ); - if ( preg_match( '/^(?:SHOW|DESCRIBE|DESC|EXPLAIN|CREATE)\s/i', $trimmed_query ) ) { - return $query; - } - - $table = $this->get_table_from_query( $query ); - if ( $table ) { - $charset = $this->get_table_charset( $table ); - if ( is_wp_error( $charset ) ) { - return $charset; - } - - // We can't reliably strip text from tables containing binary/blob columns. - if ( 'binary' === $charset ) { - return $query; - } - } else { - $charset = $this->charset; - } - - $data = array( - 'value' => $query, - 'charset' => $charset, - 'ascii' => false, - 'length' => false, - ); - - $data = $this->strip_invalid_text( array( $data ) ); - if ( is_wp_error( $data ) ) { - return $data; - } - - return $data[0]['value']; - } - - /** - * Strips any invalid characters from the string for a given table and column. - * - * @since 4.2.0 - * - * @param string $table Table name. - * @param string $column Column name. - * @param string $value The text to check. - * @return string|WP_Error The converted string, or a WP_Error object if the conversion fails. - */ - public function strip_invalid_text_for_column( $table, $column, $value ) { - if ( ! is_string( $value ) ) { - return $value; - } - - $charset = $this->get_col_charset( $table, $column ); - if ( ! $charset ) { - // Not a string column. - return $value; - } elseif ( is_wp_error( $charset ) ) { - // Bail on real errors. - return $charset; - } - - $data = array( - $column => array( - 'value' => $value, - 'charset' => $charset, - 'length' => $this->get_col_length( $table, $column ), - ), - ); - - $data = $this->strip_invalid_text( $data ); - if ( is_wp_error( $data ) ) { - return $data; - } - - return $data[ $column ]['value']; - } - - /** - * Finds the first table name referenced in a query. - * - * @since 4.2.0 - * - * @param string $query The query to search. - * @return string|false The table name found, or false if a table couldn't be found. - */ - protected function get_table_from_query( $query ) { - // Remove characters that can legally trail the table name. - $query = rtrim( $query, ';/-#' ); - - // Allow (select...) union [...] style queries. Use the first query's table name. - $query = ltrim( $query, "\r\n\t (" ); - - // Strip everything between parentheses except nested selects. - $query = preg_replace( '/\((?!\s*select)[^(]*?\)/is', '()', $query ); - - // Quickly match most common queries. - if ( preg_match( - '/^\s*(?:' - . 'SELECT.*?\s+FROM' - . '|INSERT(?:\s+LOW_PRIORITY|\s+DELAYED|\s+HIGH_PRIORITY)?(?:\s+IGNORE)?(?:\s+INTO)?' - . '|REPLACE(?:\s+LOW_PRIORITY|\s+DELAYED)?(?:\s+INTO)?' - . '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?' - . '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:.+?FROM)?' - . ')\s+((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)/is', - $query, - $maybe - ) ) { - return str_replace( '`', '', $maybe[1] ); - } - - // SHOW TABLE STATUS and SHOW TABLES WHERE Name = 'wp_posts' - if ( preg_match( '/^\s*SHOW\s+(?:TABLE\s+STATUS|(?:FULL\s+)?TABLES).+WHERE\s+Name\s*=\s*("|\')((?:[0-9a-zA-Z$_.-]|[\xC2-\xDF][\x80-\xBF])+)\\1/is', $query, $maybe ) ) { - return $maybe[2]; - } - - /* - * SHOW TABLE STATUS LIKE and SHOW TABLES LIKE 'wp\_123\_%' - * This quoted LIKE operand seldom holds a full table name. - * It is usually a pattern for matching a prefix so we just - * strip the trailing % and unescape the _ to get 'wp_123_' - * which drop-ins can use for routing these SQL statements. - */ - if ( preg_match( '/^\s*SHOW\s+(?:TABLE\s+STATUS|(?:FULL\s+)?TABLES)\s+(?:WHERE\s+Name\s+)?LIKE\s*("|\')((?:[\\\\0-9a-zA-Z$_.-]|[\xC2-\xDF][\x80-\xBF])+)%?\\1/is', $query, $maybe ) ) { - return str_replace( '\\_', '_', $maybe[2] ); - } - - // Big pattern for the rest of the table-related queries. - if ( preg_match( - '/^\s*(?:' - . '(?:EXPLAIN\s+(?:EXTENDED\s+)?)?SELECT.*?\s+FROM' - . '|DESCRIBE|DESC|EXPLAIN|HANDLER' - . '|(?:LOCK|UNLOCK)\s+TABLE(?:S)?' - . '|(?:RENAME|OPTIMIZE|BACKUP|RESTORE|CHECK|CHECKSUM|ANALYZE|REPAIR).*\s+TABLE' - . '|TRUNCATE(?:\s+TABLE)?' - . '|CREATE(?:\s+TEMPORARY)?\s+TABLE(?:\s+IF\s+NOT\s+EXISTS)?' - . '|ALTER(?:\s+IGNORE)?\s+TABLE' - . '|DROP\s+TABLE(?:\s+IF\s+EXISTS)?' - . '|CREATE(?:\s+\w+)?\s+INDEX.*\s+ON' - . '|DROP\s+INDEX.*\s+ON' - . '|LOAD\s+DATA.*INFILE.*INTO\s+TABLE' - . '|(?:GRANT|REVOKE).*ON\s+TABLE' - . '|SHOW\s+(?:.*FROM|.*TABLE)' - . ')\s+\(*\s*((?:[0-9a-zA-Z$_.`-]|[\xC2-\xDF][\x80-\xBF])+)\s*\)*/is', - $query, - $maybe - ) ) { - return str_replace( '`', '', $maybe[1] ); - } - - return false; - } - - /** - * Loads the column metadata from the last query. - * - * @since 3.5.0 - */ - protected function load_col_info() { - if ( $this->col_info ) { - return; - } - - $num_fields = mysqli_num_fields( $this->result ); - - for ( $i = 0; $i < $num_fields; $i++ ) { - $this->col_info[ $i ] = mysqli_fetch_field( $this->result ); - } - } - - /** - * Retrieves column metadata from the last query. - * - * @since 0.71 - * - * @param string $info_type Optional. Possible values include 'name', 'table', 'def', 'max_length', - * 'not_null', 'primary_key', 'multiple_key', 'unique_key', 'numeric', - * 'blob', 'type', 'unsigned', 'zerofill'. Default 'name'. - * @param int $col_offset Optional. 0: col name. 1: which table the col's in. 2: col's max length. - * 3: if the col is numeric. 4: col's type. Default -1. - * @return mixed Column results. - */ - public function get_col_info( $info_type = 'name', $col_offset = -1 ) { - $this->load_col_info(); - - if ( $this->col_info ) { - if ( -1 === $col_offset ) { - $i = 0; - $new_array = array(); - foreach ( (array) $this->col_info as $col ) { - $new_array[ $i ] = $col->{$info_type}; - $i++; - } - return $new_array; - } else { - return $this->col_info[ $col_offset ]->{$info_type}; - } - } - } - - /** - * Starts the timer, for debugging purposes. - * - * @since 1.5.0 - * - * @return true - */ - public function timer_start() { - $this->time_start = microtime( true ); - return true; - } - - /** - * Stops the debugging timer. - * - * @since 1.5.0 - * - * @return float Total time spent on the query, in seconds. - */ - public function timer_stop() { - return ( microtime( true ) - $this->time_start ); - } - - /** - * Wraps errors in a nice header and footer and dies. - * - * Will not die if wpdb::$show_errors is false. - * - * @since 1.5.0 - * - * @param string $message The error message. - * @param string $error_code Optional. A computer-readable string to identify the error. - * Default '500'. - * @return void|false Void if the showing of errors is enabled, false if disabled. - */ - public function bail( $message, $error_code = '500' ) { - if ( $this->show_errors ) { - $error = ''; - - if ( $this->dbh instanceof mysqli ) { - $error = mysqli_error( $this->dbh ); - } elseif ( mysqli_connect_errno() ) { - $error = mysqli_connect_error(); - } - - if ( $error ) { - $message = '

        ' . $error . "

        \n" . $message; - } - - wp_die( $message ); - } else { - if ( class_exists( 'WP_Error', false ) ) { - $this->error = new WP_Error( $error_code, $message ); - } else { - $this->error = $message; - } - - return false; - } - } - - /** - * Closes the current database connection. - * - * @since 4.5.0 - * - * @return bool True if the connection was successfully closed, - * false if it wasn't, or if the connection doesn't exist. - */ - public function close() { - if ( ! $this->dbh ) { - return false; - } - - $closed = mysqli_close( $this->dbh ); - - if ( $closed ) { - $this->dbh = null; - $this->ready = false; - $this->has_connected = false; - } - - return $closed; - } - - /** - * Determines whether MySQL database is at least the required minimum version. - * - * @since 2.5.0 - * - * @global string $wp_version The WordPress version string. - * @global string $required_mysql_version The required MySQL version string. - * @return void|WP_Error - */ - public function check_database_version() { - global $wp_version, $required_mysql_version; - // Make sure the server has the required MySQL version. - if ( version_compare( $this->db_version(), $required_mysql_version, '<' ) ) { - /* translators: 1: WordPress version number, 2: Minimum required MySQL version number. */ - return new WP_Error( 'database_version', sprintf( __( 'Error: ClassicPress %1$s requires MySQL %2$s or higher' ), $wp_version, $required_mysql_version ) ); - } - } - - /** - * Determines whether the database supports collation. - * - * Called when WordPress is generating the table scheme. - * - * Use `wpdb::has_cap( 'collation' )`. - * - * @since 2.5.0 - * @deprecated 3.5.0 Use wpdb::has_cap() - * - * @return bool True if collation is supported, false if not. - */ - public function supports_collation() { - _deprecated_function( __FUNCTION__, '3.5.0', 'wpdb::has_cap( \'collation\' )' ); - return $this->has_cap( 'collation' ); - } - - /** - * Retrieves the database character collate. - * - * @since 3.5.0 - * - * @return string The database character collate. - */ - public function get_charset_collate() { - $charset_collate = ''; - - if ( ! empty( $this->charset ) ) { - $charset_collate = "DEFAULT CHARACTER SET $this->charset"; - } - if ( ! empty( $this->collate ) ) { - $charset_collate .= " COLLATE $this->collate"; - } - - return $charset_collate; - } - - /** - * Determines whether the database or WPDB supports a particular feature. - * - * Capability sniffs for the database server and current version of WPDB. - * - * Database sniffs are based on the version of MySQL the site is using. - * - * WPDB sniffs are added as new features are introduced to allow theme and plugin - * developers to determine feature support. This is to account for drop-ins which may - * introduce feature support at a different time to WordPress. - * - * @since 2.7.0 - * @since 4.1.0 Added support for the 'utf8mb4' feature. - * @since 4.6.0 Added support for the 'utf8mb4_520' feature. - * @since 6.2.0 Added support for the 'identifier_placeholders' feature. - * - * @see wpdb::db_version() - * - * @param string $db_cap The feature to check for. Accepts 'collation', 'group_concat', - * 'subqueries', 'set_charset', 'utf8mb4', 'utf8mb4_520', - * or 'identifier_placeholders'. - * @return bool True when the database feature is supported, false otherwise. - */ - public function has_cap( $db_cap ) { - $db_version = $this->db_version(); - $db_server_info = $this->db_server_info(); - - // Account for MariaDB version being prefixed with '5.5.5-' on older PHP versions. - if ( '5.5.5' === $db_version && str_contains( $db_server_info, 'MariaDB' ) - && PHP_VERSION_ID < 80016 // PHP 8.0.15 or older. - ) { - // Strip the '5.5.5-' prefix and set the version to the correct value. - $db_server_info = preg_replace( '/^5\.5\.5-(.*)/', '$1', $db_server_info ); - $db_version = preg_replace( '/[^0-9.].*/', '', $db_server_info ); - } - - switch ( strtolower( $db_cap ) ) { - case 'collation': // @since 2.5.0 - case 'group_concat': // @since 2.7.0 - case 'subqueries': // @since 2.7.0 - return version_compare( $db_version, '4.1', '>=' ); - case 'set_charset': - return version_compare( $db_version, '5.0.7', '>=' ); - case 'utf8mb4': // @since 4.1.0 - if ( version_compare( $db_version, '5.5.3', '<' ) ) { - return false; - } - - $client_version = mysqli_get_client_info(); - - /* - * libmysql has supported utf8mb4 since 5.5.3, same as the MySQL server. - * mysqlnd has supported utf8mb4 since 5.0.9. - */ - if ( false !== strpos( $client_version, 'mysqlnd' ) ) { - $client_version = preg_replace( '/^\D+([\d.]+).*/', '$1', $client_version ); - return version_compare( $client_version, '5.0.9', '>=' ); - } else { - return version_compare( $client_version, '5.5.3', '>=' ); - } - case 'utf8mb4_520': // @since 4.6.0 - return version_compare( $db_version, '5.6', '>=' ); - case 'identifier_placeholders': // @since 6.2.0 - /* - * As of WordPress 6.2, wpdb::prepare() supports identifiers via '%i', - * e.g. table/field names. - */ - return true; - } - - return false; - } - - /** - * Retrieves a comma-separated list of the names of the functions that called wpdb. - * - * @since 2.5.0 - * - * @return string Comma-separated list of the calling functions. - */ - public function get_caller() { - return wp_debug_backtrace_summary( __CLASS__ ); - } - - /** - * Retrieves the database server version. - * - * @since 2.7.0 - * - * @return string|null Version number on success, null on failure. - */ - public function db_version() { - return preg_replace( '/[^0-9.].*/', '', $this->db_server_info() ); - } - - /** - * Returns the version of the MySQL server. - * - * @since 5.5.0 - * - * @return string Server version as a string. - */ - public function db_server_info() { - return mysqli_get_server_info( $this->dbh ); - } -} diff --git a/wp-includes/class.wp-dependencies.php b/wp-includes/class.wp-dependencies.php index c6e754f..67eb856 100644 --- a/wp-includes/class.wp-dependencies.php +++ b/wp-includes/class.wp-dependencies.php @@ -2,13 +2,411 @@ /** * Dependencies API: WP_Dependencies base class * - * This file is deprecated, use 'wp-includes/class-wp-dependencies.php' instead. + * @since WP-2.6.0 * - * @deprecated 6.1.0 * @package ClassicPress + * @subpackage Dependencies */ -_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-dependencies.php' ); +/** + * Core base class extended to register items. + * + * @since WP-2.6.0 + * + * @see _WP_Dependency + */ +class WP_Dependencies { + /** + * An array of registered handle objects. + * + * @since WP-2.6.8 + * @var array + */ + public $registered = array(); + + /** + * An array of queued _WP_Dependency handle objects. + * + * @since WP-2.6.8 + * @var array + */ + public $queue = array(); + + /** + * An array of _WP_Dependency handle objects to queue. + * + * @since WP-2.6.0 + * @var array + */ + public $to_do = array(); + + /** + * An array of _WP_Dependency handle objects already queued. + * + * @since WP-2.6.0 + * @var array + */ + public $done = array(); + + /** + * An array of additional arguments passed when a handle is registered. + * + * Arguments are appended to the item query string. + * + * @since WP-2.6.0 + * @var array + */ + public $args = array(); + + /** + * An array of handle groups to enqueue. + * + * @since WP-2.8.0 + * @var array + */ + public $groups = array(); + + /** + * A handle group to enqueue. + * + * @since WP-2.8.0 + * @deprecated WP-4.5.0 + * @var int + */ + public $group = 0; + + /** + * Processes the items and dependencies. + * + * Processes the items passed to it or the queue, and their dependencies. + * + * @since WP-2.6.0 + * @since WP-2.8.0 Added the `$group` parameter. + * + * @param mixed $handles Optional. Items to be processed: Process queue (false), process item (string), process items (array of strings). + * @param mixed $group Group level: level (int), no groups (false). + * @return array Handles of items that have been processed. + */ + public function do_items( $handles = false, $group = false ) { + /* + * If nothing is passed, print the queue. If a string is passed, + * print that item. If an array is passed, print those items. + */ + $handles = false === $handles ? $this->queue : (array) $handles; + $this->all_deps( $handles ); + + foreach ( $this->to_do as $key => $handle ) { + if ( ! in_array( $handle, $this->done, true ) && isset( $this->registered[ $handle ] ) ) { + /* + * Attempt to process the item. If successful, + * add the handle to the done array. + * + * Unset the item from the to_do array. + */ + if ( $this->do_item( $handle, $group ) ) { + $this->done[] = $handle; + } + + unset( $this->to_do[ $key ] ); + } + } + + return $this->done; + } + + /** + * Processes a dependency. + * + * @since WP-2.6.0 + * + * @param string $handle Name of the item. Should be unique. + * @return bool True on success, false if not set. + */ + public function do_item( $handle ) { + return isset( $this->registered[ $handle ] ); + } + + /** + * Determines dependencies. + * + * Recursively builds an array of items to process taking + * dependencies into account. Does NOT catch infinite loops. + * + * @since WP-2.1.0 + * @since WP-2.6.0 Moved from `WP_Scripts`. + * @since WP-2.8.0 Added the `$group` parameter. + * + * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). + * @param bool $recursion Internal flag that function is calling itself. + * @param int|false $group Group level: (int) level, (false) no groups. + * @return bool True on success, false on failure. + */ + public function all_deps( $handles, $recursion = false, $group = false ) { + $handles = (array) $handles; + if ( ! $handles ) { + return false; + } + + foreach ( $handles as $handle ) { + $handle_parts = explode( '?', $handle ); + $handle = $handle_parts[0]; + $queued = in_array( $handle, $this->to_do, true ); + + if ( in_array( $handle, $this->done, true ) ) { // Already done + continue; + } + + $moved = $this->set_group( $handle, $recursion, $group ); + $new_group = $this->groups[ $handle ]; + + if ( $queued && ! $moved ) { // already queued and in the right group + continue; + } + + $keep_going = true; + if ( ! isset( $this->registered[ $handle ] ) ) { + $keep_going = false; // Item doesn't exist. + } elseif ( $this->registered[ $handle ]->deps && array_diff( $this->registered[ $handle ]->deps, array_keys( $this->registered ) ) ) { + $keep_going = false; // Item requires dependencies that don't exist. + } elseif ( $this->registered[ $handle ]->deps && ! $this->all_deps( $this->registered[ $handle ]->deps, true, $new_group ) ) { + $keep_going = false; // Item requires dependencies that don't exist. + } + + if ( ! $keep_going ) { // Either item or its dependencies don't exist. + if ( $recursion ) { + return false; // Abort this branch. + } else { + continue; // We're at the top level. Move on to the next one. + } + } + + if ( $queued ) { // Already grabbed it and its dependencies. + continue; + } + + if ( isset( $handle_parts[1] ) ) { + $this->args[ $handle ] = $handle_parts[1]; + } + + $this->to_do[] = $handle; + } + + return true; + } + + /** + * Register an item. + * + * Registers the item if no item of that name already exists. + * + * @since WP-2.1.0 + * @since WP-2.6.0 Moved from `WP_Scripts`. + * + * @param string $handle Name of the item. Should be unique. + * @param string $src Full URL of the item, or path of the item relative to the ClassicPress root directory. + * @param array $deps Optional. An array of registered item handles this item depends on. Default empty array. + * @param string|bool|null $ver Optional. String specifying item version number, if it has one, which is added to the URL + * as a query string for cache busting purposes. If version is set to false, a version + * number is automatically added equal to current installed ClassicPress version. + * If set to null, no version is added. + * @param mixed $args Optional. Custom property of the item. NOT the class property $args. Examples: $media, $in_footer. + * @return bool Whether the item has been registered. True on success, false on failure. + */ + public function add( $handle, $src, $deps = array(), $ver = false, $args = null ) { + if ( isset( $this->registered[ $handle ] ) ) { + return false; + } + $this->registered[ $handle ] = new _WP_Dependency( $handle, $src, $deps, $ver, $args ); + return true; + } + + /** + * Add extra item data. + * + * Adds data to a registered item. + * + * @since WP-2.6.0 + * + * @param string $handle Name of the item. Should be unique. + * @param string $key The data key. + * @param mixed $value The data value. + * @return bool True on success, false on failure. + */ + public function add_data( $handle, $key, $value ) { + if ( ! isset( $this->registered[ $handle ] ) ) { + return false; + } + + return $this->registered[ $handle ]->add_data( $key, $value ); + } + + /** + * Get extra item data. + * + * Gets data associated with a registered item. + * + * @since WP-3.3.0 + * + * @param string $handle Name of the item. Should be unique. + * @param string $key The data key. + * @return mixed Extra item data (string), false otherwise. + */ + public function get_data( $handle, $key ) { + if ( ! isset( $this->registered[ $handle ] ) ) { + return false; + } + + if ( ! isset( $this->registered[ $handle ]->extra[ $key ] ) ) { + return false; + } + + return $this->registered[ $handle ]->extra[ $key ]; + } + + /** + * Un-register an item or items. + * + * @since WP-2.1.0 + * @since WP-2.6.0 Moved from `WP_Scripts`. + * + * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). + * @return void + */ + public function remove( $handles ) { + foreach ( (array) $handles as $handle ) { + unset( $this->registered[ $handle ] ); + } + } + + /** + * Queue an item or items. + * + * Decodes handles and arguments, then queues handles and stores + * arguments in the class property $args. For example in extending + * classes, $args is appended to the item url as a query string. + * Note $args is NOT the $args property of items in the $registered array. + * + * @since WP-2.1.0 + * @since WP-2.6.0 Moved from `WP_Scripts`. + * + * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). + */ + public function enqueue( $handles ) { + foreach ( (array) $handles as $handle ) { + $handle = explode( '?', $handle ); + if ( ! in_array( $handle[0], $this->queue ) && isset( $this->registered[ $handle[0] ] ) ) { + $this->queue[] = $handle[0]; + if ( isset( $handle[1] ) ) { + $this->args[ $handle[0] ] = $handle[1]; + } + } + } + } + + /** + * Dequeue an item or items. + * + * Decodes handles and arguments, then dequeues handles + * and removes arguments from the class property $args. + * + * @since WP-2.1.0 + * @since WP-2.6.0 Moved from `WP_Scripts`. + * + * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). + */ + public function dequeue( $handles ) { + foreach ( (array) $handles as $handle ) { + $handle = explode( '?', $handle ); + $key = array_search( $handle[0], $this->queue ); + if ( false !== $key ) { + unset( $this->queue[ $key ] ); + unset( $this->args[ $handle[0] ] ); + } + } + } + + /** + * Recursively search the passed dependency tree for $handle + * + * @since WP-4.0.0 + * + * @param array $queue An array of queued _WP_Dependency handle objects. + * @param string $handle Name of the item. Should be unique. + * @return bool Whether the handle is found after recursively searching the dependency tree. + */ + protected function recurse_deps( $queue, $handle ) { + foreach ( $queue as $queued ) { + if ( ! isset( $this->registered[ $queued ] ) ) { + continue; + } + + if ( in_array( $handle, $this->registered[ $queued ]->deps ) ) { + return true; + } elseif ( $this->recurse_deps( $this->registered[ $queued ]->deps, $handle ) ) { + return true; + } + } + + return false; + } + + /** + * Query list for an item. + * + * @since WP-2.1.0 + * @since WP-2.6.0 Moved from `WP_Scripts`. + * + * @param string $handle Name of the item. Should be unique. + * @param string $list Property name of list array. + * @return bool|_WP_Dependency Found, or object Item data. + */ + public function query( $handle, $list = 'registered' ) { + switch ( $list ) { + case 'registered': + case 'scripts': // back compat + if ( isset( $this->registered[ $handle ] ) ) { + return $this->registered[ $handle ]; + } + return false; + + case 'enqueued': + case 'queue': + if ( in_array( $handle, $this->queue ) ) { + return true; + } + return $this->recurse_deps( $this->queue, $handle ); + + case 'to_do': + case 'to_print': // back compat + return in_array( $handle, $this->to_do ); + + case 'done': + case 'printed': // back compat + return in_array( $handle, $this->done ); + } + return false; + } + + /** + * Set item group, unless already in a lower group. + * + * @since WP-2.8.0 + * + * @param string $handle Name of the item. Should be unique. + * @param bool $recursion Internal flag that calling function was called recursively. + * @param mixed $group Group level. + * @return bool Not already in the group or a lower group + */ + public function set_group( $handle, $recursion, $group ) { + $group = (int) $group; + + if ( isset( $this->groups[ $handle ] ) && $this->groups[ $handle ] <= $group ) { + return false; + } + + $this->groups[ $handle ] = $group; + + return true; + } -/** WP_Dependencies class */ -require_once ABSPATH . WPINC . '/class-wp-dependencies.php'; +} diff --git a/wp-includes/class.wp-scripts.php b/wp-includes/class.wp-scripts.php index c18e554..e47741b 100644 --- a/wp-includes/class.wp-scripts.php +++ b/wp-includes/class.wp-scripts.php @@ -2,13 +2,607 @@ /** * Dependencies API: WP_Scripts class * - * This file is deprecated, use 'wp-includes/class-wp-scripts.php' instead. + * @since WP-2.6.0 * - * @deprecated 6.1.0 * @package ClassicPress + * @subpackage Dependencies */ -_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-scripts.php' ); +/** + * Core class used to register scripts. + * + * @since WP-2.1.0 + * + * @see WP_Dependencies + */ +class WP_Scripts extends WP_Dependencies { + /** + * Base URL for scripts. + * + * Full URL with trailing slash. + * + * @since WP-2.6.0 + * @var string + */ + public $base_url; + + /** + * URL of the content directory. + * + * @since WP-2.8.0 + * @var string + */ + public $content_url; + + /** + * Default version string for scripts. + * + * @since WP-2.6.0 + * @var string + */ + public $default_version; + + /** + * Holds handles of scripts which are enqueued in footer. + * + * @since WP-2.8.0 + * @var array + */ + public $in_footer = array(); + + /** + * Holds a list of script handles which will be concatenated. + * + * @since WP-2.8.0 + * @var string + */ + public $concat = ''; + + /** + * Holds a string which contains script handles and their version. + * + * @since WP-2.8.0 + * @deprecated WP-3.4.0 + * @var string + */ + public $concat_version = ''; + + /** + * Whether to perform concatenation. + * + * @since WP-2.8.0 + * @var bool + */ + public $do_concat = false; + + /** + * Holds HTML markup of scripts and additional data if concatenation + * is enabled. + * + * @since WP-2.8.0 + * @var string + */ + public $print_html = ''; + + /** + * Holds inline code if concatenation is enabled. + * + * @since WP-2.8.0 + * @var string + */ + public $print_code = ''; + + /** + * Holds a list of script handles which are not in the default directory + * if concatenation is enabled. + * + * Unused in core. + * + * @since WP-2.8.0 + * @var string + */ + public $ext_handles = ''; + + /** + * Holds a string which contains handles and versions of scripts which + * are not in the default directory if concatenation is enabled. + * + * Unused in core. + * + * @since WP-2.8.0 + * @var string + */ + public $ext_version = ''; + + /** + * List of default directories. + * + * @since WP-2.8.0 + * @var array + */ + public $default_dirs; + + /** + * Holds a string which contains the type attribute for script tag. + * + * If the current theme does not declare HTML5 support for 'script', + * then it initializes as `type='text/javascript'`. + * + * @since WP-5.3.0 + * @var string + */ + private $type_attr = ''; + + /** + * Constructor. + * + * @since WP-2.6.0 + */ + public function __construct() { + $this->init(); + add_action( 'init', array( $this, 'init' ), 0 ); + } + + /** + * Initialize the class. + * + * @since WP-3.4.0 + */ + public function init() { + if ( + function_exists( 'is_admin' ) && ! is_admin() + && + function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'script' ) + ) { + $this->type_attr = " type='text/javascript'"; + } + + /** + * Fires when the WP_Scripts instance is initialized. + * + * @since WP-2.6.0 + * + * @param WP_Scripts $this WP_Scripts instance (passed by reference). + */ + 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. + * + * @since WP-2.1.0 + * @since WP-2.8.0 Added the `$group` parameter. + * + * @param mixed $handles Optional. Scripts to be printed. (void) prints queue, (string) prints + * that script, (array of strings) prints those scripts. Default false. + * @param int $group Optional. If scripts were queued in groups prints this group number. + * Default false. + * @return array Scripts that have been printed. + */ + public function print_scripts( $handles = false, $group = false ) { + return $this->do_items( $handles, $group ); + } + + /** + * Prints extra scripts of a registered script. + * + * @since WP-2.1.0 + * @since WP-2.8.0 Added the `$echo` parameter. + * @deprecated WP-3.3.0 + * + * @see print_extra_script() + * + * @param string $handle The script's registered handle. + * @param bool $echo Optional. Whether to echo the extra script instead of just returning it. + * Default true. + * @return bool|string|void Void if no data exists, extra scripts if `$echo` is true, true otherwise. + */ + public function print_scripts_l10n( $handle, $echo = true ) { + _deprecated_function( __FUNCTION__, 'WP-3.3.0', 'WP_Scripts::print_extra_script()' ); + return $this->print_extra_script( $handle, $echo ); + } + + /** + * Prints extra scripts of a registered script. + * + * @since WP-3.3.0 + * + * @param string $handle The script's registered handle. + * @param bool $echo Optional. Whether to echo the extra script instead of just returning it. + * Default true. + * @return bool|string|void Void if no data exists, extra scripts if `$echo` is true, true otherwise. + */ + public function print_extra_script( $handle, $echo = true ) { + $output = $this->get_data( $handle, 'data' ); + if ( ! $output ) { + return; + } + + if ( ! $echo ) { + return $output; + } + + echo "type_attr}>\n"; + + // CDATA is not needed for HTML 5. + if ( $this->type_attr ) { + echo "/* type_attr ) { + echo "/* ]]> */\n"; + } + + echo "\n"; + + return true; + } + + /** + * Processes a script dependency. + * + * @since WP-2.6.0 + * @since WP-2.8.0 Added the `$group` parameter. + * + * @see WP_Dependencies::do_item() + * + * @param string $handle The script's registered handle. + * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false. + * @return bool True on success, false on failure. + */ + public function do_item( $handle, $group = false ) { + if ( ! parent::do_item( $handle ) ) { + return false; + } + + if ( 0 === $group && $this->groups[ $handle ] > 0 ) { + $this->in_footer[] = $handle; + return false; + } + + if ( false === $group && in_array( $handle, $this->in_footer, true ) ) { + $this->in_footer = array_diff( $this->in_footer, (array) $handle ); + } + + $obj = $this->registered[ $handle ]; + + if ( null === $obj->ver ) { + $ver = ''; + } else { + $ver = $obj->ver ? $obj->ver : $this->default_version; + } + + if ( isset( $this->args[ $handle ] ) ) { + $ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ]; + } + + /** This filter is documented in wp-includes/script-loader.php */ + $ver = apply_filters( 'classicpress_asset_version', $ver, 'script', $handle ); + + $src = $obj->src; + $cond_before = ''; + $cond_after = ''; + $conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : ''; + + if ( $conditional ) { + $cond_before = "\n"; + } + + $before_handle = $this->print_inline_script( $handle, 'before', false ); + $after_handle = $this->print_inline_script( $handle, 'after', false ); + + if ( $before_handle ) { + $before_handle = sprintf( "\n%s\n\n", $this->type_attr, $before_handle ); + } + + if ( $after_handle ) { + $after_handle = sprintf( "\n%s\n\n", $this->type_attr, $after_handle ); + } + + if ( $this->do_concat ) { + /** + * Filters the script loader source. + * + * @since WP-2.2.0 + * + * @param string $src Script loader source path. + * @param string $handle Script handle. + */ + $srce = apply_filters( 'script_loader_src', $src, $handle ); + + if ( $this->in_default_dir( $srce ) && ( $before_handle || $after_handle ) ) { + $this->do_concat = false; + + // Have to print the so-far concatenated scripts right away to maintain the right order. + _print_scripts(); + $this->reset(); + } elseif ( $this->in_default_dir( $srce ) && ! $conditional ) { + $this->print_code .= $this->print_extra_script( $handle, false ); + $this->concat .= "$handle,"; + $this->concat_version .= "$handle$ver"; + return true; + } else { + $this->ext_handles .= "$handle,"; + $this->ext_version .= "$handle$ver"; + } + } + + $has_conditional_data = $conditional && $this->get_data( $handle, 'data' ); + + if ( $has_conditional_data ) { + echo $cond_before; + } + + $this->print_extra_script( $handle ); + + if ( $has_conditional_data ) { + echo $cond_after; + } + + // A single item may alias a set of items, by having dependencies, but no source. + if ( ! $obj->src ) { + return true; + } + + if ( ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) { + $src = $this->base_url . $src; + } + + if ( ! empty( $ver ) ) { + $src = add_query_arg( 'ver', $ver, $src ); + } + + /** This filter is documented in wp-includes/class.wp-scripts.php */ + $src = esc_url( apply_filters( 'script_loader_src', $src, $handle ) ); + + if ( ! $src ) { + return true; + } + + $tag = $cond_before . $before_handle; + $tag .= sprintf( "\n", $this->type_attr, $src ); + $tag .= $after_handle . $cond_after; + + /** + * Filters the HTML script tag of an enqueued script. + * + * @since WP-4.1.0 + * + * @param string $tag The `\n", $this->type_attr, $output ); + } + + return $output; + } + + /** + * Localizes a script, only if the script has already been added. + * + * @since WP-2.1.0 + * + * @param string $handle + * @param string $object_name + * @param array $l10n + * @return bool + */ + public function localize( $handle, $object_name, $l10n ) { + if ( 'jquery' === $handle ) { + $handle = 'jquery-core'; + } + + if ( is_array( $l10n ) && isset( $l10n['l10n_print_after'] ) ) { // back compat, preserve the code in 'l10n_print_after' if present + $after = $l10n['l10n_print_after']; + unset( $l10n['l10n_print_after'] ); + } + + foreach ( (array) $l10n as $key => $value ) { + if ( ! is_scalar( $value ) ) { + continue; + } + + $l10n[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' ); + } + + $script = "var $object_name = " . wp_json_encode( $l10n ) . ';'; + + if ( ! empty( $after ) ) { + $script .= "\n$after;"; + } + + $data = $this->get_data( $handle, 'data' ); + + if ( ! empty( $data ) ) { + $script = "$data\n$script"; + } + + return $this->add_data( $handle, 'data', $script ); + } + + /** + * Sets handle group. + * + * @since WP-2.8.0 + * + * @see WP_Dependencies::set_group() + * + * @param string $handle Name of the item. Should be unique. + * @param bool $recursion Internal flag that calling function was called recursively. + * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false. + * @return bool Not already in the group or a lower group + */ + public function set_group( $handle, $recursion, $group = false ) { + if ( isset( $this->registered[ $handle ]->args ) && 1 === $this->registered[ $handle ]->args ) { + $grp = 1; + } else { + $grp = (int) $this->get_data( $handle, 'group' ); + } + + if ( false !== $group && $grp > $group ) { + $grp = $group; + } + + return parent::set_group( $handle, $recursion, $grp ); + } + + /** + * Determines script dependencies. + * + * @since WP-2.1.0 + * + * @see WP_Dependencies::all_deps() + * + * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). + * @param bool $recursion Internal flag that function is calling itself. + * @param int|false $group Optional. Group level: (int) level, (false) no groups. Default false. + * @return bool True on success, false on failure. + */ + public function all_deps( $handles, $recursion = false, $group = false ) { + $r = parent::all_deps( $handles, $recursion, $group ); + if ( ! $recursion ) { + /** + * Filters the list of script dependencies left to print. + * + * @since WP-2.3.0 + * + * @param array $to_do An array of script dependencies. + */ + $this->to_do = apply_filters( 'print_scripts_array', $this->to_do ); + } + return $r; + } + + /** + * Processes items and dependencies for the head group. + * + * @since WP-2.8.0 + * + * @see WP_Dependencies::do_items() + * + * @return array Handles of items that have been processed. + */ + public function do_head_items() { + $this->do_items( false, 0 ); + return $this->done; + } + + /** + * Processes items and dependencies for the footer group. + * + * @since WP-2.8.0 + * + * @see WP_Dependencies::do_items() + * + * @return array Handles of items that have been processed. + */ + public function do_footer_items() { + $this->do_items( false, 1 ); + return $this->done; + } + + /** + * Whether a handle's source is in a default directory. + * + * @since WP-2.8.0 + * + * @param string $src The source of the enqueued script. + * @return bool True if found, false if not. + */ + public function in_default_dir( $src ) { + if ( ! $this->default_dirs ) { + return true; + } + + if ( 0 === strpos( $src, '/' . WPINC . '/js/l10n' ) ) { + return false; + } + + foreach ( (array) $this->default_dirs as $test ) { + if ( 0 === strpos( $src, $test ) ) { + return true; + } + } + return false; + } -/** WP_Scripts class */ -require_once ABSPATH . WPINC . '/class-wp-scripts.php'; + /** + * Resets class properties. + * + * @since WP-2.8.0 + */ + public function reset() { + $this->do_concat = false; + $this->print_code = ''; + $this->concat = ''; + $this->concat_version = ''; + $this->print_html = ''; + $this->ext_version = ''; + $this->ext_handles = ''; + } +} diff --git a/wp-includes/class.wp-styles.php b/wp-includes/class.wp-styles.php index 9e1d2b1..cb6aa09 100644 --- a/wp-includes/class.wp-styles.php +++ b/wp-includes/class.wp-styles.php @@ -2,13 +2,457 @@ /** * Dependencies API: WP_Styles class * - * This file is deprecated, use 'wp-includes/class-wp-styles.php' instead. + * @since WP-2.6.0 * - * @deprecated 6.1.0 * @package ClassicPress + * @subpackage Dependencies */ -_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-styles.php' ); +/** + * Core class used to register styles. + * + * @since WP-2.6.0 + * + * @see WP_Dependencies + */ +class WP_Styles extends WP_Dependencies { + /** + * Base URL for styles. + * + * Full URL with trailing slash. + * + * @since WP-2.6.0 + * @var string + */ + public $base_url; + + /** + * URL of the content directory. + * + * @since WP-2.8.0 + * @var string + */ + public $content_url; + + /** + * Default version string for stylesheets. + * + * @since WP-2.6.0 + * @var string + */ + public $default_version; + + /** + * The current text direction. + * + * @since WP-2.6.0 + * @var string + */ + public $text_direction = 'ltr'; + + /** + * Holds a list of style handles which will be concatenated. + * + * @since WP-2.8.0 + * @var string + */ + public $concat = ''; + + /** + * Holds a string which contains style handles and their version. + * + * @since WP-2.8.0 + * @deprecated WP-3.4.0 + * @var string + */ + public $concat_version = ''; + + /** + * Whether to perform concatenation. + * + * @since WP-2.8.0 + * @var bool + */ + public $do_concat = false; + + /** + * Holds HTML markup of styles and additional data if concatenation + * is enabled. + * + * @since WP-2.8.0 + * @var string + */ + public $print_html = ''; + + /** + * Holds inline styles if concatenation is enabled. + * + * @since WP-3.3.0 + * @var string + */ + public $print_code = ''; + + /** + * List of default directories. + * + * @since WP-2.8.0 + * @var array + */ + public $default_dirs; + + /** + * Holds a string which contains the type attribute for style tag. + * + * If the current theme does not declare HTML5 support for 'style', + * then it initializes as `type='text/css'`. + * + * @since WP-5.3.0 + * @var string + */ + private $type_attr = ''; + + /** + * Constructor. + * + * @since WP-2.6.0 + */ + public function __construct() { + if ( + function_exists( 'is_admin' ) && ! is_admin() + && + function_exists( 'current_theme_supports' ) && ! current_theme_supports( 'html5', 'style' ) + ) { + $this->type_attr = " type='text/css'"; + } + + /** + * Fires when the WP_Styles instance is initialized. + * + * @since WP-2.6.0 + * + * @param WP_Styles $this WP_Styles instance (passed by reference). + */ + do_action_ref_array( 'wp_default_styles', array( &$this ) ); + } + + /** + * Processes a style dependency. + * + * @since WP-2.6.0 + * + * @see WP_Dependencies::do_item() + * + * @param string $handle The style's registered handle. + * @return bool True on success, false on failure. + */ + public function do_item( $handle ) { + if ( ! parent::do_item( $handle ) ) { + return false; + } + + $obj = $this->registered[ $handle ]; + + if ( null === $obj->ver ) { + $ver = ''; + } else { + $ver = $obj->ver ? $obj->ver : $this->default_version; + } + + if ( isset( $this->args[ $handle ] ) ) { + $ver = $ver ? $ver . '&' . $this->args[ $handle ] : $this->args[ $handle ]; + } + + /** This filter is documented in wp-includes/script-loader.php */ + $ver = apply_filters( 'classicpress_asset_version', $ver, 'style', $handle ); + + $src = $obj->src; + $cond_before = $cond_after = ''; + $conditional = isset( $obj->extra['conditional'] ) ? $obj->extra['conditional'] : ''; + + if ( $conditional ) { + $cond_before = "\n"; + } + + $inline_style = $this->print_inline_style( $handle, false ); + + if ( $inline_style ) { + $inline_style_tag = sprintf( + "\n", + esc_attr( $handle ), + $this->type_attr, + $inline_style + ); + } else { + $inline_style_tag = ''; + } + + if ( $this->do_concat ) { + if ( $this->in_default_dir( $src ) && ! $conditional && ! isset( $obj->extra['alt'] ) ) { + $this->concat .= "$handle,"; + $this->concat_version .= "$handle$ver"; + + $this->print_code .= $inline_style; + + return true; + } + } + + if ( isset( $obj->args ) ) { + $media = esc_attr( $obj->args ); + } else { + $media = 'all'; + } + + // A single item may alias a set of items, by having dependencies, but no source. + if ( ! $src ) { + if ( $inline_style_tag ) { + if ( $this->do_concat ) { + $this->print_html .= $inline_style_tag; + } else { + echo $inline_style_tag; + } + } + + return true; + } + + $href = $this->_css_href( $src, $ver, $handle ); + if ( ! $href ) { + return true; + } + + $rel = isset( $obj->extra['alt'] ) && $obj->extra['alt'] ? 'alternate stylesheet' : 'stylesheet'; + $title = isset( $obj->extra['title'] ) ? sprintf( "title='%s'", esc_attr( $obj->extra['title'] ) ) : ''; + + $tag = sprintf( + "\n", + $rel, + $handle, + $title, + $href, + $this->type_attr, + $media + ); + + /** + * Filters the HTML link tag of an enqueued style. + * + * @since WP-2.6.0 + * @since WP-4.3.0 Introduced the `$href` parameter. + * @since WP-4.5.0 Introduced the `$media` parameter. + * + * @param string $tag The link tag for the enqueued style. + * @param string $handle The style's registered handle. + * @param string $href The stylesheet's source URL. + * @param string $media The stylesheet's media attribute. + */ + $tag = apply_filters( 'style_loader_tag', $tag, $handle, $href, $media ); + + if ( 'rtl' === $this->text_direction && isset( $obj->extra['rtl'] ) && $obj->extra['rtl'] ) { + if ( is_bool( $obj->extra['rtl'] ) || 'replace' === $obj->extra['rtl'] ) { + $suffix = isset( $obj->extra['suffix'] ) ? $obj->extra['suffix'] : ''; + $rtl_href = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $this->_css_href( $src, $ver, "$handle-rtl" ) ); + } else { + $rtl_href = $this->_css_href( $obj->extra['rtl'], $ver, "$handle-rtl" ); + } + + /** This filter is documented in wp-includes/class.wp-styles.php */ + $rtl_tag = sprintf( + "\n", + $rel, + $handle, + $title, + $rtl_href, + $this->type_attr, + $media + ); + + if ( 'replace' === $obj->extra['rtl'] ) { + $tag = $rtl_tag; + } else { + $tag .= $rtl_tag; + } + } + + if ( $this->do_concat ) { + $this->print_html .= $cond_before; + $this->print_html .= $tag; + if ( $inline_style_tag ) { + $this->print_html .= $inline_style_tag; + } + $this->print_html .= $cond_after; + } else { + echo $cond_before; + echo $tag; + $this->print_inline_style( $handle ); + echo $cond_after; + } + + return true; + } + + /** + * Adds extra CSS styles to a registered stylesheet. + * + * @since WP-3.3.0 + * + * @param string $handle The style's registered handle. + * @param string $code String containing the CSS styles to be added. + * @return bool True on success, false on failure. + */ + public function add_inline_style( $handle, $code ) { + if ( ! $code ) { + return false; + } + + $after = $this->get_data( $handle, 'after' ); + if ( ! $after ) { + $after = array(); + } + + $after[] = $code; + + return $this->add_data( $handle, 'after', $after ); + } + + /** + * Prints extra CSS styles of a registered stylesheet. + * + * @since WP-3.3.0 + * + * @param string $handle The style's registered handle. + * @param bool $echo Optional. Whether to echo the inline style instead of just returning it. + * Default true. + * @return string|bool False if no data exists, inline styles if `$echo` is true, true otherwise. + */ + public function print_inline_style( $handle, $echo = true ) { + $output = $this->get_data( $handle, 'after' ); + + if ( empty( $output ) ) { + return false; + } + + $output = implode( "\n", $output ); + + if ( ! $echo ) { + return $output; + } + + printf( + "\n", + esc_attr( $handle ), + $this->type_attr, + $output + ); + + return true; + } + + /** + * Determines style dependencies. + * + * @since WP-2.6.0 + * + * @see WP_Dependencies::all_deps() + * + * @param mixed $handles Item handle and argument (string) or item handles and arguments (array of strings). + * @param bool $recursion Internal flag that function is calling itself. + * @param int|false $group Group level: (int) level, (false) no groups. + * @return bool True on success, false on failure. + */ + public function all_deps( $handles, $recursion = false, $group = false ) { + $r = parent::all_deps( $handles, $recursion, $group ); + if ( ! $recursion ) { + /** + * Filters the array of enqueued styles before processing for output. + * + * @since WP-2.6.0 + * + * @param array $to_do The list of enqueued styles about to be processed. + */ + $this->to_do = apply_filters( 'print_styles_array', $this->to_do ); + } + return $r; + } + + /** + * Generates an enqueued style's fully-qualified URL. + * + * @since WP-2.6.0 + * + * @param string $src The source of the enqueued style. + * @param string $ver The version of the enqueued style. + * @param string $handle The style's registered handle. + * @return string Style's fully-qualified URL. + */ + public function _css_href( $src, $ver, $handle ) { + if ( ! is_bool( $src ) && ! preg_match( '|^(https?:)?//|', $src ) && ! ( $this->content_url && 0 === strpos( $src, $this->content_url ) ) ) { + $src = $this->base_url . $src; + } + + if ( ! empty( $ver ) ) { + $src = add_query_arg( 'ver', $ver, $src ); + } + + /** + * Filters an enqueued style's fully-qualified URL. + * + * @since WP-2.6.0 + * + * @param string $src The source URL of the enqueued style. + * @param string $handle The style's registered handle. + */ + $src = apply_filters( 'style_loader_src', $src, $handle ); + return esc_url( $src ); + } + + /** + * Whether a handle's source is in a default directory. + * + * @since WP-2.8.0 + * + * @param string $src The source of the enqueued style. + * @return bool True if found, false if not. + */ + public function in_default_dir( $src ) { + if ( ! $this->default_dirs ) { + return true; + } + + foreach ( (array) $this->default_dirs as $test ) { + if ( 0 === strpos( $src, $test ) ) { + return true; + } + } + return false; + } + + /** + * Processes items and dependencies for the footer group. + * + * HTML 5 allows styles in the body, grab late enqueued items and output them in the footer. + * + * @since WP-3.3.0 + * + * @see WP_Dependencies::do_items() + * + * @return array Handles of items that have been processed. + */ + public function do_footer_items() { + $this->do_items( false, 1 ); + return $this->done; + } -/** WP_Styles class */ -require_once ABSPATH . WPINC . '/class-wp-styles.php'; + /** + * Resets class properties. + * + * @since WP-3.3.0 + */ + public function reset() { + $this->do_concat = false; + $this->concat = ''; + $this->concat_version = ''; + $this->print_html = ''; + } +} diff --git a/wp-includes/classicpress/class-cp-customization.php b/wp-includes/classicpress/class-cp-customization.php deleted file mode 100644 index f7d138d..0000000 --- a/wp-includes/classicpress/class-cp-customization.php +++ /dev/null @@ -1,100 +0,0 @@ - 'https://forums.classicpress.net/c/support/', - ); - - $translated = $translated_text; - - foreach ( $wp_to_cp as $wp_src => $cp_dst ) { - $translated = str_replace( $wp_src, $cp_dst, $translated ); - } - - return $translated; - } - - /** - * Add ID column to Post / Page Tables - */ - public function add_id_init() { - $screen = get_current_screen(); - - if ( isset( $screen->post_type ) ) { - $type = $screen->post_type; - } elseif ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] === 'inline-save' && isset( $_REQUEST['post_type'] ) ) { - $type = $_REQUEST['post_type']; - } else { - return; - } - - if ( ! in_array( $type, array( 'post', 'page' ), true ) ) { - return; - } - - add_filter( "manage_edit-{$type}_columns", array( $this, 'add_id_column' ) ); - add_action( 'admin_head', array( $this, 'add_id_style' ) ); - add_action( "manage_{$type}_posts_custom_column", array( $this, 'add_id_data_cb' ), 10, 2 ); - add_filter( "manage_edit-{$type}_sortable_columns", array( $this, 'add_id_data_sortable' ) ); - } - - public function add_id_column( $cols ) { - $cols = array_reverse( $cols, true ); - $cb = array_pop( $cols ); - - $cols['id'] = 'ID'; - $cols['cb'] = 'cb'; - - return array_reverse( $cols, true ); - } - - public function add_id_style() { - echo ''; - } - - public function add_id_data_cb( $col, $post_id ) { - if ( 'id' === $col ) { - echo esc_html( $post_id ); - } - } - - public function add_id_data_sortable( $cols ) { - $cols['id'] = 'template'; - return $cols; - } -} - -$cp_customization = new CP_Customization(); diff --git a/wp-includes/classicpress/class-cp-debug-compat.php b/wp-includes/classicpress/class-cp-debug-compat.php deleted file mode 100644 index be41066..0000000 --- a/wp-includes/classicpress/class-cp-debug-compat.php +++ /dev/null @@ -1,241 +0,0 @@ -get_options(); - - $item_types = array( - 'plugins' => 'Plugin', - 'themes' => 'Theme', - 'parent_themes' => 'Parent Theme', - ); - - $fields = array(); - foreach ( $item_types as $key => $description ) { - foreach ( $options['data'][ $key ] as $item => $value ) { - $functions = wp_kses( $this->implode( $value ) . '.', array() ); - $fields[ $item ] = array( - 'label' => $description . ': ' . $item, - 'value' => $functions, - 'debug' => 'Plugin uses ' . $functions, - ); - } - } - - $args['dc-blocks'] = array( - 'label' => esc_html__( 'Block Compatibility' ), - 'description' => esc_html__( 'Plugins and themes using block functions.' ), - 'show_count' => true, - 'fields' => $fields, - ); - - return $args; - } - - public function add_site_status_tests( $tests ) { - $tests['direct']['dc_plugins_blocks'] = array( - 'label' => esc_html__( 'Plugins using block functions' ), - 'test' => array( $this, 'test_plugin' ), - ); - $tests['direct']['dc_themes_blocks'] = array( - 'label' => esc_html__( 'Themes using block functions' ), - 'test' => array( $this, 'test_theme' ), - ); - return $tests; - } - - public function test_plugin() { - $options = $this->get_options(); - $result = array( - 'label' => esc_html__( 'Plugins using block functions' ), - 'status' => 'good', - 'badge' => array( - 'label' => 'Compatibility', - 'color' => 'blue', - ), - 'description' => sprintf( - '

        %s

        ', - esc_html__( 'No plugins are using block functions.' ), - ), - 'actions' => '', - 'test' => 'dc_plugins_blocks', - ); - if ( $options['data']['plugins'] === array() ) { - return $result; - } - $action = esc_html__( 'Plugins on this list may have issues.' ); - $action .= ' ' . esc_html__( 'Learn more.' ) . ''; - $result = array( - 'label' => esc_html__( 'Plugins using block functions' ), - 'status' => 'recommended', - 'badge' => array( - 'label' => 'Compatibility', - 'color' => 'orange', - ), - 'description' => $this->list_items( $options, 'plugins' ), - 'actions' => $action, - 'test' => 'dc_plugins_blocks', - ); - return $result; - } - - public function test_theme() { - $options = $this->get_options(); - $result = array( - 'label' => esc_html__( 'Themes using block functions' ), - 'status' => 'good', - 'badge' => array( - 'label' => 'Compatibility', - 'color' => 'blue', - ), - 'description' => sprintf( - '

        %s

        ', - esc_html__( 'No themes are using block functions.' ), - ), - 'actions' => '', - 'test' => 'dc_themes_blocks', - ); - $themes = array_merge( $options['data']['themes'], $options['data']['parent_themes'] ); - if ( $themes === array() ) { - return $result; - } - $action = esc_html__( 'Themes on this list may have issues.' ); - $action .= ' ' . esc_html__( 'Learn more.' ) . ''; - $result = array( - 'label' => esc_html__( 'Themes using block functions' ), - 'status' => 'recommended', - 'badge' => array( - 'label' => 'Compatibility', - 'color' => 'orange', - ), - 'description' => $this->list_items( $options, 'themes' ) . $this->list_items( $options, 'parent_themes' ), - 'actions' => $action, - 'test' => 'dc_themes_blocks', - ); - return $result; - } - - private function list_items( $options, $type ) { - $response = ''; - foreach ( $options['data'][ $type ] as $who => $what ) { - $response .= sprintf( - wp_kses( - /* translators: %1$s is the plugin/theme name, %b$s is a comma separated list of functions */ - '

        %1$s is using: %2$s.

        ', - array( - 'b' => array(), - 'p' => array(), - ) - ), - esc_html( $who ), - wp_kses( - $this->implode( $what ), - array( - 'code' => array(), - ) - ) - ); - } - return $response; - } - - private function implode( $list ) { - $result = ''; - foreach ( $list as $element ) { - $result .= '' . $element . ', '; - } - return rtrim( $result, ', ' ); - } - - private function get_options() { - $default = array( - 'db_version' => '2', - 'data' => array( - 'themes' => array(), - 'parent_themes' => array(), - 'plugins' => array(), - ), - ); - $options = get_option( 'cp_dc_options', $default ); - return $options; - } - - private static function plugin_folder( $path ) { - return preg_replace( '~^' . preg_quote( WP_PLUGIN_DIR ) . preg_quote( DIRECTORY_SEPARATOR ) . '([^' . preg_quote( DIRECTORY_SEPARATOR ) . ']*).*~', '$1', $path ); - } - - - public function log( $trace ) { - $options = $this->get_options(); - $func = $trace[1]['function']; - - if ( 0 === strpos( $trace[1]['file'], realpath( get_stylesheet_directory() ) ) ) { - // Theme - if ( ! isset( $options['data']['themes'][ wp_get_theme()->get( 'Name' ) ] ) || ! in_array( $func, $options['data']['themes'][ wp_get_theme()->get( 'Name' ) ] ) ) { - $options['data']['themes'][ wp_get_theme()->get( 'Name' ) ][] = $func; - } - } elseif ( 0 === strpos( $trace[1]['file'], realpath( get_template_directory() ) ) ) { - // Child theme - if ( ! isset( $options['data']['parent_themes'][ wp_get_theme()->parent()->get( 'Name' ) ] ) || ! in_array( $func, $options['data']['parent_themes'][ wp_get_theme()->parent()->get( 'Name' ) ] ) ) { - $options['data']['parent_themes'][ wp_get_theme()->parent()->get( 'Name' ) ][] = $func; - } - } else { - require_once ABSPATH . '/wp-admin/includes/plugin.php'; - $files = array_column( $trace, 'file' ); - $files = array_map( - function ( $path ) { - return self::plugin_folder( $path ); - }, - $files - ); - $active_paths = wp_get_active_and_valid_plugins(); - $active = array_map( - function ( $path ) { - return self::plugin_folder( $path ); - }, - $active_paths - ); - $plugins = array_intersect( $files, $active ); - $plugin = array_pop( $plugins ); - $active_paths = array_filter( - $active_paths, - function ( $path ) use ( $plugin ) { - return str_starts_with( $path, WP_PLUGIN_DIR . '/' . $plugin ); - } - ); - $plugin_path = array_pop( $active_paths ); - $plugin_data = get_plugin_data( $plugin_path ); - $plugin_name = $plugin_data['Name']; - if ( ! isset( $options['data']['plugins'][ $plugin_name ] ) || ! in_array( $func, $options['data']['plugins'][ $plugin_name ] ) ) { - $options['data']['plugins'][ $plugin_name ][] = $func; - } - } - - update_option( 'cp_dc_options', $options ); - } - - public static function clean_options() { - delete_option( 'cp_dc_options' ); - } -} - -new CP_Debug_Compat(); diff --git a/wp-includes/classicpress/class-wp-block-template.php b/wp-includes/classicpress/class-wp-block-template.php deleted file mode 100644 index c17aa27..0000000 --- a/wp-includes/classicpress/class-wp-block-template.php +++ /dev/null @@ -1,45 +0,0 @@ -define_polyfills(); - - if ( 1 === self::$blocks_compatibility_level ) { - return; - } - - // Define hooks to be used to warn users. - add_action( 'after_plugin_row', array( $this, 'using_block_function_row' ), 10, 2 ); - add_action( 'upgrader_process_complete', array( $this, 'update_extensions_using_blocks' ), 10, 2 ); - add_action( 'delete_plugin', array( $this, 'delete_plugins_using_blocks' ), 10, 1 ); - add_action( 'admin_notices', array( $this, 'using_block_function_theme' ), 10, 0 ); - add_action( 'after_switch_theme', array( $this, 'delete_themes_using_blocks' ), 10, 0 ); - - // ClassicPress Site Health block compatibility debug. - require_once ABSPATH . WPINC . '/classicpress/class-cp-debug-compat.php'; - } - - public function purge_options( $old_value, $value ) { - if ( 2 === $value ) { - return; - } - delete_option( 'plugins_using_blocks' ); - delete_option( 'theme_using_blocks' ); - } - - /** - * Action hooked to after_plugin_row to display plugins that may not work properly. - * - * @param string $plugin_file - * @param array $plugin_data - * @return void - */ - public function using_block_function_row( $plugin_file, $plugin_data ) { - $plugins_using_blocks = get_option( 'plugins_using_blocks', array() ); - if ( ! array_key_exists( dirname( $plugin_file ), $plugins_using_blocks ) && ! array_key_exists( $plugin_file, $plugins_using_blocks ) ) { - return; - } - - $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); - $active = is_plugin_active( $plugin_file ) ? 'active' : ''; - $shadow = isset( $plugin_data['new_version'] ) ? 'style="box-shadow: none;"' : ''; - ?> - - > -
        -

        - - | - -

        -
        - - - - get( 'Name' ) ); - $message .= ' ' . __( 'Learn more' ) . ' |'; - $message .= ' ' . __( 'Report an issue ›' ) . ''; - } else { - // Translators: %1$s is the theme name, %1$s is the parent theme name. - $message = sprintf( esc_html__( '%1$s parent theme (%2$s) uses block-related functions and may have issues.' ), wp_get_theme()->get( 'Name' ), wp_get_theme()->parent()->get( 'Name' ) ); - $message .= ' ' . __( 'Learn more' ) . ' |'; - $message .= ' ' . __( 'Report an issue ›' ) . ''; - } - - ?> -
        -

        - -

        - comment_ID ) ? $comment->comment_ID : $comment_id; +function get_comment_author( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); if ( empty( $comment->comment_author ) ) { - $user = ! empty( $comment->user_id ) ? get_userdata( $comment->user_id ) : false; + $user = $comment->user_id ? get_userdata( $comment->user_id ) : false; if ( $user ) { $author = $user->display_name; } else { @@ -39,109 +38,109 @@ function get_comment_author( $comment_id = 0 ) { /** * Filters the returned comment author name. * - * @since 1.5.0 - * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$comment_ID` and `$comment` parameters were added. * * @param string $author The comment author's username. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. * @param WP_Comment $comment The comment object. */ - return apply_filters( 'get_comment_author', $author, $comment_id, $comment ); + return apply_filters( 'get_comment_author', $author, $comment->comment_ID, $comment ); } /** * Displays the author of the current comment. * - * @since 0.71 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-0.71 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author. * Default current comment. */ -function comment_author( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function comment_author( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); $author = get_comment_author( $comment ); /** * Filters the comment author's name for display. * - * @since 1.2.0 - * @since 4.1.0 The `$comment_id` parameter was added. + * @since WP-1.2.0 + * @since WP-4.1.0 The `$comment_ID` parameter was added. * * @param string $author The comment author's username. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. */ echo apply_filters( 'comment_author', $author, $comment->comment_ID ); } /** - * Retrieves the email of the author of the current comment. + * Retrieve the email of the author of the current comment. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's email. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's email. * Default current comment. * @return string The current comment author's email */ -function get_comment_author_email( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function get_comment_author_email( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); /** * Filters the comment author's returned email address. * - * @since 1.5.0 - * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$comment_ID` and `$comment` parameters were added. * * @param string $comment_author_email The comment author's email address. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_author_email', $comment->comment_author_email, $comment->comment_ID, $comment ); } /** - * Displays the email of the author of the current global $comment. + * Display the email of the author of the current global $comment. * * Care should be taken to protect the email address and assure that email - * harvesters do not capture your commenter's email address. Most assume that + * harvesters do not capture your commentors' email address. Most assume that * their email address will not appear in raw form on the site. Doing so will * enable anyone, including those that people don't want to get the email * address and use it for their own means good and bad. * - * @since 0.71 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-0.71 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's email. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's email. * Default current comment. */ -function comment_author_email( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function comment_author_email( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); $author_email = get_comment_author_email( $comment ); /** * Filters the comment author's email for display. * - * @since 1.2.0 - * @since 4.1.0 The `$comment_id` parameter was added. + * @since WP-1.2.0 + * @since WP-4.1.0 The `$comment_ID` parameter was added. * * @param string $author_email The comment author's email address. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. */ echo apply_filters( 'author_email', $author_email, $comment->comment_ID ); } /** - * Displays the HTML email link to the author of the current comment. + * Display the html email link to the author of the current comment. * * Care should be taken to protect the email address and assure that email - * harvesters do not capture your commenter's email address. Most assume that + * harvesters do not capture your commentors' email address. Most assume that * their email address will not appear in raw form on the site. Doing so will * enable anyone, including those that people don't want to get the email * address and use it for their own means good and bad. * - * @since 0.71 - * @since 4.6.0 Added the `$comment` parameter. + * @since WP-0.71 + * @since WP-4.6.0 Added the `$comment` parameter. * * @param string $linktext Optional. Text to display instead of the comment author's email address. * Default empty. @@ -157,16 +156,16 @@ function comment_author_email_link( $linktext = '', $before = '', $after = '', $ } /** - * Returns the HTML email link to the author of the current comment. + * Return the html email link to the author of the current comment. * * Care should be taken to protect the email address and assure that email - * harvesters do not capture your commenter's email address. Most assume that + * harvesters do not capture your commentors' email address. Most assume that * their email address will not appear in raw form on the site. Doing so will * enable anyone, including those that people don't want to get the email * address and use it for their own means good and bad. * - * @since 2.7.0 - * @since 4.6.0 Added the `$comment` parameter. + * @since WP-2.7.0 + * @since WP-4.6.0 Added the `$comment` parameter. * * @param string $linktext Optional. Text to display instead of the comment author's email address. * Default empty. @@ -185,8 +184,8 @@ function get_comment_author_email_link( $linktext = '', $before = '', $after = ' * Care should be taken to protect the email address and assure that email * harvesters do not capture your commenter's email address. * - * @since 1.2.0 - * @since 4.1.0 The `$comment` parameter was added. + * @since WP-1.2.0 + * @since WP-4.1.0 The `$comment` parameter was added. * * @param string $comment_author_email The comment author's email address. * @param WP_Comment $comment The comment object. @@ -205,140 +204,109 @@ function get_comment_author_email_link( $linktext = '', $before = '', $after = ' } /** - * Retrieves the HTML link to the URL of the author of the current comment. + * Retrieve the HTML link to the URL of the author of the current comment. * * Both get_comment_author_url() and get_comment_author() rely on get_comment(), - * which falls back to the global comment variable if the $comment_id argument is empty. + * which falls back to the global comment variable if the $comment_ID argument is empty. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's link. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's link. * Default current comment. * @return string The comment author name or HTML link for author's URL. */ -function get_comment_author_link( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); - $comment_id = ! empty( $comment->comment_ID ) ? $comment->comment_ID : (string) $comment_id; - $url = get_comment_author_url( $comment ); - $author = get_comment_author( $comment ); +function get_comment_author_link( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); + $url = get_comment_author_url( $comment ); + $author = get_comment_author( $comment ); if ( empty( $url ) || 'http://' === $url ) { $return = $author; } else { - $rel_parts = array( 'ugc' ); - if ( ! wp_is_internal_link( $url ) ) { - $rel_parts = array_merge( - $rel_parts, - array( 'external', 'nofollow' ) - ); - } - - /** - * Filters the rel attributes of the comment author's link. - * - * @since 6.2.0 - * - * @param string[] $rel_parts An array of strings representing the rel tags - * which will be joined into the anchor's rel attribute. - * @param WP_Comment $comment The comment object. - */ - $rel_parts = apply_filters( 'comment_author_link_rel', $rel_parts, $comment ); - - $rel = implode( ' ', $rel_parts ); - $rel = esc_attr( $rel ); - // Empty space before 'rel' is necessary for later sprintf(). - $rel = ! empty( $rel ) ? sprintf( ' rel="%s"', $rel ) : ''; - - $return = sprintf( - '%3$s', - $url, - $rel, - $author - ); + $return = "$author"; } /** * Filters the comment author's link for display. * - * @since 1.5.0 - * @since 4.1.0 The `$author` and `$comment_id` parameters were added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$author` and `$comment_ID` parameters were added. * * @param string $return The HTML-formatted comment author link. * Empty for an invalid URL. * @param string $author The comment author's username. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. */ - return apply_filters( 'get_comment_author_link', $return, $author, $comment_id ); + return apply_filters( 'get_comment_author_link', $return, $author, $comment->comment_ID ); } /** - * Displays the HTML link to the URL of the author of the current comment. + * Display the html link to the url of the author of the current comment. * - * @since 0.71 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-0.71 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's link. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's link. * Default current comment. */ -function comment_author_link( $comment_id = 0 ) { - echo get_comment_author_link( $comment_id ); +function comment_author_link( $comment_ID = 0 ) { + echo get_comment_author_link( $comment_ID ); } /** - * Retrieves the IP address of the author of the current comment. + * Retrieve the IP address of the author of the current comment. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's IP address. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's IP address. * Default current comment. - * @return string Comment author's IP address, or an empty string if it's not available. + * @return string Comment author's IP address. */ -function get_comment_author_IP( $comment_id = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid - $comment = get_comment( $comment_id ); +function get_comment_author_IP( $comment_ID = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid + $comment = get_comment( $comment_ID ); /** * Filters the comment author's returned IP address. * - * @since 1.5.0 - * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$comment_ID` and `$comment` parameters were added. * - * @param string $comment_author_ip The comment author's IP address, or an empty string if it's not available. - * @param string $comment_id The comment ID as a numeric string. + * @param string $comment_author_IP The comment author's IP address. + * @param int $comment_ID The comment ID. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_author_IP', $comment->comment_author_IP, $comment->comment_ID, $comment ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase } /** - * Displays the IP address of the author of the current comment. + * Display the IP address of the author of the current comment. * - * @since 0.71 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-0.71 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's IP address. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's IP address. * Default current comment. */ -function comment_author_IP( $comment_id = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid - echo esc_html( get_comment_author_IP( $comment_id ) ); +function comment_author_IP( $comment_ID = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid + echo esc_html( get_comment_author_IP( $comment_ID ) ); } /** - * Retrieves the URL of the author of the current comment, not linked. + * Retrieve the url of the author of the current comment. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's URL. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's URL. * Default current comment. - * @return string Comment author URL, if provided, an empty string otherwise. + * @return string Comment author URL. */ -function get_comment_author_url( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function get_comment_author_url( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); $url = ''; $id = 0; - if ( ! empty( $comment ) ) { $author_url = ( 'http://' === $comment->comment_author_url ) ? '' : $comment->comment_author_url; $url = esc_url( $author_url, array( 'http', 'https' ) ); @@ -348,43 +316,43 @@ function get_comment_author_url( $comment_id = 0 ) { /** * Filters the comment author's URL. * - * @since 1.5.0 - * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$comment_ID` and `$comment` parameters were added. * - * @param string $url The comment author's URL, or an empty string. - * @param string|int $comment_id The comment ID as a numeric string, or 0 if not found. - * @param WP_Comment|null $comment The comment object, or null if not found. + * @param string $url The comment author's URL. + * @param int $comment_ID The comment ID. + * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_author_url', $url, $id, $comment ); } /** - * Displays the URL of the author of the current comment, not linked. + * Display the url of the author of the current comment. * - * @since 0.71 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-0.71 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's URL. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's URL. * Default current comment. */ -function comment_author_url( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function comment_author_url( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); $author_url = get_comment_author_url( $comment ); /** * Filters the comment author's URL for display. * - * @since 1.2.0 - * @since 4.1.0 The `$comment_id` parameter was added. + * @since WP-1.2.0 + * @since WP-4.1.0 The `$comment_ID` parameter was added. * * @param string $author_url The comment author's URL. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. */ echo apply_filters( 'comment_url', $author_url, $comment->comment_ID ); } /** - * Retrieves the HTML link of the URL of the author of the current comment. + * Retrieves the HTML link of the url of the author of the current comment. * * $linktext parameter is only used if the URL does not exist for the comment * author. If the URL does exist then the URL will be used and the $linktext @@ -393,8 +361,8 @@ function comment_author_url( $comment_id = 0 ) { * Encapsulate the HTML link between the $before and $after. So it will appear * in the order of $before, link, and finally $after. * - * @since 1.5.0 - * @since 4.6.0 Added the `$comment` parameter. + * @since WP-1.5.0 + * @since WP-4.6.0 Added the `$comment` parameter. * * @param string $linktext Optional. The text to display instead of the comment * author's email address. Default empty. @@ -421,7 +389,7 @@ function get_comment_author_url_link( $linktext = '', $before = '', $after = '', /** * Filters the comment author's returned URL link. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $return The HTML-formatted comment author URL link. */ @@ -429,10 +397,10 @@ function get_comment_author_url_link( $linktext = '', $before = '', $after = '', } /** - * Displays the HTML link of the URL of the author of the current comment. + * Displays the HTML link of the url of the author of the current comment. * - * @since 0.71 - * @since 4.6.0 Added the `$comment` parameter. + * @since WP-0.71 + * @since WP-4.6.0 Added the `$comment` parameter. * * @param string $linktext Optional. Text to display instead of the comment author's * email address. Default empty. @@ -450,45 +418,43 @@ function comment_author_url_link( $linktext = '', $before = '', $after = '', $co /** * Generates semantic classes for each comment element. * - * @since 2.7.0 - * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. + * @since WP-2.7.0 + * @since WP-4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. * - * @param string|string[] $css_class Optional. One or more classes to add to the class list. - * Default empty. - * @param int|WP_Comment $comment Optional. Comment ID or WP_Comment object. Default current comment. - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. - * @param bool $display Optional. Whether to print or return the output. - * Default true. - * @return void|string Void if `$display` argument is true, comment classes if `$display` is false. + * @param string|array $class Optional. One or more classes to add to the class list. + * Default empty. + * @param int|WP_Comment $comment Comment ID or WP_Comment object. Default current comment. + * @param int|WP_Post $post_id Post ID or WP_Post object. Default current post. + * @param bool $echo Optional. Whether to cho or return the output. + * Default true. + * @return string If `$echo` is false, the class will be returned. Void otherwise. */ -function comment_class( $css_class = '', $comment = null, $post = null, $display = true ) { - // Separates classes with a single space, collates classes for comment DIV. - $css_class = 'class="' . implode( ' ', get_comment_class( $css_class, $comment, $post ) ) . '"'; - - if ( $display ) { - echo $css_class; +function comment_class( $class = '', $comment = null, $post_id = null, $echo = true ) { + // Separates classes with a single space, collates classes for comment DIV + $class = 'class="' . join( ' ', get_comment_class( $class, $comment, $post_id ) ) . '"'; + if ( $echo ) { + echo $class; } else { - return $css_class; + return $class; } } /** * Returns the classes for the comment div as an array. * - * @since 2.7.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-2.7.0 + * @since WP-4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @global int $comment_alt * @global int $comment_depth * @global int $comment_thread_alt * - * @param string|string[] $css_class Optional. One or more classes to add to the class list. - * Default empty. - * @param int|WP_Comment $comment_id Optional. Comment ID or WP_Comment object. Default current comment. - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. - * @return string[] An array of classes. + * @param string|array $class Optional. One or more classes to add to the class list. Default empty. + * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. Default current comment. + * @param int|WP_Post $post_id Post ID or WP_Post object. Default current post. + * @return array An array of classes. */ -function get_comment_class( $css_class = '', $comment_id = null, $post = null ) { +function get_comment_class( $class = '', $comment_id = null, $post_id = null ) { global $comment_alt, $comment_depth, $comment_thread_alt; $classes = array(); @@ -498,7 +464,7 @@ function get_comment_class( $css_class = '', $comment_id = null, $post = null ) return $classes; } - // Get the comment type (comment, trackback). + // Get the comment type (comment, trackback), $classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type; // Add classes for comment authors that are registered users. @@ -506,10 +472,10 @@ function get_comment_class( $css_class = '', $comment_id = null, $post = null ) if ( $user ) { $classes[] = 'byuser'; $classes[] = 'comment-author-' . sanitize_html_class( $user->user_nicename, $comment->user_id ); - // For comment authors who are the author of the post. - $_post = get_post( $post ); - if ( $_post ) { - if ( $comment->user_id === $_post->post_author ) { + // For comment authors who are the author of the post + $post = get_post( $post_id ); + if ( $post ) { + if ( $comment->user_id === $post->post_author ) { $classes[] = 'bypostauthor'; } } @@ -534,7 +500,7 @@ function get_comment_class( $css_class = '', $comment_id = null, $post = null ) $comment_alt++; - // Alt for top-level comments. + // Alt for top-level comments if ( 1 == $comment_depth ) { if ( $comment_thread_alt % 2 ) { $classes[] = 'thread-odd'; @@ -547,11 +513,11 @@ function get_comment_class( $css_class = '', $comment_id = null, $post = null ) $classes[] = "depth-$comment_depth"; - if ( ! empty( $css_class ) ) { - if ( ! is_array( $css_class ) ) { - $css_class = preg_split( '#\s+#', $css_class ); + if ( ! empty( $class ) ) { + if ( ! is_array( $class ) ) { + $class = preg_split( '#\s+#', $class ); } - $classes = array_merge( $classes, $css_class ); + $classes = array_merge( $classes, $class ); } $classes = array_map( 'esc_attr', $classes ); @@ -559,178 +525,181 @@ function get_comment_class( $css_class = '', $comment_id = null, $post = null ) /** * Filters the returned CSS classes for the current comment. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param string[] $classes An array of comment classes. - * @param string[] $css_class An array of additional classes added to the list. - * @param string $comment_id The comment ID as a numeric string. + * @param array $classes An array of comment classes. + * @param string $class A comma-separated list of additional classes added to the list. + * @param int $comment_id The comment id. * @param WP_Comment $comment The comment object. - * @param int|WP_Post $post The post ID or WP_Post object. + * @param int|WP_Post $post_id The post ID or WP_Post object. */ - return apply_filters( 'comment_class', $classes, $css_class, $comment->comment_ID, $comment, $post ); + return apply_filters( 'comment_class', $classes, $class, $comment->comment_ID, $comment, $post_id ); } /** - * Retrieves the comment date of the current comment. + * Retrieve the comment date of the current comment. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param string $format Optional. PHP date format. Defaults to the 'date_format' option. - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the date. - * Default current comment. + * @param string $format Optional. The format of the date. Default user's setting. + * @param int|WP_Comment $comment_ID WP_Comment or ID of the comment for which to get the date. + * Default current comment. * @return string The comment's date. */ -function get_comment_date( $format = '', $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function get_comment_date( $format = '', $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); - $_format = ! empty( $format ) ? $format : get_option( 'date_format' ); - - $date = mysql2date( $_format, $comment->comment_date ); + if ( '' === $format ) { + $date = mysql2date( get_option( 'date_format' ), $comment->comment_date ); + } else { + $date = mysql2date( $format, $comment->comment_date ); + } /** * Filters the returned comment date. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string|int $date Formatted date string or Unix timestamp. - * @param string $format PHP date format. + * @param string $format The format of the date. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_date', $date, $format, $comment ); } /** - * Displays the comment date of the current comment. + * Display the comment date of the current comment. * - * @since 0.71 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-0.71 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param string $format Optional. PHP date format. Defaults to the 'date_format' option. - * @param int|WP_Comment $comment_id WP_Comment or ID of the comment for which to print the date. + * @param string $format Optional. The format of the date. Default user's settings. + * @param int|WP_Comment $comment_ID WP_Comment or ID of the comment for which to print the date. * Default current comment. */ -function comment_date( $format = '', $comment_id = 0 ) { - echo get_comment_date( $format, $comment_id ); +function comment_date( $format = '', $comment_ID = 0 ) { + echo get_comment_date( $format, $comment_ID ); } /** - * Retrieves the excerpt of the given comment. + * Retrieve the excerpt of the current comment. * - * Returns a maximum of 20 words with an ellipsis appended if necessary. + * Will cut each word and only output the first 20 words with '…' at the end. + * If the word count is less than 20, then no truncating is done and no '…' + * will appear. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the excerpt. - * Default current comment. - * @return string The possibly truncated comment excerpt. + * @param int|WP_Comment $comment_ID WP_Comment or ID of the comment for which to get the excerpt. + * Default current comment. + * @return string The maybe truncated comment with 20 words or less. */ -function get_comment_excerpt( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); - - if ( ! post_password_required( $comment->comment_post_ID ) ) { - $comment_text = strip_tags( str_replace( array( "\n", "\r" ), ' ', $comment->comment_content ) ); - } else { - $comment_text = __( 'Password protected' ); - } - - /* translators: Maximum number of words used in a comment excerpt. */ - $comment_excerpt_length = (int) _x( '20', 'comment_excerpt_length' ); +function get_comment_excerpt( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); + $comment_text = strip_tags( str_replace( array( "\n", "\r" ), ' ', $comment->comment_content ) ); + $words = explode( ' ', $comment_text ); /** - * Filters the maximum number of words used in the comment excerpt. + * Filters the amount of words used in the comment excerpt. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $comment_excerpt_length The amount of words you want to display in the comment excerpt. */ - $comment_excerpt_length = apply_filters( 'comment_excerpt_length', $comment_excerpt_length ); + $comment_excerpt_length = apply_filters( 'comment_excerpt_length', 20 ); - $excerpt = wp_trim_words( $comment_text, $comment_excerpt_length, '…' ); + $use_ellipsis = count( $words ) > $comment_excerpt_length; + if ( $use_ellipsis ) { + $words = array_slice( $words, 0, $comment_excerpt_length ); + } + $excerpt = trim( join( ' ', $words ) ); + if ( $use_ellipsis ) { + $excerpt .= '…'; + } /** * Filters the retrieved comment excerpt. * - * @since 1.5.0 - * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$comment_ID` and `$comment` parameters were added. * * @param string $excerpt The comment excerpt text. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_excerpt', $excerpt, $comment->comment_ID, $comment ); } /** - * Displays the excerpt of the current comment. + * Display the excerpt of the current comment. * - * @since 1.2.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.2.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to print the excerpt. - * Default current comment. + * @param int|WP_Comment $comment_ID WP_Comment or ID of the comment for which to print the excerpt. + * Default current comment. */ -function comment_excerpt( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function comment_excerpt( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); $comment_excerpt = get_comment_excerpt( $comment ); /** * Filters the comment excerpt for display. * - * @since 1.2.0 - * @since 4.1.0 The `$comment_id` parameter was added. + * @since WP-1.2.0 + * @since WP-4.1.0 The `$comment_ID` parameter was added. * * @param string $comment_excerpt The comment excerpt text. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. */ echo apply_filters( 'comment_excerpt', $comment_excerpt, $comment->comment_ID ); } /** - * Retrieves the comment ID of the current comment. + * Retrieve the comment id of the current comment. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @return string The comment ID as a numeric string. + * @return int The comment ID. */ function get_comment_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid - $comment = get_comment(); - $comment_id = ! empty( $comment->comment_ID ) ? $comment->comment_ID : '0'; + $comment = get_comment(); /** * Filters the returned comment ID. * - * @since 1.5.0 - * @since 4.1.0 The `$comment` parameter was added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$comment_ID` parameter was added. * - * @param string $comment_id The current comment ID as a numeric string. + * @param int $comment_ID The current comment ID. * @param WP_Comment $comment The comment object. */ - return apply_filters( 'get_comment_ID', $comment_id, $comment ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase + return apply_filters( 'get_comment_ID', $comment->comment_ID, $comment ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase } /** - * Displays the comment ID of the current comment. + * Display the comment id of the current comment. * - * @since 0.71 + * @since WP-0.71 */ function comment_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid echo get_comment_ID(); } /** - * Retrieves the link to a given comment. + * Retrieve the link to a given comment. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. Added `$cpage` argument. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. Added `$cpage` argument. * * @see get_page_of_comment() * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. + * @global WP_Rewrite $wp_rewrite * @global bool $in_comment_loop * - * @param WP_Comment|int|null $comment Optional. Comment to retrieve. Default current comment. + * @param WP_Comment|int|null $comment Comment to retrieve. Default current comment. * @param array $args { * An array of optional arguments to override the defaults. * @@ -821,8 +790,8 @@ function get_comment_link( $comment = null, $args = array() ) { /** * Filters the returned single comment permalink. * - * @since 2.8.0 - * @since 4.4.0 Added the `$cpage` parameter. + * @since WP-2.8.0 + * @since WP-4.4.0 Added the `$cpage` parameter. * * @see get_page_of_comment() * @@ -837,40 +806,40 @@ function get_comment_link( $comment = null, $args = array() ) { /** * Retrieves the link to the current post comments. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post. + * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global $post. * @return string The link to the comments. */ -function get_comments_link( $post = 0 ) { - $hash = get_comments_number( $post ) ? '#comments' : '#respond'; - $comments_link = get_permalink( $post ) . $hash; +function get_comments_link( $post_id = 0 ) { + $hash = get_comments_number( $post_id ) ? '#comments' : '#respond'; + $comments_link = get_permalink( $post_id ) . $hash; /** * Filters the returned post comments permalink. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param string $comments_link Post comments permalink with '#comments' appended. - * @param int|WP_Post $post Post ID or WP_Post object. + * @param int|WP_Post $post_id Post ID or WP_Post object. */ - return apply_filters( 'get_comments_link', $comments_link, $post ); + return apply_filters( 'get_comments_link', $comments_link, $post_id ); } /** - * Displays the link to the current post comments. + * Display the link to the current post comments. * - * @since 0.71 + * @since WP-0.71 * * @param string $deprecated Not Used. * @param string $deprecated_2 Not Used. */ function comments_link( $deprecated = '', $deprecated_2 = '' ) { if ( ! empty( $deprecated ) ) { - _deprecated_argument( __FUNCTION__, '0.72' ); + _deprecated_argument( __FUNCTION__, 'WP-0.72' ); } if ( ! empty( $deprecated_2 ) ) { - _deprecated_argument( __FUNCTION__, '1.3.0' ); + _deprecated_argument( __FUNCTION__, 'WP-1.3.0' ); } echo esc_url( get_comments_link() ); } @@ -878,22 +847,26 @@ function comments_link( $deprecated = '', $deprecated_2 = '' ) { /** * Retrieves the amount of comments a post has. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is the global `$post`. + * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is the global `$post`. * @return string|int If the post exists, a numeric string representing the number of comments * the post has, otherwise 0. */ -function get_comments_number( $post = 0 ) { - $post = get_post( $post ); +function get_comments_number( $post_id = 0 ) { + $post = get_post( $post_id ); - $count = $post ? $post->comment_count : 0; - $post_id = $post ? $post->ID : 0; + if ( ! $post ) { + $count = 0; + } else { + $count = $post->comment_count; + $post_id = $post->ID; + } /** * Filters the returned comment count for a post. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string|int $count A string representing the number of comments a post has, otherwise 0. * @param int $post_id Post ID. @@ -902,53 +875,51 @@ function get_comments_number( $post = 0 ) { } /** - * Displays the language string for the number of comments the current post has. + * Display the language string for the number of comments the current post has. * - * @since 0.71 - * @since 5.4.0 The `$deprecated` parameter was changed to `$post`. + * @since WP-0.71 * - * @param string|false $zero Optional. Text for no comments. Default false. - * @param string|false $one Optional. Text for one comment. Default false. - * @param string|false $more Optional. Text for more than one comment. Default false. - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is the global `$post`. + * @param string $zero Optional. Text for no comments. Default false. + * @param string $one Optional. Text for one comment. Default false. + * @param string $more Optional. Text for more than one comment. Default false. + * @param string $deprecated Not used. */ -function comments_number( $zero = false, $one = false, $more = false, $post = 0 ) { - echo get_comments_number_text( $zero, $one, $more, $post ); +function comments_number( $zero = false, $one = false, $more = false, $deprecated = '' ) { + if ( ! empty( $deprecated ) ) { + _deprecated_argument( __FUNCTION__, 'WP-1.3.0' ); + } + echo get_comments_number_text( $zero, $one, $more ); } /** - * Displays the language string for the number of comments the current post has. + * Display the language string for the number of comments the current post has. * - * @since 4.0.0 - * @since 5.4.0 Added the `$post` parameter to allow using the function outside of the loop. + * @since WP-4.0.0 * - * @param string $zero Optional. Text for no comments. Default false. - * @param string $one Optional. Text for one comment. Default false. - * @param string $more Optional. Text for more than one comment. Default false. - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is the global `$post`. - * @return string Language string for the number of comments a post has. + * @param string $zero Optional. Text for no comments. Default false. + * @param string $one Optional. Text for one comment. Default false. + * @param string $more Optional. Text for more than one comment. Default false. */ -function get_comments_number_text( $zero = false, $one = false, $more = false, $post = 0 ) { - $number = get_comments_number( $post ); +function get_comments_number_text( $zero = false, $one = false, $more = false ) { + $number = get_comments_number(); if ( $number > 1 ) { if ( false === $more ) { - /* translators: %s: Number of comments. */ + /* translators: %s: number of comments */ $output = sprintf( _n( '%s Comment', '%s Comments', $number ), number_format_i18n( $number ) ); } else { // % Comments - /* - * translators: If comment number in your language requires declension, + /* translators: If comment number in your language requires declension, * translate this to 'on'. Do not translate into your own language. */ if ( 'on' === _x( 'off', 'Comment number declension: on or off' ) ) { $text = preg_replace( '#.+?#', '', $more ); - $text = preg_replace( '/&.+?;/', '', $text ); // Remove HTML entities. + $text = preg_replace( '/&.+?;/', '', $text ); // Kill entities $text = trim( strip_tags( $text ), '% ' ); - // Replace '% Comments' with a proper plural form. + // Replace '% Comments' with a proper plural form if ( $text && ! preg_match( '/[0-9]+/', $text ) && false !== strpos( $more, '%' ) ) { - /* translators: %s: Number of comments. */ + /* translators: %s: number of comments */ $new_text = _n( '%s Comment', '%s Comments', $number ); $new_text = trim( sprintf( $new_text, '' ) ); @@ -963,13 +934,13 @@ function get_comments_number_text( $zero = false, $one = false, $more = false, $ } } elseif ( 0 == $number ) { $output = ( false === $zero ) ? __( 'No Comments' ) : $zero; - } else { // Must be one. + } else { // must be one $output = ( false === $one ) ? __( '1 Comment' ) : $one; } /** * Filters the comments count for display. * - * @since 1.5.0 + * @since WP-1.5.0 * * @see _n() * @@ -981,42 +952,25 @@ function get_comments_number_text( $zero = false, $one = false, $more = false, $ } /** - * Retrieves the text of the current comment. + * Retrieve the text of the current comment. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. - * @since 5.4.0 Added 'In reply to %s.' prefix to child comments in comments feed. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * * @see Walker_Comment::comment() * - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the text. - * Default current comment. - * @param array $args Optional. An array of arguments. Default empty array. + * @param int|WP_Comment $comment_ID WP_Comment or ID of the comment for which to get the text. + * Default current comment. + * @param array $args Optional. An array of arguments. Default empty. * @return string The comment content. */ -function get_comment_text( $comment_id = 0, $args = array() ) { - $comment = get_comment( $comment_id ); - - $comment_content = $comment->comment_content; - - if ( is_comment_feed() && $comment->comment_parent ) { - $parent = get_comment( $comment->comment_parent ); - if ( $parent ) { - $parent_link = esc_url( get_comment_link( $parent ) ); - $name = get_comment_author( $parent ); - - $comment_content = sprintf( - /* translators: %s: Comment link. */ - ent2ncr( __( 'In reply to %s.' ) ), - '' . $name . '' - ) . "\n\n" . $comment_content; - } - } +function get_comment_text( $comment_ID = 0, $args = array() ) { + $comment = get_comment( $comment_ID ); /** * Filters the text of a comment. * - * @since 1.5.0 + * @since WP-1.5.0 * * @see Walker_Comment::comment() * @@ -1024,73 +978,68 @@ function get_comment_text( $comment_id = 0, $args = array() ) { * @param WP_Comment $comment The comment object. * @param array $args An array of arguments. */ - return apply_filters( 'get_comment_text', $comment_content, $comment, $args ); + return apply_filters( 'get_comment_text', $comment->comment_content, $comment, $args ); } /** - * Displays the text of the current comment. + * Display the text of the current comment. * - * @since 0.71 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-0.71 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * * @see Walker_Comment::comment() * - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to print the text. - * Default current comment. - * @param array $args Optional. An array of arguments. Default empty array. + * @param int|WP_Comment $comment_ID WP_Comment or ID of the comment for which to print the text. + * Default current comment. + * @param array $args Optional. An array of arguments. Default empty array. Default empty. */ -function comment_text( $comment_id = 0, $args = array() ) { - $comment = get_comment( $comment_id ); +function comment_text( $comment_ID = 0, $args = array() ) { + $comment = get_comment( $comment_ID ); $comment_text = get_comment_text( $comment, $args ); /** * Filters the text of a comment to be displayed. * - * @since 1.2.0 + * @since WP-1.2.0 * * @see Walker_Comment::comment() * * @param string $comment_text Text of the current comment. - * @param WP_Comment|null $comment The comment object. Null if not found. + * @param WP_Comment|null $comment The comment object. * @param array $args An array of arguments. */ echo apply_filters( 'comment_text', $comment_text, $comment, $args ); } /** - * Retrieves the comment time of the current comment. + * Retrieve the comment time of the current comment. * - * @since 1.5.0 - * @since 6.2.0 Added the `$comment_id` parameter. + * @since WP-1.5.0 * - * @param string $format Optional. PHP date format. Defaults to the 'time_format' option. - * @param bool $gmt Optional. Whether to use the GMT date. Default false. - * @param bool $translate Optional. Whether to translate the time (for use in feeds). - * Default true. - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the time. - * Default current comment. + * @param string $format Optional. The format of the time. Default user's settings. + * @param bool $gmt Optional. Whether to use the GMT date. Default false. + * @param bool $translate Optional. Whether to translate the time (for use in feeds). + * Default true. * @return string The formatted time. */ -function get_comment_time( $format = '', $gmt = false, $translate = true, $comment_id = 0 ) { - $comment = get_comment( $comment_id ); - - if ( null === $comment ) { - return ''; - } +function get_comment_time( $format = '', $gmt = false, $translate = true ) { + $comment = get_comment(); $comment_date = $gmt ? $comment->comment_date_gmt : $comment->comment_date; - $_format = ! empty( $format ) ? $format : get_option( 'time_format' ); - - $date = mysql2date( $_format, $comment_date, $translate ); + if ( '' === $format ) { + $date = mysql2date( get_option( 'time_format' ), $comment_date, $translate ); + } else { + $date = mysql2date( $format, $comment_date, $translate ); + } /** * Filters the returned comment time. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string|int $date The comment time, formatted as a date string or Unix timestamp. - * @param string $format PHP date format. + * @param string $format Date format. * @param bool $gmt Whether the GMT date is in use. * @param bool $translate Whether the time is translated. * @param WP_Comment $comment The comment object. @@ -1099,31 +1048,28 @@ function get_comment_time( $format = '', $gmt = false, $translate = true, $comme } /** - * Displays the comment time of the current comment. + * Display the comment time of the current comment. * - * @since 0.71 - * @since 6.2.0 Added the `$comment_id` parameter. + * @since WP-0.71 * - * @param string $format Optional. PHP time format. Defaults to the 'time_format' option. - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to print the time. - * Default current comment. + * @param string $format Optional. The format of the time. Default user's settings. */ -function comment_time( $format = '', $comment_id = 0 ) { - echo get_comment_time( $format, $comment_id ); +function comment_time( $format = '' ) { + echo get_comment_time( $format ); } /** - * Retrieves the comment type of the current comment. + * Retrieve the comment type of the current comment. * - * @since 1.5.0 - * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. + * @since WP-1.5.0 + * @since WP-4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object. * - * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the type. + * @param int|WP_Comment $comment_ID Optional. WP_Comment or ID of the comment for which to get the type. * Default current comment. * @return string The comment type. */ -function get_comment_type( $comment_id = 0 ) { - $comment = get_comment( $comment_id ); +function get_comment_type( $comment_ID = 0 ) { + $comment = get_comment( $comment_ID ); if ( '' === $comment->comment_type ) { $comment->comment_type = 'comment'; @@ -1132,24 +1078,24 @@ function get_comment_type( $comment_id = 0 ) { /** * Filters the returned comment type. * - * @since 1.5.0 - * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. + * @since WP-1.5.0 + * @since WP-4.1.0 The `$comment_ID` and `$comment` parameters were added. * * @param string $comment_type The type of comment, such as 'comment', 'pingback', or 'trackback'. - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_type', $comment->comment_type, $comment->comment_ID, $comment ); } /** - * Displays the comment type of the current comment. + * Display the comment type of the current comment. * - * @since 0.71 + * @since WP-0.71 * - * @param string|false $commenttxt Optional. String to display for comment type. Default false. - * @param string|false $trackbacktxt Optional. String to display for trackback type. Default false. - * @param string|false $pingbacktxt Optional. String to display for pingback type. Default false. + * @param string $commenttxt Optional. String to display for comment type. Default false. + * @param string $trackbacktxt Optional. String to display for trackback type. Default false. + * @param string $pingbacktxt Optional. String to display for pingback type. Default false. */ function comment_type( $commenttxt = false, $trackbacktxt = false, $pingbacktxt = false ) { if ( false === $commenttxt ) { @@ -1175,111 +1121,37 @@ function comment_type( $commenttxt = false, $trackbacktxt = false, $pingbacktxt } /** - * Outputs comment author data - * - * @since CP-2.0.0 - * - * @param object $comment Current comment information. - * @param array $args An array of arguments. - * @param bool $show_pending_links Whether to show author link on pending comment. - */ -function display_comment_author_data( $comment, $args, $show_pending_links ) { - if ( 0 != $args['avatar_size'] ) { - echo get_avatar( $comment, $args['avatar_size'] ); - } - - $comment_author = get_comment_author_link( $comment ); - - if ( '0' == $comment->comment_approved && ! $show_pending_links ) { - $comment_author = get_comment_author( $comment ); - } - - if ( current_theme_supports( 'html5' ) ) { - printf( - /* translators: %s: Comment author link. */ - __( '%s says:' ), - sprintf( '%s', $comment_author ) - ); - } else { - printf( - /* translators: %s: Comment author link. */ - __( '%s says:' ), - sprintf( '%s', $comment_author ) - ); - } -} -add_action( 'comment_author_data', 'display_comment_author_data', 10, 3 ); - -/** - * Outputs comment metadata - * - * @param object $comment Current comment information. - * @param array $args An array of arguments. - */ -function display_comment_metadata( $comment, $args ) { - if ( current_theme_supports( 'html5' ) ) { - printf( - '', - esc_url( get_comment_link( $comment, $args ) ), - get_comment_time( 'c' ), - sprintf( - /* translators: 1: Comment date, 2: Comment time. */ - __( '%1$s at %2$s' ), - get_comment_date( '', $comment ), - get_comment_time() - ) - ); - - edit_comment_link( __( 'Edit' ), ' ', '' ); - } else { - printf( - '%s', - esc_url( get_comment_link( $comment, $args ) ), - sprintf( - /* translators: 1: Comment date, 2: Comment time. */ - __( '%1$s at %2$s' ), - get_comment_date( '', $comment ), - get_comment_time() - ) - ); - - edit_comment_link( __( '(Edit)' ), '   ', '' ); - } -} -add_action( 'comment_metadata', 'display_comment_metadata', 10, 2 ); - -/** - * Retrieves the current post's trackback URL. + * Retrieve The current post's trackback URL. * * There is a check to see if permalink's have been enabled and if so, will * retrieve the pretty path. If permalinks weren't enabled, the ID of the * current post is used and appended to the correct page to go to. * - * @since 1.5.0 + * @since WP-1.5.0 * * @return string The trackback URL after being filtered. */ function get_trackback_url() { if ( get_option( 'permalink_structure' ) ) { - $trackback_url = trailingslashit( get_permalink() ) . user_trailingslashit( 'trackback', 'single_trackback' ); + $tb_url = trailingslashit( get_permalink() ) . user_trailingslashit( 'trackback', 'single_trackback' ); } else { - $trackback_url = get_option( 'siteurl' ) . '/wp-trackback.php?p=' . get_the_ID(); + $tb_url = get_option( 'siteurl' ) . '/wp-trackback.php?p=' . get_the_ID(); } /** * Filters the returned trackback URL. * - * @since 2.2.0 + * @since WP-2.2.0 * - * @param string $trackback_url The trackback URL. + * @param string $tb_url The trackback URL. */ - return apply_filters( 'trackback_url', $trackback_url ); + return apply_filters( 'trackback_url', $tb_url ); } /** - * Displays the current post's trackback URL. + * Display the current post's trackback URL. * - * @since 0.71 + * @since WP-0.71 * * @param bool $deprecated_echo Not used. * @return void|string Should only be used to echo the trackback URL, use get_trackback_url() @@ -1289,9 +1161,9 @@ function trackback_url( $deprecated_echo = true ) { if ( true !== $deprecated_echo ) { _deprecated_argument( __FUNCTION__, - '2.5.0', + 'WP-2.5.0', + /* translators: %s: get_trackback_url() */ sprintf( - /* translators: %s: get_trackback_url() */ __( 'Use %s instead if you do not want the value echoed.' ), 'get_trackback_url()' ) @@ -1306,17 +1178,17 @@ function trackback_url( $deprecated_echo = true ) { } /** - * Generates and displays the RDF for the trackback information of current post. + * Generate and display the RDF for the trackback information of current post. * - * Deprecated in 3.0.0, and restored in 3.0.1. + * Deprecated in WP-3.0.0, and restored in WP-3.0.1. * - * @since 0.71 + * @since WP-0.71 * - * @param int|string $deprecated Not used (Was $timezone = 0). + * @param int $deprecated Not used (Was $timezone = 0). */ function trackback_rdf( $deprecated = '' ) { if ( ! empty( $deprecated ) ) { - _deprecated_argument( __FUNCTION__, '2.5.0' ); + _deprecated_argument( __FUNCTION__, 'WP-2.5.0' ); } if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && false !== stripos( $_SERVER['HTTP_USER_AGENT'], 'W3C_Validator' ) ) { @@ -1338,27 +1210,24 @@ function trackback_rdf( $deprecated = '' ) { } /** - * Determines whether the current post is open for comments. - * - * For more information on this and similar theme functions, check out - * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ - * Conditional Tags} article in the Theme Developer Handbook. + * Whether the current post is open for comments. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. + * @param int|WP_Post $post_id Post ID or WP_Post object. Default current post. * @return bool True if the comments are open. */ -function comments_open( $post = null ) { - $_post = get_post( $post ); +function comments_open( $post_id = null ) { + + $_post = get_post( $post_id ); $post_id = $_post ? $_post->ID : 0; - $open = ( $_post && ( 'open' === $_post->comment_status ) ); + $open = ( 'open' === $_post->comment_status ); /** * Filters whether the current post is open for comments. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param bool $open Whether the current post is open for comments. * @param int $post_id The post ID. @@ -1367,27 +1236,24 @@ function comments_open( $post = null ) { } /** - * Determines whether the current post is open for pings. - * - * For more information on this and similar theme functions, check out - * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ - * Conditional Tags} article in the Theme Developer Handbook. + * Whether the current post is open for pings. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. + * @param int|WP_Post $post_id Post ID or WP_Post object. Default current post. * @return bool True if pings are accepted */ -function pings_open( $post = null ) { - $_post = get_post( $post ); +function pings_open( $post_id = null ) { + + $_post = get_post( $post_id ); $post_id = $_post ? $_post->ID : 0; - $open = ( $_post && ( 'open' === $_post->ping_status ) ); + $open = ( 'open' === $_post->ping_status ); /** * Filters whether the current post is open for pings. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param bool $open Whether the current post is open for pings. * @param int $post_id The post ID. @@ -1396,18 +1262,18 @@ function pings_open( $post = null ) { } /** - * Displays form token for unfiltered comments. + * Display form token for unfiltered comments. * * Will only display nonce token if the current user has permissions for * unfiltered html. Won't display the token for other users. * - * The function was backported to 2.0.10 and was added to versions 2.1.3 and - * above. Does not exist in versions prior to 2.0.10 in the 2.0 branch and in - * the 2.1 branch, prior to 2.1.3. Technically added in 2.2.0. + * The function was backported to WP-2.0.10 and was added to versions WP-2.1.3 and + * above. Does not exist in versions prior to WP-2.0.10 in the WP-2.0 branch and in + * the WP-2.1 branch, prior to WP-2.1.3. Technically added in WP-2.2.0. * - * Backported to 2.0.10. + * Backported to WP-2.0.10. * - * @since 2.1.3 + * @since WP-2.1.3 */ function wp_comment_form_unfiltered_html_nonce() { $post = get_post(); @@ -1420,30 +1286,30 @@ function wp_comment_form_unfiltered_html_nonce() { } /** - * Loads the comment template specified in $file. + * Load the comment template specified in $file. * * Will not display the comments template if not on single post or page, or if * the post does not have comments. * - * Uses the WordPress database object to query for the comments. The comments + * Uses the ClassicPress database object to query for the comments. The comments * are passed through the {@see 'comments_array'} filter hook with the list of comments * and the post ID respectively. * * The `$file` path is passed through a filter hook called {@see 'comments_template'}, * which includes the TEMPLATEPATH and $file combined. Tries the $filtered path * first and if it fails it will require the default comment template from the - * default theme. If either does not exist, then the WordPress process will be + * default theme. If either does not exist, then the ClassicPress process will be * halted. It is advised for that reason, that the default theme is not deleted. * * Will not try to get the comments if the post has none. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @global WP_Query $wp_query WordPress Query object. - * @global WP_Post $post Global post object. - * @global wpdb $wpdb WordPress database abstraction object. + * @global WP_Query $wp_query + * @global WP_Post $post + * @global wpdb $wpdb * @global int $id - * @global WP_Comment $comment Global comment object. + * @global WP_Comment $comment * @global string $user_login * @global string $user_identity * @global bool $overridden_cpage @@ -1484,7 +1350,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false $comment_author_email = $commenter['comment_author_email']; /* - * The URL of the current comment author escaped for use in attributes. + * The url of the current comment author escaped for use in attributes. */ $comment_author_url = esc_url( $commenter['comment_author_url'] ); @@ -1494,6 +1360,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false 'status' => 'approve', 'post_id' => $post->ID, 'no_found_rows' => false, + 'update_comment_meta_cache' => false, // We lazy-load comment meta for performance. ); if ( get_option( 'thread_comments' ) ) { @@ -1504,12 +1371,8 @@ function comments_template( $file = '/comments.php', $separate_comments = false if ( is_user_logged_in() ) { $comment_args['include_unapproved'] = array( get_current_user_id() ); - } else { - $unapproved_email = wp_get_unapproved_comment_author_email(); - - if ( $unapproved_email ) { - $comment_args['include_unapproved'] = array( $unapproved_email ); - } + } elseif ( ! empty( $comment_author_email ) ) { + $comment_args['include_unapproved'] = array( $comment_author_email ); } $per_page = 0; @@ -1544,24 +1407,6 @@ function comments_template( $file = '/comments.php', $separate_comments = false $top_level_args['include_unapproved'] = $comment_args['include_unapproved']; } - /** - * Filters the arguments used in the top level comments query. - * - * @since 5.6.0 - * - * @see WP_Comment_Query::__construct() - * - * @param array $top_level_args { - * The top level query arguments for the comments template. - * - * @type bool $count Whether to return a comment count. - * @type string|array $orderby The field(s) to order by. - * @type int $post_id The post ID. - * @type string|array $status The comment status to limit results by. - * } - */ - $top_level_args = apply_filters( 'comments_template_top_level_query_args', $top_level_args ); - $top_level_count = $top_level_query->query( $top_level_args ); $comment_args['offset'] = ( ceil( $top_level_count / $per_page ) - 1 ) * $per_page; @@ -1571,7 +1416,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false /** * Filters the arguments used to query comments in comments_template(). * - * @since 4.5.0 + * @since WP-4.5.0 * * @see WP_Comment_Query::__construct() * @@ -1591,8 +1436,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false * @type int $number Number of comments to fetch. * } */ - $comment_args = apply_filters( 'comments_template_query_args', $comment_args ); - + $comment_args = apply_filters( 'comments_template_query_args', $comment_args ); $comment_query = new WP_Comment_Query( $comment_args ); $_comments = $comment_query->comments; @@ -1620,10 +1464,10 @@ function comments_template( $file = '/comments.php', $separate_comments = false /** * Filters the comments array. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param array $comments Array of comments supplied to the comments template. - * @param int $post_id Post ID. + * @param int $post_ID Post ID. */ $wp_query->comments = apply_filters( 'comments_array', $comments_flat, $post->ID ); @@ -1654,7 +1498,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false /** * Filters the path to the theme template file used for the comments template. * - * @since 1.5.1 + * @since WP-1.5.1 * * @param string $theme_template The path to the theme template file. */ @@ -1664,7 +1508,7 @@ function comments_template( $file = '/comments.php', $separate_comments = false require $include; } elseif ( file_exists( TEMPLATEPATH . $file ) ) { require TEMPLATEPATH . $file; - } else { // Backward compat code will be removed in a future release. + } else { // Backward compat code will be removed in a future release require ABSPATH . WPINC . '/theme-compat/comments.php'; } } @@ -1672,38 +1516,41 @@ function comments_template( $file = '/comments.php', $separate_comments = false /** * Displays the link to the comments for the current post ID. * - * @since 0.71 + * @since WP-0.71 * - * @param false|string $zero Optional. String to display when no comments. Default false. - * @param false|string $one Optional. String to display when only one comment is available. Default false. - * @param false|string $more Optional. String to display when there are more than one comment. Default false. - * @param string $css_class Optional. CSS class to use for comments. Default empty. - * @param false|string $none Optional. String to display when comments have been turned off. Default false. + * @param string $zero Optional. String to display when no comments. Default false. + * @param string $one Optional. String to display when only one comment is available. + * Default false. + * @param string $more Optional. String to display when there are more than one comment. + * Default false. + * @param string $css_class Optional. CSS class to use for comments. Default empty. + * @param string $none Optional. String to display when comments have been turned off. + * Default false. */ function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) { - $post_id = get_the_ID(); - $post_title = get_the_title(); - $number = get_comments_number( $post_id ); + $id = get_the_ID(); + $title = get_the_title(); + $number = get_comments_number( $id ); if ( false === $zero ) { - /* translators: %s: Post title. */ - $zero = sprintf( __( 'No Comments on %s' ), $post_title ); + /* translators: %s: post title */ + $zero = sprintf( __( 'No Comments on %s' ), $title ); } if ( false === $one ) { - /* translators: %s: Post title. */ - $one = sprintf( __( '1 Comment on %s' ), $post_title ); + /* translators: %s: post title */ + $one = sprintf( __( '1 Comment on %s' ), $title ); } if ( false === $more ) { - /* translators: 1: Number of comments, 2: Post title. */ + /* translators: 1: Number of comments 2: post title */ $more = _n( '%1$s Comment on %2$s', '%1$s Comments on %2$s', $number ); - $more = sprintf( $more, number_format_i18n( $number ), $post_title ); + $more = sprintf( $more, number_format_i18n( $number ), $title ); } if ( false === $none ) { - /* translators: %s: Post title. */ - $none = sprintf( __( 'Comments Off on %s' ), $post_title ); + /* translators: %s: post title */ + $none = sprintf( __( 'Comments Off on %s' ), $title ); } if ( 0 == $number && ! comments_open() && ! pings_open() ) { @@ -1722,12 +1569,12 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c /** * Filters the respond link when a post has no comments. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $respond_link The default response link. - * @param int $post_id The post ID. + * @param integer $id The post ID. */ - echo apply_filters( 'respond_link', $respond_link, $post_id ); + echo apply_filters( 'respond_link', $respond_link, $id ); } else { comments_link(); } @@ -1741,7 +1588,7 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c /** * Filters the comments link attributes for display. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $attributes The comments link attributes. Default empty. */ @@ -1753,12 +1600,12 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c } /** - * Retrieves HTML content for reply to comment link. + * Retrieve HTML content for reply to comment link. * - * @since 2.7.0 - * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. + * @since WP-2.7.0 + * @since WP-4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. * - * @param array $args { + * @param array $args { * Optional. Override default arguments. * * @type string $add_below The first part of the selector used to identify the comment to respond below. @@ -1775,17 +1622,17 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c * @type string $before The text or HTML to add before the reply link. Default empty. * @type string $after The text or HTML to add after the reply link. Default empty. * } - * @param int|WP_Comment $comment Optional. Comment being replied to. Default current comment. - * @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on. + * @param int|WP_Comment $comment Comment being replied to. Default current comment. + * @param int|WP_Post $post Post ID or WP_Post object the comment is going to be displayed on. * Default current post. - * @return string|false|null Link to show comment form, if successful. False, if comments are closed. + * @return void|false|string Link to show comment form, if successful. False, if comments are closed. */ function get_comment_reply_link( $args = array(), $comment = null, $post = null ) { $defaults = array( 'add_below' => 'comment', 'respond_id' => 'respond', 'reply_text' => __( 'Reply' ), - /* translators: Comment reply button text. %s: Comment author name. */ + /* translators: Comment reply button text. 1: Comment author name */ 'reply_to_text' => __( 'Reply to %s' ), 'login_text' => __( 'Log in to Reply' ), 'max_depth' => 0, @@ -1802,10 +1649,6 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null $comment = get_comment( $comment ); - if ( empty( $comment ) ) { - return; - } - if ( empty( $post ) ) { $post = $comment->comment_post_ID; } @@ -1816,16 +1659,10 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null return false; } - if ( get_option( 'page_comments' ) ) { - $permalink = str_replace( '#comment-' . $comment->comment_ID, '', get_comment_link( $comment ) ); - } else { - $permalink = get_permalink( $post->ID ); - } - /** * Filters the comment reply link arguments. * - * @since 4.1.0 + * @since WP-4.1.0 * * @param array $args Comment reply link arguments. See get_comment_reply_link() * for more information on accepted arguments. @@ -1841,36 +1678,19 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null $args['login_text'] ); } else { - $data_attributes = array( - 'commentid' => $comment->comment_ID, - 'postid' => $post->ID, - 'belowelement' => $args['add_below'] . '-' . $comment->comment_ID, - 'respondelement' => $args['respond_id'], - 'replyto' => sprintf( $args['reply_to_text'], get_comment_author( $comment ) ), + $onclick = sprintf( + 'return addComment.moveForm( "%1$s-%2$s", "%2$s", "%3$s", "%4$s" )', + $args['add_below'], + $comment->comment_ID, + $args['respond_id'], + $post->ID ); - $data_attribute_string = ''; - - foreach ( $data_attributes as $name => $value ) { - $data_attribute_string .= " data-{$name}=\"" . esc_attr( $value ) . '"'; - } - - $data_attribute_string = trim( $data_attribute_string ); - $link = sprintf( - "%s", - esc_url( - add_query_arg( - array( - 'replytocom' => $comment->comment_ID, - 'unapproved' => false, - 'moderation-hash' => false, - ), - $permalink - ) - ) . '#' . $args['respond_id'], - $data_attribute_string, - esc_attr( sprintf( $args['reply_to_text'], get_comment_author( $comment ) ) ), + "%s", + esc_url( add_query_arg( 'replytocom', $comment->comment_ID, get_permalink( $post->ID ) ) ) . '#' . $args['respond_id'], + $onclick, + esc_attr( sprintf( $args['reply_to_text'], $comment->comment_author ) ), $args['reply_text'] ); } @@ -1878,12 +1698,12 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null /** * Filters the comment reply link. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param string $link The HTML markup for the comment reply link. - * @param array $args An array of arguments overriding the defaults. - * @param WP_Comment $comment The object of the comment being replied. - * @param WP_Post $post The WP_Post object. + * @param string $link The HTML markup for the comment reply link. + * @param array $args An array of arguments overriding the defaults. + * @param object $comment The object of the comment being replied. + * @param WP_Post $post The WP_Post object. */ return apply_filters( 'comment_reply_link', $args['before'] . $link . $args['after'], $args, $comment, $post ); } @@ -1891,25 +1711,26 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null /** * Displays the HTML content for reply to comment link. * - * @since 2.7.0 + * @since WP-2.7.0 * * @see get_comment_reply_link() * - * @param array $args Optional. Override default options. Default empty array. - * @param int|WP_Comment $comment Optional. Comment being replied to. Default current comment. - * @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on. - * Default current post. + * @param array $args Optional. Override default options. + * @param int $comment Comment being replied to. Default current comment. + * @param int|WP_Post $post Post ID or WP_Post object the comment is going to be displayed on. + * Default current post. + * @return mixed Link to show comment form, if successful. False, if comments are closed. */ function comment_reply_link( $args = array(), $comment = null, $post = null ) { echo get_comment_reply_link( $args, $comment, $post ); } /** - * Retrieves HTML content for reply to post link. + * Retrieve HTML content for reply to post link. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param array $args { + * @param array $args { * Optional. Override default arguments. * * @type string $add_below The first part of the selector used to identify the comment to respond below. @@ -1925,7 +1746,7 @@ function comment_reply_link( $args = array(), $comment = null, $post = null ) { * } * @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on. * Default current post. - * @return string|false|null Link to show comment form, if successful. False, if comments are closed. + * @return false|null|string Link to show comment form, if successful. False, if comments are closed. */ function get_post_reply_link( $args = array(), $post = null ) { $defaults = array( @@ -1971,7 +1792,7 @@ function get_post_reply_link( $args = array(), $post = null ) { /** * Filters the formatted post comments link HTML. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param string $formatted The HTML-formatted post comments link. * @param int|WP_Post $post The post ID or WP_Post object. @@ -1982,46 +1803,41 @@ function get_post_reply_link( $args = array(), $post = null ) { /** * Displays the HTML content for reply to post link. * - * @since 2.7.0 + * @since WP-2.7.0 * * @see get_post_reply_link() * - * @param array $args Optional. Override default options. Default empty array. - * @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on. + * @param array $args Optional. Override default options, + * @param int|WP_Post $post Post ID or WP_Post object the comment is going to be displayed on. * Default current post. + * @return string|bool|null Link to show comment form, if successful. False, if comments are closed. */ function post_reply_link( $args = array(), $post = null ) { echo get_post_reply_link( $args, $post ); } /** - * Retrieves HTML content for cancel comment reply link. + * Retrieve HTML content for cancel comment reply link. * - * @since 2.7.0 - * @since 6.2.0 Added the `$post` parameter. + * @since WP-2.7.0 * - * @param string $text Optional. Text to display for cancel reply link. If empty, - * defaults to 'Click here to cancel reply'. Default empty. - * @param int|WP_Post|null $post Optional. The post the comment thread is being - * displayed for. Defaults to the current global post. + * @param string $text Optional. Text to display for cancel reply link. Default empty. * @return string */ -function get_cancel_comment_reply_link( $text = '', $post = null ) { +function get_cancel_comment_reply_link( $text = '' ) { if ( empty( $text ) ) { $text = __( 'Click here to cancel reply.' ); } - $post = get_post( $post ); - $reply_to_id = $post ? _get_comment_reply_id( $post->ID ) : 0; - $style = 0 !== $reply_to_id ? '' : ' style="display:none;"'; - $link = esc_html( remove_query_arg( array( 'replytocom', 'unapproved', 'moderation-hash' ) ) ) . '#respond'; + $style = isset( $_GET['replytocom'] ) ? '' : ' style="display:none;"'; + $link = esc_html( remove_query_arg( 'replytocom' ) ) . '#respond'; $formatted_link = '' . $text . ''; /** * Filters the cancel comment reply link HTML. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param string $formatted_link The HTML-formatted cancel comment reply link. * @param string $link Cancel comment reply link URL. @@ -2031,42 +1847,37 @@ function get_cancel_comment_reply_link( $text = '', $post = null ) { } /** - * Displays HTML content for cancel comment reply link. + * Display HTML content for cancel comment reply link. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param string $text Optional. Text to display for cancel reply link. If empty, - * defaults to 'Click here to cancel reply'. Default empty. + * @param string $text Optional. Text to display for cancel reply link. Default empty. */ function cancel_comment_reply_link( $text = '' ) { echo get_cancel_comment_reply_link( $text ); } /** - * Retrieves hidden input HTML for replying to comments. + * Retrieve hidden input HTML for replying to comments. * - * @since 3.0.0 - * @since 6.2.0 Renamed `$post_id` to `$post` and added WP_Post support. + * @since WP-3.0.0 * - * @param int|WP_Post|null $post Optional. The post the comment is being displayed for. - * Defaults to the current global post. - * @return string Hidden input HTML for replying to comments. + * @param int $post_id Optional. Post ID. Default current post ID. + * @return string Hidden input HTML for replying to comments */ -function get_comment_id_fields( $post = null ) { - $post = get_post( $post ); - if ( ! $post ) { - return ''; +function get_comment_id_fields( $post_id = 0 ) { + if ( empty( $post_id ) ) { + $post_id = get_the_ID(); } - $post_id = $post->ID; - $reply_to_id = _get_comment_reply_id( $post_id ); - $result = "\n"; - $result .= "\n"; + $reply_to_id = isset( $_GET['replytocom'] ) ? (int) $_GET['replytocom'] : 0; + $result = "\n"; + $result .= "\n"; /** - * Filters the returned comment ID fields. + * Filters the returned comment id fields. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $result The HTML-formatted hidden ID field comment elements. * @param int $post_id The post ID. @@ -2076,49 +1887,37 @@ function get_comment_id_fields( $post = null ) { } /** - * Outputs hidden input HTML for replying to comments. + * Output hidden input HTML for replying to comments. * - * Adds two hidden inputs to the comment form to identify the `comment_post_ID` - * and `comment_parent` values for threaded comments. + * @since WP-2.7.0 * - * This tag must be within the `
        ` section of the `comments.php` template. - * - * @since 2.7.0 - * @since 6.2.0 Renamed `$post_id` to `$post` and added WP_Post support. - * - * @see get_comment_id_fields() - * - * @param int|WP_Post|null $post Optional. The post the comment is being displayed for. - * Defaults to the current global post. + * @param int $id Optional. Post ID. Default current post ID. */ -function comment_id_fields( $post = null ) { - echo get_comment_id_fields( $post ); +function comment_id_fields( $id = 0 ) { + echo get_comment_id_fields( $id ); } /** - * Displays text based on comment reply status. + * Display text based on comment reply status. * * Only affects users with JavaScript disabled. * * @internal The $comment global must be present to allow template tags access to the current * comment. See https://core.trac.wordpress.org/changeset/36512. * - * @since 2.7.0 - * @since 6.2.0 Added the `$post` parameter. + * @since WP-2.7.0 * - * @global WP_Comment $comment Global comment object. + * @global WP_Comment $comment Current comment. * - * @param string|false $no_reply_text Optional. Text to display when not replying to a comment. - * Default false. - * @param string|false $reply_text Optional. Text to display when replying to a comment. - * Default false. Accepts "%s" for the author of the comment - * being replied to. - * @param bool $link_to_parent Optional. Boolean to control making the author's name a link - * to their comment. Default true. - * @param int|WP_Post|null $post Optional. The post that the comment form is being displayed for. - * Defaults to the current global post. + * @param string $no_reply_text Optional. Text to display when not replying to a comment. + * Default false. + * @param string $reply_text Optional. Text to display when replying to a comment. + * Default false. Accepts "%s" for the author of the comment + * being replied to. + * @param string $link_to_parent Optional. Boolean to control making the author's name a link + * to their comment. Default true. */ -function comment_form_title( $no_reply_text = false, $reply_text = false, $link_to_parent = true, $post = null ) { +function comment_form_title( $no_reply_text = false, $reply_text = false, $link_to_parent = true ) { global $comment; if ( false === $no_reply_text ) { @@ -2130,79 +1929,34 @@ function comment_form_title( $no_reply_text = false, $reply_text = false, $link_ $reply_text = __( 'Leave a Reply to %s' ); } - $post = get_post( $post ); - if ( ! $post ) { - echo $no_reply_text; - return; - } + $reply_to_id = isset( $_GET['replytocom'] ) ? (int) $_GET['replytocom'] : 0; - $reply_to_id = _get_comment_reply_id( $post->ID ); - - if ( 0 === $reply_to_id ) { + if ( 0 == $reply_to_id ) { echo $no_reply_text; - return; - } - - // Sets the global so that template tags can be used in the comment form. - $comment = get_comment( $reply_to_id ); - - if ( $link_to_parent ) { - $author = '' . get_comment_author( $reply_to_id ) . ''; } else { - $author = get_comment_author( $reply_to_id ); - } - - printf( $reply_text, $author ); -} - -/** - * Gets the comment's reply to ID from the $_GET['replytocom']. - * - * @since 6.2.0 - * - * @access private - * - * @param int|WP_Post $post The post the comment is being displayed for. - * Defaults to the current global post. - * @return int Comment's reply to ID. - */ -function _get_comment_reply_id( $post = null ) { - $post = get_post( $post ); - - if ( ! $post || ! isset( $_GET['replytocom'] ) || ! is_numeric( $_GET['replytocom'] ) ) { - return 0; - } - - $reply_to_id = (int) $_GET['replytocom']; + // Sets the global so that template tags can be used in the comment form. + $comment = get_comment( $reply_to_id ); - /* - * Validate the comment. - * Bail out if it does not exist, is not approved, or its - * `comment_post_ID` does not match the given post ID. - */ - $comment = get_comment( $reply_to_id ); + if ( $link_to_parent ) { + $author = '' . get_comment_author( $comment ) . ''; + } else { + $author = get_comment_author( $comment ); + } - if ( - ! $comment instanceof WP_Comment || - 0 === (int) $comment->comment_approved || - $post->ID !== (int) $comment->comment_post_ID - ) { - return 0; + printf( $reply_text, $author ); } - - return $reply_to_id; } /** - * Displays a list of comments. + * List comments. * * Used in the comments.php template to list comments for a particular post. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @see WP_Query::$comments + * @see WP_Query->comments * - * @global WP_Query $wp_query WordPress Query object. + * @global WP_Query $wp_query * @global int $comment_alt * @global int $comment_depth * @global int $comment_thread_alt @@ -2212,26 +1966,24 @@ function _get_comment_reply_id( $post = null ) { * @param string|array $args { * Optional. Formatting options. * - * @type object $walker Instance of a Walker class to list comments. Default null. - * @type int $max_depth The maximum comments depth. Default empty. - * @type string $style The style of list ordering. Accepts 'ul', 'ol', or 'div'. - * 'div' will result in no additional list markup. Default 'ul'. - * @type callable $callback Callback function to use. Default null. - * @type callable $end-callback Callback function to use at the end. Default null. - * @type string $type Type of comments to list. Accepts 'all', 'comment', - * 'pingback', 'trackback', 'pings'. Default 'all'. - * @type int $page Page ID to list comments for. Default empty. - * @type int $per_page Number of comments to list per page. Default empty. - * @type int $avatar_size Height and width dimensions of the avatar size. Default 32. - * @type bool $reverse_top_level Ordering of the listed comments. If true, will display - * newest comments first. Default null. - * @type bool $reverse_children Whether to reverse child comments in the list. Default null. - * @type bool $short_ping Whether to output short pings. Default false. - * @type bool $echo Whether to echo the output or return it. Default true. + * @type object $walker Instance of a Walker class to list comments. Default null. + * @type int $max_depth The maximum comments depth. Default empty. + * @type string $style The style of list ordering. Default 'ul'. Accepts 'ul', 'ol'. + * @type string $callback Callback function to use. Default null. + * @type string $end-callback Callback function to use at the end. Default null. + * @type string $type Type of comments to list. + * Default 'all'. Accepts 'all', 'comment', 'pingback', 'trackback', 'pings'. + * @type int $page Page ID to list comments for. Default empty. + * @type int $per_page Number of comments to list per page. Default empty. + * @type int $avatar_size Height and width dimensions of the avatar size. Default 32. + * @type bool $reverse_top_level Ordering of the listed comments. If true, will display newest comments first. + * @type bool $reverse_children Whether to reverse child comments in the list. Default null. + * @type string $format How to format the comments list. + * Default 'html5' if the theme supports it. Accepts 'html5', 'xhtml'. + * @type bool $short_ping Whether to output short pings. Default false. + * @type bool $echo Whether to echo the output or return it. Default true. * } - * @param WP_Comment[] $comments Optional. Array of WP_Comment objects. Default null. - * @return void|string Void if 'echo' argument is true, or no comments to list. - * Otherwise, HTML list of comments. + * @param array $comments Optional. Array of WP_Comment objects. */ function wp_list_comments( $args = array(), $comments = null ) { global $wp_query, $comment_alt, $comment_depth, $comment_thread_alt, $overridden_cpage, $in_comment_loop; @@ -2240,7 +1992,7 @@ function wp_list_comments( $args = array(), $comments = null ) { $comment_alt = 0; $comment_thread_alt = 0; - $comment_depth = 1; + $comment_depth = 1; $defaults = array( 'walker' => null, @@ -2254,6 +2006,7 @@ function wp_list_comments( $args = array(), $comments = null ) { 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => '', + 'format' => current_theme_supports( 'html5', 'comment-list' ) ? 'html5' : 'xhtml', 'short_ping' => false, 'echo' => true, ); @@ -2263,7 +2016,7 @@ function wp_list_comments( $args = array(), $comments = null ) { /** * Filters the arguments used in retrieving the comment list. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see wp_list_comments() * @@ -2271,7 +2024,7 @@ function wp_list_comments( $args = array(), $comments = null ) { */ $parsed_args = apply_filters( 'wp_list_comments_args', $parsed_args ); - // Figure out what comments we'll be looping through ($_comments). + // Figure out what comments we'll be looping through ($_comments) if ( null !== $comments ) { $comments = (array) $comments; if ( empty( $comments ) ) { @@ -2309,10 +2062,9 @@ function wp_list_comments( $args = array(), $comments = null ) { if ( is_user_logged_in() ) { $comment_args['include_unapproved'] = array( get_current_user_id() ); } else { - $unapproved_email = wp_get_unapproved_comment_author_email(); - - if ( $unapproved_email ) { - $comment_args['include_unapproved'] = array( $unapproved_email ); + $commenter = wp_get_current_commenter(); + if ( $commenter['comment_author_email'] ) { + $comment_args['include_unapproved'] = $commenter['comment_author_email']; } } @@ -2395,8 +2147,8 @@ function wp_list_comments( $args = array(), $comments = null ) { set_query_var( 'cpage', $parsed_args['page'] ); } } - // Validation check. - $parsed_args['page'] = (int) $parsed_args['page']; + // Validation check + $parsed_args['page'] = intval( $parsed_args['page'] ); if ( 0 == $parsed_args['page'] && 0 != $parsed_args['per_page'] ) { $parsed_args['page'] = 1; } @@ -2405,8 +2157,10 @@ function wp_list_comments( $args = array(), $comments = null ) { $parsed_args['reverse_top_level'] = ( 'desc' === get_option( 'comment_order' ) ); } + wp_queue_comments_for_comment_meta_lazyload( $_comments ); + if ( empty( $parsed_args['walker'] ) ) { - $walker = new Walker_Comment(); + $walker = new Walker_Comment; } else { $walker = $parsed_args['walker']; } @@ -2425,24 +2179,22 @@ function wp_list_comments( $args = array(), $comments = null ) { /** * Outputs a complete commenting form for use within a template. * - * Most strings and form fields may be controlled through the `$args` array passed + * Most strings and form fields may be controlled through the $args array passed * into the function, while you may also choose to use the {@see 'comment_form_default_fields'} * filter to modify the array of default fields if you'd just like to add a new * one or remove a single field. All fields are also individually passed through - * a filter of the {@see 'comment_form_field_$name'} where `$name` is the key used + * a filter of the {@see 'comment_form_field_$name'} where $name is the key used * in the array of fields. * - * @since 3.0.0 - * @since 4.1.0 Introduced the 'class_submit' argument. - * @since 4.2.0 Introduced the 'submit_button' and 'submit_fields' arguments. - * @since 4.4.0 Introduced the 'class_form', 'title_reply_before', 'title_reply_after', - * 'cancel_reply_before', and 'cancel_reply_after' arguments. - * @since 4.5.0 The 'author', 'email', and 'url' form fields are limited to 245, 100, - * and 200 characters, respectively. - * @since 4.6.0 Introduced the 'action' argument. - * @since 4.9.6 Introduced the 'cookies' default comment field. - * @since 5.5.0 Introduced the 'class_container' argument. - * @since CP-2.0.0 Default to 'html' format. + * @since WP-3.0.0 + * @since WP-4.1.0 Introduced the 'class_submit' argument. + * @since WP-4.2.0 Introduced the 'submit_button' and 'submit_fields' arguments. + * @since WP-4.4.0 Introduced the 'class_form', 'title_reply_before', 'title_reply_after', + * 'cancel_reply_before', and 'cancel_reply_after' arguments. + * @since WP-4.5.0 The 'author', 'email', and 'url' form fields are limited to 245, 100, + * and 200 characters, respectively. + * @since WP-4.6.0 Introduced the 'action' argument. + * @since WP-4.9.6 Introduced the 'cookies' default comment field. * * @param array $args { * Optional. Default arguments and form fields to override. @@ -2457,8 +2209,7 @@ function wp_list_comments( $args = array(), $comments = null ) { * } * @type string $comment_field The comment textarea field HTML. * @type string $must_log_in HTML element for a 'must be logged in to comment' message. - * @type string $logged_in_as The HTML for the 'logged in as [user]' message, the Edit profile link, - * and the Log out link. + * @type string $logged_in_as HTML element for a 'logged in as [user]' message. * @type string $comment_notes_before HTML element for a message displayed before the comment fields * if the user is not logged in. * Default 'Your email address will not be published.'. @@ -2466,7 +2217,6 @@ function wp_list_comments( $args = array(), $comments = null ) { * @type string $action The comment form element action attribute. Default '/wp-comments-post.php'. * @type string $id_form The comment form element id attribute. Default 'commentform'. * @type string $id_submit The comment submit element id attribute. Default 'submit'. - * @type string $class_container The comment form container class attribute. Default 'comment-respond'. * @type string $class_form The comment form element class attribute. Default 'comment-form'. * @type string $class_submit The comment submit element class attribute. Default 'submit'. * @type string $name_submit The comment submit element name attribute. Default 'submit'. @@ -2482,102 +2232,56 @@ function wp_list_comments( $args = array(), $comments = null ) { * @type string $cancel_reply_link The translatable 'cancel reply' button label. Default 'Cancel reply'. * @type string $label_submit The translatable 'submit' button label. Default 'Post a comment'. * @type string $submit_button HTML format for the Submit button. - * Default: ''. + * Default: ''. * @type string $submit_field HTML format for the markup surrounding the Submit button and comment hidden * fields. Default: '

        %1$s %2$s

        ', where %1$s is the * submit button markup and %2$s is the comment hidden fields. + * @type string $format The comment form format. Default 'xhtml'. Accepts 'xhtml', 'html5'. * } - * @param int|WP_Post $post Optional. Post ID or WP_Post object to generate the form for. Default current post. + * @param int|WP_Post $post_id Post ID or WP_Post object to generate the form for. Default current post. */ -function comment_form( $args = array(), $post = null ) { - $post = get_post( $post ); +function comment_form( $args = array(), $post_id = null ) { + if ( null === $post_id ) { + $post_id = get_the_ID(); + } - // Exit the function if the post is invalid or comments are closed. - if ( ! $post || ! comments_open( $post ) ) { + // Exit the function when comments for the post are closed. + if ( ! comments_open( $post_id ) ) { /** * Fires after the comment form if comments are closed. * - * For backward compatibility, this action also fires if comment_form() - * is called with an invalid post object or ID. - * - * @since 3.0.0 + * @since WP-3.0.0 */ do_action( 'comment_form_comments_closed' ); return; } - $post_id = $post->ID; $commenter = wp_get_current_commenter(); $user = wp_get_current_user(); $user_identity = $user->exists() ? $user->display_name : ''; $args = wp_parse_args( $args ); - - $req = get_option( 'require_name_email' ); - - // Define attributes. - $required_attribute = ' required'; - $checked_attribute = ' checked'; - - // Identify required fields visually and create a message about the indicator. - $required_indicator = ' ' . wp_required_field_indicator(); - $required_text = ' ' . wp_required_field_message(); - - $fields = array( - 'author' => sprintf( - '

        %s %s

        ', - sprintf( - '', - __( 'Name' ), - ( $req ? $required_indicator : '' ) - ), - sprintf( - '', - esc_attr( $commenter['comment_author'] ), - ( $req ? $required_attribute : '' ) - ) - ), - 'email' => sprintf( - '', - sprintf( - '', - __( 'Email' ), - ( $req ? $required_indicator : '' ) - ), - sprintf( - '', - esc_attr( $commenter['comment_author_email'] ), - ( $req ? $required_attribute : '' ) - ) - ), - 'url' => sprintf( - '

        %s %s

        ', - sprintf( - '', - __( 'Website' ) - ), - sprintf( - '', - esc_attr( $commenter['comment_author_url'] ) - ) - ), + if ( ! isset( $args['format'] ) ) { + $args['format'] = current_theme_supports( 'html5', 'comment-form' ) ? 'html5' : 'xhtml'; + } + + $req = get_option( 'require_name_email' ); + $html_req = ( $req ? " required='required'" : '' ); + $html5 = 'html5' === $args['format']; + $fields = array( + 'author' => '

        ' . ' ' . + '

        ', + 'email' => '', + 'url' => '

        ' . + '

        ', ); if ( has_action( 'set_comment_cookies', 'wp_set_comment_cookies' ) && get_option( 'show_comments_cookies_opt_in' ) ) { - $consent = empty( $commenter['comment_author_email'] ) ? '' : $checked_attribute; - - $fields['cookies'] = sprintf( - '', - sprintf( - '', - $consent - ), - sprintf( - '', - __( 'Save my name, email, and website in this browser for the next time I comment.' ) - ) - ); + $consent = empty( $commenter['comment_author_email'] ) ? '' : ' checked="checked"'; + $fields['cookies'] = ''; // Ensure that the passed fields include cookies consent. if ( isset( $args['fields'] ) && ! isset( $args['fields']['cookies'] ) ) { @@ -2585,65 +2289,44 @@ function comment_form( $args = array(), $post = null ) { } } + $required_text = sprintf( ' ' . __( 'Required fields are marked %s' ), '*' ); + /** * Filters the default comment form fields. * - * @since 3.0.0 + * @since WP-3.0.0 * - * @param string[] $fields Array of the default comment fields. + * @param array $fields The default comment fields. */ - $fields = apply_filters( 'comment_form_default_fields', $fields ); - + $fields = apply_filters( 'comment_form_default_fields', $fields ); $defaults = array( 'fields' => $fields, - 'comment_field' => sprintf( - '

        %s %s

        ', - sprintf( - '', - _x( 'Comment', 'noun' ), - $required_indicator - ), - '' - ), - 'must_log_in' => sprintf( - '', - sprintf( - /* translators: %s: Login URL. */ - __( 'You must be logged in to post a comment.' ), - /** This filter is documented in wp-includes/link-template.php */ - wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) ) - ) - ), - 'logged_in_as' => sprintf( - '

        %s%s

        ', - sprintf( - /* translators: 1: User name, 2: Edit user link, 3: Logout URL. */ - __( 'Logged in as %1$s. Edit your profile. Log out?' ), - $user_identity, - get_edit_user_link(), - /** This filter is documented in wp-includes/link-template.php */ - wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) ) - ), - $required_text - ), - 'comment_notes_before' => sprintf( - '

        %s%s

        ', - sprintf( - '%s', - __( 'Your email address will not be published.' ) - ), - $required_text - ), + 'comment_field' => '

        ', + /** This filter is documented in wp-includes/link-template.php */ + 'must_log_in' => '', + /** This filter is documented in wp-includes/link-template.php */ + 'logged_in_as' => '

        ' . sprintf( + /* translators: 1: edit user link, 2: accessibility text, 3: user name, 4: logout URL */ + __( 'Logged in as %3$s. Log out?' ), + get_edit_user_link(), + /* translators: %s: user name */ + esc_attr( sprintf( __( 'Logged in as %s. Edit your profile.' ), $user_identity ) ), + $user_identity, + wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) ) + ) . '

        ', + 'comment_notes_before' => '

        ' . __( 'Your email address will not be published.' ) . '' . ( $req ? $required_text : '' ) . '

        ', 'comment_notes_after' => '', 'action' => site_url( '/wp-comments-post.php' ), 'id_form' => 'commentform', 'id_submit' => 'submit', - 'class_container' => 'comment-respond', 'class_form' => 'comment-form', 'class_submit' => 'submit', 'name_submit' => 'submit', 'title_reply' => __( 'Leave a Reply' ), - /* translators: %s: Author of the comment being replied to. */ 'title_reply_to' => __( 'Leave a Reply to %s' ), 'title_reply_before' => '

        ', 'title_reply_after' => '

        ', @@ -2651,8 +2334,9 @@ function comment_form( $args = array(), $post = null ) { 'cancel_reply_after' => '', 'cancel_reply_link' => __( 'Cancel reply' ), 'label_submit' => __( 'Post Comment' ), - 'submit_button' => '', + 'submit_button' => '', 'submit_field' => '

        %1$s %2$s

        ', + 'format' => 'xhtml', ); /** @@ -2660,240 +2344,210 @@ function comment_form( $args = array(), $post = null ) { * * Use {@see 'comment_form_default_fields'} to filter the comment fields. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param array $defaults The default comment form arguments. */ $args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) ); - // Ensure that the filtered arguments contain all required default values. + // Ensure that the filtered args contain all required default values. $args = array_merge( $defaults, $args ); - // Remove `aria-describedby` from the email field if there's no associated description. - if ( isset( $args['fields']['email'] ) && false === strpos( $args['comment_notes_before'], 'id="email-notes"' ) ) { - $args['fields']['email'] = str_replace( - ' aria-describedby="email-notes"', - '', - $args['fields']['email'] - ); - } - /** * Fires before the comment form. * - * @since 3.0.0 + * @since WP-3.0.0 */ do_action( 'comment_form_before' ); ?> -
        +
        ', - esc_url( $args['action'] ), - esc_attr( $args['id_form'] ), - esc_attr( $args['class_form'] ) - ); - - /** - * Fires at the top of the comment form, inside the form tag. - * - * @since 3.0.0 - */ - do_action( 'comment_form_top' ); - - if ( is_user_logged_in() ) : - - /** - * Filters the 'logged in' message for the comment form for display. - * - * @since 3.0.0 - * - * @param string $args_logged_in The HTML for the 'logged in as [user]' message, - * the Edit profile link, and the Log out link. - * @param array $commenter An array containing the comment author's - * username, email, and URL. - * @param string $user_identity If the commenter is a registered user, - * the display name, blank otherwise. - */ - echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity ); - + ?> + > + $args['comment_field'] ) + (array) $args['fields']; + else : - /** - * Filters the comment form fields, including the textarea. - * - * @since 4.4.0 - * - * @param array $comment_fields The comment fields. - */ - $comment_fields = apply_filters( 'comment_form_fields', $comment_fields ); + echo $args['comment_notes_before']; - // Get an array of field names, excluding the textarea. - $comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) ); + endif; - // Get the first and the last field name, excluding the textarea. - $first_field = reset( $comment_field_keys ); - $last_field = end( $comment_field_keys ); + // Prepare an array of all fields, including the textarea + $comment_fields = array( 'comment' => $args['comment_field'] ) + (array) $args['fields']; - foreach ( $comment_fields as $name => $field ) { + /** + * Filters the comment form fields, including the textarea. + * + * @since WP-4.4.0 + * + * @param array $comment_fields The comment fields. + */ + $comment_fields = apply_filters( 'comment_form_fields', $comment_fields ); - if ( 'comment' === $name ) { + // Get an array of field names, excluding the textarea + $comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) ); - /** - * Filters the content of the comment textarea field for display. - * - * @since 3.0.0 - * - * @param string $args_comment_field The content of the comment textarea field. - */ - echo apply_filters( 'comment_form_field_comment', $field ); + // Get the first and the last field name, excluding the textarea + $first_field = reset( $comment_field_keys ); + $last_field = end( $comment_field_keys ); - echo $args['comment_notes_after']; + foreach ( $comment_fields as $name => $field ) { - } elseif ( ! is_user_logged_in() ) { + if ( 'comment' === $name ) { - if ( $first_field === $name ) { /** - * Fires before the comment fields in the comment form, excluding the textarea. + * Filters the content of the comment textarea field for display. * - * @since 3.0.0 + * @since WP-3.0.0 + * + * @param string $args_comment_field The content of the comment textarea field. */ - do_action( 'comment_form_before_fields' ); - } + echo apply_filters( 'comment_form_field_comment', $field ); - /** - * Filters a comment form field for display. - * - * The dynamic portion of the hook name, `$name`, refers to the name - * of the comment form field. - * - * Possible hook names include: - * - * - `comment_form_field_comment` - * - `comment_form_field_author` - * - `comment_form_field_email` - * - `comment_form_field_url` - * - `comment_form_field_cookies` - * - * @since 3.0.0 - * - * @param string $field The HTML-formatted output of the comment form field. - */ - echo apply_filters( "comment_form_field_{$name}", $field ) . "\n"; + echo $args['comment_notes_after']; + + } elseif ( ! is_user_logged_in() ) { + + if ( $first_field === $name ) { + /** + * Fires before the comment fields in the comment form, excluding the textarea. + * + * @since WP-3.0.0 + */ + do_action( 'comment_form_before_fields' ); + } - if ( $last_field === $name ) { /** - * Fires after the comment fields in the comment form, excluding the textarea. + * Filters a comment form field for display. + * + * The dynamic portion of the filter hook, `$name`, refers to the name + * of the comment form field. Such as 'author', 'email', or 'url'. * - * @since 3.0.0 + * @since WP-3.0.0 + * + * @param string $field The HTML-formatted output of the comment form field. */ - do_action( 'comment_form_after_fields' ); + echo apply_filters( "comment_form_field_{$name}", $field ) . "\n"; + + if ( $last_field === $name ) { + /** + * Fires after the comment fields in the comment form, excluding the textarea. + * + * @since WP-3.0.0 + */ + do_action( 'comment_form_after_fields' ); + } } } - } - - $submit_button = sprintf( - $args['submit_button'], - esc_attr( $args['name_submit'] ), - esc_attr( $args['id_submit'] ), - esc_attr( $args['class_submit'] ), - esc_attr( $args['label_submit'] ) - ); - - /** - * Filters the submit button for the comment form to display. - * - * @since 4.2.0 - * - * @param string $submit_button HTML markup for the submit button. - * @param array $args Arguments passed to comment_form(). - */ - $submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args ); - $submit_field = sprintf( - $args['submit_field'], - $submit_button, - get_comment_id_fields( $post_id ) - ); + $submit_button = sprintf( + $args['submit_button'], + esc_attr( $args['name_submit'] ), + esc_attr( $args['id_submit'] ), + esc_attr( $args['class_submit'] ), + esc_attr( $args['label_submit'] ) + ); - /** - * Filters the submit field for the comment form to display. - * - * The submit field includes the submit button, hidden fields for the - * comment form, and any wrapper markup. - * - * @since 4.2.0 - * - * @param string $submit_field HTML markup for the submit field. - * @param array $args Arguments passed to comment_form(). - */ - echo apply_filters( 'comment_form_submit_field', $submit_field, $args ); + /** + * Filters the submit button for the comment form to display. + * + * @since WP-4.2.0 + * + * @param string $submit_button HTML markup for the submit button. + * @param array $args Arguments passed to `comment_form()`. + */ + $submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args ); - /** - * Fires at the bottom of the comment form, inside the closing form tag. - * - * @since 1.5.0 - * - * @param int $post_id The post ID. - */ - do_action( 'comment_form', $post_id ); + $submit_field = sprintf( + $args['submit_field'], + $submit_button, + get_comment_id_fields( $post_id ) + ); - echo ''; + /** + * Filters the submit field for the comment form to display. + * + * The submit field includes the submit button, hidden fields for the + * comment form, and any wrapper markup. + * + * @since WP-4.2.0 + * + * @param string $submit_field HTML markup for the submit field. + * @param array $args Arguments passed to comment_form(). + */ + echo apply_filters( 'comment_form_submit_field', $submit_field, $args ); - endif; - ?> + /** + * Fires at the bottom of the comment form, inside the closing tag. + * + * @since WP-1.5.0 + * + * @param int $post_id The post ID. + */ + do_action( 'comment_form', $post_id ); + ?> + +
        ID ) ) { @@ -149,35 +149,29 @@ function check_comment( $author, $email, $url, $comment, $user_ip, $user_agent, } /** - * Retrieves the approved comments for a post. + * Retrieve the approved comments for post $post_id. * - * @since 2.0.0 - * @since 4.1.0 Refactored to leverage WP_Comment_Query over a direct query. + * @since WP-2.0.0 + * @since WP-4.1.0 Refactored to leverage WP_Comment_Query over a direct query. * - * @param int $post_id The ID of the post. - * @param array $args { - * Optional. See WP_Comment_Query::__construct() for information on accepted arguments. - * - * @type int $status Comment status to limit results by. Defaults to approved comments. - * @type int $post_id Limit results to those affiliated with a given post ID. - * @type string $order How to order retrieved comments. Default 'ASC'. - * } - * @return WP_Comment[]|int[]|int The approved comments, or number of comments if `$count` - * argument is true. + * @param int $post_id The ID of the post. + * @param array $args Optional. See WP_Comment_Query::__construct() for information on accepted arguments. + * @return int|array $comments The approved comments, or number of comments if `$count` + * argument is true. */ function get_approved_comments( $post_id, $args = array() ) { if ( ! $post_id ) { return array(); } - $defaults = array( + $defaults = array( 'status' => 1, 'post_id' => $post_id, 'order' => 'ASC', ); $parsed_args = wp_parse_args( $args, $defaults ); - $query = new WP_Comment_Query(); + $query = new WP_Comment_Query; return $query->query( $parsed_args ); } @@ -188,14 +182,13 @@ function get_approved_comments( $post_id, $args = array() ) { * after being passed through a filter. If the comment is empty, then the global * comment variable will be used, if it is set. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @global WP_Comment $comment Global comment object. + * @global WP_Comment $comment * * @param WP_Comment|string|int $comment Comment to retrieve. - * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which - * correspond to a WP_Comment object, an associative array, or a numeric array, - * respectively. Default OBJECT. + * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which correspond to + * a WP_Comment object, an associative array, or a numeric array, respectively. Default OBJECT. * @return WP_Comment|array|null Depends on $output value. */ function get_comment( $comment = null, $output = OBJECT ) { @@ -218,47 +211,47 @@ function get_comment( $comment = null, $output = OBJECT ) { /** * Fires after a comment is retrieved. * - * @since 2.3.0 + * @since WP-2.3.0 * - * @param WP_Comment $_comment Comment data. + * @param mixed $_comment Comment data. */ $_comment = apply_filters( 'get_comment', $_comment ); - if ( OBJECT === $output ) { + if ( OBJECT == $output ) { return $_comment; - } elseif ( ARRAY_A === $output ) { + } elseif ( ARRAY_A == $output ) { return $_comment->to_array(); - } elseif ( ARRAY_N === $output ) { + } elseif ( ARRAY_N == $output ) { return array_values( $_comment->to_array() ); } return $_comment; } /** - * Retrieves a list of comments. + * Retrieve a list of comments. * * The comment list can be for the blog as a whole or for an individual post. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param string|array $args Optional. Array or string of arguments. See WP_Comment_Query::__construct() - * for information on accepted arguments. Default empty string. - * @return WP_Comment[]|int[]|int List of comments or number of found comments if `$count` argument is true. + * for information on accepted arguments. Default empty. + * @return int|array List of comments or number of found comments if `$count` argument is true. */ function get_comments( $args = '' ) { - $query = new WP_Comment_Query(); + $query = new WP_Comment_Query; return $query->query( $args ); } /** - * Retrieves all of the WordPress supported comment statuses. + * Retrieve all of the ClassicPress supported comment statuses. * * Comments have a limited set of valid status values, this provides the comment * status values and descriptions. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @return string[] List of comment status labels keyed by status. + * @return array List of comment statuses. */ function get_comment_statuses() { $status = array( @@ -274,7 +267,7 @@ function get_comment_statuses() { /** * Gets the default comment status for a post type. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param string $post_type Optional. Post type. Default 'post'. * @param string $comment_type Optional. Comment type. Default 'comment'. @@ -290,7 +283,6 @@ function get_default_comment_status( $post_type = 'post', $comment_type = 'comme default: $supports = 'comments'; $option = 'comment'; - break; } // Set the status. @@ -305,7 +297,7 @@ function get_default_comment_status( $post_type = 'post', $comment_type = 'comme /** * Filters the default comment status for the given post type. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param string $status Default status for the given post type, * either 'open' or 'closed'. @@ -316,13 +308,13 @@ function get_default_comment_status( $post_type = 'post', $comment_type = 'comme } /** - * Retrieves the date the last comment was modified. + * The date the last comment was modified. * - * @since 1.5.0 - * @since 4.7.0 Replaced caching the modified date in a local static variable + * @since WP-1.5.0 + * @since WP-4.7.0 Replaced caching the modified date in a local static variable * with the Object Cache API. * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $timezone Which timezone to use in reference to 'gmt', 'blog', or 'server' locations. * @return string|false Last comment modified date on success, false on failure. @@ -346,7 +338,7 @@ function get_lastcommentmodified( $timezone = 'server' ) { $comment_modified_date = $wpdb->get_var( "SELECT comment_date FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1" ); break; case 'server': - $add_seconds_server = gmdate( 'Z' ); + $add_seconds_server = date( 'Z' ); $comment_modified_date = $wpdb->get_var( $wpdb->prepare( "SELECT DATE_ADD(comment_date_gmt, INTERVAL %s SECOND) FROM $wpdb->comments WHERE comment_approved = '1' ORDER BY comment_date_gmt DESC LIMIT 1", $add_seconds_server ) ); break; @@ -364,11 +356,15 @@ function get_lastcommentmodified( $timezone = 'server' ) { /** * Retrieves the total comment counts for the whole site or a single post. * - * @since 2.0.0 + * Unlike wp_count_comments(), this function always returns the live comment counts without caching. + * + * @since WP-2.0.0 + * + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $post_id Optional. Restrict the comment counts to the given post. Default 0, which indicates that * comment counts for the whole site will be retrieved. - * @return int[] { + * @return array() { * The number of comments keyed by their status. * * @type int $approved The number of approved comments. @@ -381,8 +377,25 @@ function get_lastcommentmodified( $timezone = 'server' ) { * } */ function get_comment_count( $post_id = 0 ) { + global $wpdb; + $post_id = (int) $post_id; + $where = ''; + if ( $post_id > 0 ) { + $where = $wpdb->prepare( 'WHERE comment_post_ID = %d', $post_id ); + } + + $totals = (array) $wpdb->get_results( + " + SELECT comment_approved, COUNT( * ) AS total + FROM {$wpdb->comments} + {$where} + GROUP BY comment_approved + ", + ARRAY_A + ); + $comment_count = array( 'approved' => 0, 'awaiting_moderation' => 0, @@ -393,148 +406,158 @@ function get_comment_count( $post_id = 0 ) { 'all' => 0, ); - $args = array( - 'count' => true, - 'update_comment_meta_cache' => false, - ); - if ( $post_id > 0 ) { - $args['post_id'] = $post_id; - } - $mapping = array( - 'approved' => 'approve', - 'awaiting_moderation' => 'hold', - 'spam' => 'spam', - 'trash' => 'trash', - 'post-trashed' => 'post-trashed', - ); - $comment_count = array(); - foreach ( $mapping as $key => $value ) { - $comment_count[ $key ] = get_comments( array_merge( $args, array( 'status' => $value ) ) ); + foreach ( $totals as $row ) { + switch ( $row['comment_approved'] ) { + case 'trash': + $comment_count['trash'] = $row['total']; + break; + case 'post-trashed': + $comment_count['post-trashed'] = $row['total']; + break; + case 'spam': + $comment_count['spam'] = $row['total']; + $comment_count['total_comments'] += $row['total']; + break; + case '1': + $comment_count['approved'] = $row['total']; + $comment_count['total_comments'] += $row['total']; + $comment_count['all'] += $row['total']; + break; + case '0': + $comment_count['awaiting_moderation'] = $row['total']; + $comment_count['total_comments'] += $row['total']; + $comment_count['all'] += $row['total']; + break; + default: + break; + } } - $comment_count['all'] = $comment_count['approved'] + $comment_count['awaiting_moderation']; - $comment_count['total_comments'] = $comment_count['all'] + $comment_count['spam']; - return array_map( 'intval', $comment_count ); } // -// Comment meta functions. +// Comment meta functions // /** - * Adds meta data field to a comment. - * - * @since 2.9.0 + * Add meta data field to a comment. * - * @link https://developer.wordpress.org/reference/functions/add_comment_meta/ + * @since WP-2.9.0 + * @link https://codex.wordpress.org/Function_Reference/add_comment_meta * - * @param int $comment_id Comment ID. - * @param string $meta_key Metadata name. - * @param mixed $meta_value Metadata value. Must be serializable if non-scalar. - * @param bool $unique Optional. Whether the same key should not be added. - * Default false. - * @return int|false Meta ID on success, false on failure. + * @param int $comment_id Comment ID. + * @param string $meta_key Metadata name. + * @param mixed $meta_value Metadata value. + * @param bool $unique Optional, default is false. Whether the same key should not be added. + * @return int|bool Meta ID on success, false on failure. */ function add_comment_meta( $comment_id, $meta_key, $meta_value, $unique = false ) { - return add_metadata( 'comment', $comment_id, $meta_key, $meta_value, $unique ); + $added = add_metadata( 'comment', $comment_id, $meta_key, $meta_value, $unique ); + if ( $added ) { + wp_cache_set( 'last_changed', microtime(), 'comment' ); + } + return $added; } /** - * Removes metadata matching criteria from a comment. + * Remove metadata matching criteria from a comment. * * You can match based on the key, or key and value. Removing based on key and * value, will keep from removing duplicate metadata with the same key. It also * allows removing all metadata matching key, if needed. * - * @since 2.9.0 + * @since WP-2.9.0 + * @link https://codex.wordpress.org/Function_Reference/delete_comment_meta * - * @link https://developer.wordpress.org/reference/functions/delete_comment_meta/ - * - * @param int $comment_id Comment ID. - * @param string $meta_key Metadata name. - * @param mixed $meta_value Optional. Metadata value. If provided, - * rows will only be removed that match the value. - * Must be serializable if non-scalar. Default empty string. + * @param int $comment_id comment ID + * @param string $meta_key Metadata name. + * @param mixed $meta_value Optional. Metadata value. * @return bool True on success, false on failure. */ function delete_comment_meta( $comment_id, $meta_key, $meta_value = '' ) { - return delete_metadata( 'comment', $comment_id, $meta_key, $meta_value ); + $deleted = delete_metadata( 'comment', $comment_id, $meta_key, $meta_value ); + if ( $deleted ) { + wp_cache_set( 'last_changed', microtime(), 'comment' ); + } + return $deleted; } /** - * Retrieves comment meta field for a comment. - * - * @since 2.9.0 + * Retrieve comment meta field for a comment. * - * @link https://developer.wordpress.org/reference/functions/get_comment_meta/ + * @since WP-2.9.0 + * @link https://codex.wordpress.org/Function_Reference/get_comment_meta * - * @param int $comment_id Comment ID. - * @param string $key Optional. The meta key to retrieve. By default, - * returns data for all keys. Default empty string. - * @param bool $single Optional. Whether to return a single value. - * This parameter has no effect if `$key` is not specified. - * Default false. - * @return mixed An array of values if `$single` is false. - * The value of meta data field if `$single` is true. - * False for an invalid `$comment_id` (non-numeric, zero, or negative value). - * An empty string if a valid but non-existing comment ID is passed. + * @param int $comment_id Comment ID. + * @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. */ function get_comment_meta( $comment_id, $key = '', $single = false ) { return get_metadata( 'comment', $comment_id, $key, $single ); } /** - * Queue comment meta for lazy-loading. + * Update comment meta field based on comment ID. * - * @since 6.3.0 + * Use the $prev_value parameter to differentiate between meta fields with the + * same key and comment ID. + * + * If the meta field for the comment does not exist, it will be added. + * + * @since WP-2.9.0 + * @link https://codex.wordpress.org/Function_Reference/update_comment_meta * - * @param array $comment_ids List of comment IDs. + * @param int $comment_id Comment ID. + * @param string $meta_key Metadata key. + * @param mixed $meta_value Metadata value. + * @param mixed $prev_value Optional. Previous value to check before removing. + * @return int|bool Meta ID if the key didn't exist, true on successful update, false on failure. */ -function wp_lazyload_comment_meta( array $comment_ids ) { - if ( empty( $comment_ids ) ) { - return; +function update_comment_meta( $comment_id, $meta_key, $meta_value, $prev_value = '' ) { + $updated = update_metadata( 'comment', $comment_id, $meta_key, $meta_value, $prev_value ); + if ( $updated ) { + wp_cache_set( 'last_changed', microtime(), 'comment' ); } - $lazyloader = wp_metadata_lazyloader(); - $lazyloader->queue_objects( 'comment', $comment_ids ); + return $updated; } /** - * Updates comment meta field based on comment ID. + * Queues comments for metadata lazy-loading. * - * Use the $prev_value parameter to differentiate between meta fields with the - * same key and comment ID. + * @since WP-4.5.0 * - * If the meta field for the comment does not exist, it will be added. - * - * @since 2.9.0 - * - * @link https://developer.wordpress.org/reference/functions/update_comment_meta/ - * - * @param int $comment_id Comment ID. - * @param string $meta_key Metadata key. - * @param mixed $meta_value Metadata value. Must be serializable if non-scalar. - * @param mixed $prev_value Optional. Previous value to check before updating. - * If specified, only update existing metadata entries with - * this value. Otherwise, update all entries. Default empty string. - * @return int|bool Meta ID if the key didn't exist, true on successful update, - * false on failure or if the value passed to the function - * is the same as the one that is already in the database. + * @param array $comments Array of comment objects. */ -function update_comment_meta( $comment_id, $meta_key, $meta_value, $prev_value = '' ) { - return update_metadata( 'comment', $comment_id, $meta_key, $meta_value, $prev_value ); +function wp_queue_comments_for_comment_meta_lazyload( $comments ) { + // Don't use `wp_list_pluck()` to avoid by-reference manipulation. + $comment_ids = array(); + if ( is_array( $comments ) ) { + foreach ( $comments as $comment ) { + if ( $comment instanceof WP_Comment ) { + $comment_ids[] = $comment->comment_ID; + } + } + } + + if ( $comment_ids ) { + $lazyloader = wp_metadata_lazyloader(); + $lazyloader->queue_objects( 'comment', $comment_ids ); + } } /** * 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. * - * @since 3.4.0 - * @since 4.9.6 The `$cookies_consent` parameter was added. + * @since WP-3.4.0 + * @since WP-4.9.6 The `$cookies_consent` parameter was added. * * @param WP_Comment $comment Comment object. * @param WP_User $user Comment author's user object. The user may not exist. - * @param bool $cookies_consent Optional. Comment author's consent to store cookies. Default true. + * @param boolean $cookies_consent Optional. Comment author's consent to store cookies. Default true. */ function wp_set_comment_cookies( $comment, $user, $cookies_consent = true ) { // If the user already exists, or the user opted out of cookies, don't set cookies. @@ -555,14 +578,12 @@ function wp_set_comment_cookies( $comment, $user, $cookies_consent = true ) { /** * Filters the lifetime of the comment cookie in seconds. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param int $seconds Comment cookie lifetime. Default 30000000. */ $comment_cookie_lifetime = time() + apply_filters( 'comment_cookie_lifetime', 30000000 ); - - $secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) ); - + $secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) ); setcookie( 'comment_author_' . COOKIEHASH, $comment->comment_author, $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure ); setcookie( 'comment_author_email_' . COOKIEHASH, $comment->comment_author_email, $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure ); setcookie( 'comment_author_url_' . COOKIEHASH, esc_url( $comment->comment_author_url ), $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure ); @@ -574,7 +595,7 @@ function wp_set_comment_cookies( $comment, $user, $cookies_consent = true ) { * Will only do anything if the cookies have already been created for the user. * Mostly used after cookies had been sent to use elsewhere. * - * @since 2.0.4 + * @since WP-2.0.4 */ function sanitize_comment_cookies() { if ( isset( $_COOKIE[ 'comment_author_' . COOKIEHASH ] ) ) { @@ -584,14 +605,13 @@ function sanitize_comment_cookies() { * When this filter hook is evaluated in wp_filter_comment(), * the comment author's name string is passed. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $author_cookie The comment author name cookie. */ - $comment_author = apply_filters( 'pre_comment_author_name', $_COOKIE[ 'comment_author_' . COOKIEHASH ] ); - $comment_author = wp_unslash( $comment_author ); - $comment_author = esc_attr( $comment_author ); - + $comment_author = apply_filters( 'pre_comment_author_name', $_COOKIE[ 'comment_author_' . COOKIEHASH ] ); + $comment_author = wp_unslash( $comment_author ); + $comment_author = esc_attr( $comment_author ); $_COOKIE[ 'comment_author_' . COOKIEHASH ] = $comment_author; } @@ -602,14 +622,13 @@ function sanitize_comment_cookies() { * When this filter hook is evaluated in wp_filter_comment(), * the comment author's email string is passed. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $author_email_cookie The comment author email cookie. */ - $comment_author_email = apply_filters( 'pre_comment_author_email', $_COOKIE[ 'comment_author_email_' . COOKIEHASH ] ); - $comment_author_email = wp_unslash( $comment_author_email ); - $comment_author_email = esc_attr( $comment_author_email ); - + $comment_author_email = apply_filters( 'pre_comment_author_email', $_COOKIE[ 'comment_author_email_' . COOKIEHASH ] ); + $comment_author_email = wp_unslash( $comment_author_email ); + $comment_author_email = esc_attr( $comment_author_email ); $_COOKIE[ 'comment_author_email_' . COOKIEHASH ] = $comment_author_email; } @@ -620,13 +639,12 @@ function sanitize_comment_cookies() { * When this filter hook is evaluated in wp_filter_comment(), * the comment author's URL string is passed. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $author_url_cookie The comment author URL cookie. */ - $comment_author_url = apply_filters( 'pre_comment_author_url', $_COOKIE[ 'comment_author_url_' . COOKIEHASH ] ); - $comment_author_url = wp_unslash( $comment_author_url ); - + $comment_author_url = apply_filters( 'pre_comment_author_url', $_COOKIE[ 'comment_author_url_' . COOKIEHASH ] ); + $comment_author_url = wp_unslash( $comment_author_url ); $_COOKIE[ 'comment_author_url_' . COOKIEHASH ] = $comment_author_url; } } @@ -634,24 +652,23 @@ function sanitize_comment_cookies() { /** * Validates whether this comment is allowed to be made. * - * @since 2.0.0 - * @since 4.7.0 The `$avoid_die` parameter was added, allowing the function - * to return a WP_Error object instead of dying. - * @since 5.5.0 The `$avoid_die` parameter was renamed to `$wp_error`. + * @since WP-2.0.0 + * @since WP-4.7.0 The `$avoid_die` parameter was added, allowing the function to + * return a WP_Error object instead of dying. * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param array $commentdata Contains information on the comment. - * @param bool $wp_error When true, a disallowed comment will result in the function + * @param bool $avoid_die When true, a disallowed comment will result in the function * returning a WP_Error object, rather than executing wp_die(). * Default false. - * @return int|string|WP_Error Allowed comments return the approval status (0|1|'spam'|'trash'). - * If `$wp_error` is true, disallowed comments return a WP_Error. + * @return int|string|WP_Error Allowed comments return the approval status (0|1|'spam'). + * If `$avoid_die` is true, disallowed comments return a WP_Error. */ -function wp_allow_comment( $commentdata, $wp_error = false ) { +function wp_allow_comment( $commentdata, $avoid_die = false ) { global $wpdb; - // Simple duplicate check. + // Simple duplicate check // expected_slashed ($comment_post_ID, $comment_author, $comment_author_email, $comment_content) $dupe = $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = %s AND comment_approved != 'trash' AND ( comment_author = %s ", @@ -677,7 +694,7 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { * * Return an empty value from this filter to allow what WP considers a duplicate comment. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $dupe_id ID of the comment identified as a duplicate. * @param array $commentdata Data for the comment being created. @@ -688,29 +705,19 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { /** * Fires immediately after a duplicate comment is detected. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param array $commentdata Comment data. */ do_action( 'comment_duplicate_trigger', $commentdata ); - - /** - * Filters duplicate comment error message. - * - * @since 5.2.0 - * - * @param string $comment_duplicate_message Duplicate comment error message. - */ - $comment_duplicate_message = apply_filters( 'comment_duplicate_message', __( 'Duplicate comment detected; it looks as though you’ve already said that!' ) ); - - if ( $wp_error ) { - return new WP_Error( 'comment_duplicate', $comment_duplicate_message, 409 ); + if ( true === $avoid_die ) { + return new WP_Error( 'comment_duplicate', __( 'Duplicate comment detected; it looks as though you’ve already said that!' ), 409 ); } else { if ( wp_doing_ajax() ) { - die( $comment_duplicate_message ); + die( __( 'Duplicate comment detected; it looks as though you’ve already said that!' ) ); } - wp_die( $comment_duplicate_message, 409 ); + wp_die( __( 'Duplicate comment detected; it looks as though you’ve already said that!' ), 409 ); } } @@ -719,22 +726,21 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { * * Allows checking for comment flooding. * - * @since 2.3.0 - * @since 4.7.0 The `$avoid_die` parameter was added. - * @since 5.5.0 The `$avoid_die` parameter was renamed to `$wp_error`. + * @since WP-2.3.0 + * @since WP-4.7.0 The `$avoid_die` parameter was added. * - * @param string $comment_author_ip Comment author's IP address. + * @param string $comment_author_IP Comment author's IP address. * @param string $comment_author_email Comment author's email. * @param string $comment_date_gmt GMT date the comment was posted. - * @param bool $wp_error Whether to return a WP_Error object instead of executing - * wp_die() or die() if a comment flood is occurring. + * @param bool $avoid_die Whether to prevent executing wp_die() + * or die() if a comment flood is occurring. */ do_action( 'check_comment_flood', $commentdata['comment_author_IP'], $commentdata['comment_author_email'], $commentdata['comment_date_gmt'], - $wp_error + $avoid_die ); /** @@ -742,15 +748,14 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { * * The default check is wp_check_comment_flood(). See check_comment_flood_db(). * - * @since 4.7.0 - * @since 5.5.0 The `$avoid_die` parameter was renamed to `$wp_error`. + * @since WP-4.7.0 * * @param bool $is_flood Is a comment flooding occurring? Default false. - * @param string $comment_author_ip Comment author's IP address. + * @param string $comment_author_IP Comment author's IP address. * @param string $comment_author_email Comment author's email. * @param string $comment_date_gmt GMT date the comment was posted. - * @param bool $wp_error Whether to return a WP_Error object instead of executing - * wp_die() or die() if a comment flood is occurring. + * @param bool $avoid_die Whether to prevent executing wp_die() + * or die() if a comment flood is occurring. */ $is_flood = apply_filters( 'wp_is_comment_flood', @@ -758,14 +763,11 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { $commentdata['comment_author_IP'], $commentdata['comment_author_email'], $commentdata['comment_date_gmt'], - $wp_error + $avoid_die ); if ( $is_flood ) { - /** This filter is documented in wp-includes/comment-template.php */ - $comment_flood_message = apply_filters( 'comment_flood_message', __( 'You are posting comments too quickly. Slow down.' ) ); - - return new WP_Error( 'comment_flood', $comment_flood_message, 429 ); + return new WP_Error( 'comment_flood', __( 'You are posting comments too quickly. Slow down.' ), 429 ); } if ( ! empty( $commentdata['user_id'] ) ) { @@ -797,7 +799,7 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { $approved = 0; } - if ( wp_check_comment_disallowed_list( + if ( wp_blacklist_check( $commentdata['comment_author'], $commentdata['comment_author_email'], $commentdata['comment_author_url'], @@ -812,15 +814,15 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { /** * Filters a comment's approval status before it is set. * - * @since 2.1.0 - * @since 4.9.0 Returning a WP_Error value from the filter will short-circuit comment insertion - * and allow skipping further processing. + * @since WP-2.1.0 + * @since WP-4.9.0 Returning a WP_Error value from the filter will shortcircuit comment insertion and + * allow skipping further processing. * - * @param int|string|WP_Error $approved The approval status. Accepts 1, 0, 'spam', 'trash', - * or WP_Error. - * @param array $commentdata Comment data. + * @param bool|string|WP_Error $approved The approval status. Accepts 1, 0, 'spam' or WP_Error. + * @param array $commentdata Comment data. */ - return apply_filters( 'pre_comment_approved', $approved, $commentdata ); + $approved = apply_filters( 'pre_comment_approved', $approved, $commentdata ); + return $approved; } /** @@ -830,8 +832,8 @@ function wp_allow_comment( $commentdata, $wp_error = false ) { * be able to unhook the legacy check_comment_flood_db() function from * 'check_comment_flood' using remove_action(). * - * @since 2.3.0 - * @since 4.7.0 Converted to be an add_filter() wrapper. + * @since WP-2.3.0 + * @since WP-4.7.0 Converted to be an add_filter() wrapper. */ function check_comment_flood_db() { add_filter( 'wp_is_comment_flood', 'wp_check_comment_flood', 10, 5 ); @@ -843,19 +845,21 @@ function check_comment_flood_db() { * Won't run, if current user can manage options, so to not block * administrators. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param bool $is_flood Is a comment flooding occurring? * @param string $ip Comment author's IP address. * @param string $email Comment author's email address. * @param string $date MySQL time string. * @param bool $avoid_die When true, a disallowed comment will result in the function - * returning without executing wp_die() or die(). Default false. + * returning a WP_Error object, rather than executing wp_die(). + * Default false. * @return bool Whether comment flooding is occurring. */ function wp_check_comment_flood( $is_flood, $ip, $email, $date, $avoid_die = false ) { + global $wpdb; // Another callback has declared a flood. Trust it. @@ -863,11 +867,10 @@ function wp_check_comment_flood( $is_flood, $ip, $email, $date, $avoid_die = fal return $is_flood; } - // Don't throttle admins or moderators. + // don't throttle admins or moderators if ( current_user_can( 'manage_options' ) || current_user_can( 'moderate_comments' ) ) { return false; } - $hour_ago = gmdate( 'Y-m-d H:i:s', time() - HOUR_IN_SECONDS ); if ( is_user_logged_in() ) { @@ -878,58 +881,44 @@ function wp_check_comment_flood( $is_flood, $ip, $email, $date, $avoid_die = fal $check_column = '`comment_author_IP`'; } - $sql = $wpdb->prepare( + $sql = $wpdb->prepare( "SELECT `comment_date_gmt` FROM `$wpdb->comments` WHERE `comment_date_gmt` >= %s AND ( $check_column = %s OR `comment_author_email` = %s ) ORDER BY `comment_date_gmt` DESC LIMIT 1", $hour_ago, $user, $email ); - $lasttime = $wpdb->get_var( $sql ); - if ( $lasttime ) { $time_lastcomment = mysql2date( 'U', $lasttime, false ); $time_newcomment = mysql2date( 'U', $date, false ); - /** * Filters the comment flood status. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param bool $bool Whether a comment flood is occurring. Default false. * @param int $time_lastcomment Timestamp of when the last comment was posted. * @param int $time_newcomment Timestamp of when the new comment was posted. */ $flood_die = apply_filters( 'comment_flood_filter', false, $time_lastcomment, $time_newcomment ); - if ( $flood_die ) { /** * Fires before the comment flood message is triggered. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param int $time_lastcomment Timestamp of when the last comment was posted. * @param int $time_newcomment Timestamp of when the new comment was posted. */ do_action( 'comment_flood_trigger', $time_lastcomment, $time_newcomment ); - - if ( $avoid_die ) { + if ( true === $avoid_die ) { return true; } else { - /** - * Filters the comment flood error message. - * - * @since 5.2.0 - * - * @param string $comment_flood_message Comment flood error message. - */ - $comment_flood_message = apply_filters( 'comment_flood_message', __( 'You are posting comments too quickly. Slow down.' ) ); - if ( wp_doing_ajax() ) { - die( $comment_flood_message ); + die( __( 'You are posting comments too quickly. Slow down.' ) ); } - wp_die( $comment_flood_message, 429 ); + wp_die( __( 'You are posting comments too quickly. Slow down.' ), 429 ); } } } @@ -940,10 +929,10 @@ function wp_check_comment_flood( $is_flood, $ip, $email, $date, $avoid_die = fal /** * Separates an array of comments into an array keyed by comment_type. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param WP_Comment[] $comments Array of comments - * @return WP_Comment[] Array of comments keyed by comment_type. + * @param array $comments Array of comments + * @return array Array of comments keyed by comment_type. */ function separate_comments( &$comments ) { $comments_by_type = array( @@ -953,7 +942,7 @@ function separate_comments( &$comments ) { 'pings' => array(), ); - $count = count( $comments ); + $count = count( $comments ); for ( $i = 0; $i < $count; $i++ ) { $type = $comments[ $i ]->comment_type; @@ -973,19 +962,17 @@ function separate_comments( &$comments ) { } /** - * Calculates the total number of comment pages. + * Calculate the total number of comment pages. * - * @since 2.7.0 + * @since WP-2.7.0 * * @uses Walker_Comment * - * @global WP_Query $wp_query WordPress Query object. + * @global WP_Query $wp_query * - * @param WP_Comment[] $comments Optional. Array of WP_Comment objects. Defaults to `$wp_query->comments`. - * @param int $per_page Optional. Comments per page. Defaults to the value of `comments_per_page` - * query var, option of the same name, or 1 (in that order). - * @param bool $threaded Optional. Control over flat or threaded comments. Defaults to the value - * of `thread_comments` option. + * @param array $comments Optional array of WP_Comment objects. Defaults to $wp_query->comments + * @param int $per_page Optional comments per page. + * @param bool $threaded Optional control over flat or threaded comments. * @return int Number of comment pages. */ function get_comment_pages_count( $comments = null, $per_page = null, $threaded = null ) { @@ -1022,7 +1009,7 @@ function get_comment_pages_count( $comments = null, $per_page = null, $threaded } if ( $threaded ) { - $walker = new Walker_Comment(); + $walker = new Walker_Comment; $count = ceil( $walker->get_number_of_root_elements( $comments ) / $per_page ); } else { $count = ceil( count( $comments ) / $per_page ); @@ -1032,33 +1019,32 @@ function get_comment_pages_count( $comments = null, $per_page = null, $threaded } /** - * Calculates what page number a comment will appear on for comment paging. + * Calculate what page number a comment will appear on for comment paging. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param int $comment_id Comment ID. + * @param int $comment_ID Comment ID. * @param array $args { - * Array of optional arguments. - * - * @type string $type Limit paginated comments to those matching a given type. - * Accepts 'comment', 'trackback', 'pingback', 'pings' - * (trackbacks and pingbacks), or 'all'. Default 'all'. - * @type int $per_page Per-page count to use when calculating pagination. - * Defaults to the value of the 'comments_per_page' option. - * @type int|string $max_depth If greater than 1, comment page will be determined - * for the top-level parent `$comment_id`. - * Defaults to the value of the 'thread_comments_depth' option. + * Array of optional arguments. + * @type string $type Limit paginated comments to those matching a given type. + * Accepts 'comment', 'trackback', 'pingback', 'pings' + * (trackbacks and pingbacks), or 'all'. Default 'all'. + * @type int $per_page Per-page count to use when calculating pagination. + * Defaults to the value of the 'comments_per_page' option. + * @type int|string $max_depth If greater than 1, comment page will be determined + * for the top-level parent `$comment_ID`. + * Defaults to the value of the 'thread_comments_depth' option. * } * * @return int|null Comment page number or null on error. */ -function get_page_of_comment( $comment_id, $args = array() ) { +function get_page_of_comment( $comment_ID, $args = array() ) { global $wpdb; $page = null; - $comment = get_comment( $comment_id ); + $comment = get_comment( $comment_ID ); if ( ! $comment ) { return; } @@ -1101,7 +1087,7 @@ function get_page_of_comment( $comment_id, $args = array() ) { } } - // Find this comment's top-level parent if threading is enabled. + // Find this comment's top level parent if threading is enabled if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent ) { return get_page_of_comment( $comment->comment_parent, $args ); } @@ -1124,17 +1110,17 @@ function get_page_of_comment( $comment_id, $args = array() ) { if ( is_user_logged_in() ) { $comment_args['include_unapproved'] = array( get_current_user_id() ); } else { - $unapproved_email = wp_get_unapproved_comment_author_email(); - - if ( $unapproved_email ) { - $comment_args['include_unapproved'] = array( $unapproved_email ); + $commenter = wp_get_current_commenter(); + $commenter_email = $commenter['comment_author_email']; + if ( ! empty( $commenter_email ) ) { + $comment_args['include_unapproved'] = array( $commenter_email ); } } /** * Filters the arguments used to query comments in get_page_of_comment(). * - * @since 5.5.0 + * @since WP-5.5.0 * * @see WP_Comment_Query::__construct() * @@ -1164,7 +1150,7 @@ function get_page_of_comment( $comment_id, $args = array() ) { if ( 0 == $older_comment_count ) { $page = 1; - // Divide comments older than this one by comments per page to get this comment's page number. + // Divide comments older than this one by comments per page to get this comment's page number } else { $page = ceil( ( $older_comment_count + 1 ) / $args['per_page'] ); } @@ -1173,8 +1159,8 @@ function get_page_of_comment( $comment_id, $args = array() ) { /** * Filters the calculated page on which a comment appears. * - * @since 4.4.0 - * @since 4.7.0 Introduced the `$comment_id` parameter. + * @since WP-4.4.0 + * @since WP-4.7.0 Introduced the `$comment_ID` parameter. * * @param int $page Comment page. * @param array $args { @@ -1195,19 +1181,19 @@ function get_page_of_comment( $comment_id, $args = array() ) { * @type int $per_page Number of comments per page. * @type int $max_depth Maximum comment threading depth allowed. * } - * @param int $comment_id ID of the comment. + * @param int $comment_ID ID of the comment. */ - return apply_filters( 'get_page_of_comment', (int) $page, $args, $original_args, $comment_id ); + return apply_filters( 'get_page_of_comment', (int) $page, $args, $original_args, $comment_ID ); } /** * Retrieves the maximum character lengths for the comment form fields. * - * @since 4.5.0 + * @since WP-4.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @return int[] Array of maximum lengths keyed by field name. + * @return array Maximum character length for the comment form fields. */ function wp_get_comment_fields_max_lengths() { global $wpdb; @@ -1224,14 +1210,14 @@ function wp_get_comment_fields_max_lengths() { $col_length = $wpdb->get_col_length( $wpdb->comments, $column ); $max_length = 0; - // No point if we can't get the DB column lengths. + // No point if we can't get the DB column lengths if ( is_wp_error( $col_length ) ) { break; } if ( ! is_array( $col_length ) && (int) $col_length > 0 ) { $max_length = (int) $col_length; - } elseif ( is_array( $col_length ) && isset( $col_length['length'] ) && (int) $col_length['length'] > 0 ) { + } elseif ( is_array( $col_length ) && isset( $col_length['length'] ) && intval( $col_length['length'] ) > 0 ) { $max_length = (int) $col_length['length']; if ( ! empty( $col_length['type'] ) && 'byte' === $col_length['type'] ) { @@ -1248,9 +1234,9 @@ function wp_get_comment_fields_max_lengths() { /** * Filters the lengths for the comment form fields. * - * @since 4.5.0 + * @since WP-4.5.0 * - * @param int[] $lengths Array of maximum lengths keyed by field name. + * @param array $lengths Associative array `'field_name' => 'maximum length'`. */ return apply_filters( 'wp_get_comment_fields_max_lengths', $lengths ); } @@ -1258,7 +1244,7 @@ function wp_get_comment_fields_max_lengths() { /** * Compares the lengths of comment data against the maximum character limits. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param array $comment_data Array of arguments for inserting a comment. * @return WP_Error|true WP_Error when a comment field exceeds the limit, @@ -1268,28 +1254,28 @@ function wp_check_comment_data_max_lengths( $comment_data ) { $max_lengths = wp_get_comment_fields_max_lengths(); if ( isset( $comment_data['comment_author'] ) && mb_strlen( $comment_data['comment_author'], '8bit' ) > $max_lengths['comment_author'] ) { - return new WP_Error( 'comment_author_column_length', __( 'Error: Your name is too long.' ), 200 ); + return new WP_Error( 'comment_author_column_length', __( 'ERROR: your name is too long.' ), 200 ); } if ( isset( $comment_data['comment_author_email'] ) && strlen( $comment_data['comment_author_email'] ) > $max_lengths['comment_author_email'] ) { - return new WP_Error( 'comment_author_email_column_length', __( 'Error: Your email address is too long.' ), 200 ); + return new WP_Error( 'comment_author_email_column_length', __( 'ERROR: your email address is too long.' ), 200 ); } if ( isset( $comment_data['comment_author_url'] ) && strlen( $comment_data['comment_author_url'] ) > $max_lengths['comment_author_url'] ) { - return new WP_Error( 'comment_author_url_column_length', __( 'Error: Your URL is too long.' ), 200 ); + return new WP_Error( 'comment_author_url_column_length', __( 'ERROR: your url is too long.' ), 200 ); } if ( isset( $comment_data['comment_content'] ) && mb_strlen( $comment_data['comment_content'], '8bit' ) > $max_lengths['comment_content'] ) { - return new WP_Error( 'comment_content_column_length', __( 'Error: Your comment is too long.' ), 200 ); + return new WP_Error( 'comment_content_column_length', __( 'ERROR: your comment is too long.' ), 200 ); } return true; } /** - * Checks if a comment contains disallowed characters or words. + * Does comment contain blacklisted characters or words. * - * @since 5.5.0 + * @since WP-1.5.0 * * @param string $author The author of the comment * @param string $email The email of the comment @@ -1297,34 +1283,13 @@ function wp_check_comment_data_max_lengths( $comment_data ) { * @param string $comment The comment content * @param string $user_ip The comment author's IP address * @param string $user_agent The author's browser user agent - * @return bool True if comment contains disallowed content, false if comment does not + * @return bool True if comment contains blacklisted content, false if comment does not */ -function wp_check_comment_disallowed_list( $author, $email, $url, $comment, $user_ip, $user_agent ) { - /** - * Fires before the comment is tested for disallowed characters or words. - * - * @since 1.5.0 - * @deprecated 5.5.0 Use {@see 'wp_check_comment_disallowed_list'} instead. - * - * @param string $author Comment author. - * @param string $email Comment author's email. - * @param string $url Comment author's URL. - * @param string $comment Comment content. - * @param string $user_ip Comment author's IP address. - * @param string $user_agent Comment author's browser user agent. - */ - do_action_deprecated( - 'wp_blacklist_check', - array( $author, $email, $url, $comment, $user_ip, $user_agent ), - '5.5.0', - 'wp_check_comment_disallowed_list', - __( 'Please consider writing more inclusive code.' ) - ); - +function wp_blacklist_check( $author, $email, $url, $comment, $user_ip, $user_agent ) { /** - * Fires before the comment is tested for disallowed characters or words. + * Fires before the comment is tested for blacklisted characters or words. * - * @since 5.5.0 + * @since WP-1.5.0 * * @param string $author Comment author. * @param string $email Comment author's email. @@ -1333,14 +1298,14 @@ function wp_check_comment_disallowed_list( $author, $email, $url, $comment, $use * @param string $user_ip Comment author's IP address. * @param string $user_agent Comment author's browser user agent. */ - do_action( 'wp_check_comment_disallowed_list', $author, $email, $url, $comment, $user_ip, $user_agent ); + do_action( 'wp_blacklist_check', $author, $email, $url, $comment, $user_ip, $user_agent ); - $mod_keys = trim( get_option( 'disallowed_keys' ) ); + $mod_keys = trim( get_option( 'blacklist_keys' ) ); if ( '' === $mod_keys ) { return false; // If moderation keys are empty. } - // Ensure HTML tags are not being used to bypass the list of disallowed characters and words. + // Ensure HTML tags are not being used to bypass the blacklist. $comment_without_html = wp_strip_all_tags( $comment ); $words = explode( "\n", $mod_keys ); @@ -1348,23 +1313,25 @@ function wp_check_comment_disallowed_list( $author, $email, $url, $comment, $use foreach ( (array) $words as $word ) { $word = trim( $word ); - // Skip empty lines. + // Skip empty lines if ( empty( $word ) ) { - continue; } + continue; + } - // Do some escaping magic so that '#' chars - // in the spam words don't break things: + // Do some escaping magic so that '#' chars in the + // spam words don't break things: $word = preg_quote( $word, '#' ); - $pattern = "#$word#iu"; - if ( preg_match( $pattern, $author ) + $pattern = "#$word#i"; + if ( + preg_match( $pattern, $author ) || preg_match( $pattern, $email ) || preg_match( $pattern, $url ) || preg_match( $pattern, $comment ) || preg_match( $pattern, $comment_without_html ) || preg_match( $pattern, $user_ip ) || preg_match( $pattern, $user_agent ) - ) { + ) { return true; } } @@ -1379,7 +1346,7 @@ function wp_check_comment_disallowed_list( $author, $email, $url, $comment, $use * * @see get_comment_count() Which handles fetching the live comment counts. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $post_id Optional. Restrict the comment counts to the given post. Default 0, which indicates that * comment counts for the whole site will be retrieved. @@ -1401,7 +1368,7 @@ function wp_count_comments( $post_id = 0 ) { /** * Filters the comments count for a given post or the whole site. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param array|stdClass $count An empty array or an object containing comment counts. * @param int $post_id The post ID. Can be 0 to represent the whole site. @@ -1429,23 +1396,22 @@ function wp_count_comments( $post_id = 0 ) { /** * Trashes or deletes a comment. * - * The comment is moved to Trash instead of permanently deleted unless Trash is - * disabled, item is already in the Trash, or $force_delete is true. + * The comment is moved to trash instead of permanently deleted unless trash is + * disabled, item is already in the trash, or $force_delete is true. * * The post comment count will be updated if the comment was approved and has a * post ID available. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. - * @param bool $force_delete Whether to bypass Trash and force deletion. Default false. + * @param bool $force_delete Whether to bypass trash and force deletion. Default is false. * @return bool True on success, false on failure. */ function wp_delete_comment( $comment_id, $force_delete = false ) { global $wpdb; - $comment = get_comment( $comment_id ); if ( ! $comment ) { return false; @@ -1458,10 +1424,10 @@ function wp_delete_comment( $comment_id, $force_delete = false ) { /** * Fires immediately before a comment is deleted from the database. * - * @since 1.2.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-1.2.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The comment to be deleted. */ do_action( 'delete_comment', $comment->comment_ID, $comment ); @@ -1473,7 +1439,7 @@ function wp_delete_comment( $comment_id, $force_delete = false ) { clean_comment_cache( $children ); } - // Delete metadata. + // Delete metadata $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment->comment_ID ) ); foreach ( $meta_ids as $mid ) { delete_metadata_by_mid( 'comment', $mid ); @@ -1486,10 +1452,10 @@ function wp_delete_comment( $comment_id, $force_delete = false ) { /** * Fires immediately after a comment is deleted from the database. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The deleted comment. */ do_action( 'deleted_comment', $comment->comment_ID, $comment ); @@ -1505,16 +1471,15 @@ function wp_delete_comment( $comment_id, $force_delete = false ) { do_action( 'wp_set_comment_status', $comment->comment_ID, 'delete' ); wp_transition_comment_status( 'delete', $comment->comment_approved, $comment ); - return true; } /** * Moves a comment to the Trash * - * If Trash is disabled, comment is permanently deleted. + * If trash is disabled, comment is permanently deleted. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. * @return bool True on success, false on failure. @@ -1532,10 +1497,10 @@ function wp_trash_comment( $comment_id ) { /** * Fires immediately before a comment is sent to the Trash. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The comment to be trashed. */ do_action( 'trash_comment', $comment->comment_ID, $comment ); @@ -1549,14 +1514,13 @@ function wp_trash_comment( $comment_id ) { /** * Fires immediately after a comment is sent to Trash. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The trashed comment. */ do_action( 'trashed_comment', $comment->comment_ID, $comment ); - return true; } @@ -1566,7 +1530,7 @@ function wp_trash_comment( $comment_id ) { /** * Removes a comment from the Trash * - * @since 2.9.0 + * @since WP-2.9.0 * * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. * @return bool True on success, false on failure. @@ -1580,10 +1544,10 @@ function wp_untrash_comment( $comment_id ) { /** * Fires immediately before a comment is restored from the Trash. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The comment to be untrashed. */ do_action( 'untrash_comment', $comment->comment_ID, $comment ); @@ -1596,18 +1560,16 @@ function wp_untrash_comment( $comment_id ) { if ( wp_set_comment_status( $comment, $status ) ) { delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_time' ); delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_status' ); - /** * Fires immediately after a comment is restored from the Trash. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The untrashed comment. */ do_action( 'untrashed_comment', $comment->comment_ID, $comment ); - return true; } @@ -1615,9 +1577,9 @@ function wp_untrash_comment( $comment_id ) { } /** - * Marks a comment as Spam. + * Marks a comment as Spam * - * @since 2.9.0 + * @since WP-2.9.0 * * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. * @return bool True on success, false on failure. @@ -1631,8 +1593,8 @@ function wp_spam_comment( $comment_id ) { /** * Fires immediately before a comment is marked as Spam. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * * @param int $comment_id The comment ID. * @param WP_Comment $comment The comment to be marked as spam. @@ -1644,18 +1606,16 @@ function wp_spam_comment( $comment_id ) { delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_time' ); add_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', $comment->comment_approved ); add_comment_meta( $comment->comment_ID, '_wp_trash_meta_time', time() ); - /** * Fires immediately after a comment is marked as Spam. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * * @param int $comment_id The comment ID. * @param WP_Comment $comment The comment marked as spam. */ do_action( 'spammed_comment', $comment->comment_ID, $comment ); - return true; } @@ -1663,9 +1623,9 @@ function wp_spam_comment( $comment_id ) { } /** - * Removes a comment from the Spam. + * Removes a comment from the Spam * - * @since 2.9.0 + * @since WP-2.9.0 * * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. * @return bool True on success, false on failure. @@ -1679,10 +1639,10 @@ function wp_unspam_comment( $comment_id ) { /** * Fires immediately before a comment is unmarked as Spam. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The comment to be unmarked as spam. */ do_action( 'unspam_comment', $comment->comment_ID, $comment ); @@ -1695,18 +1655,16 @@ function wp_unspam_comment( $comment_id ) { if ( wp_set_comment_status( $comment, $status ) ) { delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_status' ); delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_time' ); - /** * Fires immediately after a comment is unmarked as Spam. * - * @since 2.9.0 - * @since 4.9.0 Added the `$comment` parameter. + * @since WP-2.9.0 + * @since WP-4.9.0 Added the `$comment` parameter. * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_id The comment ID. * @param WP_Comment $comment The comment unmarked as spam. */ do_action( 'unspammed_comment', $comment->comment_ID, $comment ); - return true; } @@ -1714,12 +1672,12 @@ function wp_unspam_comment( $comment_id ) { } /** - * Retrieves the status of a comment by comment ID. + * The status of a comment by ID. * - * @since 1.0.0 + * @since WP-1.0.0 * * @param int|WP_Comment $comment_id Comment ID or WP_Comment object - * @return string|false Status might be 'trash', 'approved', 'unapproved', 'spam'. False on failure. + * @return false|string Status might be 'trash', 'approved', 'unapproved', 'spam'. False on failure. */ function wp_get_comment_status( $comment_id ) { $comment = get_comment( $comment_id ); @@ -1745,34 +1703,34 @@ function wp_get_comment_status( $comment_id ) { } /** - * Calls hooks for when a comment status transition occurs. + * Call hooks for when a comment status transition occurs. * * Calls hooks for comment status transitions. If the new comment status is not the same * as the previous comment status, then two hooks will be ran, the first is - * {@see 'transition_comment_status'} with new status, old status, and comment data. - * The next action called is {@see 'comment_$old_status_to_$new_status'}. It has - * the comment data. + * {@see 'transition_comment_status'} with new status, old status, and comment data. The + * next action called is {@see comment_$old_status_to_$new_status'}. It has the + * comment data. * - * The final action will run whether or not the comment statuses are the same. - * The action is named {@see 'comment_$new_status_$comment->comment_type'}. + * The final action will run whether or not the comment statuses are the same. The + * action is named {@see 'comment_$new_status_$comment->comment_type'}. * - * @since 2.7.0 + * @since WP-2.7.0 * - * @param string $new_status New comment status. - * @param string $old_status Previous comment status. - * @param WP_Comment $comment Comment object. + * @param string $new_status New comment status. + * @param string $old_status Previous comment status. + * @param object $comment Comment data. */ function wp_transition_comment_status( $new_status, $old_status, $comment ) { /* - * Translate raw statuses to human-readable formats for the hooks. + * Translate raw statuses to human readable formats for the hooks. * This is not a complete list of comment status, it's only the ones - * that need to be renamed. + * that need to be renamed */ $comment_statuses = array( 0 => 'unapproved', - 'hold' => 'unapproved', // wp_set_comment_status() uses "hold". + 'hold' => 'unapproved', // wp_set_comment_status() uses "hold" 1 => 'approved', - 'approve' => 'approved', // wp_set_comment_status() uses "approve". + 'approve' => 'approved', // wp_set_comment_status() uses "approve" ); if ( isset( $comment_statuses[ $new_status ] ) ) { $new_status = $comment_statuses[ $new_status ]; @@ -1781,16 +1739,16 @@ function wp_transition_comment_status( $new_status, $old_status, $comment ) { $old_status = $comment_statuses[ $old_status ]; } - // Call the hooks. + // Call the hooks if ( $new_status != $old_status ) { /** * Fires when the comment status is in transition. * - * @since 2.7.0 + * @since WP-2.7.0 * * @param int|string $new_status The new comment status. * @param int|string $old_status The old comment status. - * @param WP_Comment $comment Comment object. + * @param object $comment The comment data. */ do_action( 'transition_comment_status', $new_status, $old_status, $comment ); /** @@ -1799,16 +1757,7 @@ function wp_transition_comment_status( $new_status, $old_status, $comment ) { * The dynamic portions of the hook name, `$old_status`, and `$new_status`, * refer to the old and new comment statuses, respectively. * - * Possible hook names include: - * - * - `comment_unapproved_to_approved` - * - `comment_spam_to_approved` - * - `comment_approved_to_unapproved` - * - `comment_spam_to_unapproved` - * - `comment_unapproved_to_spam` - * - `comment_approved_to_spam` - * - * @since 2.7.0 + * @since WP-2.7.0 * * @param WP_Comment $comment Comment object. */ @@ -1820,35 +1769,24 @@ function wp_transition_comment_status( $new_status, $old_status, $comment ) { * The dynamic portions of the hook name, `$new_status`, and `$comment->comment_type`, * refer to the new comment status, and the type of comment, respectively. * - * Typical comment types include 'comment', 'pingback', or 'trackback'. - * - * Possible hook names include: + * Typical comment types include an empty string (standard comment), 'pingback', + * or 'trackback'. * - * - `comment_approved_comment` - * - `comment_approved_pingback` - * - `comment_approved_trackback` - * - `comment_unapproved_comment` - * - `comment_unapproved_pingback` - * - `comment_unapproved_trackback` - * - `comment_spam_comment` - * - `comment_spam_pingback` - * - `comment_spam_trackback` + * @since WP-2.7.0 * - * @since 2.7.0 - * - * @param string $comment_id The comment ID as a numeric string. + * @param int $comment_ID The comment ID. * @param WP_Comment $comment Comment object. */ do_action( "comment_{$new_status}_{$comment->comment_type}", $comment->comment_ID, $comment ); } /** - * Clears the lastcommentmodified cached value when a comment status is changed. + * Clear the lastcommentmodified cached value when a comment status is changed. * * Deletes the lastcommentmodified cache key when a comment enters or leaves * 'approved' status. * - * @since 4.7.0 + * @since WP-4.7.0 * @access private * * @param string $new_status The new comment status. @@ -1856,31 +1794,23 @@ function wp_transition_comment_status( $new_status, $old_status, $comment ) { */ function _clear_modified_cache_on_transition_comment_status( $new_status, $old_status ) { if ( 'approved' === $new_status || 'approved' === $old_status ) { - $data = array(); foreach ( array( 'server', 'gmt', 'blog' ) as $timezone ) { - $data[] = "lastcommentmodified:$timezone"; + wp_cache_delete( "lastcommentmodified:$timezone", 'timeinfo' ); } - wp_cache_delete_multiple( $data, 'timeinfo' ); } } /** - * Gets current commenter's name, email, and URL. + * Get current commenter's name, email, and URL. * * Expects cookies content to already be sanitized. User of this function might * wish to recheck the returned array for validity. * * @see sanitize_comment_cookies() Use to sanitize cookies * - * @since 2.0.4 - * - * @return array { - * An array of current commenter variables. + * @since WP-2.0.4 * - * @type string $comment_author The name of the current commenter, or an empty string. - * @type string $comment_author_email The email address of the current commenter, or an empty string. - * @type string $comment_author_url The URL address of the current commenter, or an empty string. - * } + * @return array Comment author, email, url respectively. */ function wp_get_current_commenter() { // Cookies should already be sanitized. @@ -1903,63 +1833,26 @@ function wp_get_current_commenter() { /** * Filters the current commenter's name, email, and URL. * - * @since 3.1.0 + * @since WP-3.1.0 * * @param array $comment_author_data { * An array of current commenter variables. * - * @type string $comment_author The name of the current commenter, or an empty string. - * @type string $comment_author_email The email address of the current commenter, or an empty string. - * @type string $comment_author_url The URL address of the current commenter, or an empty string. + * @type string $comment_author The name of the author of the comment. Default empty. + * @type string $comment_author_email The email address of the `$comment_author`. Default empty. + * @type string $comment_author_url The URL address of the `$comment_author`. Default empty. * } */ return apply_filters( 'wp_get_current_commenter', compact( 'comment_author', 'comment_author_email', 'comment_author_url' ) ); } -/** - * Gets unapproved comment author's email. - * - * Used to allow the commenter to see their pending comment. - * - * @since 5.1.0 - * @since 5.7.0 The window within which the author email for an unapproved comment - * can be retrieved was extended to 10 minutes. - * - * @return string The unapproved comment author's email (when supplied). - */ -function wp_get_unapproved_comment_author_email() { - $commenter_email = ''; - - if ( ! empty( $_GET['unapproved'] ) && ! empty( $_GET['moderation-hash'] ) ) { - $comment_id = (int) $_GET['unapproved']; - $comment = get_comment( $comment_id ); - - if ( $comment && hash_equals( $_GET['moderation-hash'], wp_hash( $comment->comment_date_gmt ) ) ) { - // The comment will only be viewable by the comment author for 10 minutes. - $comment_preview_expires = strtotime( $comment->comment_date_gmt . '+10 minutes' ); - - if ( time() < $comment_preview_expires ) { - $commenter_email = $comment->comment_author_email; - } - } - } - - if ( ! $commenter_email ) { - $commenter = wp_get_current_commenter(); - $commenter_email = $commenter['comment_author_email']; - } - - return $commenter_email; -} - /** * Inserts a comment into the database. * - * @since 2.0.0 - * @since 4.4.0 Introduced the `$comment_meta` argument. - * @since 5.5.0 Default value for `$comment_type` argument changed to `comment`. + * @since WP-2.0.0 + * @since WP-4.4.0 Introduced `$comment_meta` argument. * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param array $commentdata { * Array of arguments for inserting a new comment. @@ -1981,7 +1874,7 @@ function wp_get_unapproved_comment_author_email() { * @type int $comment_parent ID of this comment's parent, if any. Default 0. * @type int $comment_post_ID ID of the post that relates to the comment, if any. * Default 0. - * @type string $comment_type Comment type. Default 'comment'. + * @type string $comment_type Comment type. Default empty. * @type array $comment_meta Optional. Array of key/value pairs to be stored in commentmeta for the * new comment. * @type int $user_id ID of the user who submitted the comment. Default 0. @@ -1990,47 +1883,27 @@ function wp_get_unapproved_comment_author_email() { */ function wp_insert_comment( $commentdata ) { global $wpdb; - $data = wp_unslash( $commentdata ); $comment_author = ! isset( $data['comment_author'] ) ? '' : $data['comment_author']; $comment_author_email = ! isset( $data['comment_author_email'] ) ? '' : $data['comment_author_email']; $comment_author_url = ! isset( $data['comment_author_url'] ) ? '' : $data['comment_author_url']; - $comment_author_ip = ! isset( $data['comment_author_IP'] ) ? '' : $data['comment_author_IP']; + $comment_author_IP = ! isset( $data['comment_author_IP'] ) ? '' : $data['comment_author_IP']; $comment_date = ! isset( $data['comment_date'] ) ? current_time( 'mysql' ) : $data['comment_date']; $comment_date_gmt = ! isset( $data['comment_date_gmt'] ) ? get_gmt_from_date( $comment_date ) : $data['comment_date_gmt']; - $comment_post_id = ! isset( $data['comment_post_ID'] ) ? 0 : $data['comment_post_ID']; + $comment_post_ID = ! isset( $data['comment_post_ID'] ) ? 0 : $data['comment_post_ID']; $comment_content = ! isset( $data['comment_content'] ) ? '' : $data['comment_content']; $comment_karma = ! isset( $data['comment_karma'] ) ? 0 : $data['comment_karma']; $comment_approved = ! isset( $data['comment_approved'] ) ? 1 : $data['comment_approved']; $comment_agent = ! isset( $data['comment_agent'] ) ? '' : $data['comment_agent']; - $comment_type = empty( $data['comment_type'] ) ? 'comment' : $data['comment_type']; + $comment_type = ! isset( $data['comment_type'] ) ? '' : $data['comment_type']; $comment_parent = ! isset( $data['comment_parent'] ) ? 0 : $data['comment_parent']; $user_id = ! isset( $data['user_id'] ) ? 0 : $data['user_id']; - $compacted = array( - 'comment_post_ID' => $comment_post_id, - 'comment_author_IP' => $comment_author_ip, - ); - - $compacted += compact( - 'comment_author', - 'comment_author_email', - 'comment_author_url', - 'comment_date', - 'comment_date_gmt', - 'comment_content', - 'comment_karma', - 'comment_approved', - 'comment_agent', - 'comment_type', - 'comment_parent', - 'user_id' - ); - + $compacted = compact( 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_date', 'comment_date_gmt', 'comment_content', 'comment_karma', 'comment_approved', 'comment_agent', 'comment_type', 'comment_parent', 'user_id' ); if ( ! $wpdb->insert( $wpdb->comments, $compacted ) ) { return false; } @@ -2038,13 +1911,11 @@ function wp_insert_comment( $commentdata ) { $id = (int) $wpdb->insert_id; if ( 1 == $comment_approved ) { - wp_update_comment_count( $comment_post_id ); + wp_update_comment_count( $comment_post_ID ); - $data = array(); foreach ( array( 'server', 'gmt', 'blog' ) as $timezone ) { - $data[] = "lastcommentmodified:$timezone"; + wp_cache_delete( "lastcommentmodified:$timezone", 'timeinfo' ); } - wp_cache_delete_multiple( $data, 'timeinfo' ); } clean_comment_cache( $id ); @@ -2061,7 +1932,7 @@ function wp_insert_comment( $commentdata ) { /** * Fires immediately after a comment is inserted into the database. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param int $id The comment ID. * @param WP_Comment $comment Comment object. @@ -2078,7 +1949,7 @@ function wp_insert_comment( $commentdata ) { * checked as to whether the comment should be filtered and to keep from * filtering the same comment more than once. * - * @since 2.0.0 + * @since WP-2.0.0 * * @param array $commentdata Contains information on the comment. * @return array Parsed comment information. @@ -2086,14 +1957,14 @@ function wp_insert_comment( $commentdata ) { function wp_filter_comment( $commentdata ) { if ( isset( $commentdata['user_ID'] ) ) { /** - * Filters the comment author's user ID before it is set. + * Filters the comment author's user id before it is set. * - * The first time this filter is evaluated, `user_ID` is checked - * (for back-compat), followed by the standard `user_id` value. + * The first time this filter is evaluated, 'user_ID' is checked + * (for back-compat), followed by the standard 'user_id' value. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param int $user_id The comment author's user ID. + * @param int $user_ID The comment author's user ID. */ $commentdata['user_id'] = apply_filters( 'pre_user_id', $commentdata['user_ID'] ); } elseif ( isset( $commentdata['user_id'] ) ) { @@ -2104,7 +1975,7 @@ function wp_filter_comment( $commentdata ) { /** * Filters the comment author's browser user agent before it is set. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $comment_agent The comment author's browser user agent. */ @@ -2114,7 +1985,7 @@ function wp_filter_comment( $commentdata ) { /** * Filters the comment content before it is set. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $comment_content The comment content. */ @@ -2122,7 +1993,7 @@ function wp_filter_comment( $commentdata ) { /** * Filters the comment author's IP address before it is set. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $comment_author_ip The comment author's IP address. */ @@ -2131,24 +2002,22 @@ function wp_filter_comment( $commentdata ) { $commentdata['comment_author_url'] = apply_filters( 'pre_comment_author_url', $commentdata['comment_author_url'] ); /** This filter is documented in wp-includes/comment.php */ $commentdata['comment_author_email'] = apply_filters( 'pre_comment_author_email', $commentdata['comment_author_email'] ); - - $commentdata['filtered'] = true; - + $commentdata['filtered'] = true; return $commentdata; } /** - * Determines whether a comment should be blocked because of comment flood. + * Whether a comment should be blocked because of comment flood. * - * @since 2.1.0 + * @since WP-2.1.0 * - * @param bool $block Whether plugin has already blocked comment. - * @param int $time_lastcomment Timestamp for last comment. - * @param int $time_newcomment Timestamp for new comment. + * @param bool $block Whether plugin has already blocked comment. + * @param int $time_lastcomment Timestamp for last comment. + * @param int $time_newcomment Timestamp for new comment. * @return bool Whether comment should be blocked. */ function wp_throttle_comment_flood( $block, $time_lastcomment, $time_newcomment ) { - if ( $block ) { // A plugin has already blocked... we'll let that decision stand. + if ( $block ) { // a plugin has already blocked... we'll let that decision stand return $block; } if ( ( $time_newcomment - $time_lastcomment ) < 15 ) { @@ -2162,7 +2031,7 @@ function wp_throttle_comment_flood( $block, $time_lastcomment, $time_newcomment * * Filters new comment to ensure that the fields are sanitized and valid before * inserting comment into database. Calls {@see 'comment_post'} action with comment ID - * and whether comment is approved by WordPress. Also has {@see 'preprocess_comment'} + * and whether comment is approved by ClassicPress. Also has {@see 'preprocess_comment'} * filter for processing the comment data before the function handles it. * * We use `REMOTE_ADDR` here directly. If you are behind a proxy, you should ensure @@ -2170,15 +2039,13 @@ function wp_throttle_comment_flood( $block, $time_lastcomment, $time_newcomment * * See {@link https://core.trac.wordpress.org/ticket/9235} * - * @since 1.5.0 - * @since 4.3.0 Introduced the `comment_agent` and `comment_author_IP` arguments. - * @since 4.7.0 The `$avoid_die` parameter was added, allowing the function - * to return a WP_Error object instead of dying. - * @since 5.5.0 The `$avoid_die` parameter was renamed to `$wp_error`. - * @since 5.5.0 Introduced the `comment_type` argument. + * @since WP-1.5.0 + * @since WP-4.3.0 'comment_agent' and 'comment_author_IP' can be set via `$commentdata`. + * @since WP-4.7.0 The `$avoid_die` parameter was added, allowing the function to + * return a WP_Error object instead of dying. * * @see wp_insert_comment() - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param array $commentdata { * Comment data. @@ -2190,7 +2057,6 @@ function wp_throttle_comment_flood( $block, $time_lastcomment, $time_newcomment * @type string $comment_date The date the comment was submitted. Default is the current time. * @type string $comment_date_gmt The date the comment was submitted in the GMT timezone. * Default is `$comment_date` in the GMT timezone. - * @type string $comment_type Comment type. Default 'comment'. * @type int $comment_parent The ID of this comment's parent, if any. Default 0. * @type int $comment_post_ID The ID of the post that relates to the comment. * @type int $user_id The ID of the user who submitted the comment. Default 0. @@ -2200,54 +2066,35 @@ function wp_throttle_comment_flood( $block, $time_lastcomment, $time_newcomment * @type string $comment_author_IP Comment author IP address in IPv4 format. Default is the value of * 'REMOTE_ADDR' in the `$_SERVER` superglobal sent in the original request. * } - * @param bool $wp_error Should errors be returned as WP_Error objects instead of + * @param bool $avoid_die Should errors be returned as WP_Error objects instead of * executing wp_die()? Default false. * @return int|false|WP_Error The ID of the comment on success, false or WP_Error on failure. */ -function wp_new_comment( $commentdata, $wp_error = false ) { +function wp_new_comment( $commentdata, $avoid_die = false ) { global $wpdb; - /* - * Normalize `user_ID` to `user_id`, but pass the old key - * to the `preprocess_comment` filter for backward compatibility. - */ if ( isset( $commentdata['user_ID'] ) ) { $commentdata['user_ID'] = (int) $commentdata['user_ID']; $commentdata['user_id'] = $commentdata['user_ID']; - } elseif ( isset( $commentdata['user_id'] ) ) { - $commentdata['user_id'] = (int) $commentdata['user_id']; - $commentdata['user_ID'] = $commentdata['user_id']; } $prefiltered_user_id = ( isset( $commentdata['user_id'] ) ) ? (int) $commentdata['user_id'] : 0; - if ( ! isset( $commentdata['comment_author_IP'] ) ) { - $commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR']; - } - - if ( ! isset( $commentdata['comment_agent'] ) ) { - $commentdata['comment_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : ''; - } - /** * Filters a comment's data before it is sanitized and inserted into the database. * - * @since 1.5.0 - * @since 5.6.0 Comment data includes the `comment_agent` and `comment_author_IP` values. + * @since WP-1.5.0 * * @param array $commentdata Comment data. */ $commentdata = apply_filters( 'preprocess_comment', $commentdata ); $commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID']; - - // Normalize `user_ID` to `user_id` again, after the filter. if ( isset( $commentdata['user_ID'] ) && $prefiltered_user_id !== (int) $commentdata['user_ID'] ) { $commentdata['user_ID'] = (int) $commentdata['user_ID']; $commentdata['user_id'] = $commentdata['user_ID']; } elseif ( isset( $commentdata['user_id'] ) ) { $commentdata['user_id'] = (int) $commentdata['user_id']; - $commentdata['user_ID'] = $commentdata['user_id']; } $commentdata['comment_parent'] = isset( $commentdata['comment_parent'] ) ? absint( $commentdata['comment_parent'] ) : 0; @@ -2256,8 +2103,14 @@ function wp_new_comment( $commentdata, $wp_error = false ) { $commentdata['comment_parent'] = ( 'approved' === $parent_status || 'unapproved' === $parent_status ) ? $commentdata['comment_parent'] : 0; + if ( ! isset( $commentdata['comment_author_IP'] ) ) { + $commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR']; + } $commentdata['comment_author_IP'] = preg_replace( '/[^0-9a-fA-F:., ]/', '', $commentdata['comment_author_IP'] ); + if ( ! isset( $commentdata['comment_agent'] ) ) { + $commentdata['comment_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : ''; + } $commentdata['comment_agent'] = substr( $commentdata['comment_agent'], 0, 254 ); if ( empty( $commentdata['comment_date'] ) ) { @@ -2268,21 +2121,15 @@ function wp_new_comment( $commentdata, $wp_error = false ) { $commentdata['comment_date_gmt'] = current_time( 'mysql', 1 ); } - if ( empty( $commentdata['comment_type'] ) ) { - $commentdata['comment_type'] = 'comment'; - } - $commentdata = wp_filter_comment( $commentdata ); - $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $wp_error ); - + $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $avoid_die ); if ( is_wp_error( $commentdata['comment_approved'] ) ) { return $commentdata['comment_approved']; } - $comment_id = wp_insert_comment( $commentdata ); - - if ( ! $comment_id ) { + $comment_ID = wp_insert_comment( $commentdata ); + if ( ! $comment_ID ) { $fields = array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content' ); foreach ( $fields as $field ) { @@ -2293,13 +2140,13 @@ function wp_new_comment( $commentdata, $wp_error = false ) { $commentdata = wp_filter_comment( $commentdata ); - $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $wp_error ); + $commentdata['comment_approved'] = wp_allow_comment( $commentdata, $avoid_die ); if ( is_wp_error( $commentdata['comment_approved'] ) ) { return $commentdata['comment_approved']; } - $comment_id = wp_insert_comment( $commentdata ); - if ( ! $comment_id ) { + $comment_ID = wp_insert_comment( $commentdata ); + if ( ! $comment_ID ) { return false; } } @@ -2307,55 +2154,55 @@ function wp_new_comment( $commentdata, $wp_error = false ) { /** * Fires immediately after a comment is inserted into the database. * - * @since 1.2.0 - * @since 4.5.0 The `$commentdata` parameter was added. + * @since WP-1.2.0 + * @since WP-4.5.0 The `$commentdata` parameter was added. * - * @param int $comment_id The comment ID. + * @param int $comment_ID The comment ID. * @param int|string $comment_approved 1 if the comment is approved, 0 if not, 'spam' if spam. * @param array $commentdata Comment data. */ - do_action( 'comment_post', $comment_id, $commentdata['comment_approved'], $commentdata ); + do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'], $commentdata ); - return $comment_id; + return $comment_ID; } /** - * Sends a comment moderation notification to the comment moderator. + * Send a comment moderation notification to the comment moderator. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param int $comment_id ID of the comment. + * @param int $comment_ID ID of the comment. * @return bool True on success, false on failure. */ -function wp_new_comment_notify_moderator( $comment_id ) { - $comment = get_comment( $comment_id ); +function wp_new_comment_notify_moderator( $comment_ID ) { + $comment = get_comment( $comment_ID ); // Only send notifications for pending comments. $maybe_notify = ( '0' == $comment->comment_approved ); - /** This filter is documented in wp-includes/pluggable.php */ - $maybe_notify = apply_filters( 'notify_moderator', $maybe_notify, $comment_id ); + /** This filter is documented in wp-includes/comment.php */ + $maybe_notify = apply_filters( 'notify_moderator', $maybe_notify, $comment_ID ); if ( ! $maybe_notify ) { return false; } - return wp_notify_moderator( $comment_id ); + return wp_notify_moderator( $comment_ID ); } /** - * Sends a notification of a new comment to the post author. + * Send a notification of a new comment to the post author. * - * @since 4.4.0 + * @since WP-4.4.0 * * Uses the {@see 'notify_post_author'} filter to determine whether the post author * should be notified when a new comment is added, overriding site setting. * - * @param int $comment_id Comment ID. + * @param int $comment_ID Comment ID. * @return bool True on success, false on failure. */ -function wp_new_comment_notify_postauthor( $comment_id ) { - $comment = get_comment( $comment_id ); +function wp_new_comment_notify_postauthor( $comment_ID ) { + $comment = get_comment( $comment_ID ); $maybe_notify = get_option( 'comments_notify' ); @@ -2363,12 +2210,12 @@ function wp_new_comment_notify_postauthor( $comment_id ) { * Filters whether to send the post author new comment notification emails, * overriding the site setting. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param bool $maybe_notify Whether to notify the post author about the new comment. - * @param int $comment_id The ID of the comment for the notification. + * @param int $comment_ID The ID of the comment for the notification. */ - $maybe_notify = apply_filters( 'notify_post_author', $maybe_notify, $comment_id ); + $maybe_notify = apply_filters( 'notify_post_author', $maybe_notify, $comment_ID ); /* * wp_notify_postauthor() checks if notifying the author of their own comment. @@ -2383,7 +2230,7 @@ function wp_new_comment_notify_postauthor( $comment_id ) { return false; } - return wp_notify_postauthor( $comment_id ); + return wp_notify_postauthor( $comment_ID ); } /** @@ -2392,13 +2239,13 @@ function wp_new_comment_notify_postauthor( $comment_id ) { * The {@see '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 + * @since WP-1.0.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. * @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 false. + * @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false. * @return bool|WP_Error True on success, false or WP_Error on failure. */ function wp_set_comment_status( $comment_id, $comment_status, $wp_error = false ) { @@ -2428,7 +2275,7 @@ function wp_set_comment_status( $comment_id, $comment_status, $wp_error = false if ( ! $wpdb->update( $wpdb->comments, array( 'comment_approved' => $status ), array( 'comment_ID' => $comment_old->comment_ID ) ) ) { if ( $wp_error ) { - return new WP_Error( 'db_update_error', __( 'Could not update comment status.' ), $wpdb->last_error ); + return new WP_Error( 'db_update_error', __( 'Could not update comment status' ), $wpdb->last_error ); } else { return false; } @@ -2439,14 +2286,14 @@ function wp_set_comment_status( $comment_id, $comment_status, $wp_error = false $comment = get_comment( $comment_old->comment_ID ); /** - * Fires immediately after transitioning a comment's status from one to another in the database - * and removing the comment from the object cache, but prior to all status transition hooks. + * Fires immediately before transitioning a comment's status from one to another + * in the database. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string $comment_id Comment ID as a numeric string. - * @param string $comment_status Current comment status. Possible values include - * 'hold', '0', 'approve', '1', 'spam', and 'trash'. + * @param int $comment_id Comment ID. + * @param string|bool $comment_status Current comment status. Possible values include + * 'hold', 'approve', 'spam', 'trash', or false. */ do_action( 'wp_set_comment_status', $comment->comment_ID, $comment_status ); @@ -2462,40 +2309,26 @@ function wp_set_comment_status( $comment_id, $comment_status, $wp_error = false * * Filters the comment and makes sure certain fields are valid before updating. * - * @since 2.0.0 - * @since 4.9.0 Add updating comment meta during comment update. - * @since 5.5.0 The `$wp_error` parameter was added. - * @since 5.5.0 The return values for an invalid comment or post ID - * were changed to false instead of 0. + * @since WP-2.0.0 + * @since WP-4.9.0 Add updating comment meta during comment update. * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param array $commentarr Contains information on the comment. - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return int|false|WP_Error The value 1 if the comment was updated, 0 if not updated. - * False or a WP_Error object on failure. + * @return int Comment was updated if value is 1, or was not updated if value is 0. */ -function wp_update_comment( $commentarr, $wp_error = false ) { +function wp_update_comment( $commentarr ) { global $wpdb; - // First, get all of the original fields. + // First, get all of the original fields $comment = get_comment( $commentarr['comment_ID'], ARRAY_A ); - if ( empty( $comment ) ) { - if ( $wp_error ) { - return new WP_Error( 'invalid_comment_id', __( 'Invalid comment ID.' ) ); - } else { - return false; - } + return 0; } // Make sure that the comment post ID is valid (if specified). if ( ! empty( $commentarr['comment_post_ID'] ) && ! get_post( $commentarr['comment_post_ID'] ) ) { - if ( $wp_error ) { - return new WP_Error( 'invalid_post_id', __( 'Invalid post ID.' ) ); - } else { - return false; - } + return 0; } $filter_comment = false; @@ -2527,7 +2360,7 @@ function wp_update_comment( $commentarr, $wp_error = false ) { /** * Filters the comment content before it is updated in the database. * - * @since 1.5.0 + * @since WP-1.5.0 * * @param string $comment_content The comment data. */ @@ -2543,101 +2376,63 @@ function wp_update_comment( $commentarr, $wp_error = false ) { $data['comment_approved'] = 1; } - $comment_id = $data['comment_ID']; - $comment_post_id = $data['comment_post_ID']; + $comment_ID = $data['comment_ID']; + $comment_post_ID = $data['comment_post_ID']; /** * Filters the comment data immediately before it is updated in the database. * * Note: data being passed to the filter is already unslashed. * - * @since 4.7.0 - * @since 5.5.0 Returning a WP_Error value from the filter will short-circuit comment update - * and allow skipping further processing. + * @since WP-4.7.0 * - * @param array|WP_Error $data The new, processed comment data, or WP_Error. - * @param array $comment The old, unslashed comment data. - * @param array $commentarr The new, raw comment data. + * @param array $data The new, processed comment data. + * @param array $comment The old, unslashed comment data. + * @param array $commentarr The new, raw comment data. */ $data = apply_filters( 'wp_update_comment_data', $data, $comment, $commentarr ); - // Do not carry on on failure. - if ( is_wp_error( $data ) ) { - if ( $wp_error ) { - return $data; - } else { - return false; - } - } - - $keys = array( - 'comment_post_ID', - 'comment_author', - 'comment_author_email', - 'comment_author_url', - 'comment_author_IP', - 'comment_date', - 'comment_date_gmt', - 'comment_content', - 'comment_karma', - 'comment_approved', - 'comment_agent', - 'comment_type', - 'comment_parent', - 'user_id', - ); - + $keys = array( 'comment_post_ID', 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt', 'comment_type', 'comment_parent', 'user_id', 'comment_agent', 'comment_author_IP' ); $data = wp_array_slice_assoc( $data, $keys ); - $result = $wpdb->update( $wpdb->comments, $data, array( 'comment_ID' => $comment_id ) ); - - if ( false === $result ) { - if ( $wp_error ) { - return new WP_Error( 'db_update_error', __( 'Could not update comment in the database.' ), $wpdb->last_error ); - } else { - return false; - } - } + $rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_ID' ) ); // If metadata is provided, store it. if ( isset( $commentarr['comment_meta'] ) && is_array( $commentarr['comment_meta'] ) ) { foreach ( $commentarr['comment_meta'] as $meta_key => $meta_value ) { - update_comment_meta( $comment_id, $meta_key, $meta_value ); + update_comment_meta( $comment_ID, $meta_key, $meta_value ); } } - clean_comment_cache( $comment_id ); - wp_update_comment_count( $comment_post_id ); - + clean_comment_cache( $comment_ID ); + wp_update_comment_count( $comment_post_ID ); /** * Fires immediately after a comment is updated in the database. * * The hook also fires immediately before comment status transition hooks are fired. * - * @since 1.2.0 - * @since 4.6.0 Added the `$data` parameter. + * @since WP-1.2.0 + * @since WP-4.6.0 Added the `$data` parameter. * - * @param int $comment_id The comment ID. + * @param int $comment_ID The comment ID. * @param array $data Comment data. */ - do_action( 'edit_comment', $comment_id, $data ); - - $comment = get_comment( $comment_id ); - + do_action( 'edit_comment', $comment_ID, $data ); + $comment = get_comment( $comment_ID ); wp_transition_comment_status( $comment->comment_approved, $old_status, $comment ); - - return $result; + return $rval; } /** - * Determines whether to defer comment counting. + * Whether to defer comment counting. * * When setting $defer to true, all post comment counts will not be updated * until $defer is set to false. When $defer is set to false, then all * previously deferred updated post comment counts will then be automatically * updated without having to call wp_update_comment_count() after. * - * @since 2.5.0 + * @since WP-2.5.0 + * @staticvar bool $_defer * * @param bool $defer * @return bool @@ -2647,7 +2442,7 @@ function wp_defer_comment_counting( $defer = null ) { if ( is_bool( $defer ) ) { $_defer = $defer; - // Flush any deferred counts. + // flush any deferred counts if ( ! $defer ) { wp_update_comment_count( null, true ); } @@ -2667,10 +2462,11 @@ function wp_defer_comment_counting( $defer = null ) { * updated. When $do_deferred is set to true, then all previous deferred post * IDs will be updated along with the current $post_id. * - * @since 2.1.0 - * + * @since WP-2.1.0 * @see wp_update_comment_count_now() For what could cause a false return value * + * @staticvar array $_deferred + * * @param int|null $post_id Post ID. * @param bool $do_deferred Optional. Whether to process previously deferred * post comment counts. Default false. @@ -2688,8 +2484,7 @@ function wp_update_comment_count( $post_id, $do_deferred = false ) { $_deferred = array_unique( $_deferred ); foreach ( $_deferred as $i => $_post_id ) { wp_update_comment_count_now( $_post_id ); - unset( $_deferred[ $i ] ); - /** @todo Move this outside of the foreach and reset $_deferred to an array instead */ + unset( $_deferred[ $i ] ); /** @todo Move this outside of the foreach and reset $_deferred to an array instead */ } } @@ -2699,23 +2494,22 @@ function wp_update_comment_count( $post_id, $do_deferred = false ) { } elseif ( $post_id ) { return wp_update_comment_count_now( $post_id ); } + } /** * Updates the comment count for the post. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $post_id Post ID - * @return bool True on success, false if the post does not exist. + * @return bool True on success, false on '0' $post_id or if post with ID does not exist. */ function wp_update_comment_count_now( $post_id ) { global $wpdb; - $post_id = (int) $post_id; - if ( ! $post_id ) { return false; } @@ -2724,7 +2518,6 @@ function wp_update_comment_count_now( $post_id ) { wp_cache_delete( "comments-{$post_id}", 'counts' ); $post = get_post( $post_id ); - if ( ! $post ) { return false; } @@ -2734,11 +2527,11 @@ function wp_update_comment_count_now( $post_id ) { /** * Filters a post's comment count before it is updated in the database. * - * @since 4.5.0 + * @since WP-4.5.0 * - * @param int|null $new The new comment count. Default null. - * @param int $old The old comment count. - * @param int $post_id Post ID. + * @param int $new The new comment count. Default null. + * @param int $old The old comment count. + * @param int $post_id Post ID. */ $new = apply_filters( 'pre_wp_update_comment_count_now', null, $old, $post_id ); @@ -2755,17 +2548,13 @@ function wp_update_comment_count_now( $post_id ) { /** * Fires immediately after a post's comment count is updated in the database. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param int $post_id Post ID. * @param int $new The new comment count. * @param int $old The old comment count. */ do_action( 'wp_update_comment_count', $post_id, $new, $old ); - - /** This action is documented in wp-includes/post.php */ - do_action( "edit_post_{$post->post_type}", $post_id, $post ); - /** This action is documented in wp-includes/post.php */ do_action( 'edit_post', $post_id, $post ); @@ -2779,19 +2568,19 @@ function wp_update_comment_count_now( $post_id ) { /** * Finds a pingback server URI based on the given URL. * - * Checks the HTML for the rel="pingback" link and X-Pingback headers. It does - * a check for the X-Pingback headers first and returns that, if available. - * The check for the rel="pingback" has more overhead than just the header. + * Checks the HTML for the rel="pingback" link and x-pingback headers. It does + * a check for the x-pingback headers first and returns that, if available. The + * check for the rel="pingback" has more overhead than just the header. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param string $url URL to ping. - * @param string $deprecated Not Used. - * @return string|false String containing URI on success, false on failure. + * @param string $url URL to ping. + * @param int $deprecated Not Used. + * @return false|string False on failure, string containing URI on success. */ function discover_pingback_server_uri( $url, $deprecated = '' ) { if ( ! empty( $deprecated ) ) { - _deprecated_argument( __FUNCTION__, '2.7.0' ); + _deprecated_argument( __FUNCTION__, 'WP-2.7.0' ); } $pingback_str_dquote = 'rel="pingback"'; @@ -2804,7 +2593,7 @@ function discover_pingback_server_uri( $url, $deprecated = '' ) { return false; } - // Do not search for a pingback server on our own uploads. + //Do not search for a pingback server on our own uploads $uploads_dir = wp_get_upload_dir(); if ( 0 === strpos( $url, $uploads_dir['baseurl'] ) ) { return false; @@ -2822,16 +2611,16 @@ function discover_pingback_server_uri( $url, $deprecated = '' ) { return false; } - if ( wp_remote_retrieve_header( $response, 'X-Pingback' ) ) { - return wp_remote_retrieve_header( $response, 'X-Pingback' ); + if ( wp_remote_retrieve_header( $response, 'x-pingback' ) ) { + return wp_remote_retrieve_header( $response, 'x-pingback' ); } // Not an (x)html, sgml, or xml page, no use going further. - if ( preg_match( '#(image|audio|video|model)/#is', wp_remote_retrieve_header( $response, 'Content-Type' ) ) ) { + if ( preg_match( '#(image|audio|video|model)/#is', wp_remote_retrieve_header( $response, 'content-type' ) ) ) { return false; } - // Now do a GET since we're going to look in the HTML headers (and we're sure it's not a binary file). + // Now do a GET since we're going to look in the html headers (and we're sure it's not a binary file) $response = wp_safe_remote_get( $url, array( @@ -2857,7 +2646,7 @@ function discover_pingback_server_uri( $url, $deprecated = '' ) { $pingback_server_url_len = $pingback_href_end - $pingback_href_start; $pingback_server_url = substr( $contents, $pingback_href_start, $pingback_server_url_len ); - // We may find rel="pingback" but an incomplete pingback URL. + // We may find rel="pingback" but an incomplete pingback URL if ( $pingback_server_url_len > 0 ) { // We got it! return $pingback_server_url; } @@ -2867,26 +2656,16 @@ function discover_pingback_server_uri( $url, $deprecated = '' ) { } /** - * Performs all pingbacks, enclosures, trackbacks, and sends to pingback services. + * Perform all pingbacks, enclosures, trackbacks, and send to pingback services. + * + * @since WP-2.1.0 * - * @since 2.1.0 - * @since 5.6.0 Introduced `do_all_pings` action hook for individual services. + * @global wpdb $wpdb ClassicPress database abstraction object. */ function do_all_pings() { - /** - * Fires immediately after the `do_pings` event to hook services individually. - * - * @since 5.6.0 - */ - do_action( 'do_all_pings' ); -} + global $wpdb; -/** - * Performs all pingbacks. - * - * @since 5.6.0 - */ -function do_all_pingbacks() { + // Do pingbacks. $pings = get_posts( array( 'post_type' => get_post_types(), @@ -2901,14 +2680,8 @@ function do_all_pingbacks() { delete_post_meta( $ping, '_pingme' ); pingback( null, $ping ); } -} -/** - * Performs all enclosures. - * - * @since 5.6.0 - */ -function do_all_enclosures() { + // Do enclosures. $enclosures = get_posts( array( 'post_type' => get_post_types(), @@ -2923,14 +2696,8 @@ function do_all_enclosures() { delete_post_meta( $enclosure, '_encloseme' ); do_enclose( null, $enclosure ); } -} -/** - * Performs all trackbacks. - * - * @since 5.6.0 - */ -function do_all_trackbacks() { + // Do trackbacks. $trackbacks = get_posts( array( 'post_type' => get_post_types(), @@ -2945,30 +2712,30 @@ function do_all_trackbacks() { delete_post_meta( $trackback, '_trackbackme' ); do_trackbacks( $trackback ); } + + // Do Update Services/Generic Pings. + generic_ping(); } /** - * Performs trackbacks. + * Perform trackbacks. * - * @since 1.5.0 - * @since 4.7.0 `$post` can be a WP_Post object. + * @since WP-1.5.0 + * @since WP-4.7.0 $post_id can be a WP_Post object. * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param int|WP_Post $post Post ID or object to do trackbacks on. + * @param int|WP_Post $post_id Post object or ID to do trackbacks on. */ -function do_trackbacks( $post ) { +function do_trackbacks( $post_id ) { global $wpdb; - - $post = get_post( $post ); - + $post = get_post( $post_id ); if ( ! $post ) { return false; } $to_ping = get_to_ping( $post ); $pinged = get_pung( $post ); - if ( empty( $to_ping ) ) { $wpdb->update( $wpdb->posts, array( 'to_ping' => '' ), array( 'ID' => $post->ID ) ); return; @@ -3012,10 +2779,10 @@ function do_trackbacks( $post ) { /** * Sends pings to all of the ping site services. * - * @since 1.2.0 + * @since WP-1.2.0 * * @param int $post_id Post ID. - * @return int Same post ID as provided. + * @return int Same as Post ID from parameter */ function generic_ping( $post_id = 0 ) { $services = get_option( 'ping_sites' ); @@ -3034,21 +2801,20 @@ function generic_ping( $post_id = 0 ) { /** * Pings back the links found in a post. * - * @since 0.71 - * @since 4.7.0 `$post` can be a WP_Post object. + * @since WP-0.71 + * @since WP-4.7.0 $post_id can be a WP_Post object. * - * @param string $content Post content to check for links. If empty will retrieve from post. - * @param int|WP_Post $post Post ID or object. + * @param string $content Post content to check for links. If empty will retrieve from post. + * @param int|WP_Post $post_id Post Object or ID. */ -function pingback( $content, $post ) { +function pingback( $content, $post_id ) { include_once ABSPATH . WPINC . '/class-IXR.php'; include_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php'; - // Original code by Mort (http://mort.mine.nu:8080). + // original code by Mort (http://mort.mine.nu:8080) $post_links = array(); - $post = get_post( $post ); - + $post = get_post( $post_id ); if ( ! $post ) { return; } @@ -3059,10 +2825,8 @@ function pingback( $content, $post ) { $content = $post->post_content; } - /* - * Step 1. - * Parsing the post, external links (if any) are stored in the $post_links array. - */ + // Step 1 + // Parsing the post, external links (if any) are stored in the $post_links array $post_links_temp = wp_extract_urls( $content ); /* @@ -3081,7 +2845,7 @@ function pingback( $content, $post ) { // Also, let's never ping local attachments. && ! is_local_attachment( $link_test ) ) { - $test = parse_url( $link_test ); + $test = @parse_url( $link_test ); if ( $test ) { if ( isset( $test['query'] ) ) { $post_links[] = $link_test; @@ -3093,15 +2857,14 @@ function pingback( $content, $post ) { } $post_links = array_unique( $post_links ); - /** * Fires just before pinging back links found in a post. * - * @since 2.0.0 + * @since WP-2.0.0 * - * @param string[] $post_links Array of link URLs to be checked (passed by reference). - * @param string[] $pung Array of link URLs already pinged (passed by reference). - * @param int $post_id The post ID. + * @param array $post_links An array of post links to be checked (passed by reference). + * @param array $pung Whether a link has already been pinged (passed by reference). + * @param int $post_ID The post ID. */ do_action_ref_array( 'pre_ping', array( &$post_links, &$pung, $post->ID ) ); @@ -3109,33 +2872,30 @@ function pingback( $content, $post ) { $pingback_server_url = discover_pingback_server_uri( $pagelinkedto ); if ( $pingback_server_url ) { - if ( function_exists( 'set_time_limit' ) ) { - set_time_limit( 60 ); - } - - // Now, the RPC call. + set_time_limit( 60 ); + // Now, the RPC call $pagelinkedfrom = get_permalink( $post ); - // Using a timeout of 3 seconds should be enough to cover slow servers. + // using a timeout of 3 seconds should be enough to cover slow servers $client = new WP_HTTP_IXR_Client( $pingback_server_url ); $client->timeout = 3; /** * Filters the user agent sent when pinging-back a URL. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param string $concat_useragent The user agent concatenated with ' -- WordPress/' - * and the WordPress version. + * and the equivalent WordPress version. * @param string $useragent The useragent. * @param string $pingback_server_url The server URL being linked to. * @param string $pagelinkedto URL of page linked to. * @param string $pagelinkedfrom URL of page linked from. */ - $client->useragent = apply_filters( 'pingback_useragent', $client->useragent . ' -- WordPress/' . get_bloginfo( 'version' ), $client->useragent, $pingback_server_url, $pagelinkedto, $pagelinkedfrom ); - // When set to true, this outputs debug messages by itself. + $client->useragent = apply_filters( 'pingback_useragent', $client->useragent . ' -- ' . classicpress_user_agent(), $client->useragent, $pingback_server_url, $pagelinkedto, $pagelinkedfrom ); + // when set to true, this outputs debug messages by itself $client->debug = false; - if ( $client->query( 'pingback.ping', $pagelinkedfrom, $pagelinkedto ) || ( isset( $client->error->code ) && 48 == $client->error->code ) ) { // Already registered. + if ( $client->query( 'pingback.ping', $pagelinkedfrom, $pagelinkedto ) || ( isset( $client->error->code ) && 48 == $client->error->code ) ) { // Already registered add_ping( $post, $pagelinkedto ); } } @@ -3143,9 +2903,9 @@ function pingback( $content, $post ) { } /** - * Checks whether blog is public before returning sites. + * Check whether blog is public before returning sites. * - * @since 2.1.0 + * @since WP-2.1.0 * * @param mixed $sites Will return if blog is public, will not return if not public. * @return mixed Empty string if blog is not public, returns $sites, if site is public. @@ -3159,18 +2919,18 @@ function privacy_ping_filter( $sites ) { } /** - * Sends a Trackback. + * Send a Trackback. * * Updates database when sending trackback to prevent duplicates. * - * @since 0.71 + * @since WP-0.71 * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param string $trackback_url URL to send trackbacks. - * @param string $title Title of post. - * @param string $excerpt Excerpt of post. - * @param int $ID Post ID. + * @param string $title Title of post. + * @param string $excerpt Excerpt of post. + * @param int $ID Post ID. * @return int|false|void Database query from update. */ function trackback( $trackback_url, $title, $excerpt, $ID ) { @@ -3200,9 +2960,9 @@ function trackback( $trackback_url, $title, $excerpt, $ID ) { } /** - * Sends a pingback. + * Send a pingback. * - * @since 1.2.0 + * @since WP-1.2.0 * * @param string $server Host of blog to connect to. * @param string $path Path to send the ping. @@ -3214,21 +2974,20 @@ function weblog_ping( $server = '', $path = '' ) { // Using a timeout of 3 seconds should be enough to cover slow servers. $client = new WP_HTTP_IXR_Client( $server, ( ( ! strlen( trim( $path ) ) || ( '/' === $path ) ) ? false : $path ) ); $client->timeout = 3; - $client->useragent .= ' -- WordPress/' . get_bloginfo( 'version' ); + $client->useragent .= ' -- ' . classicpress_user_agent(); - // When set to true, this outputs debug messages by itself. + // when set to true, this outputs debug messages by itself $client->debug = false; $home = trailingslashit( home_url() ); - if ( ! $client->query( 'weblogUpdates.extendedPing', get_option( 'blogname' ), $home, get_bloginfo( 'rss2_url' ) ) ) { // Then try a normal ping. + if ( ! $client->query( 'weblogUpdates.extendedPing', get_option( 'blogname' ), $home, get_bloginfo( 'rss2_url' ) ) ) { // then try a normal ping $client->query( 'weblogUpdates.ping', get_option( 'blogname' ), $home ); } } /** - * Default filter attached to pingback_ping_source_uri to validate the pingback's Source URI. - * - * @since 3.5.1 + * Default filter attached to pingback_ping_source_uri to validate the pingback's Source URI * + * @since WP-3.5.1 * @see wp_http_validate_url() * * @param string $source_uri @@ -3244,8 +3003,7 @@ function pingback_ping_source_uri( $source_uri ) { * Returns a generic pingback error code unless the error code is 48, * which reports that the pingback is already registered. * - * @since 3.5.1 - * + * @since WP-3.5.1 * @link https://www.hixie.ch/specs/pingback/pingback#TOC3 * * @param IXR_Error $ixr_error @@ -3259,24 +3017,24 @@ function xmlrpc_pingback_error( $ixr_error ) { } // -// Cache. +// Cache // /** * Removes a comment from the object cache. * - * @since 2.3.0 + * @since WP-2.3.0 * * @param int|array $ids Comment ID or an array of comment IDs to remove from cache. */ function clean_comment_cache( $ids ) { - $comment_ids = (array) $ids; - wp_cache_delete_multiple( $comment_ids, 'comment' ); - foreach ( $comment_ids as $id ) { + foreach ( (array) $ids as $id ) { + wp_cache_delete( $id, 'comment' ); + /** * Fires immediately after a comment has been removed from the object cache. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param int $id Comment ID. */ @@ -3293,18 +3051,16 @@ function clean_comment_cache( $ids ) { * in the comment cache then it will not be updated. The comment is added to the * cache using the comment group with the key using the ID of the comments. * - * @since 2.3.0 - * @since 4.4.0 Introduced the `$update_meta_cache` parameter. + * @since WP-2.3.0 + * @since WP-4.4.0 Introduced the `$update_meta_cache` parameter. * - * @param WP_Comment[] $comments Array of comment objects - * @param bool $update_meta_cache Whether to update commentmeta cache. Default true. + * @param array $comments Array of comment row objects + * @param bool $update_meta_cache Whether to update commentmeta cache. Default true. */ function update_comment_cache( $comments, $update_meta_cache = true ) { - $data = array(); foreach ( (array) $comments as $comment ) { - $data[ $comment->comment_ID ] = $comment; + wp_cache_add( $comment->comment_ID, $comment, 'comment' ); } - wp_cache_add_multiple( $data, 'comment' ); if ( $update_meta_cache ) { // Avoid `wp_list_pluck()` in case `$comments` is passed by reference. @@ -3319,14 +3075,13 @@ function update_comment_cache( $comments, $update_meta_cache = true ) { /** * Adds any comments from the given IDs to the cache that do not already exist in cache. * - * @since 4.4.0 - * @since 6.1.0 This function is no longer marked as "private". - * @since 6.3.0 Use wp_lazyload_comment_meta() for lazy-loading of comment meta. + * @since WP-4.4.0 + * @access private * * @see update_comment_cache() - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * - * @param int[] $comment_ids Array of comment IDs. + * @param array $comment_ids Array of comment IDs. * @param bool $update_meta_cache Optional. Whether to update the meta cache. Default true. */ function _prime_comment_caches( $comment_ids, $update_meta_cache = true ) { @@ -3334,25 +3089,21 @@ function _prime_comment_caches( $comment_ids, $update_meta_cache = true ) { $non_cached_ids = _get_non_cached_ids( $comment_ids, 'comment' ); if ( ! empty( $non_cached_ids ) ) { - $fresh_comments = $wpdb->get_results( sprintf( "SELECT $wpdb->comments.* FROM $wpdb->comments WHERE comment_ID IN (%s)", implode( ',', array_map( 'intval', $non_cached_ids ) ) ) ); + $fresh_comments = $wpdb->get_results( sprintf( "SELECT $wpdb->comments.* FROM $wpdb->comments WHERE comment_ID IN (%s)", join( ',', array_map( 'intval', $non_cached_ids ) ) ) ); - update_comment_cache( $fresh_comments, false ); - } - - if ( $update_meta_cache ) { - wp_lazyload_comment_meta( $comment_ids ); + update_comment_cache( $fresh_comments, $update_meta_cache ); } } // -// Internal. +// Internal // /** - * Closes 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. * - * @since 2.7.0 * @access private + * @since WP-2.7.0 * * @param WP_Post $posts Post data object. * @param WP_Query $query Query object. @@ -3366,9 +3117,9 @@ function _close_comments_for_old_posts( $posts, $query ) { /** * Filters the list of post types to automatically close comments for. * - * @since 3.2.0 + * @since WP-3.2.0 * - * @param string[] $post_types An array of post type names. + * @param array $post_types An array of registered post types. Default array with 'post'. */ $post_types = apply_filters( 'close_comments_for_post_types', array( 'post' ) ); if ( ! in_array( $posts[0]->post_type, $post_types, true ) ) { @@ -3389,13 +3140,13 @@ function _close_comments_for_old_posts( $posts, $query ) { } /** - * Closes 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. * - * @since 2.7.0 * @access private + * @since WP-2.7.0 * - * @param bool $open Comments open or closed. - * @param int $post_id Post ID. + * @param bool $open Comments open or closed + * @param int $post_id Post ID * @return bool $open */ function _close_comments_for_old_post( $open, $post_id ) { @@ -3438,7 +3189,7 @@ function _close_comments_for_old_post( $open, $post_id ) { * This function expects unslashed data, as opposed to functions such as `wp_new_comment()` which * expect slashed data. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $comment_data { * Comment data. @@ -3454,16 +3205,17 @@ function _close_comments_for_old_post( $open, $post_id ) { * @return WP_Comment|WP_Error A WP_Comment object on success, a WP_Error object on failure. */ function wp_handle_comment_submission( $comment_data ) { - $comment_post_id = 0; - $comment_author = ''; - $comment_author_email = ''; - $comment_author_url = ''; - $comment_content = ''; + + $comment_post_ID = 0; $comment_parent = 0; - $user_id = 0; + $user_ID = 0; + $comment_author = null; + $comment_author_email = null; + $comment_author_url = null; + $comment_content = null; if ( isset( $comment_data['comment_post_ID'] ) ) { - $comment_post_id = (int) $comment_data['comment_post_ID']; + $comment_post_ID = (int) $comment_data['comment_post_ID']; } if ( isset( $comment_data['author'] ) && is_string( $comment_data['author'] ) ) { $comment_author = trim( strip_tags( $comment_data['author'] ) ); @@ -3478,42 +3230,21 @@ function wp_handle_comment_submission( $comment_data ) { $comment_content = trim( $comment_data['comment'] ); } if ( isset( $comment_data['comment_parent'] ) ) { - $comment_parent = absint( $comment_data['comment_parent'] ); - $comment_parent_object = get_comment( $comment_parent ); - - if ( - 0 !== $comment_parent && - ( - ! $comment_parent_object instanceof WP_Comment || - 0 === (int) $comment_parent_object->comment_approved - ) - ) { - /** - * Fires when a comment reply is attempted to an unapproved comment. - * - * @since 6.2.0 - * - * @param int $comment_post_id Post ID. - * @param int $comment_parent Parent comment ID. - */ - do_action( 'comment_reply_to_unapproved_comment', $comment_post_id, $comment_parent ); - - return new WP_Error( 'comment_reply_to_unapproved_comment', __( 'Sorry, replies to unapproved comments are not allowed.' ), 403 ); - } + $comment_parent = absint( $comment_data['comment_parent'] ); } - $post = get_post( $comment_post_id ); + $post = get_post( $comment_post_ID ); if ( empty( $post->comment_status ) ) { /** * Fires when a comment is attempted on a post that does not exist. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param int $comment_post_id Post ID. + * @param int $comment_post_ID Post ID. */ - do_action( 'comment_id_not_found', $comment_post_id ); + do_action( 'comment_id_not_found', $comment_post_ID ); return new WP_Error( 'comment_id_not_found' ); @@ -3522,22 +3253,22 @@ function wp_handle_comment_submission( $comment_data ) { // get_post_status() will get the parent status for attachments. $status = get_post_status( $post ); - if ( ( 'private' === $status ) && ! current_user_can( 'read_post', $comment_post_id ) ) { + if ( ( 'private' === $status ) && ! current_user_can( 'read_post', $comment_post_ID ) ) { return new WP_Error( 'comment_id_not_found' ); } $status_obj = get_post_status_object( $status ); - if ( ! comments_open( $comment_post_id ) ) { + if ( ! comments_open( $comment_post_ID ) ) { /** * Fires when a comment is attempted on a post that has comments closed. * - * @since 1.5.0 + * @since WP-1.5.0 * - * @param int $comment_post_id Post ID. + * @param int $comment_post_ID Post ID. */ - do_action( 'comment_closed', $comment_post_id ); + do_action( 'comment_closed', $comment_post_ID ); return new WP_Error( 'comment_closed', __( 'Sorry, comments are closed for this item.' ), 403 ); @@ -3546,11 +3277,11 @@ function wp_handle_comment_submission( $comment_data ) { /** * Fires when a comment is attempted on a trashed post. * - * @since 2.9.0 + * @since WP-2.9.0 * - * @param int $comment_post_id Post ID. + * @param int $comment_post_ID Post ID. */ - do_action( 'comment_on_trash', $comment_post_id ); + do_action( 'comment_on_trash', $comment_post_ID ); return new WP_Error( 'comment_on_trash' ); @@ -3559,59 +3290,59 @@ function wp_handle_comment_submission( $comment_data ) { /** * Fires when a comment is attempted on a post in draft mode. * - * @since 1.5.1 + * @since WP-1.5.1 * - * @param int $comment_post_id Post ID. + * @param int $comment_post_ID Post ID. */ - do_action( 'comment_on_draft', $comment_post_id ); + do_action( 'comment_on_draft', $comment_post_ID ); - if ( current_user_can( 'read_post', $comment_post_id ) ) { + if ( current_user_can( 'read_post', $comment_post_ID ) ) { return new WP_Error( 'comment_on_draft', __( 'Sorry, comments are not allowed for this item.' ), 403 ); } else { return new WP_Error( 'comment_on_draft' ); } - } elseif ( post_password_required( $comment_post_id ) ) { + } elseif ( post_password_required( $comment_post_ID ) ) { /** * Fires when a comment is attempted on a password-protected post. * - * @since 2.9.0 + * @since WP-2.9.0 * - * @param int $comment_post_id Post ID. + * @param int $comment_post_ID Post ID. */ - do_action( 'comment_on_password_protected', $comment_post_id ); + do_action( 'comment_on_password_protected', $comment_post_ID ); return new WP_Error( 'comment_on_password_protected' ); } else { + /** * Fires before a comment is posted. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param int $comment_post_id Post ID. + * @param int $comment_post_ID Post ID. */ - do_action( 'pre_comment_on_post', $comment_post_id ); + do_action( 'pre_comment_on_post', $comment_post_ID ); + } - // If the user is logged in. + // If the user is logged in $user = wp_get_current_user(); if ( $user->exists() ) { if ( empty( $user->display_name ) ) { $user->display_name = $user->user_login; } - $comment_author = $user->display_name; $comment_author_email = $user->user_email; $comment_author_url = $user->user_url; - $user_id = $user->ID; - + $user_ID = $user->ID; if ( current_user_can( 'unfiltered_html' ) ) { if ( ! isset( $comment_data['_wp_unfiltered_html_comment'] ) - || ! wp_verify_nonce( $comment_data['_wp_unfiltered_html_comment'], 'unfiltered-html-comment_' . $comment_post_id ) + || ! wp_verify_nonce( $comment_data['_wp_unfiltered_html_comment'], 'unfiltered-html-comment_' . $comment_post_ID ) ) { - kses_remove_filters(); // Start with a clean slate. - kses_init_filters(); // Set up the filters. + kses_remove_filters(); // start with a clean slate + kses_init_filters(); // set up the filters remove_filter( 'pre_comment_content', 'wp_filter_post_kses' ); add_filter( 'pre_comment_content', 'wp_filter_kses' ); } @@ -3622,43 +3353,31 @@ function wp_handle_comment_submission( $comment_data ) { } } - $comment_type = 'comment'; + $comment_type = ''; if ( get_option( 'require_name_email' ) && ! $user->exists() ) { if ( '' == $comment_author_email || '' == $comment_author ) { - return new WP_Error( 'require_name_email', __( 'Error: Please fill the required fields.' ), 200 ); + return new WP_Error( 'require_name_email', __( 'ERROR: please fill the required fields (name, email).' ), 200 ); } elseif ( ! is_email( $comment_author_email ) ) { - return new WP_Error( 'require_valid_email', __( 'Error: Please enter a valid email address.' ), 200 ); + return new WP_Error( 'require_valid_email', __( 'ERROR: please enter a valid email address.' ), 200 ); } } - $commentdata = array( - 'comment_post_ID' => $comment_post_id, - ); + if ( '' == $comment_content ) { + return new WP_Error( 'require_valid_comment', __( 'ERROR: please type a comment.' ), 200 ); + } - $commentdata += compact( + $commentdata = compact( + 'comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', - 'user_id' + 'user_ID' ); - /** - * Filters whether an empty comment should be allowed. - * - * @since 5.1.0 - * - * @param bool $allow_empty_comment Whether to allow empty comments. Default false. - * @param array $commentdata Array of comment data to be sent to wp_insert_comment(). - */ - $allow_empty_comment = apply_filters( 'allow_empty_comment', false, $commentdata ); - if ( '' === $comment_content && ! $allow_empty_comment ) { - return new WP_Error( 'require_valid_comment', __( 'Error: Please type your comment text.' ), 200 ); - } - $check_max_lengths = wp_check_comment_data_max_lengths( $commentdata ); if ( is_wp_error( $check_max_lengths ) ) { return $check_max_lengths; @@ -3670,7 +3389,7 @@ function wp_handle_comment_submission( $comment_data ) { } if ( ! $comment_id ) { - return new WP_Error( 'comment_save_error', __( 'Error: The comment could not be saved. Please try again later.' ), 500 ); + return new WP_Error( 'comment_save_error', __( 'ERROR: The comment could not be saved. Please try again later.' ), 500 ); } return get_comment( $comment_id ); @@ -3679,10 +3398,10 @@ function wp_handle_comment_submission( $comment_data ) { /** * Registers the personal data exporter for comments. * - * @since 4.9.6 + * @since WP-4.9.6 * * @param array $exporters An array of personal data exporters. - * @return array An array of personal data exporters. + * @return array $exporters An array of personal data exporters. */ function wp_register_comment_personal_data_exporter( $exporters ) { $exporters['wordpress-comments'] = array( @@ -3696,11 +3415,11 @@ function wp_register_comment_personal_data_exporter( $exporters ) { /** * Finds and exports personal data associated with an email address from the comments table. * - * @since 4.9.6 + * @since WP-4.9.6 * * @param string $email_address The comment author email address. * @param int $page Comment page. - * @return array An array of personal data. + * @return array $return An array of personal data. */ function wp_comments_personal_data_exporter( $email_address, $page = 1 ) { // Limit us to 500 comments at a time to avoid timing out. @@ -3714,7 +3433,7 @@ function wp_comments_personal_data_exporter( $email_address, $page = 1 ) { 'author_email' => $email_address, 'number' => $number, 'paged' => $page, - 'orderby' => 'comment_ID', + 'order_by' => 'comment_ID', 'order' => 'ASC', 'update_comment_meta_cache' => false, ) @@ -3754,7 +3473,7 @@ function wp_comments_personal_data_exporter( $email_address, $page = 1 ) { case 'comment_link': $value = get_comment_link( $comment->comment_ID ); $value = sprintf( - '%s', + '%s', esc_url( $value ), esc_html( $value ) ); @@ -3770,11 +3489,10 @@ function wp_comments_personal_data_exporter( $email_address, $page = 1 ) { } $data_to_export[] = array( - 'group_id' => 'comments', - 'group_label' => __( 'Comments' ), - 'group_description' => __( 'User’s comment data.' ), - 'item_id' => "comment-{$comment->comment_ID}", - 'data' => $comment_data_to_export, + 'group_id' => 'comments', + 'group_label' => __( 'Comments' ), + 'item_id' => "comment-{$comment->comment_ID}", + 'data' => $comment_data_to_export, ); } @@ -3789,10 +3507,10 @@ function wp_comments_personal_data_exporter( $email_address, $page = 1 ) { /** * Registers the personal data eraser for comments. * - * @since 4.9.6 + * @since WP-4.9.6 * - * @param array $erasers An array of personal data erasers. - * @return array An array of personal data erasers. + * @param array $erasers An array of personal data erasers. + * @return array $erasers An array of personal data erasers. */ function wp_register_comment_personal_data_eraser( $erasers ) { $erasers['wordpress-comments'] = array( @@ -3806,12 +3524,10 @@ function wp_register_comment_personal_data_eraser( $erasers ) { /** * Erases personal data associated with an email address from the comments table. * - * @since 4.9.6 + * @since WP-4.9.6 * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param string $email_address The comment author email address. - * @param int $page Comment page. + * @param string $email_address The comment author email address. + * @param int $page Comment page. * @return array */ function wp_comments_personal_data_eraser( $email_address, $page = 1 ) { @@ -3837,7 +3553,7 @@ function wp_comments_personal_data_eraser( $email_address, $page = 1 ) { 'author_email' => $email_address, 'number' => $number, 'paged' => $page, - 'orderby' => 'comment_ID', + 'order_by' => 'comment_ID', 'order' => 'ASC', 'include_unapproved' => true, ) @@ -3861,12 +3577,12 @@ function wp_comments_personal_data_eraser( $email_address, $page = 1 ) { /** * Filters whether to anonymize the comment. * - * @since 4.9.6 + * @since WP-4.9.6 * - * @param bool|string $anon_message Whether to apply the comment anonymization (bool) or a custom - * message (string). Default true. - * @param WP_Comment $comment WP_Comment object. - * @param array $anonymized_comment Anonymized comment data. + * @param bool|string Whether to apply the comment anonymization (bool). + * Custom prevention message (string). Default true. + * @param WP_Comment $comment WP_Comment object. + * @param array $anonymized_comment Anonymized comment data. */ $anon_message = apply_filters( 'wp_anonymize_comment', true, $comment, $anonymized_comment ); @@ -3874,7 +3590,7 @@ function wp_comments_personal_data_eraser( $email_address, $page = 1 ) { if ( $anon_message && is_string( $anon_message ) ) { $messages[] = esc_html( $anon_message ); } else { - /* translators: %d: Comment ID. */ + /* translators: %d: Comment ID */ $messages[] = sprintf( __( 'Comment %d contains personal data but could not be anonymized.' ), $comment_id ); } @@ -3906,109 +3622,3 @@ function wp_comments_personal_data_eraser( $email_address, $page = 1 ) { 'done' => $done, ); } - -/** - * Sets the last changed time for the 'comment' cache group. - * - * @since 5.0.0 - */ -function wp_cache_set_comments_last_changed() { - wp_cache_set( 'last_changed', microtime(), 'comment' ); -} - -/** - * Updates the comment type for a batch of comments. - * - * @since 5.5.0 - * - * @global wpdb $wpdb WordPress database abstraction object. - */ -function _wp_batch_update_comment_type() { - global $wpdb; - - $lock_name = 'update_comment_type.lock'; - - // Try to lock. - $lock_result = $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, 'no') /* LOCK */", $lock_name, time() ) ); - - if ( ! $lock_result ) { - $lock_result = get_option( $lock_name ); - - // Bail if we were unable to create a lock, or if the existing lock is still valid. - if ( ! $lock_result || ( $lock_result > ( time() - HOUR_IN_SECONDS ) ) ) { - wp_schedule_single_event( time() + ( 5 * MINUTE_IN_SECONDS ), 'wp_update_comment_type_batch' ); - return; - } - } - - // Update the lock, as by this point we've definitely got a lock, just need to fire the actions. - update_option( $lock_name, time() ); - - // Check if there's still an empty comment type. - $empty_comment_type = $wpdb->get_var( - "SELECT comment_ID FROM $wpdb->comments - WHERE comment_type = '' - LIMIT 1" - ); - - // No empty comment type, we're done here. - if ( ! $empty_comment_type ) { - update_option( 'finished_updating_comment_type', true ); - delete_option( $lock_name ); - return; - } - - // Empty comment type found? We'll need to run this script again. - wp_schedule_single_event( time() + ( 2 * MINUTE_IN_SECONDS ), 'wp_update_comment_type_batch' ); - - /** - * Filters the comment batch size for updating the comment type. - * - * @since 5.5.0 - * - * @param int $comment_batch_size The comment batch size. Default 100. - */ - $comment_batch_size = (int) apply_filters( 'wp_update_comment_type_batch_size', 100 ); - - // Get the IDs of the comments to update. - $comment_ids = $wpdb->get_col( - $wpdb->prepare( - "SELECT comment_ID - FROM {$wpdb->comments} - WHERE comment_type = '' - ORDER BY comment_ID DESC - LIMIT %d", - $comment_batch_size - ) - ); - - if ( $comment_ids ) { - $comment_id_list = implode( ',', $comment_ids ); - - // Update the `comment_type` field value to be `comment` for the next batch of comments. - $wpdb->query( - "UPDATE {$wpdb->comments} - SET comment_type = 'comment' - WHERE comment_type = '' - AND comment_ID IN ({$comment_id_list})" // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - ); - - // Make sure to clean the comment cache. - clean_comment_cache( $comment_ids ); - } - - delete_option( $lock_name ); -} - -/** - * In order to avoid the _wp_batch_update_comment_type() job being accidentally removed, - * check that it's still scheduled while we haven't finished updating comment types. - * - * @ignore - * @since 5.5.0 - */ -function _wp_check_for_scheduled_update_comment_type() { - if ( ! get_option( 'finished_updating_comment_type' ) && ! wp_next_scheduled( 'wp_update_comment_type_batch' ) ) { - wp_schedule_single_event( time() + MINUTE_IN_SECONDS, 'wp_update_comment_type_batch' ); - } -} diff --git a/wp-includes/compat.php b/wp-includes/compat.php index ac09d06..b3d5831 100644 --- a/wp-includes/compat.php +++ b/wp-includes/compat.php @@ -6,10 +6,10 @@ * @access private */ -// If gettext isn't available. +// If gettext isn't available if ( ! function_exists( '_' ) ) { - function _( $message ) { - return $message; + function _( $string ) { + return $string; } } @@ -17,9 +17,11 @@ function _( $message ) { * Returns whether PCRE/u (PCRE_UTF8 modifier) is available for use. * * @ignore - * @since 4.2.2 + * @since WP-4.2.2 * @access private * + * @staticvar string $utf8_pcre + * * @param bool $set - Used for testing only * null : default - get PCRE/u capability * false : Used for testing - return false for future calls to this function @@ -45,31 +47,31 @@ function _wp_can_use_pcre_u( $set = null ) { * Compat function to mimic mb_substr(). * * @ignore - * @since 3.2.0 + * @since WP-3.2.0 * * @see _mb_substr() * - * @param string $string The string to extract the substring from. - * @param int $start Position to being extraction from in `$string`. - * @param int|null $length Optional. Maximum number of characters to extract from `$string`. + * @param string $str The string to extract the substring from. + * @param int $start Position to being extraction from in `$str`. + * @param int|null $length Optional. Maximum number of characters to extract from `$str`. * Default null. * @param string|null $encoding Optional. Character encoding to use. Default null. * @return string Extracted substring. */ - function mb_substr( $string, $start, $length = null, $encoding = null ) { // phpcs:ignore Universal.NamingConventions.NoReservedKeywordParameterNames.stringFound - return _mb_substr( $string, $start, $length, $encoding ); + function mb_substr( $str, $start, $length = null, $encoding = null ) { + return _mb_substr( $str, $start, $length, $encoding ); } endif; /** * Internal compat function to mimic mb_substr(). * - * Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit. - * For `$encoding === UTF-8`, the `$str` input is expected to be a valid UTF-8 byte - * sequence. The behavior of this function for invalid inputs is undefined. + * Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit. + * For $encoding === UTF-8, the $str input is expected to be a valid UTF-8 byte sequence. + * The behavior of this function for invalid inputs is undefined. * * @ignore - * @since 3.2.0 + * @since WP-3.2.0 * * @param string $str The string to extract the substring from. * @param int $start Position to being extraction from in `$str`. @@ -79,10 +81,6 @@ function mb_substr( $string, $start, $length = null, $encoding = null ) { // php * @return string Extracted substring. */ function _mb_substr( $str, $start, $length = null, $encoding = null ) { - if ( null === $str ) { - return ''; - } - if ( null === $encoding ) { $encoding = get_option( 'blog_charset' ); } @@ -103,7 +101,7 @@ function _mb_substr( $str, $start, $length = null, $encoding = null ) { } $regex = '/( - [\x00-\x7F] # single-byte sequences 0xxxxxxx + [\x00-\x7F] # single-byte sequences 0xxxxxxx | [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx | \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2 | [\xE1-\xEC][\x80-\xBF]{2} @@ -116,7 +114,6 @@ function _mb_substr( $str, $start, $length = null, $encoding = null ) { // Start with 1 element instead of 0 since the first thing we do is pop. $chars = array( '' ); - do { // We had some string left over from the last round, but we counted it in that last round. array_pop( $chars ); @@ -132,7 +129,7 @@ function _mb_substr( $str, $start, $length = null, $encoding = null ) { // If there's anything left over, repeat the loop. } while ( count( $pieces ) > 1 && $str = array_pop( $pieces ) ); - return implode( '', array_slice( $chars, $start, $length ) ); + return join( '', array_slice( $chars, $start, $length ) ); } if ( ! function_exists( 'mb_strlen' ) ) : @@ -140,28 +137,28 @@ function _mb_substr( $str, $start, $length = null, $encoding = null ) { * Compat function to mimic mb_strlen(). * * @ignore - * @since 4.2.0 + * @since WP-4.2.0 * * @see _mb_strlen() * - * @param string $string The string to retrieve the character length from. + * @param string $str The string to retrieve the character length from. * @param string|null $encoding Optional. Character encoding to use. Default null. - * @return int String length of `$string`. + * @return int String length of `$str`. */ - function mb_strlen( $string, $encoding = null ) { // phpcs:ignore Universal.NamingConventions.NoReservedKeywordParameterNames.stringFound - return _mb_strlen( $string, $encoding ); + function mb_strlen( $str, $encoding = null ) { + return _mb_strlen( $str, $encoding ); } endif; /** * Internal compat function to mimic mb_strlen(). * - * Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit. - * For `$encoding === UTF-8`, the `$str` input is expected to be a valid UTF-8 byte + * Only understands UTF-8 and 8bit. All other character sets will be treated as 8bit. + * For $encoding === UTF-8, the `$str` input is expected to be a valid UTF-8 byte * sequence. The behavior of this function for invalid inputs is undefined. * * @ignore - * @since 4.2.0 + * @since WP-4.2.0 * * @param string $str The string to retrieve the character length from. * @param string|null $encoding Optional. Character encoding to use. Default null. @@ -187,7 +184,7 @@ function _mb_strlen( $str, $encoding = null ) { } $regex = '/(?: - [\x00-\x7F] # single-byte sequences 0xxxxxxx + [\x00-\x7F] # single-byte sequences 0xxxxxxx | [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx | \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2 | [\xE1-\xEC][\x80-\xBF]{2} @@ -200,7 +197,6 @@ function _mb_strlen( $str, $encoding = null ) { // Start at 1 instead of 0 since the first thing we do is decrement. $count = 1; - do { // We had some string left over from the last round, but we counted it in that last round. $count--; @@ -221,6 +217,333 @@ function _mb_strlen( $str, $encoding = null ) { return --$count; } +if ( ! function_exists( 'hash_hmac' ) ) : + /** + * Compat function to mimic hash_hmac(). + * + * The Hash extension is bundled with PHP by default since PHP 5.1.2. + * However, the extension may be explicitly disabled on select servers. + * As of PHP 7.4.0, the Hash extension is a core PHP extension and can no + * longer be disabled. + * I.e. when PHP 7.4.0 becomes the minimum requirement, this polyfill + * and the associated `_hash_hmac()` function can be safely removed. + * + * @ignore + * @since WP-3.2.0 + * + * @see _hash_hmac() + * + * @param string $algo Hash algorithm. Accepts 'md5' or 'sha1'. + * @param string $data Data to be hashed. + * @param string $key Secret key to use for generating the hash. + * @param bool $raw_output Optional. Whether to output raw binary data (true), + * or lowercase hexits (false). Default false. + * @return string|false The hash in output determined by `$raw_output`. False if `$algo` + * is unknown or invalid. + */ + function hash_hmac( $algo, $data, $key, $raw_output = false ) { + return _hash_hmac( $algo, $data, $key, $raw_output ); + } +endif; + +/** + * Internal compat function to mimic hash_hmac(). + * + * @ignore + * @since WP-3.2.0 + * + * @param string $algo Hash algorithm. Accepts 'md5' or 'sha1'. + * @param string $data Data to be hashed. + * @param string $key Secret key to use for generating the hash. + * @param bool $raw_output Optional. Whether to output raw binary data (true), + * or lowercase hexits (false). Default false. + * @return string|false The hash in output determined by `$raw_output`. False if `$algo` + * is unknown or invalid. + */ +function _hash_hmac( $algo, $data, $key, $raw_output = false ) { + $packs = array( + 'md5' => 'H32', + 'sha1' => 'H40', + ); + + if ( ! isset( $packs[ $algo ] ) ) { + return false; + } + + $pack = $packs[ $algo ]; + + if ( strlen( $key ) > 64 ) { + $key = pack( $pack, $algo( $key ) ); + } + + $key = str_pad( $key, 64, chr( 0 ) ); + + $ipad = ( substr( $key, 0, 64 ) ^ str_repeat( chr( 0x36 ), 64 ) ); + $opad = ( substr( $key, 0, 64 ) ^ str_repeat( chr( 0x5C ), 64 ) ); + + $hmac = $algo( $opad . pack( $pack, $algo( $ipad . $data ) ) ); + + if ( $raw_output ) { + return pack( $pack, $hmac ); + } + return $hmac; +} + +if ( ! function_exists( 'json_encode' ) ) { + function json_encode( $string ) { + global $wp_json; + + if ( ! ( $wp_json instanceof Services_JSON ) ) { + require_once ABSPATH . WPINC . '/class-json.php'; + $wp_json = new Services_JSON(); + } + + return $wp_json->encodeUnsafe( $string ); + } +} + +if ( ! function_exists( 'json_decode' ) ) { + /** + * @global Services_JSON $wp_json + * @param string $string + * @param bool $assoc_array + * @return object|array + */ + function json_decode( $string, $assoc_array = false ) { + global $wp_json; + + if ( ! ( $wp_json instanceof Services_JSON ) ) { + require_once ABSPATH . WPINC . '/class-json.php'; + $wp_json = new Services_JSON(); + } + + $res = $wp_json->decode( $string ); + if ( $assoc_array ) { + $res = _json_decode_object_helper( $res ); + } + return $res; + } + + /** + * @param object $data + * @return array + */ + function _json_decode_object_helper( $data ) { + if ( is_object( $data ) ) { + $data = get_object_vars( $data ); + } + return is_array( $data ) ? array_map( __FUNCTION__, $data ) : $data; + } +} + +if ( ! function_exists( 'hash_equals' ) ) : + /** + * Timing attack safe string comparison + * + * Compares two strings using the same time whether they're equal or not. + * + * Note: It can leak the length of a string when arguments of differing length are supplied. + * + * This function was added in PHP 5.6. + * However, the Hash extension may be explicitly disabled on select servers. + * As of PHP 7.4.0, the Hash extension is a core PHP extension and can no + * longer be disabled. + * I.e. when PHP 7.4.0 becomes the minimum requirement, this polyfill + * can be safely removed. + * + * @since WP-3.9.2 + * + * @param string $a Expected string. + * @param string $b Actual, user supplied, string. + * @return bool Whether strings are equal. + */ + function hash_equals( $a, $b ) { + $a_length = strlen( $a ); + if ( strlen( $b ) !== $a_length ) { + return false; + } + $result = 0; + + // Do not attempt to "optimize" this. + for ( $i = 0; $i < $a_length; $i++ ) { + $result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] ); + } + + // Do not attempt to "optimize" this. + for ( $i = 0; $i < $a_length; $i++ ) { + $result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] ); + } + + return 0 === $result; + } +endif; + +// JSON_PRETTY_PRINT was introduced in PHP 5.4 +// Defined here to prevent a notice when using it with wp_json_encode() +if ( ! defined( 'JSON_PRETTY_PRINT' ) ) { + define( 'JSON_PRETTY_PRINT', 128 ); +} + +if ( ! function_exists( 'json_last_error_msg' ) ) : + /** + * Retrieves the error string of the last json_encode() or json_decode() call. + * + * @since WP-4.4.0 + * + * @internal This is a compatibility function for PHP <5.5 + * + * @return bool|string Returns the error message on success, "No Error" if no error has occurred, + * or false on failure. + */ + function json_last_error_msg() { + // See https://core.trac.wordpress.org/ticket/27799. + if ( ! function_exists( 'json_last_error' ) ) { + return false; + } + + $last_error_code = json_last_error(); + + // Just in case JSON_ERROR_NONE is not defined. + $error_code_none = defined( 'JSON_ERROR_NONE' ) ? JSON_ERROR_NONE : 0; + + switch ( true ) { + case $last_error_code === $error_code_none: + return 'No error'; + + case defined( 'JSON_ERROR_DEPTH' ) && JSON_ERROR_DEPTH === $last_error_code: + return 'Maximum stack depth exceeded'; + + case defined( 'JSON_ERROR_STATE_MISMATCH' ) && JSON_ERROR_STATE_MISMATCH === $last_error_code: + return 'State mismatch (invalid or malformed JSON)'; + + case defined( 'JSON_ERROR_CTRL_CHAR' ) && JSON_ERROR_CTRL_CHAR === $last_error_code: + return 'Control character error, possibly incorrectly encoded'; + + case defined( 'JSON_ERROR_SYNTAX' ) && JSON_ERROR_SYNTAX === $last_error_code: + return 'Syntax error'; + + case defined( 'JSON_ERROR_UTF8' ) && JSON_ERROR_UTF8 === $last_error_code: + return 'Malformed UTF-8 characters, possibly incorrectly encoded'; + + case defined( 'JSON_ERROR_RECURSION' ) && JSON_ERROR_RECURSION === $last_error_code: + return 'Recursion detected'; + + case defined( 'JSON_ERROR_INF_OR_NAN' ) && JSON_ERROR_INF_OR_NAN === $last_error_code: + return 'Inf and NaN cannot be JSON encoded'; + + case defined( 'JSON_ERROR_UNSUPPORTED_TYPE' ) && JSON_ERROR_UNSUPPORTED_TYPE === $last_error_code: + return 'Type is not supported'; + + default: + return 'An unknown error occurred'; + } + } +endif; + +if ( ! interface_exists( 'JsonSerializable' ) ) { + define( 'WP_JSON_SERIALIZE_COMPATIBLE', true ); + /** + * JsonSerializable interface. + * + * Compatibility shim for PHP <5.4 + * + * @link https://secure.php.net/jsonserializable + * + * @since WP-4.4.0 + */ + interface JsonSerializable { + // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid + public function jsonSerialize(); + } +} + +// random_int was introduced in PHP 7.0 +if ( ! function_exists( 'random_int' ) ) { + require ABSPATH . WPINC . '/random_compat/random.php'; +} + +if ( ! function_exists( 'is_countable' ) ) { + /** + * Polyfill for is_countable() function added in PHP 7.3. + * + * Verify that the content of a variable is an array or an object + * implementing the Countable interface. + * + * @since WP-4.9.6 + * + * @param mixed $var The value to check. + * + * @return bool True if `$var` is countable, false otherwise. + */ + function is_countable( $var ) { + return ( is_array( $var ) + || $var instanceof Countable + || $var instanceof SimpleXMLElement + || $var instanceof ResourceBundle + ); + } +} + +if ( ! function_exists( 'is_iterable' ) ) { + /** + * Polyfill for is_iterable() function added in PHP 7.1. + * + * Verify that the content of a variable is an array or an object + * implementing the Traversable interface. + * + * @since WP-4.9.6 + * + * @param mixed $var The value to check. + * + * @return bool True if `$var` is iterable, false otherwise. + */ + function is_iterable( $var ) { + return ( is_array( $var ) || $var instanceof Traversable ); + } +} + +if ( ! function_exists( 'array_key_first' ) ) { + /** + * Polyfill for array_key_first() function added in PHP 7.3. + * + * Get the first key of the given array without affecting + * the internal array pointer. + * + * @since WP-5.9.0 + * + * @param array $arr An array. + * @return string|int|null The first key of array if the array + * is not empty; `null` otherwise. + */ + function array_key_first( array $arr ) { + foreach ( $arr as $key => $value ) { + return $key; + } + } +} + +if ( ! function_exists( 'array_key_last' ) ) { + /** + * Polyfill for `array_key_last()` function added in PHP 7.3. + * + * Get the last key of the given array without affecting the + * internal array pointer. + * + * @since WP-5.9.0 + * + * @param array $arr An array. + * @return string|int|null The last key of array if the array + *. is not empty; `null` otherwise. + */ + function array_key_last( array $arr ) { + if ( empty( $arr ) ) { + return null; + } + end( $arr ); + return key( $arr ); + } +} + if ( ! function_exists( 'str_contains' ) ) { /** * Polyfill for `str_contains()` function added in PHP 8.0. @@ -228,7 +551,7 @@ function _mb_strlen( $str, $encoding = null ) { * Performs a case-sensitive check indicating if needle is * contained in haystack. * - * @since 5.9.0 + * @since WP-5.9.0 * * @param string $haystack The string to search in. * @param string $needle The substring to search for in the haystack. @@ -239,6 +562,16 @@ function str_contains( $haystack, $needle ) { } } +// IMAGETYPE_WEBP constant is only defined in PHP 7.1 or later. +if ( ! defined( 'IMAGETYPE_WEBP' ) ) { + define( 'IMAGETYPE_WEBP', 18 ); +} + +// IMG_WEBP constant is only defined in PHP 7.0.10 or later. +if ( ! defined( 'IMG_WEBP' ) ) { + define( 'IMG_WEBP', IMAGETYPE_WEBP ); // phpcs:ignore PHPCompatibility.Constants.NewConstants.imagetype_webpFound +} + if ( ! function_exists( 'str_starts_with' ) ) { /** * Polyfill for `str_starts_with()` function added in PHP 8.0. @@ -275,22 +608,12 @@ function str_starts_with( $haystack, $needle ) { * @return bool True if `$haystack` ends with `$needle`, otherwise false. */ function str_ends_with( $haystack, $needle ) { - if ( '' === $haystack && '' !== $needle ) { - return false; + if ( '' === $haystack ) { + return '' === $needle; } $len = strlen( $needle ); - return 0 === substr_compare( $haystack, $needle, -$len, $len ); + return substr( $haystack, -$len, $len ) === $needle; } } - -// IMAGETYPE_WEBP constant is only defined in PHP 7.1 or later. -if ( ! defined( 'IMAGETYPE_WEBP' ) ) { - define( 'IMAGETYPE_WEBP', 18 ); -} - -// IMG_WEBP constant is only defined in PHP 7.0.10 or later. -if ( ! defined( 'IMG_WEBP' ) ) { - define( 'IMG_WEBP', IMAGETYPE_WEBP ); -} diff --git a/wp-includes/cron.php b/wp-includes/cron.php index 3a78f55..35fc66b 100644 --- a/wp-includes/cron.php +++ b/wp-includes/cron.php @@ -8,250 +8,102 @@ /** * Schedules an event to run only once. * - * Schedules a hook which will be triggered by WordPress at the specified UTC time. - * The action will trigger when someone visits your WordPress site if the scheduled - * time has passed. + * Schedules an event which will execute once by the ClassicPress actions core at + * a time which you specify. The action will fire off when someone visits your + * ClassicPress site, if the schedule time has passed. * * Note that scheduling an event to occur within 10 minutes of an existing event * with the same action hook will be ignored unless you pass unique `$args` values * for each scheduled event. * - * Use wp_next_scheduled() to prevent duplicate events. + * @since WP-2.1.0 + * @link https://codex.wordpress.org/Function_Reference/wp_schedule_single_event * - * Use wp_schedule_event() to schedule a recurring event. - * - * @since 2.1.0 - * @since 5.1.0 Return value modified to boolean indicating success or failure, - * {@see 'pre_schedule_event'} filter added to short-circuit the function. - * @since 5.7.0 The `$wp_error` parameter was added. - * - * @link https://developer.wordpress.org/reference/functions/wp_schedule_single_event/ - * - * @param int $timestamp Unix timestamp (UTC) for when to next run the event. - * @param string $hook Action hook to execute when the event is run. - * @param array $args Optional. Array containing arguments to pass to the - * hook's callback function. Each value in the array - * is passed to the callback as an individual parameter. - * The array keys are ignored. Default empty array. - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return bool|WP_Error True if event successfully scheduled. False or WP_Error on failure. + * @param int $timestamp Unix timestamp (UTC) for when to run the event. + * @param string $hook Action hook to execute when event is run. + * @param array $args Optional. Arguments to pass to the hook's callback function. + * @return false|void False if the event does not get scheduled. */ -function wp_schedule_single_event( $timestamp, $hook, $args = array(), $wp_error = false ) { - // Make sure timestamp is a positive integer. +function wp_schedule_single_event( $timestamp, $hook, $args = array() ) { + // Make sure timestamp is a positive integer if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { - if ( $wp_error ) { - return new WP_Error( - 'invalid_timestamp', - __( 'Event timestamp must be a valid Unix timestamp.' ) - ); - } + return false; + } + // Don't schedule a duplicate if there's already an identical event due within 10 minutes of it + $next = wp_next_scheduled( $hook, $args ); + if ( $next && abs( $next - $timestamp ) <= 10 * MINUTE_IN_SECONDS ) { return false; } + $crons = _get_cron_array(); $event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => false, 'args' => $args, ); - /** - * Filter to preflight or hijack scheduling an event. - * - * Returning a non-null value will short-circuit adding the event to the - * cron array, causing the function to return the filtered value instead. - * - * Both single events and recurring events are passed through this filter; - * single events have `$event->schedule` as false, whereas recurring events - * have this set to a recurrence from wp_get_schedules(). Recurring - * events also have the integer recurrence interval set as `$event->interval`. + * Filters a single event before it is scheduled. * - * For plugins replacing wp-cron, it is recommended you check for an - * identical event within ten minutes and apply the {@see 'schedule_event'} - * filter to check if another plugin has disallowed the event before scheduling. + * @since WP-3.1.0 * - * Return true if the event was scheduled, false or a WP_Error if not. - * - * @since 5.1.0 - * @since 5.7.0 The `$wp_error` parameter was added, and a `WP_Error` object can now be returned. - * - * @param null|bool|WP_Error $result The value to return instead. Default null to continue adding the event. - * @param object $event { + * @param stdClass $event { * An object containing an event's data. * - * @type string $hook Action hook to execute when the event is run. - * @type int $timestamp Unix timestamp (UTC) for when to next run the event. - * @type string|false $schedule How often the event should subsequently recur. - * @type array $args Array containing each separate argument to pass to the hook's callback function. - * @type int $interval Optional. The interval time in seconds for the schedule. Only present for recurring events. - * } - * @param bool $wp_error Whether to return a WP_Error on failure. - */ - $pre = apply_filters( 'pre_schedule_event', null, $event, $wp_error ); - - if ( null !== $pre ) { - if ( $wp_error && false === $pre ) { - return new WP_Error( - 'pre_schedule_event_false', - __( 'A plugin prevented the event from being scheduled.' ) - ); - } - - if ( ! $wp_error && is_wp_error( $pre ) ) { - return false; - } - - return $pre; - } - - /* - * Check for a duplicated event. - * - * Don't schedule an event if there's already an identical event - * within 10 minutes. - * - * When scheduling events within ten minutes of the current time, - * all past identical events are considered duplicates. - * - * When scheduling an event with a past timestamp (ie, before the - * current time) all events scheduled within the next ten minutes - * are considered duplicates. - */ - $crons = _get_cron_array(); - - $key = md5( serialize( $event->args ) ); - $duplicate = false; - - if ( $event->timestamp < time() + 10 * MINUTE_IN_SECONDS ) { - $min_timestamp = 0; - } else { - $min_timestamp = $event->timestamp - 10 * MINUTE_IN_SECONDS; - } - - if ( $event->timestamp < time() ) { - $max_timestamp = time() + 10 * MINUTE_IN_SECONDS; - } else { - $max_timestamp = $event->timestamp + 10 * MINUTE_IN_SECONDS; - } - - foreach ( $crons as $event_timestamp => $cron ) { - if ( $event_timestamp < $min_timestamp ) { - continue; - } - if ( $event_timestamp > $max_timestamp ) { - break; - } - if ( isset( $cron[ $event->hook ][ $key ] ) ) { - $duplicate = true; - break; - } - } - - if ( $duplicate ) { - if ( $wp_error ) { - return new WP_Error( - 'duplicate_event', - __( 'A duplicate event already exists.' ) - ); - } - - return false; - } - - /** - * Modify an event before it is scheduled. - * - * @since 3.1.0 - * - * @param object|false $event { - * An object containing an event's data, or boolean false to prevent the event from being scheduled. - * - * @type string $hook Action hook to execute when the event is run. - * @type int $timestamp Unix timestamp (UTC) for when to next run the event. - * @type string|false $schedule How often the event should subsequently recur. - * @type array $args Array containing each separate argument to pass to the hook's callback function. - * @type int $interval Optional. The interval time in seconds for the schedule. Only present for recurring events. + * @type string $hook Action hook to execute when event is run. + * @type int $timestamp Unix timestamp (UTC) for when to run the event. + * @type string|false $schedule How often the event should recur. See `wp_get_schedules()`. + * @type array $args Arguments to pass to the hook's callback function. * } */ $event = apply_filters( 'schedule_event', $event ); - // A plugin disallowed this event. + // A plugin disallowed this event if ( ! $event ) { - if ( $wp_error ) { - return new WP_Error( - 'schedule_event_false', - __( 'A plugin disallowed this event.' ) - ); - } - return false; } + $key = md5( serialize( $event->args ) ); + $crons[ $event->timestamp ][ $event->hook ][ $key ] = array( 'schedule' => $event->schedule, 'args' => $event->args, ); uksort( $crons, 'strnatcasecmp' ); - - return _set_cron_array( $crons, $wp_error ); + _set_cron_array( $crons ); } /** - * Schedules a recurring event. + * Schedule a recurring event. * - * Schedules a hook which will be triggered by WordPress at the specified interval. - * The action will trigger when someone visits your WordPress site if the scheduled - * time has passed. + * Schedules a hook which will be executed by the ClassicPress actions core on a + * specific interval, specified by you. The action will trigger when someone + * visits your ClassicPress 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 {@see 'cron_schedules'} filter in wp_get_schedules(). * - * Use wp_next_scheduled() to prevent duplicate events. - * - * Use wp_schedule_single_event() to schedule a non-recurring event. - * - * @since 2.1.0 - * @since 5.1.0 Return value modified to boolean indicating success or failure, - * {@see 'pre_schedule_event'} filter added to short-circuit the function. - * @since 5.7.0 The `$wp_error` parameter was added. + * Use wp_next_scheduled() to prevent duplicates * - * @link https://developer.wordpress.org/reference/functions/wp_schedule_event/ + * @since WP-2.1.0 * - * @param int $timestamp Unix timestamp (UTC) for when to next run the event. - * @param string $recurrence How often the event should subsequently recur. - * See wp_get_schedules() for accepted values. - * @param string $hook Action hook to execute when the event is run. - * @param array $args Optional. Array containing arguments to pass to the - * hook's callback function. Each value in the array - * is passed to the callback as an individual parameter. - * The array keys are ignored. Default empty array. - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return bool|WP_Error True if event successfully scheduled. False or WP_Error on failure. + * @param int $timestamp Unix timestamp (UTC) for when to run the event. + * @param string $recurrence How often the event should recur. + * @param string $hook Action hook to execute when event is run. + * @param array $args Optional. Arguments to pass to the hook's callback function. + * @return false|void False if the event does not get scheduled. */ -function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array(), $wp_error = false ) { - // Make sure timestamp is a positive integer. +function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array() ) { + // Make sure timestamp is a positive integer if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { - if ( $wp_error ) { - return new WP_Error( - 'invalid_timestamp', - __( 'Event timestamp must be a valid Unix timestamp.' ) - ); - } - return false; } + $crons = _get_cron_array(); $schedules = wp_get_schedules(); if ( ! isset( $schedules[ $recurrence ] ) ) { - if ( $wp_error ) { - return new WP_Error( - 'invalid_schedule', - __( 'Event schedule does not exist.' ) - ); - } - return false; } @@ -262,166 +114,57 @@ function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array(), $wp 'args' => $args, 'interval' => $schedules[ $recurrence ]['interval'], ); - - /** This filter is documented in wp-includes/cron.php */ - $pre = apply_filters( 'pre_schedule_event', null, $event, $wp_error ); - - if ( null !== $pre ) { - if ( $wp_error && false === $pre ) { - return new WP_Error( - 'pre_schedule_event_false', - __( 'A plugin prevented the event from being scheduled.' ) - ); - } - - if ( ! $wp_error && is_wp_error( $pre ) ) { - return false; - } - - return $pre; - } - /** This filter is documented in wp-includes/cron.php */ $event = apply_filters( 'schedule_event', $event ); - // A plugin disallowed this event. + // A plugin disallowed this event if ( ! $event ) { - if ( $wp_error ) { - return new WP_Error( - 'schedule_event_false', - __( 'A plugin disallowed this event.' ) - ); - } - return false; } $key = md5( serialize( $event->args ) ); - $crons = _get_cron_array(); - $crons[ $event->timestamp ][ $event->hook ][ $key ] = array( 'schedule' => $event->schedule, 'args' => $event->args, 'interval' => $event->interval, ); uksort( $crons, 'strnatcasecmp' ); - - return _set_cron_array( $crons, $wp_error ); + _set_cron_array( $crons ); } /** - * Reschedules a recurring event. - * - * Mainly for internal use, this takes the UTC timestamp of a previously run - * recurring event and reschedules it for its next run. - * - * To change upcoming scheduled events, use wp_schedule_event() to - * change the recurrence frequency. + * Reschedule a recurring event. * - * @since 2.1.0 - * @since 5.1.0 Return value modified to boolean indicating success or failure, - * {@see 'pre_reschedule_event'} filter added to short-circuit the function. - * @since 5.7.0 The `$wp_error` parameter was added. + * @since WP-2.1.0 * - * @param int $timestamp Unix timestamp (UTC) for when the event was scheduled. - * @param string $recurrence How often the event should subsequently recur. - * See wp_get_schedules() for accepted values. - * @param string $hook Action hook to execute when the event is run. - * @param array $args Optional. Array containing arguments to pass to the - * hook's callback function. Each value in the array - * is passed to the callback as an individual parameter. - * The array keys are ignored. Default empty array. - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return bool|WP_Error True if event successfully rescheduled. False or WP_Error on failure. + * @param int $timestamp Unix timestamp (UTC) for when to run the event. + * @param string $recurrence How often the event should recur. + * @param string $hook Action hook to execute when event is run. + * @param array $args Optional. Arguments to pass to the hook's callback function. + * @return false|void False if the event does not get rescheduled. */ -function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array(), $wp_error = false ) { - // Make sure timestamp is a positive integer. +function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array() ) { + // Make sure timestamp is a positive integer if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { - if ( $wp_error ) { - return new WP_Error( - 'invalid_timestamp', - __( 'Event timestamp must be a valid Unix timestamp.' ) - ); - } - return false; } + $crons = _get_cron_array(); $schedules = wp_get_schedules(); + $key = md5( serialize( $args ) ); $interval = 0; - // First we try to get the interval from the schedule. + // First we try to get it from the schedule if ( isset( $schedules[ $recurrence ] ) ) { $interval = $schedules[ $recurrence ]['interval']; } - - // Now we try to get it from the saved interval in case the schedule disappears. - if ( 0 === $interval ) { - $scheduled_event = wp_get_scheduled_event( $hook, $args, $timestamp ); - if ( $scheduled_event && isset( $scheduled_event->interval ) ) { - $interval = $scheduled_event->interval; - } - } - - $event = (object) array( - 'hook' => $hook, - 'timestamp' => $timestamp, - 'schedule' => $recurrence, - 'args' => $args, - 'interval' => $interval, - ); - - /** - * Filter to preflight or hijack rescheduling of a recurring event. - * - * Returning a non-null value will short-circuit the normal rescheduling - * process, causing the function to return the filtered value instead. - * - * For plugins replacing wp-cron, return true if the event was successfully - * rescheduled, false or a WP_Error if not. - * - * @since 5.1.0 - * @since 5.7.0 The `$wp_error` parameter was added, and a `WP_Error` object can now be returned. - * - * @param null|bool|WP_Error $pre Value to return instead. Default null to continue adding the event. - * @param object $event { - * An object containing an event's data. - * - * @type string $hook Action hook to execute when the event is run. - * @type int $timestamp Unix timestamp (UTC) for when to next run the event. - * @type string $schedule How often the event should subsequently recur. - * @type array $args Array containing each separate argument to pass to the hook's callback function. - * @type int $interval The interval time in seconds for the schedule. - * } - * @param bool $wp_error Whether to return a WP_Error on failure. - */ - $pre = apply_filters( 'pre_reschedule_event', null, $event, $wp_error ); - - if ( null !== $pre ) { - if ( $wp_error && false === $pre ) { - return new WP_Error( - 'pre_reschedule_event_false', - __( 'A plugin prevented the event from being rescheduled.' ) - ); - } - - if ( ! $wp_error && is_wp_error( $pre ) ) { - return false; - } - - return $pre; + // Now we try to get it from the saved interval in case the schedule disappears + if ( 0 == $interval ) { + $interval = $crons[ $timestamp ][ $hook ][ $key ]['interval']; } - - // Now we assume something is wrong and fail to schedule. + // Now we assume something is wrong and fail to schedule if ( 0 == $interval ) { - if ( $wp_error ) { - return new WP_Error( - 'invalid_schedule', - __( 'Event schedule does not exist.' ) - ); - } - return false; } @@ -433,77 +176,31 @@ function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array(), $ $timestamp = $now + ( $interval - ( ( $now - $timestamp ) % $interval ) ); } - return wp_schedule_event( $timestamp, $recurrence, $hook, $args, $wp_error ); + wp_schedule_event( $timestamp, $recurrence, $hook, $args ); } /** - * Unschedules a previously scheduled event. + * Unschedule a previously scheduled event. * - * The `$timestamp` and `$hook` parameters are required so that the event can be + * The $timestamp and $hook parameters are required so that the event can be * identified. * - * @since 2.1.0 - * @since 5.1.0 Return value modified to boolean indicating success or failure, - * {@see 'pre_unschedule_event'} filter added to short-circuit the function. - * @since 5.7.0 The `$wp_error` parameter was added. + * @since WP-2.1.0 * - * @param int $timestamp Unix timestamp (UTC) of the event. - * @param string $hook Action hook of the event. - * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. - * Although not passed to a callback, these arguments are used to uniquely identify the - * event, so they should be the same as those used when originally scheduling the event. - * Default empty array. - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return bool|WP_Error True if event successfully unscheduled. False or WP_Error on failure. + * @param int $timestamp Unix timestamp (UTC) for when to run the event. + * @param string $hook Action hook, the execution of which will be unscheduled. + * @param array $args Arguments to pass to the hook's callback function. + * Although not passed to a callback function, these arguments are used + * to uniquely identify the scheduled event, so they should be the same + * as those used when originally scheduling the event. + * @return false|void False if the event does not get unscheduled. */ -function wp_unschedule_event( $timestamp, $hook, $args = array(), $wp_error = false ) { - // Make sure timestamp is a positive integer. +function wp_unschedule_event( $timestamp, $hook, $args = array() ) { + // Make sure timestamp is a positive integer if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { - if ( $wp_error ) { - return new WP_Error( - 'invalid_timestamp', - __( 'Event timestamp must be a valid Unix timestamp.' ) - ); - } - return false; } - /** - * Filter to preflight or hijack unscheduling of events. - * - * Returning a non-null value will short-circuit the normal unscheduling - * process, causing the function to return the filtered value instead. - * - * For plugins replacing wp-cron, return true if the event was successfully - * unscheduled, false or a WP_Error if not. - * - * @since 5.1.0 - * @since 5.7.0 The `$wp_error` parameter was added, and a `WP_Error` object can now be returned. - * - * @param null|bool|WP_Error $pre Value to return instead. Default null to continue unscheduling the event. - * @param int $timestamp Timestamp for when to run the event. - * @param string $hook Action hook, the execution of which will be unscheduled. - * @param array $args Arguments to pass to the hook's callback function. - * @param bool $wp_error Whether to return a WP_Error on failure. - */ - $pre = apply_filters( 'pre_unschedule_event', null, $timestamp, $hook, $args, $wp_error ); - - if ( null !== $pre ) { - if ( $wp_error && false === $pre ) { - return new WP_Error( - 'pre_unschedule_event_false', - __( 'A plugin prevented the event from being unscheduled.' ) - ); - } - - if ( ! $wp_error && is_wp_error( $pre ) ) { - return false; - } - - return $pre; - } - $crons = _get_cron_array(); $key = md5( serialize( $args ) ); unset( $crons[ $timestamp ][ $hook ][ $key ] ); @@ -513,110 +210,39 @@ function wp_unschedule_event( $timestamp, $hook, $args = array(), $wp_error = fa if ( empty( $crons[ $timestamp ] ) ) { unset( $crons[ $timestamp ] ); } - - return _set_cron_array( $crons, $wp_error ); + _set_cron_array( $crons ); } /** * Unschedules all events attached to the hook with the specified arguments. * - * Warning: This function may return Boolean FALSE, but may also return a non-Boolean - * value which evaluates to FALSE. For information about casting to booleans see the - * {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use - * the `===` operator for testing the return value of this function. - * - * @since 2.1.0 - * @since 5.1.0 Return value modified to indicate success or failure, - * {@see 'pre_clear_scheduled_hook'} filter added to short-circuit the function. - * @since 5.7.0 The `$wp_error` parameter was added. + * @since WP-2.1.0 * - * @param string $hook Action hook, the execution of which will be unscheduled. - * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. - * Although not passed to a callback, these arguments are used to uniquely identify the - * event, so they should be the same as those used when originally scheduling the event. - * Default empty array. - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return int|false|WP_Error On success an integer indicating number of events unscheduled (0 indicates no - * events were registered with the hook and arguments combination), false or WP_Error - * if unscheduling one or more events fail. + * @param string $hook Action hook, the execution of which will be unscheduled. + * @param array $args Optional. Arguments that were to be passed to the hook's callback function. */ -function wp_clear_scheduled_hook( $hook, $args = array(), $wp_error = false ) { +function wp_clear_scheduled_hook( $hook, $args = array() ) { // Backward compatibility. // Previously, this function took the arguments as discrete vars rather than an array like the rest of the API. if ( ! is_array( $args ) ) { - _deprecated_argument( __FUNCTION__, '3.0.0', __( 'This argument has changed to an array to match the behavior of the other cron functions.' ) ); - $args = array_slice( func_get_args(), 1 ); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection - $wp_error = false; - } - - /** - * Filter to preflight or hijack clearing a scheduled hook. - * - * Returning a non-null value will short-circuit the normal unscheduling - * process, causing the function to return the filtered value instead. - * - * For plugins replacing wp-cron, return the number of events successfully - * unscheduled (zero if no events were registered with the hook) or false - * or a WP_Error if unscheduling one or more events fails. - * - * @since 5.1.0 - * @since 5.7.0 The `$wp_error` parameter was added, and a `WP_Error` object can now be returned. - * - * @param null|int|false|WP_Error $pre Value to return instead. Default null to continue unscheduling the event. - * @param string $hook Action hook, the execution of which will be unscheduled. - * @param array $args Arguments to pass to the hook's callback function. - * @param bool $wp_error Whether to return a WP_Error on failure. - */ - $pre = apply_filters( 'pre_clear_scheduled_hook', null, $hook, $args, $wp_error ); - - if ( null !== $pre ) { - if ( $wp_error && false === $pre ) { - return new WP_Error( - 'pre_clear_scheduled_hook_false', - __( 'A plugin prevented the hook from being cleared.' ) - ); - } - - if ( ! $wp_error && is_wp_error( $pre ) ) { - return false; - } - - return $pre; + _deprecated_argument( __FUNCTION__, 'WP-3.0.0', __( 'This argument has changed to an array to match the behavior of the other cron functions.' ) ); + $args = array_slice( func_get_args(), 1 ); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection } - /* - * This logic duplicates wp_next_scheduled(). - * It's required due to a scenario where wp_unschedule_event() fails due to update_option() failing, - * and, wp_next_scheduled() returns the same schedule in an infinite loop. - */ + // This logic duplicates wp_next_scheduled() + // It's required due to a scenario where wp_unschedule_event() fails due to update_option() failing, + // and, wp_next_scheduled() returns the same schedule in an infinite loop. $crons = _get_cron_array(); if ( empty( $crons ) ) { - return 0; + return; } - $results = array(); - $key = md5( serialize( $args ) ); - + $key = md5( serialize( $args ) ); foreach ( $crons as $timestamp => $cron ) { if ( isset( $cron[ $hook ][ $key ] ) ) { - $results[] = wp_unschedule_event( $timestamp, $hook, $args, true ); + wp_unschedule_event( $timestamp, $hook, $args ); } } - - $errors = array_filter( $results, 'is_wp_error' ); - $error = new WP_Error(); - - if ( $errors ) { - if ( $wp_error ) { - array_walk( $errors, array( $error, 'merge_from' ) ); - - return $error; - } - - return false; - } - - return count( $results ); } /** @@ -624,65 +250,14 @@ function wp_clear_scheduled_hook( $hook, $args = array(), $wp_error = false ) { * * Can be useful for plugins when deactivating to clean up the cron queue. * - * Warning: This function may return Boolean FALSE, but may also return a non-Boolean - * value which evaluates to FALSE. For information about casting to booleans see the - * {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use - * the `===` operator for testing the return value of this function. + * @since WP-4.9.0 * - * @since 4.9.0 - * @since 5.1.0 Return value added to indicate success or failure. - * @since 5.7.0 The `$wp_error` parameter was added. - * - * @param string $hook Action hook, the execution of which will be unscheduled. - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return int|false|WP_Error On success an integer indicating number of events unscheduled (0 indicates no - * events were registered on the hook), false or WP_Error if unscheduling fails. + * @param string $hook Action hook, the execution of which will be unscheduled. */ -function wp_unschedule_hook( $hook, $wp_error = false ) { - /** - * Filter to preflight or hijack clearing all events attached to the hook. - * - * Returning a non-null value will short-circuit the normal unscheduling - * process, causing the function to return the filtered value instead. - * - * For plugins replacing wp-cron, return the number of events successfully - * unscheduled (zero if no events were registered with the hook) or false - * if unscheduling one or more events fails. - * - * @since 5.1.0 - * @since 5.7.0 The `$wp_error` parameter was added, and a `WP_Error` object can now be returned. - * - * @param null|int|false|WP_Error $pre Value to return instead. Default null to continue unscheduling the hook. - * @param string $hook Action hook, the execution of which will be unscheduled. - * @param bool $wp_error Whether to return a WP_Error on failure. - */ - $pre = apply_filters( 'pre_unschedule_hook', null, $hook, $wp_error ); - - if ( null !== $pre ) { - if ( $wp_error && false === $pre ) { - return new WP_Error( - 'pre_unschedule_hook_false', - __( 'A plugin prevented the hook from being cleared.' ) - ); - } - - if ( ! $wp_error && is_wp_error( $pre ) ) { - return false; - } - - return $pre; - } - +function wp_unschedule_hook( $hook ) { $crons = _get_cron_array(); - if ( empty( $crons ) ) { - return 0; - } - $results = array(); foreach ( $crons as $timestamp => $args ) { - if ( ! empty( $crons[ $timestamp ][ $hook ] ) ) { - $results[] = count( $crons[ $timestamp ][ $hook ] ); - } unset( $crons[ $timestamp ][ $hook ] ); if ( empty( $crons[ $timestamp ] ) ) { @@ -690,144 +265,38 @@ function wp_unschedule_hook( $hook, $wp_error = false ) { } } - /* - * If the results are empty (zero events to unschedule), no attempt - * to update the cron array is required. - */ - if ( empty( $results ) ) { - return 0; - } - - $set = _set_cron_array( $crons, $wp_error ); - - if ( true === $set ) { - return array_sum( $results ); - } - - return $set; + _set_cron_array( $crons ); } /** - * Retrieves a scheduled event. - * - * Retrieves the full event object for a given event, if no timestamp is specified the next - * scheduled event is returned. - * - * @since 5.1.0 + * Retrieve the next timestamp for an event. * - * @param string $hook Action hook of the event. - * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. - * Although not passed to a callback, these arguments are used to uniquely identify the - * event, so they should be the same as those used when originally scheduling the event. - * Default empty array. - * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event - * is returned. Default null. - * @return object|false { - * The event object. False if the event does not exist. + * @since WP-2.1.0 * - * @type string $hook Action hook to execute when the event is run. - * @type int $timestamp Unix timestamp (UTC) for when to next run the event. - * @type string|false $schedule How often the event should subsequently recur. - * @type array $args Array containing each separate argument to pass to the hook's callback function. - * @type int $interval Optional. The interval time in seconds for the schedule. Only present for recurring events. - * } + * @param string $hook Action hook to execute when event is run. + * @param array $args Optional. Arguments to pass to the hook's callback function. + * @return false|int The Unix timestamp of the next time the scheduled event will occur. */ -function wp_get_scheduled_event( $hook, $args = array(), $timestamp = null ) { - /** - * Filter to preflight or hijack retrieving a scheduled event. - * - * Returning a non-null value will short-circuit the normal process, - * returning the filtered value instead. - * - * Return false if the event does not exist, otherwise an event object - * should be returned. - * - * @since 5.1.0 - * - * @param null|false|object $pre Value to return instead. Default null to continue retrieving the event. - * @param string $hook Action hook of the event. - * @param array $args Array containing each separate argument to pass to the hook's callback function. - * Although not passed to a callback, these arguments are used to uniquely identify - * the event. - * @param int|null $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event. - */ - $pre = apply_filters( 'pre_get_scheduled_event', null, $hook, $args, $timestamp ); - if ( null !== $pre ) { - return $pre; - } - - if ( null !== $timestamp && ! is_numeric( $timestamp ) ) { - return false; - } - +function wp_next_scheduled( $hook, $args = array() ) { $crons = _get_cron_array(); + $key = md5( serialize( $args ) ); if ( empty( $crons ) ) { return false; } - - $key = md5( serialize( $args ) ); - - if ( ! $timestamp ) { - // Get next event. - $next = false; - foreach ( $crons as $timestamp => $cron ) { - if ( isset( $cron[ $hook ][ $key ] ) ) { - $next = $timestamp; - break; - } - } - if ( ! $next ) { - return false; + foreach ( $crons as $timestamp => $cron ) { + if ( isset( $cron[ $hook ][ $key ] ) ) { + return $timestamp; } - - $timestamp = $next; - } elseif ( ! isset( $crons[ $timestamp ][ $hook ][ $key ] ) ) { - return false; - } - - $event = (object) array( - 'hook' => $hook, - 'timestamp' => $timestamp, - 'schedule' => $crons[ $timestamp ][ $hook ][ $key ]['schedule'], - 'args' => $args, - ); - - if ( isset( $crons[ $timestamp ][ $hook ][ $key ]['interval'] ) ) { - $event->interval = $crons[ $timestamp ][ $hook ][ $key ]['interval']; - } - - return $event; -} - -/** - * Retrieves the next timestamp for an event. - * - * @since 2.1.0 - * - * @param string $hook Action hook of the event. - * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. - * Although not passed to a callback, these arguments are used to uniquely identify the - * event, so they should be the same as those used when originally scheduling the event. - * Default empty array. - * @return int|false The Unix timestamp of the next time the event will occur. False if the event doesn't exist. - */ -function wp_next_scheduled( $hook, $args = array() ) { - $next_event = wp_get_scheduled_event( $hook, $args ); - if ( ! $next_event ) { - return false; } - - return $next_event->timestamp; + return false; } /** * Sends a request to run cron through HTTP request that doesn't halt page loading. * - * @since 2.1.0 - * @since 5.1.0 Return values added. + * @since WP-2.1.0 * * @param int $gmt_time Optional. Unix timestamp (UTC). Default 0 (current time is used). - * @return bool True if spawned, false if no events spawned. */ function spawn_cron( $gmt_time = 0 ) { if ( ! $gmt_time ) { @@ -835,7 +304,7 @@ function spawn_cron( $gmt_time = 0 ) { } if ( defined( 'DOING_CRON' ) || isset( $_GET['doing_wp_cron'] ) ) { - return false; + return; } /* @@ -851,25 +320,25 @@ function spawn_cron( $gmt_time = 0 ) { $lock = 0; } - // Don't run if another process is currently running it or more than once every 60 sec. + // don't run if another process is currently running it or more than once every 60 sec. if ( $lock + WP_CRON_LOCK_TIMEOUT > $gmt_time ) { - return false; + return; } - // Sanity check. - $crons = wp_get_ready_cron_jobs(); - if ( empty( $crons ) ) { - return false; + //sanity check + $crons = _get_cron_array(); + if ( ! is_array( $crons ) ) { + return; } $keys = array_keys( $crons ); if ( isset( $keys[0] ) && $keys[0] > $gmt_time ) { - return false; + return; } if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) { if ( 'GET' !== $_SERVER['REQUEST_METHOD'] || defined( 'DOING_AJAX' ) || defined( 'XMLRPC_REQUEST' ) ) { - return false; + return; } $doing_wp_cron = sprintf( '%.22F', $gmt_time ); @@ -879,7 +348,7 @@ function spawn_cron( $gmt_time = 0 ) { wp_redirect( add_query_arg( 'doing_wp_cron', $doing_wp_cron, wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); echo ' '; - // Flush any buffers and send the headers. + // flush any buffers and send the headers wp_ob_end_flush_all(); flush(); @@ -894,8 +363,8 @@ function spawn_cron( $gmt_time = 0 ) { /** * Filters the cron request arguments. * - * @since 3.5.0 - * @since 4.5.0 The `$doing_wp_cron` parameter was added. + * @since WP-3.5.0 + * @since WP-4.5.0 The `$doing_wp_cron` parameter was added. * * @param array $cron_request_array { * An array of cron request URL arguments. @@ -927,70 +396,31 @@ function spawn_cron( $gmt_time = 0 ) { $doing_wp_cron ); - $result = wp_remote_post( $cron_request['url'], $cron_request['args'] ); - return ! is_wp_error( $result ); + wp_remote_post( $cron_request['url'], $cron_request['args'] ); } /** - * Registers _wp_cron() to run on the {@see 'wp_loaded'} action. + * Run scheduled callbacks or spawn cron for all scheduled events. * - * If the {@see 'wp_loaded'} action has already fired, this function calls - * _wp_cron() directly. - * - * Warning: This function may return Boolean FALSE, but may also return a non-Boolean - * value which evaluates to FALSE. For information about casting to booleans see the - * {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use - * the `===` operator for testing the return value of this function. - * - * @since 2.1.0 - * @since 5.1.0 Return value added to indicate success or failure. - * @since 5.7.0 Functionality moved to _wp_cron() to which this becomes a wrapper. - * - * @return bool|int|void On success an integer indicating number of events spawned (0 indicates no - * events needed to be spawned), false if spawning fails for one or more events or - * void if the function registered _wp_cron() to run on the action. + * @since WP-2.1.0 */ function wp_cron() { - if ( did_action( 'wp_loaded' ) ) { - return _wp_cron(); - } - - add_action( 'wp_loaded', '_wp_cron', 20 ); -} - -/** - * Runs scheduled callbacks or spawns cron for all scheduled events. - * - * Warning: This function may return Boolean FALSE, but may also return a non-Boolean - * value which evaluates to FALSE. For information about casting to booleans see the - * {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use - * the `===` operator for testing the return value of this function. - * - * @since 5.7.0 - * @access private - * - * @return int|false On success an integer indicating number of events spawned (0 indicates no - * events needed to be spawned), false if spawning fails for one or more events. - */ -function _wp_cron() { - // Prevent infinite loops caused by lack of wp-cron.php. + // Prevent infinite loops caused by lack of wp-cron.php if ( strpos( $_SERVER['REQUEST_URI'], '/wp-cron.php' ) !== false || ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) ) { - return 0; + return; } - $crons = wp_get_ready_cron_jobs(); - if ( empty( $crons ) ) { - return 0; + if ( false === $crons = _get_cron_array() ) { + return; } $gmt_time = microtime( true ); $keys = array_keys( $crons ); if ( isset( $keys[0] ) && $keys[0] > $gmt_time ) { - return 0; + return; } $schedules = wp_get_schedules(); - $results = array(); foreach ( $crons as $timestamp => $cronhooks ) { if ( $timestamp > $gmt_time ) { break; @@ -999,55 +429,41 @@ function _wp_cron() { if ( isset( $schedules[ $hook ]['callback'] ) && ! call_user_func( $schedules[ $hook ]['callback'] ) ) { continue; } - $results[] = spawn_cron( $gmt_time ); + spawn_cron( $gmt_time ); break 2; } } - - if ( in_array( false, $results, true ) ) { - return false; - } - return count( $results ); } /** - * Retrieves supported event recurrence schedules. + * Retrieve supported event recurrence schedules. * - * The default supported recurrences are 'hourly', 'twicedaily', 'daily', and 'weekly'. - * A plugin may add more by hooking into the {@see 'cron_schedules'} filter. - * The filter accepts an array of arrays. The outer array has a key that is the name - * of the schedule, for example 'monthly'. The value is an array with two keys, - * one is 'interval' and the other is 'display'. + * The default supported recurrences are 'hourly', 'twicedaily', and 'daily'. A plugin may + * add more by hooking into the {@see 'cron_schedules'} filter. The filter accepts an array + * of arrays. The outer array has a key that is the name of the schedule or for + * example 'weekly'. The value is an array with two keys, one is 'interval' and + * the other is 'display'. * - * The 'interval' is a number in seconds of when the cron job should run. - * So for 'hourly' the time is `HOUR_IN_SECONDS` (60 * 60 or 3600). For 'monthly', - * the value would be `MONTH_IN_SECONDS` (30 * 24 * 60 * 60 or 2592000). + * The 'interval' is a number in seconds of when the cron job should run. So for + * 'hourly', the time is 3600 or 60*60. For weekly, the value would be + * 60*60*24*7 or 604800. The value of 'interval' would then be 604800. * - * The 'display' is the description. For the 'monthly' key, the 'display' - * would be `__( 'Once Monthly' )`. + * The 'display' is the description. For the 'weekly' key, the 'display' would + * be `__( 'Once Weekly' )`. * - * For your plugin, you will be passed an array. You can easily add your + * For your plugin, you will be passed an array. you can easily add your * schedule by doing the following. * * // Filter parameter variable name is 'array'. - * $array['monthly'] = array( - * 'interval' => MONTH_IN_SECONDS, - * 'display' => __( 'Once Monthly' ) + * $array['weekly'] = array( + * 'interval' => 604800, + * 'display' => __( 'Once Weekly' ) * ); * - * @since 2.1.0 - * @since 5.4.0 The 'weekly' schedule was added. - * - * @return array { - * The array of cron schedules keyed by the schedule name. * - * @type array ...$0 { - * Cron schedule information. + * @since WP-2.1.0 * - * @type int $interval The schedule interval in seconds. - * @type string $display The schedule display name. - * } - * } + * @return array */ function wp_get_schedules() { $schedules = array( @@ -1063,124 +479,58 @@ function wp_get_schedules() { 'interval' => DAY_IN_SECONDS, 'display' => __( 'Once Daily' ), ), - 'weekly' => array( - 'interval' => WEEK_IN_SECONDS, - 'display' => __( 'Once Weekly' ), - ), ); - /** * Filters the non-default cron schedules. * - * @since 2.1.0 - * - * @param array $new_schedules { - * An array of non-default cron schedules keyed by the schedule name. Default empty array. - * - * @type array ...$0 { - * Cron schedule information. + * @since WP-2.1.0 * - * @type int $interval The schedule interval in seconds. - * @type string $display The schedule display name. - * } - * } + * @param array $new_schedules An array of non-default cron schedules. Default empty. */ return array_merge( apply_filters( 'cron_schedules', array() ), $schedules ); } /** - * Retrieves the name of the recurrence schedule for an event. + * Retrieve the recurrence schedule for an event. * * @see wp_get_schedules() for available schedules. * - * @since 2.1.0 - * @since 5.1.0 {@see 'get_schedule'} filter added. + * @since WP-2.1.0 * * @param string $hook Action hook to identify the event. - * @param array $args Optional. Arguments passed to the event's callback function. - * Default empty array. - * @return string|false Schedule name on success, false if no schedule. + * @param array $args Optional. Arguments passed to the event's callback function. + * @return string|false False, if no schedule. Schedule name on success. */ function wp_get_schedule( $hook, $args = array() ) { - $schedule = false; - $event = wp_get_scheduled_event( $hook, $args ); - - if ( $event ) { - $schedule = $event->schedule; - } - - /** - * Filters the schedule name for a hook. - * - * @since 5.1.0 - * - * @param string|false $schedule Schedule for the hook. False if not found. - * @param string $hook Action hook to execute when cron is run. - * @param array $args Arguments to pass to the hook's callback function. - */ - return apply_filters( 'get_schedule', $schedule, $hook, $args ); -} - -/** - * Retrieves cron jobs ready to be run. - * - * Returns the results of _get_cron_array() limited to events ready to be run, - * ie, with a timestamp in the past. - * - * @since 5.1.0 - * - * @return array[] Array of cron job arrays ready to be run. - */ -function wp_get_ready_cron_jobs() { - /** - * Filter to preflight or hijack retrieving ready cron jobs. - * - * Returning an array will short-circuit the normal retrieval of ready - * cron jobs, causing the function to return the filtered value instead. - * - * @since 5.1.0 - * - * @param null|array[] $pre Array of ready cron tasks to return instead. Default null - * to continue using results from _get_cron_array(). - */ - $pre = apply_filters( 'pre_get_ready_cron_jobs', null ); - - if ( null !== $pre ) { - return $pre; + $crons = _get_cron_array(); + $key = md5( serialize( $args ) ); + if ( empty( $crons ) ) { + return false; } - - $crons = _get_cron_array(); - $gmt_time = microtime( true ); - $results = array(); - - foreach ( $crons as $timestamp => $cronhooks ) { - if ( $timestamp > $gmt_time ) { - break; + foreach ( $crons as $timestamp => $cron ) { + if ( isset( $cron[ $hook ][ $key ] ) ) { + return $cron[ $hook ][ $key ]['schedule']; } - - $results[ $timestamp ] = $cronhooks; } - - return $results; + return false; } // -// Private functions. +// Private functions // /** - * Retrieves cron info array option. + * Retrieve cron info array option. * - * @since 2.1.0 - * @since 6.1.0 Return type modified to consistently return an array. + * @since WP-2.1.0 * @access private * - * @return array[] Array of cron events. + * @return false|array CRON info array. */ function _get_cron_array() { $cron = get_option( 'cron' ); if ( ! is_array( $cron ) ) { - return array(); + return false; } if ( ! isset( $cron['version'] ) ) { @@ -1193,46 +543,28 @@ function _get_cron_array() { } /** - * Updates the cron option with the new cron array. - * - * @since 2.1.0 - * @since 5.1.0 Return value modified to outcome of update_option(). - * @since 5.7.0 The `$wp_error` parameter was added. + * Updates the CRON option with the new CRON array. * + * @since WP-2.1.0 * @access private * - * @param array[] $cron Array of cron info arrays from _get_cron_array(). - * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. - * @return bool|WP_Error True if cron array updated. False or WP_Error on failure. + * @param array $cron Cron info array from _get_cron_array(). */ -function _set_cron_array( $cron, $wp_error = false ) { - if ( ! is_array( $cron ) ) { - $cron = array(); - } - +function _set_cron_array( $cron ) { $cron['version'] = 2; - $result = update_option( 'cron', $cron ); - - if ( $wp_error && ! $result ) { - return new WP_Error( - 'could_not_set', - __( 'The cron event list could not be saved.' ) - ); - } - - return $result; + update_option( 'cron', $cron ); } /** - * Upgrades a cron info array. + * Upgrade a Cron info array. * - * This function upgrades the cron info array to version 2. + * This function upgrades the Cron info array to version 2. * - * @since 2.1.0 + * @since WP-2.1.0 * @access private * * @param array $cron Cron info array from _get_cron_array(). - * @return array An upgraded cron info array. + * @return array An upgraded Cron info array. */ function _upgrade_cron_array( $cron ) { if ( isset( $cron['version'] ) && 2 == $cron['version'] ) { diff --git a/wp-includes/css/admin-bar-rtl.css b/wp-includes/css/admin-bar-rtl.css index bbfc8b7..216bde9 100644 --- a/wp-includes/css/admin-bar-rtl.css +++ b/wp-includes/css/admin-bar-rtl.css @@ -1,8 +1,3 @@ -html { - --wp-admin--admin-bar--height: 32px; - scroll-padding-top: var(--wp-admin--admin-bar--height); -} - #wpadminbar * { height: auto; width: auto; @@ -15,8 +10,7 @@ html { font-size: 13px; font-weight: 400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - font-style: normal; - line-height: 2.46153846; + line-height: 32px; border-radius: 0; box-sizing: content-box; transition: none; @@ -28,8 +22,8 @@ html { font-family: Tahoma, sans-serif; } -html:lang(he-il) .rtl #wpadminbar * { - font-family: Arial, sans-serif; +html:lang(he-il) .rtl #wpadminbar * { + font-family: Arial, sans-serif; } #wpadminbar .ab-empty-item { @@ -40,12 +34,14 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar a.ab-item, #wpadminbar > #wp-toolbar span.ab-label, #wpadminbar > #wp-toolbar span.noticon { - color: #f0f0f1; + color: #eee; } #wpadminbar #wp-admin-bar-site-name a.ab-item, #wpadminbar #wp-admin-bar-my-sites a.ab-item { white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } #wpadminbar ul li:before, @@ -57,10 +53,10 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar a:hover, #wpadminbar a img, #wpadminbar a img:hover { + outline: none; border: none; text-decoration: none; background: none; - box-shadow: none; } #wpadminbar a:focus, @@ -75,28 +71,24 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar textarea, #wpadminbar div { box-shadow: none; -} - -#wpadminbar a:focus { - /* Inherits transparent outline only visible in Windows High Contrast mode */ - outline-offset: -1px; + outline: none; } #wpadminbar { direction: rtl; - color: #c3c4c7; + color: #ccc; font-size: 13px; font-weight: 400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 2.46153846; + line-height: 32px; height: 32px; position: fixed; top: 0; right: 0; width: 100%; - min-width: 600px; /* match the min-width of the body in wp-admin/css/common.css */ + min-width: 600px; /* match the min-width of the body in wp-admin.css */ z-index: 99999; - background: #1d2327; + background: #23282d; } #wpadminbar .ab-sub-wrapper, @@ -149,13 +141,19 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .shortlink-input { margin: 0; padding: 0; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); - background: #2c3338; + box-shadow: 0 3px 5px rgba(0,0,0,0.2); + background: #32373c; display: none; position: absolute; float: none; } +#wpadminbar.ie7 .menupop .ab-sub-wrapper, +#wpadminbar.ie7 .shortlink-input { + top: 32px; + right: 0; +} + #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper { min-width: 100%; } @@ -186,7 +184,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .quicklinks .menupop.hover ul li .ab-item, #wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item, #wpadminbar .shortlink-input { - line-height: 2; + line-height: 26px; height: 26px; white-space: nowrap; min-width: 140px; @@ -218,24 +216,23 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, #wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, #wpadminbar .ab-top-menu > li.hover > .ab-item { - background: #2c3338; - color: #72aee6; + background: #32373c; + color: #00b9eb; } #wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, #wpadminbar > #wp-toolbar li.hover span.ab-label, #wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { - color: #72aee6; + color: #00b9eb; } #wpadminbar > #wp-toolbar > #wp-admin-bar-root-default .ab-icon, #wpadminbar .ab-icon, -#wpadminbar .ab-item:before, -.wp-admin-bar-arrow { +#wpadminbar .ab-item:before { position: relative; float: right; font: normal 20px/1 dashicons; - speak: never; + speak: none; padding: 4px 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -246,15 +243,15 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .ab-icon:before, #wpadminbar .ab-item:before, #wpadminbar #adminbarsearch:before { - color: #a7aaad; - color: rgba(240, 246, 252, 0.6); + color: #a0a5aa; + color: rgba(240,245,250,0.6); } #wpadminbar .ab-icon:before, #wpadminbar .ab-item:before, #wpadminbar #adminbarsearch:before { position: relative; - transition: color .1s ease-in-out; + transition: all .1s ease-in-out; } #wpadminbar .ab-label { @@ -263,16 +260,16 @@ html:lang(he-il) .rtl #wpadminbar * { } #wpadminbar .ab-submenu .ab-item { - color: #c3c4c7; - color: rgba(240, 246, 252, 0.7); + color: #b4b9be; + color: rgba(240,245,250,0.7); } #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: #c3c4c7; - color: rgba(240, 246, 252, 0.7); + color: #b4b9be; + color: rgba(240,245,250,0.7); } #wpadminbar .quicklinks .menupop ul li a:hover, @@ -295,24 +292,24 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, #wpadminbar li #adminbarsearch.adminbar-focused:before { - color: #72aee6; + color: #00b9eb; } #wpadminbar.mobile .quicklinks .ab-icon:before, #wpadminbar.mobile .quicklinks .ab-item:before { - color: #c3c4c7; + color: #b4b9be; } #wpadminbar.mobile .quicklinks .hover .ab-icon:before, #wpadminbar.mobile .quicklinks .hover .ab-item:before { - color: #72aee6; + color: #00b9eb; } -#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow:before, +#wpadminbar .menupop .menupop > .ab-item:before, #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before { position: absolute; font: normal 17px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -322,10 +319,9 @@ html:lang(he-il) .rtl #wpadminbar * { padding-left: 2em; } -#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow:before { +#wpadminbar .menupop .menupop > .ab-item:before { top: 1px; - left: 10px; - padding: 4px 0; + left: 4px; content: "\f141"; color: inherit; } @@ -335,7 +331,7 @@ html:lang(he-il) .rtl #wpadminbar * { padding-left: 1em; } -#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item .wp-admin-bar-arrow:before { +#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before { top: 1px; right: 6px; content: "\f139"; @@ -351,17 +347,17 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .quicklinks .menupop ul.ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { - background: #3c434a; + background: #464b50; } #wpadminbar .quicklinks .menupop .ab-sub-secondary > li > a:hover, #wpadminbar .quicklinks .menupop .ab-sub-secondary > li .ab-item:focus a { - color: #72aee6; + color: #00b9eb; } #wpadminbar .quicklinks a span#ab-updates { - background: #f0f0f1; - color: #2c3338; + background: #eee; + color: #32373c; display: inline; padding: 2px 5px; font-size: 10px; @@ -369,7 +365,7 @@ html:lang(he-il) .rtl #wpadminbar * { border-radius: 10px; } -#wpadminbar .quicklinks a:hover span#ab-updates { +#wpadminbar .quicklinks a:hover span#ab-updates { background: #fff; color: #000; } @@ -383,22 +379,6 @@ html:lang(he-il) .rtl #wpadminbar * { box-shadow: none; } -/** - * Recovery Mode - */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #d63638; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover >.ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #d63638; -} - /** * My Account */ @@ -406,10 +386,6 @@ html:lang(he-il) .rtl #wpadminbar * { min-width: 198px; } -#wp-admin-bar-my-account:not(.with-avatar) > .ab-item { - display: inline-block; -} - #wp-admin-bar-my-account > .ab-item:before { content: "\f110"; top: 2px; @@ -427,6 +403,10 @@ html:lang(he-il) .rtl #wpadminbar * { min-width: 270px; } +#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item { + white-space: nowrap; +} + #wpadminbar #wp-admin-bar-user-actions > li { margin-right: 16px; margin-left: 16px; @@ -472,7 +452,7 @@ html:lang(he-il) .rtl #wpadminbar * { } #wpadminbar #wp-admin-bar-user-info .username { - color: #a7aaad; + color: #a0a5aa; font-size: 11px; } @@ -481,71 +461,45 @@ html:lang(he-il) .rtl #wpadminbar * { width: auto; height: 16px; padding: 0; - border: 1px solid #8c8f94; - background: #f0f0f1; - line-height: 1.84615384; + border: 1px solid #82878c; + background: #eee; + line-height: 24px; vertical-align: middle; margin: -4px 6px 0 0; float: none; display: inline; } +#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > .ab-empty-item img, +#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > a img { + width: auto; +} + /** - * WP Logo + * ClassicPress Logo */ -#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon { - width: 15px; - height: 20px; - margin-left: 0; - padding: 6px 0 5px; +#wpadminbar #wp-admin-bar-wp-logo > .ab-item .cp-logo { + width: 18px; + height: 18px; + margin: 7px 1px 6px 2px; + vertical-align: top; + display: inline-block; } #wpadminbar #wp-admin-bar-wp-logo > .ab-item { padding: 0 7px; } -#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before { - background-image: url(../../wp-admin/images/classicpress-logo-white.svg?ver=202303); - background-repeat: no-repeat; - background-position: center center; - background-size: 100%; - top: 6px; - content: ""; - position: absolute; - right: 0px; - height: 20px; - width: 20px; - opacity: 0.6; -} - /* * My Sites & Site Title */ -#wpadminbar .quicklinks li .blavatar { - display: inline-block; - vertical-align: middle; - font: normal 16px/1 dashicons !important; - speak: never; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #f0f0f1; -} - -#wpadminbar .quicklinks li a:hover .blavatar, -#wpadminbar .quicklinks li a:focus .blavatar, -#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar { - color: #72aee6; -} - -#wpadminbar .quicklinks li img.blavatar, -#wpadminbar .quicklinks li div.blavatar:before { - height: 16px; - width: 16px; - margin: 0 -2px 2px 8px; -} - -#wpadminbar .quicklinks li div.blavatar:before { - content: "\f120"; +#wp-admin-bar-my-sites-list .ab-item img.cp-logo { + width: 18px; + height: 18px; + margin-left: 6px; + vertical-align: top; + padding-top: 4px; + margin-right: -2px; display: inline-block; } @@ -559,16 +513,12 @@ html:lang(he-il) .rtl #wpadminbar * { top: 2px; } -#wpadminbar #wp-admin-bar-site-editor > .ab-item:before { - content: "\f100"; - top: 2px; -} - #wpadminbar #wp-admin-bar-customize > .ab-item:before { content: "\f540"; top: 2px; } + #wpadminbar #wp-admin-bar-edit > .ab-item:before { content: "\f464"; top: 2px; @@ -616,21 +566,13 @@ html:lang(he-il) .rtl #wpadminbar * { top: 2px; } -#wpadminbar #wp-admin-bar-updates.spin .ab-icon:before { - display: inline-block; - animation: rotation 2s infinite linear; -} - -@media (prefers-reduced-motion: reduce) { - #wpadminbar #wp-admin-bar-updates.spin .ab-icon:before { - animation: none; - } -} - /** * Search */ - +#wpadminbar.ie8 #wp-admin-bar-search { + display: block; + min-width: 32px; +} #wpadminbar #wp-admin-bar-search .ab-item { padding: 0; background: transparent; @@ -650,12 +592,12 @@ html:lang(he-il) .rtl #wpadminbar * { z-index: 20; font: normal 20px/1 dashicons !important; content: "\f179"; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -/* The admin bar search field needs to reset many styles that might be inherited from the active Theme CSS. See ticket #40313. */ +/* The admin bar search field needs to reset many styles that might be inherited from the active Theme CSS. See https://core.trac.wordpress.org/ticket/40313. */ #wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input { display: inline-block; float: none; @@ -663,15 +605,15 @@ html:lang(he-il) .rtl #wpadminbar * { z-index: 30; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 1.84615384; + line-height: 24px; text-indent: 0; height: 24px; width: 24px; max-width: none; padding: 0 24px 0 3px; margin: 0; - color: #c3c4c7; - background-color: rgba(255, 255, 255, 0); + color: #ccc; + background-color: rgba( 255, 255, 255, 0 ); border: none; outline: none; cursor: pointer; @@ -686,11 +628,31 @@ html:lang(he-il) .rtl #wpadminbar * { z-index: 10; color: #000; width: 200px; - background-color: rgba(255, 255, 255, 0.9); + background-color: rgba( 255, 255, 255, 0.9 ); cursor: text; border: 0; } +#wpadminbar.ie7 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input { + margin-top: 3px; + width: 120px; +} + +#wpadminbar.ie8 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input { + /* IE8 z-index bug with transparent / empty elements - fill in with an encoded transparent GIF */ + background: transparent 100% 0 repeat scroll url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7"); +} + +/* IE8 doesn't redraw the pseudo elements unless you make a change to the content */ +#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before { + content: "\f179 "; /* extra space */ +} + +#wpadminbar.ie8 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + background: #fff; + z-index: -1; +} + #wpadminbar #adminbarsearch .adminbar-button { display: none; } @@ -714,6 +676,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .screen-reader-text span { border: 0; clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; @@ -738,37 +701,91 @@ html:lang(he-il) .rtl #wpadminbar * { font-size: 14px; font-weight: 600; padding: 15px 23px 14px; - background: #f0f0f1; - color: #2271b1; + background: #f1f1f1; + color: #0073aa; z-index: 100000; line-height: normal; text-decoration: none; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); } -@media screen and (max-width: 782px) { - html { - --wp-admin--admin-bar--height: 46px; - } +/** + * IE 6-targeted rules + */ +* html #wpadminbar { + overflow: hidden; + position: absolute; +} + +* html #wpadminbar .quicklinks ul li a { + float: right; +} + +* html #wpadminbar .menupop a span { + background-image: none; +} + +/* No @font-face support */ +.no-font-face #wpadminbar ul.ab-top-menu > li > a.ab-item { + display: block; + width: 45px; + text-align: center; + overflow: hidden; + margin: 0 3px; +} + +.no-font-face #wpadminbar #wp-admin-bar-my-sites > .ab-item, +.no-font-face #wpadminbar #wp-admin-bar-site-name > .ab-item, +.no-font-face #wpadminbar #wp-admin-bar-edit > .ab-item { + text-indent: 0; +} + +.no-font-face #wpadminbar .ab-icon, +.no-font-face #wpadminbar .ab-icon:before, +.no-font-face #wpadminbar a.ab-item:before, +.no-font-face #wpadminbar #wp-admin-bar-wp-logo > .ab-item { + display: none !important; +} +.no-font-face #wpadminbar ul.ab-top-menu > li > a > span.ab-label { + display: inline; +} + +.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon { + display: inline !important; +} + +.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before { + content: "Menu"; + font: 14px/45px sans-serif !important; + display: inline-block !important; + color: #fff; +} + +.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item { + color: #fff; +} +/* End no @font-face */ + +@media screen and ( max-width: 782px ) { /* Toolbar Touchification*/ html #wpadminbar { height: 46px; - min-width: 240px; /* match the min-width of the body in wp-admin/css/common.css */ + min-width: 300px; } #wpadminbar * { font-size: 14px; font-weight: 400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 2.28571428; + line-height: 32px; } #wpadminbar .quicklinks > ul > li > a, #wpadminbar .quicklinks .ab-empty-item { padding: 0; height: 46px; - line-height: 3.28571428; + line-height: 46px; width: auto; } @@ -795,25 +812,8 @@ html:lang(he-il) .rtl #wpadminbar * { text-overflow: clip; } - #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: 1.6; - } - #wpadminbar .ab-label { - border: 0; - clip: rect(1px, 1px, 1px, 1px); - clip-path: inset(50%); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - word-wrap: normal !important; + display: none; } #wpadminbar .menupop li:hover > .ab-sub-wrapper, @@ -839,25 +839,11 @@ html:lang(he-il) .rtl #wpadminbar * { display: none; } - /* WP logo */ - #wpadminbar #wp-admin-bar-wp-logo > .ab-item { - padding: 0; - } - - #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon { - padding: 0; - width: 52px; - height: 46px; - text-align: center; - vertical-align: top; - } - - #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before { - height: 28px; - width: 28px; - right: 50%; - margin-right: -15px; - top: 10px; + /* ClassicPress logo */ + #wpadminbar #wp-admin-bar-wp-logo > .ab-item .cp-logo { + padding: 3px 5px 3px 4px; + width: 26px; + height: 26px; } #wpadminbar .ab-icon, @@ -868,7 +854,6 @@ html:lang(he-il) .rtl #wpadminbar * { /* My Sites and "Site Title" menu */ #wpadminbar #wp-admin-bar-my-sites > .ab-item, #wpadminbar #wp-admin-bar-site-name > .ab-item, - #wpadminbar #wp-admin-bar-site-editor > .ab-item, #wpadminbar #wp-admin-bar-customize > .ab-item, #wpadminbar #wp-admin-bar-edit > .ab-item, #wpadminbar #wp-admin-bar-my-account > .ab-item { @@ -877,7 +862,7 @@ html:lang(he-il) .rtl #wpadminbar * { overflow: hidden; width: 52px; padding: 0; - color: #a7aaad; /* @todo not needed? this text is hidden */ + color: #a0a5aa; /* @todo not needed? this text is hidden */ position: relative; } @@ -891,13 +876,12 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-edit > .ab-item:before, #wpadminbar #wp-admin-bar-my-sites > .ab-item:before, #wpadminbar #wp-admin-bar-site-name > .ab-item:before, - #wpadminbar #wp-admin-bar-site-editor > .ab-item:before, #wpadminbar #wp-admin-bar-customize > .ab-item:before, #wpadminbar #wp-admin-bar-my-account > .ab-item:before { display: block; text-indent: 0; font: normal 32px/1 dashicons; - speak: never; + speak: none; top: 7px; width: 52px; text-align: center; @@ -921,7 +905,7 @@ html:lang(he-il) .rtl #wpadminbar * { /* New Content */ #wpadminbar #wp-admin-bar-new-content .ab-icon:before { top: 0; - line-height: 1.33333333; + line-height: 53px; height: 46px !important; text-align: center; width: 52px; @@ -946,7 +930,7 @@ html:lang(he-il) .rtl #wpadminbar * { display: block; font-size: 34px; height: 46px; - line-height: 1.38235294; + line-height: 47px; top: 0; } @@ -983,8 +967,8 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-user-info .display-name { height: auto; font-size: 16px; - line-height: 1.5; - color: #f0f0f1; + line-height: 24px; + color: #eee; } #wpadminbar #wp-admin-bar-user-info a { @@ -1006,7 +990,6 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar li#wp-admin-bar-my-sites, #wpadminbar li#wp-admin-bar-updates, #wpadminbar li#wp-admin-bar-site-name, - #wpadminbar li#wp-admin-bar-site-editor, #wpadminbar li#wp-admin-bar-customize, #wpadminbar li#wp-admin-bar-new-content, #wpadminbar li#wp-admin-bar-edit, diff --git a/wp-includes/css/admin-bar-rtl.min.css b/wp-includes/css/admin-bar-rtl.min.css index af990d1..df8d439 100644 --- a/wp-includes/css/admin-bar-rtl.min.css +++ b/wp-includes/css/admin-bar-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -html{--wp-admin--admin-bar--height:32px;scroll-padding-top:var(--wp-admin--admin-bar--height)}#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-style:normal;line-height:2.46153846;border-radius:0;box-sizing:content-box;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar .ab-empty-item{cursor:default}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#f0f0f1}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{border:none;text-decoration:none;background:0 0;box-shadow:none}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=email],#wpadminbar input[type=number],#wpadminbar input[type=password],#wpadminbar input[type=search],#wpadminbar input[type=text],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{box-shadow:none}#wpadminbar a:focus{outline-offset:-1px}#wpadminbar{direction:rtl;color:#c3c4c7;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:2.46153846;height:32px;position:fixed;top:0;right:0;width:100%;min-width:600px;z-index:99999;background:#1d2327}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-left:0}#wpadminbar .quicklinks ul{text-align:right}#wpadminbar li{float:right}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks .ab-top-secondary>li{float:left}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 7px 0 8px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;box-shadow:0 3px 5px rgba(0,0,0,.2);background:#2c3338;display:none;position:absolute;float:none}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{left:0;right:auto}#wpadminbar .ab-submenu{padding:6px 0}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:2;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-right:100%;margin-top:-32px}#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper{margin-right:0;right:inherit;left:100%}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#2c3338;color:#72aee6}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#72aee6}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon,.wp-admin-bar-arrow{position:relative;float:right;font:normal 20px/1 dashicons;speak:never;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-left:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a7aaad;color:rgba(240,246,252,.6)}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{position:relative;transition:color .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item{color:#c3c4c7;color:rgba(240,246,252,.7)}#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:#c3c4c7;color:rgba(240,246,252,.7)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#72aee6}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c3c4c7}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#72aee6}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item .wp-admin-bar-arrow:before{position:absolute;font:normal 17px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-left:2em}#wpadminbar .menupop .menupop>.ab-item .wp-admin-bar-arrow:before{top:1px;left:10px;padding:4px 0;content:"\f141";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-right:2em;padding-left:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item .wp-admin-bar-arrow:before{top:1px;right:6px;content:"\f139"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;left:auto;margin:0;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#3c434a}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#72aee6}#wpadminbar .quicklinks a span#ab-updates{background:#f0f0f1;color:#2c3338;display:inline;padding:2px 5px;font-size:10px;font-weight:600;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:left}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{box-shadow:none}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d63638}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#d63638}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account:not(.with-avatar)>.ab-item{display:inline-block}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:left;margin-right:6px;margin-left:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar #wp-admin-bar-user-actions>li{margin-right:16px;margin-left:16px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 0}#wp-admin-bar-user-info .avatar{position:absolute;right:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#a7aaad;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #8c8f94;background:#f0f0f1;line-height:1.84615384;vertical-align:middle;margin:-4px 6px 0 0;float:none;display:inline}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{width:15px;height:20px;margin-left:0;padding:6px 0 5px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{background-image:url(../../wp-admin/images/classicpress-logo-white.svg?ver=202303);background-repeat:no-repeat;background-position:center center;background-size:100%;top:6px;content:"";position:absolute;right:0;height:20px;width:20px;opacity:.6}#wpadminbar .quicklinks li .blavatar{display:inline-block;vertical-align:middle;font:normal 16px/1 dashicons!important;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#f0f0f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar{color:#72aee6}#wpadminbar .quicklinks li div.blavatar:before,#wpadminbar .quicklinks li img.blavatar{height:16px;width:16px;margin:0 -2px 2px 8px}#wpadminbar .quicklinks li div.blavatar:before{content:"\f120";display:inline-block}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f541";top:2px}#wpadminbar #wp-admin-bar-site-editor>.ab-item:before{content:"\f100";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-left:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar #wp-admin-bar-updates.spin .ab-icon:before{display:inline-block;animation:rotation 2s infinite linear}@media (prefers-reduced-motion:reduce){#wpadminbar #wp-admin-bar-updates.spin .ab-icon:before{animation:none}}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;right:5px;z-index:20;font:normal 20px/1 dashicons!important;content:"\f179";speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{display:inline-block;float:none;position:relative;z-index:30;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.84615384;text-indent:0;height:24px;width:24px;max-width:none;padding:0 24px 0 3px;margin:0;color:#c3c4c7;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;box-shadow:none;box-sizing:border-box;transition-duration:.4s;transition-property:width,background;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar #adminbarsearch .adminbar-button{display:none}.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{right:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f0f0f1;color:#2271b1;z-index:100000;line-height:normal;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,.6)}@media screen and (max-width:782px){html{--wp-admin--admin-bar--height:46px}html #wpadminbar{height:46px;min-width:240px}#wpadminbar *{font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:2.28571428}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:3.28571428;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:1.6}#wpadminbar .ab-label{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-left:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;left:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{height:28px;width:28px;right:50%;margin-right:-15px;top:10px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-editor>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#a7aaad;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-left:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-editor>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:normal 32px/1 dashicons;speak:never;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:1.33333333;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon{margin:0}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:1.38235294;top:0}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;left:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:1.5;color:#f0f0f1}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wp-toolbar>ul>li{display:none}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-editor,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-moz-fit-content;min-width:fit-content}#wpadminbar ul#wp-admin-bar-root-default>li{margin-left:0}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:left}.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-left:0}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;right:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;right:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;right:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-right:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;right:auto;position:relative}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 30px 19px 15px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{position:static;box-shadow:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}} \ No newline at end of file +#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px;border-radius:0;box-sizing:content-box;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar .ab-empty-item{cursor:default}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=email],#wpadminbar input[type=number],#wpadminbar input[type=password],#wpadminbar input[type=search],#wpadminbar input[type=text],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{box-shadow:none;outline:0}#wpadminbar{direction:rtl;color:#ccc;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px;height:32px;position:fixed;top:0;right:0;width:100%;min-width:600px;z-index:99999;background:#23282d}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-left:0}#wpadminbar .quicklinks ul{text-align:right}#wpadminbar li{float:right}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks .ab-top-secondary>li{float:left}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 7px 0 8px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:32px;right:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{left:0;right:auto}#wpadminbar .ab-submenu{padding:6px 0}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-right:100%;margin-top:-32px}#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper{margin-right:0;right:inherit;left:100%}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#32373c;color:#00b9eb}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#00b9eb}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{position:relative;float:right;font:normal 20px/1 dashicons;speak:none;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-left:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{position:relative;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item{color:#b4b9be;color:rgba(240,245,250,.7)}#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:#b4b9be;color:rgba(240,245,250,.7)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font:normal 17px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-left:2em}#wpadminbar .menupop .menupop>.ab-item:before{top:1px;left:4px;content:"\f141";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-right:2em;padding-left:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:1px;right:6px;content:"\f139"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;left:auto;margin:0;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#464b50}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#00b9eb}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#32373c;display:inline;padding:2px 5px;font-size:10px;font-weight:600;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:left}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:left;margin-right:6px;margin-left:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item{white-space:nowrap}#wpadminbar #wp-admin-bar-user-actions>li{margin-right:16px;margin-left:16px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 0}#wp-admin-bar-user-info .avatar{position:absolute;right:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#a0a5aa;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 6px 0 0;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .cp-logo{width:18px;height:18px;margin:7px 1px 6px 2px;vertical-align:top;display:inline-block}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wp-admin-bar-my-sites-list .ab-item img.cp-logo{width:18px;height:18px;margin-left:6px;vertical-align:top;padding-top:4px;margin-right:-2px;display:inline-block}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f541";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-left:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;right:5px;z-index:20;font:normal 20px/1 dashicons!important;content:"\f179";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{display:inline-block;float:none;position:relative;z-index:30;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:24px;text-indent:0;height:24px;width:24px;max-width:none;padding:0 24px 0 3px;margin:0;color:#ccc;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;box-shadow:none;box-sizing:border-box;transition-duration:.4s;transition-property:width,background;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar.ie7>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{margin-top:3px;width:120px}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{background:transparent 100% 0 repeat scroll url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7")}#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before{content:"\f179 "}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{background:#fff;z-index:-1}#wpadminbar #adminbarsearch .adminbar-button{display:none}.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{right:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,.6)}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:right}* html #wpadminbar .menupop a span{background-image:none}.no-font-face #wpadminbar ul.ab-top-menu>li>a.ab-item{display:block;width:45px;text-align:center;overflow:hidden;margin:0 3px}.no-font-face #wpadminbar #wp-admin-bar-edit>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-my-sites>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:0}.no-font-face #wpadminbar #wp-admin-bar-wp-logo>.ab-item,.no-font-face #wpadminbar .ab-icon,.no-font-face #wpadminbar .ab-icon:before,.no-font-face #wpadminbar a.ab-item:before{display:none!important}.no-font-face #wpadminbar ul.ab-top-menu>li>a>span.ab-label{display:inline}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon{display:inline!important}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before{content:"Menu";font:14px/45px sans-serif!important;display:inline-block!important;color:#fff}.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item{color:#fff}@media screen and (max-width:782px){html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-left:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;left:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .cp-logo{padding:3px 5px 3px 4px;width:26px;height:26px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#a0a5aa;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-left:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:normal 32px/1 dashicons;speak:none;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon{margin:0}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;left:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:24px;color:#eee}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wp-toolbar>ul>li{display:none}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-moz-fit-content;min-width:fit-content}#wpadminbar ul#wp-admin-bar-root-default>li{margin-left:0}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:left}.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-left:0}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;right:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;right:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;right:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-right:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;right:auto;position:relative}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 30px 19px 15px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{position:static;box-shadow:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}} \ No newline at end of file diff --git a/wp-includes/css/admin-bar.css b/wp-includes/css/admin-bar.css index 1692ad7..0ce6a77 100644 --- a/wp-includes/css/admin-bar.css +++ b/wp-includes/css/admin-bar.css @@ -1,8 +1,3 @@ -html { - --wp-admin--admin-bar--height: 32px; - scroll-padding-top: var(--wp-admin--admin-bar--height); -} - #wpadminbar * { height: auto; width: auto; @@ -15,8 +10,7 @@ html { font-size: 13px; font-weight: 400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - font-style: normal; - line-height: 2.46153846; + line-height: 32px; border-radius: 0; box-sizing: content-box; transition: none; @@ -28,8 +22,8 @@ html { font-family: Tahoma, sans-serif; } -html:lang(he-il) .rtl #wpadminbar * { - font-family: Arial, sans-serif; +html:lang(he-il) .rtl #wpadminbar * { + font-family: Arial, sans-serif; } #wpadminbar .ab-empty-item { @@ -40,12 +34,14 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar a.ab-item, #wpadminbar > #wp-toolbar span.ab-label, #wpadminbar > #wp-toolbar span.noticon { - color: #f0f0f1; + color: #eee; } #wpadminbar #wp-admin-bar-site-name a.ab-item, #wpadminbar #wp-admin-bar-my-sites a.ab-item { white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } #wpadminbar ul li:before, @@ -57,10 +53,10 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar a:hover, #wpadminbar a img, #wpadminbar a img:hover { + outline: none; border: none; text-decoration: none; background: none; - box-shadow: none; } #wpadminbar a:focus, @@ -75,28 +71,24 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar textarea, #wpadminbar div { box-shadow: none; -} - -#wpadminbar a:focus { - /* Inherits transparent outline only visible in Windows High Contrast mode */ - outline-offset: -1px; + outline: none; } #wpadminbar { direction: ltr; - color: #c3c4c7; + color: #ccc; font-size: 13px; font-weight: 400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 2.46153846; + line-height: 32px; height: 32px; position: fixed; top: 0; left: 0; width: 100%; - min-width: 600px; /* match the min-width of the body in wp-admin/css/common.css */ + min-width: 600px; /* match the min-width of the body in wp-admin.css */ z-index: 99999; - background: #1d2327; + background: #23282d; } #wpadminbar .ab-sub-wrapper, @@ -149,13 +141,19 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .shortlink-input { margin: 0; padding: 0; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); - background: #2c3338; + box-shadow: 0 3px 5px rgba(0,0,0,0.2); + background: #32373c; display: none; position: absolute; float: none; } +#wpadminbar.ie7 .menupop .ab-sub-wrapper, +#wpadminbar.ie7 .shortlink-input { + top: 32px; + left: 0; +} + #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper { min-width: 100%; } @@ -186,7 +184,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .quicklinks .menupop.hover ul li .ab-item, #wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item, #wpadminbar .shortlink-input { - line-height: 2; + line-height: 26px; height: 26px; white-space: nowrap; min-width: 140px; @@ -218,24 +216,23 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus, #wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item, #wpadminbar .ab-top-menu > li.hover > .ab-item { - background: #2c3338; - color: #72aee6; + background: #32373c; + color: #00b9eb; } #wpadminbar:not(.mobile) > #wp-toolbar li:hover span.ab-label, #wpadminbar > #wp-toolbar li.hover span.ab-label, #wpadminbar:not(.mobile) > #wp-toolbar a:focus span.ab-label { - color: #72aee6; + color: #00b9eb; } #wpadminbar > #wp-toolbar > #wp-admin-bar-root-default .ab-icon, #wpadminbar .ab-icon, -#wpadminbar .ab-item:before, -.wp-admin-bar-arrow { +#wpadminbar .ab-item:before { position: relative; float: left; font: normal 20px/1 dashicons; - speak: never; + speak: none; padding: 4px 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -246,15 +243,15 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .ab-icon:before, #wpadminbar .ab-item:before, #wpadminbar #adminbarsearch:before { - color: #a7aaad; - color: rgba(240, 246, 252, 0.6); + color: #a0a5aa; + color: rgba(240,245,250,0.6); } #wpadminbar .ab-icon:before, #wpadminbar .ab-item:before, #wpadminbar #adminbarsearch:before { position: relative; - transition: color .1s ease-in-out; + transition: all .1s ease-in-out; } #wpadminbar .ab-label { @@ -263,16 +260,16 @@ html:lang(he-il) .rtl #wpadminbar * { } #wpadminbar .ab-submenu .ab-item { - color: #c3c4c7; - color: rgba(240, 246, 252, 0.7); + color: #b4b9be; + color: rgba(240,245,250,0.7); } #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: #c3c4c7; - color: rgba(240, 246, 252, 0.7); + color: #b4b9be; + color: rgba(240,245,250,0.7); } #wpadminbar .quicklinks .menupop ul li a:hover, @@ -295,24 +292,24 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar li.hover .ab-item:before, #wpadminbar li:hover #adminbarsearch:before, #wpadminbar li #adminbarsearch.adminbar-focused:before { - color: #72aee6; + color: #00b9eb; } #wpadminbar.mobile .quicklinks .ab-icon:before, #wpadminbar.mobile .quicklinks .ab-item:before { - color: #c3c4c7; + color: #b4b9be; } #wpadminbar.mobile .quicklinks .hover .ab-icon:before, #wpadminbar.mobile .quicklinks .hover .ab-item:before { - color: #72aee6; + color: #00b9eb; } -#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow:before, +#wpadminbar .menupop .menupop > .ab-item:before, #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before { position: absolute; font: normal 17px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -322,10 +319,9 @@ html:lang(he-il) .rtl #wpadminbar * { padding-right: 2em; } -#wpadminbar .menupop .menupop > .ab-item .wp-admin-bar-arrow:before { +#wpadminbar .menupop .menupop > .ab-item:before { top: 1px; - right: 10px; - padding: 4px 0; + right: 4px; content: "\f139"; color: inherit; } @@ -335,7 +331,7 @@ html:lang(he-il) .rtl #wpadminbar * { padding-right: 1em; } -#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item .wp-admin-bar-arrow:before { +#wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before { top: 1px; left: 6px; content: "\f141"; @@ -351,17 +347,17 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .quicklinks .menupop ul.ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { - background: #3c434a; + background: #464b50; } #wpadminbar .quicklinks .menupop .ab-sub-secondary > li > a:hover, #wpadminbar .quicklinks .menupop .ab-sub-secondary > li .ab-item:focus a { - color: #72aee6; + color: #00b9eb; } #wpadminbar .quicklinks a span#ab-updates { - background: #f0f0f1; - color: #2c3338; + background: #eee; + color: #32373c; display: inline; padding: 2px 5px; font-size: 10px; @@ -369,7 +365,7 @@ html:lang(he-il) .rtl #wpadminbar * { border-radius: 10px; } -#wpadminbar .quicklinks a:hover span#ab-updates { +#wpadminbar .quicklinks a:hover span#ab-updates { background: #fff; color: #000; } @@ -383,22 +379,6 @@ html:lang(he-il) .rtl #wpadminbar * { box-shadow: none; } -/** - * Recovery Mode - */ -#wpadminbar #wp-admin-bar-recovery-mode { - color: #fff; - background-color: #d63638; -} - -#wpadminbar .ab-top-menu > #wp-admin-bar-recovery-mode.hover >.ab-item, -#wpadminbar.nojq .quicklinks .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode:hover > .ab-item, -#wpadminbar:not(.mobile) .ab-top-menu > #wp-admin-bar-recovery-mode > .ab-item:focus { - color: #fff; - background-color: #d63638; -} - /** * My Account */ @@ -406,10 +386,6 @@ html:lang(he-il) .rtl #wpadminbar * { min-width: 198px; } -#wp-admin-bar-my-account:not(.with-avatar) > .ab-item { - display: inline-block; -} - #wp-admin-bar-my-account > .ab-item:before { content: "\f110"; top: 2px; @@ -427,6 +403,10 @@ html:lang(he-il) .rtl #wpadminbar * { min-width: 270px; } +#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item { + white-space: nowrap; +} + #wpadminbar #wp-admin-bar-user-actions > li { margin-left: 16px; margin-right: 16px; @@ -472,7 +452,7 @@ html:lang(he-il) .rtl #wpadminbar * { } #wpadminbar #wp-admin-bar-user-info .username { - color: #a7aaad; + color: #a0a5aa; font-size: 11px; } @@ -481,71 +461,45 @@ html:lang(he-il) .rtl #wpadminbar * { width: auto; height: 16px; padding: 0; - border: 1px solid #8c8f94; - background: #f0f0f1; - line-height: 1.84615384; + border: 1px solid #82878c; + background: #eee; + line-height: 24px; vertical-align: middle; margin: -4px 0 0 6px; float: none; display: inline; } +#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > .ab-empty-item img, +#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > a img { + width: auto; +} + /** - * WP Logo + * ClassicPress Logo */ -#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon { - width: 15px; - height: 20px; - margin-right: 0; - padding: 6px 0 5px; +#wpadminbar #wp-admin-bar-wp-logo > .ab-item .cp-logo { + width: 18px; + height: 18px; + margin: 7px 2px 6px 1px; + vertical-align: top; + display: inline-block; } #wpadminbar #wp-admin-bar-wp-logo > .ab-item { padding: 0 7px; } -#wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before { - background-image: url(../../wp-admin/images/classicpress-logo-white.svg?ver=202303); - background-repeat: no-repeat; - background-position: center center; - background-size: 100%; - top: 6px; - content: ""; - position: absolute; - left: 0px; - height: 20px; - width: 20px; - opacity: 0.6; -} - /* * My Sites & Site Title */ -#wpadminbar .quicklinks li .blavatar { - display: inline-block; - vertical-align: middle; - font: normal 16px/1 dashicons !important; - speak: never; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - color: #f0f0f1; -} - -#wpadminbar .quicklinks li a:hover .blavatar, -#wpadminbar .quicklinks li a:focus .blavatar, -#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar { - color: #72aee6; -} - -#wpadminbar .quicklinks li img.blavatar, -#wpadminbar .quicklinks li div.blavatar:before { - height: 16px; - width: 16px; - margin: 0 8px 2px -2px; -} - -#wpadminbar .quicklinks li div.blavatar:before { - content: "\f120"; +#wp-admin-bar-my-sites-list .ab-item img.cp-logo { + width: 18px; + height: 18px; + margin-right: 6px; + vertical-align: top; + padding-top: 4px; + margin-left: -2px; display: inline-block; } @@ -559,16 +513,12 @@ html:lang(he-il) .rtl #wpadminbar * { top: 2px; } -#wpadminbar #wp-admin-bar-site-editor > .ab-item:before { - content: "\f100"; - top: 2px; -} - #wpadminbar #wp-admin-bar-customize > .ab-item:before { content: "\f540"; top: 2px; } + #wpadminbar #wp-admin-bar-edit > .ab-item:before { content: "\f464"; top: 2px; @@ -616,21 +566,13 @@ html:lang(he-il) .rtl #wpadminbar * { top: 2px; } -#wpadminbar #wp-admin-bar-updates.spin .ab-icon:before { - display: inline-block; - animation: rotation 2s infinite linear; -} - -@media (prefers-reduced-motion: reduce) { - #wpadminbar #wp-admin-bar-updates.spin .ab-icon:before { - animation: none; - } -} - /** * Search */ - +#wpadminbar.ie8 #wp-admin-bar-search { + display: block; + min-width: 32px; +} #wpadminbar #wp-admin-bar-search .ab-item { padding: 0; background: transparent; @@ -650,12 +592,12 @@ html:lang(he-il) .rtl #wpadminbar * { z-index: 20; font: normal 20px/1 dashicons !important; content: "\f179"; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -/* The admin bar search field needs to reset many styles that might be inherited from the active Theme CSS. See ticket #40313. */ +/* The admin bar search field needs to reset many styles that might be inherited from the active Theme CSS. See https://core.trac.wordpress.org/ticket/40313. */ #wpadminbar > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input { display: inline-block; float: none; @@ -663,15 +605,15 @@ html:lang(he-il) .rtl #wpadminbar * { z-index: 30; font-size: 13px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 1.84615384; + line-height: 24px; text-indent: 0; height: 24px; width: 24px; max-width: none; padding: 0 3px 0 24px; margin: 0; - color: #c3c4c7; - background-color: rgba(255, 255, 255, 0); + color: #ccc; + background-color: rgba( 255, 255, 255, 0 ); border: none; outline: none; cursor: pointer; @@ -686,11 +628,31 @@ html:lang(he-il) .rtl #wpadminbar * { z-index: 10; color: #000; width: 200px; - background-color: rgba(255, 255, 255, 0.9); + background-color: rgba( 255, 255, 255, 0.9 ); cursor: text; border: 0; } +#wpadminbar.ie7 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input { + margin-top: 3px; + width: 120px; +} + +#wpadminbar.ie8 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input { + /* IE8 z-index bug with transparent / empty elements - fill in with an encoded transparent GIF */ + background: transparent 0 0 repeat scroll url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7"); +} + +/* IE8 doesn't redraw the pseudo elements unless you make a change to the content */ +#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before { + content: "\f179 "; /* extra space */ +} + +#wpadminbar.ie8 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus { + background: #fff; + z-index: -1; +} + #wpadminbar #adminbarsearch .adminbar-button { display: none; } @@ -714,6 +676,7 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar .screen-reader-text span { border: 0; clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; @@ -738,37 +701,91 @@ html:lang(he-il) .rtl #wpadminbar * { font-size: 14px; font-weight: 600; padding: 15px 23px 14px; - background: #f0f0f1; - color: #2271b1; + background: #f1f1f1; + color: #0073aa; z-index: 100000; line-height: normal; text-decoration: none; - box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + box-shadow: 0 0 2px 2px rgba(0,0,0,.6); } -@media screen and (max-width: 782px) { - html { - --wp-admin--admin-bar--height: 46px; - } +/** + * IE 6-targeted rules + */ +* html #wpadminbar { + overflow: hidden; + position: absolute; +} + +* html #wpadminbar .quicklinks ul li a { + float: left; +} + +* html #wpadminbar .menupop a span { + background-image: none; +} + +/* No @font-face support */ +.no-font-face #wpadminbar ul.ab-top-menu > li > a.ab-item { + display: block; + width: 45px; + text-align: center; + overflow: hidden; + margin: 0 3px; +} + +.no-font-face #wpadminbar #wp-admin-bar-my-sites > .ab-item, +.no-font-face #wpadminbar #wp-admin-bar-site-name > .ab-item, +.no-font-face #wpadminbar #wp-admin-bar-edit > .ab-item { + text-indent: 0; +} + +.no-font-face #wpadminbar .ab-icon, +.no-font-face #wpadminbar .ab-icon:before, +.no-font-face #wpadminbar a.ab-item:before, +.no-font-face #wpadminbar #wp-admin-bar-wp-logo > .ab-item { + display: none !important; +} +.no-font-face #wpadminbar ul.ab-top-menu > li > a > span.ab-label { + display: inline; +} + +.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon { + display: inline !important; +} + +.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before { + content: "Menu"; + font: 14px/45px sans-serif !important; + display: inline-block !important; + color: #fff; +} + +.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item { + color: #fff; +} +/* End no @font-face */ + +@media screen and ( max-width: 782px ) { /* Toolbar Touchification*/ html #wpadminbar { height: 46px; - min-width: 240px; /* match the min-width of the body in wp-admin/css/common.css */ + min-width: 300px; } #wpadminbar * { font-size: 14px; font-weight: 400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - line-height: 2.28571428; + line-height: 32px; } #wpadminbar .quicklinks > ul > li > a, #wpadminbar .quicklinks .ab-empty-item { padding: 0; height: 46px; - line-height: 3.28571428; + line-height: 46px; width: auto; } @@ -795,25 +812,8 @@ html:lang(he-il) .rtl #wpadminbar * { text-overflow: clip; } - #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: 1.6; - } - #wpadminbar .ab-label { - border: 0; - clip: rect(1px, 1px, 1px, 1px); - clip-path: inset(50%); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; - word-wrap: normal !important; + display: none; } #wpadminbar .menupop li:hover > .ab-sub-wrapper, @@ -839,25 +839,11 @@ html:lang(he-il) .rtl #wpadminbar * { display: none; } - /* WP logo */ - #wpadminbar #wp-admin-bar-wp-logo > .ab-item { - padding: 0; - } - - #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon { - padding: 0; - width: 52px; - height: 46px; - text-align: center; - vertical-align: top; - } - - #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before { - height: 28px; - width: 28px; - left: 50%; - margin-left: -15px; - top: 10px; + /* ClassicPress logo */ + #wpadminbar #wp-admin-bar-wp-logo > .ab-item .cp-logo { + padding: 3px 4px 3px 5px; + width: 26px; + height: 26px; } #wpadminbar .ab-icon, @@ -868,7 +854,6 @@ html:lang(he-il) .rtl #wpadminbar * { /* My Sites and "Site Title" menu */ #wpadminbar #wp-admin-bar-my-sites > .ab-item, #wpadminbar #wp-admin-bar-site-name > .ab-item, - #wpadminbar #wp-admin-bar-site-editor > .ab-item, #wpadminbar #wp-admin-bar-customize > .ab-item, #wpadminbar #wp-admin-bar-edit > .ab-item, #wpadminbar #wp-admin-bar-my-account > .ab-item { @@ -877,7 +862,7 @@ html:lang(he-il) .rtl #wpadminbar * { overflow: hidden; width: 52px; padding: 0; - color: #a7aaad; /* @todo not needed? this text is hidden */ + color: #a0a5aa; /* @todo not needed? this text is hidden */ position: relative; } @@ -891,13 +876,12 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-edit > .ab-item:before, #wpadminbar #wp-admin-bar-my-sites > .ab-item:before, #wpadminbar #wp-admin-bar-site-name > .ab-item:before, - #wpadminbar #wp-admin-bar-site-editor > .ab-item:before, #wpadminbar #wp-admin-bar-customize > .ab-item:before, #wpadminbar #wp-admin-bar-my-account > .ab-item:before { display: block; text-indent: 0; font: normal 32px/1 dashicons; - speak: never; + speak: none; top: 7px; width: 52px; text-align: center; @@ -921,7 +905,7 @@ html:lang(he-il) .rtl #wpadminbar * { /* New Content */ #wpadminbar #wp-admin-bar-new-content .ab-icon:before { top: 0; - line-height: 1.33333333; + line-height: 53px; height: 46px !important; text-align: center; width: 52px; @@ -946,7 +930,7 @@ html:lang(he-il) .rtl #wpadminbar * { display: block; font-size: 34px; height: 46px; - line-height: 1.38235294; + line-height: 47px; top: 0; } @@ -983,8 +967,8 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar #wp-admin-bar-user-info .display-name { height: auto; font-size: 16px; - line-height: 1.5; - color: #f0f0f1; + line-height: 24px; + color: #eee; } #wpadminbar #wp-admin-bar-user-info a { @@ -1006,7 +990,6 @@ html:lang(he-il) .rtl #wpadminbar * { #wpadminbar li#wp-admin-bar-my-sites, #wpadminbar li#wp-admin-bar-updates, #wpadminbar li#wp-admin-bar-site-name, - #wpadminbar li#wp-admin-bar-site-editor, #wpadminbar li#wp-admin-bar-customize, #wpadminbar li#wp-admin-bar-new-content, #wpadminbar li#wp-admin-bar-edit, diff --git a/wp-includes/css/admin-bar.min.css b/wp-includes/css/admin-bar.min.css index d0d9480..b6b8ec3 100644 --- a/wp-includes/css/admin-bar.min.css +++ b/wp-includes/css/admin-bar.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -html{--wp-admin--admin-bar--height:32px;scroll-padding-top:var(--wp-admin--admin-bar--height)}#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-style:normal;line-height:2.46153846;border-radius:0;box-sizing:content-box;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar .ab-empty-item{cursor:default}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#f0f0f1}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{border:none;text-decoration:none;background:0 0;box-shadow:none}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=email],#wpadminbar input[type=number],#wpadminbar input[type=password],#wpadminbar input[type=search],#wpadminbar input[type=text],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{box-shadow:none}#wpadminbar a:focus{outline-offset:-1px}#wpadminbar{direction:ltr;color:#c3c4c7;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:2.46153846;height:32px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background:#1d2327}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-right:0}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks .ab-top-secondary>li{float:right}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 8px 0 7px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;box-shadow:0 3px 5px rgba(0,0,0,.2);background:#2c3338;display:none;position:absolute;float:none}#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-submenu{padding:6px 0}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:2;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs 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:-32px}#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.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#2c3338;color:#72aee6}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#72aee6}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon,.wp-admin-bar-arrow{position:relative;float:left;font:normal 20px/1 dashicons;speak:never;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-right:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a7aaad;color:rgba(240,246,252,.6)}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{position:relative;transition:color .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item{color:#c3c4c7;color:rgba(240,246,252,.7)}#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:#c3c4c7;color:rgba(240,246,252,.7)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#72aee6}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c3c4c7}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#72aee6}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item .wp-admin-bar-arrow:before{position:absolute;font:normal 17px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-right:2em}#wpadminbar .menupop .menupop>.ab-item .wp-admin-bar-arrow:before{top:1px;right:10px;padding:4px 0;content:"\f139";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-left:2em;padding-right:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item .wp-admin-bar-arrow:before{top:1px;left:6px;content:"\f141"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#3c434a}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#72aee6}#wpadminbar .quicklinks a span#ab-updates{background:#f0f0f1;color:#2c3338;display:inline;padding:2px 5px;font-size:10px;font-weight:600;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{box-shadow:none}#wpadminbar #wp-admin-bar-recovery-mode{color:#fff;background-color:#d63638}#wpadminbar .ab-top-menu>#wp-admin-bar-recovery-mode.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>#wp-admin-bar-recovery-mode>.ab-item:focus{color:#fff;background-color:#d63638}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account:not(.with-avatar)>.ab-item{display:inline-block}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:right;margin-left:6px;margin-right:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#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-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 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 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#a7aaad;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #8c8f94;background:#f0f0f1;line-height:1.84615384;vertical-align:middle;margin:-4px 0 0 6px;float:none;display:inline}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{width:15px;height:20px;margin-right:0;padding:6px 0 5px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{background-image:url(../../wp-admin/images/classicpress-logo-white.svg?ver=202303);background-repeat:no-repeat;background-position:center center;background-size:100%;top:6px;content:"";position:absolute;left:0;height:20px;width:20px;opacity:.6}#wpadminbar .quicklinks li .blavatar{display:inline-block;vertical-align:middle;font:normal 16px/1 dashicons!important;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#f0f0f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar{color:#72aee6}#wpadminbar .quicklinks li div.blavatar:before,#wpadminbar .quicklinks li img.blavatar{height:16px;width:16px;margin:0 8px 2px -2px}#wpadminbar .quicklinks li div.blavatar:before{content:"\f120";display:inline-block}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f541";top:2px}#wpadminbar #wp-admin-bar-site-editor>.ab-item:before{content:"\f100";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-right:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar #wp-admin-bar-updates.spin .ab-icon:before{display:inline-block;animation:rotation 2s infinite linear}@media (prefers-reduced-motion:reduce){#wpadminbar #wp-admin-bar-updates.spin .ab-icon:before{animation:none}}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;left:5px;z-index:20;font:normal 20px/1 dashicons!important;content:"\f179";speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{display:inline-block;float:none;position:relative;z-index:30;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.84615384;text-indent:0;height:24px;width:24px;max-width:none;padding:0 3px 0 24px;margin:0;color:#c3c4c7;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;box-shadow:none;box-sizing:border-box;transition-duration:.4s;transition-property:width,background;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar #adminbarsearch .adminbar-button{display:none}.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{left:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f0f0f1;color:#2271b1;z-index:100000;line-height:normal;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,.6)}@media screen and (max-width:782px){html{--wp-admin--admin-bar--height:46px}html #wpadminbar{height:46px;min-width:240px}#wpadminbar *{font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:2.28571428}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:3.28571428;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:1.6}#wpadminbar .ab-label{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-right:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;right:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{height:28px;width:28px;left:50%;margin-left:-15px;top:10px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-editor>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#a7aaad;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-right:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-editor>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:normal 32px/1 dashicons;speak:never;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:1.33333333;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon{margin:0}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:1.38235294;top:0}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;right:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:1.5;color:#f0f0f1}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wp-toolbar>ul>li{display:none}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-editor,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-moz-fit-content;min-width:fit-content}#wpadminbar ul#wp-admin-bar-root-default>li{margin-right:0}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:right}.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-right:0}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;left:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;left:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-left:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;left:auto;position:relative}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 15px 19px 30px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{position:static;box-shadow:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}} \ No newline at end of file +#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px;border-radius:0;box-sizing:content-box;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar .ab-empty-item{cursor:default}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=email],#wpadminbar input[type=number],#wpadminbar input[type=password],#wpadminbar input[type=search],#wpadminbar input[type=text],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{box-shadow:none;outline:0}#wpadminbar{direction:ltr;color:#ccc;font-size:13px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px;height:32px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background:#23282d}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-right:0}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks .ab-top-secondary>li{float:right}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 8px 0 7px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:32px;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-submenu{padding:6px 0}#wpadminbar .selected .shortlink-input{display:block}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:600}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs 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:-32px}#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.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#32373c;color:#00b9eb}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#00b9eb}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{position:relative;float:left;font:normal 20px/1 dashicons;speak:none;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-right:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{position:relative;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item{color:#b4b9be;color:rgba(240,245,250,.7)}#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:#b4b9be;color:rgba(240,245,250,.7)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:focus,#wpadminbar .quicklinks .menupop.hover ul li div[tabindex]:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus .ab-icon:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font:normal 17px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-right:2em}#wpadminbar .menupop .menupop>.ab-item:before{top:1px;right:4px;content:"\f139";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-left:2em;padding-right:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:1px;left:6px;content:"\f141"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#464b50}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#00b9eb}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#32373c;display:inline;padding:2px 5px;font-size:10px;font-weight:600;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:right;margin-left:6px;margin-right:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item{white-space:nowrap}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 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 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#a0a5aa;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 0 0 6px;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .cp-logo{width:18px;height:18px;margin:7px 2px 6px 1px;vertical-align:top;display:inline-block}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wp-admin-bar-my-sites-list .ab-item img.cp-logo{width:18px;height:18px;margin-right:6px;vertical-align:top;padding-top:4px;margin-left:-2px;display:inline-block}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f541";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-right:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;left:5px;z-index:20;font:normal 20px/1 dashicons!important;content:"\f179";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{display:inline-block;float:none;position:relative;z-index:30;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:24px;text-indent:0;height:24px;width:24px;max-width:none;padding:0 3px 0 24px;margin:0;color:#ccc;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;box-shadow:none;box-sizing:border-box;transition-duration:.4s;transition-property:width,background;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar.ie7>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{margin-top:3px;width:120px}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{background:transparent 0 0 repeat scroll url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7")}#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before{content:"\f179 "}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{background:#fff;z-index:-1}#wpadminbar #adminbarsearch .adminbar-button{display:none}.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{left:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,.6)}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}.no-font-face #wpadminbar ul.ab-top-menu>li>a.ab-item{display:block;width:45px;text-align:center;overflow:hidden;margin:0 3px}.no-font-face #wpadminbar #wp-admin-bar-edit>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-my-sites>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:0}.no-font-face #wpadminbar #wp-admin-bar-wp-logo>.ab-item,.no-font-face #wpadminbar .ab-icon,.no-font-face #wpadminbar .ab-icon:before,.no-font-face #wpadminbar a.ab-item:before{display:none!important}.no-font-face #wpadminbar ul.ab-top-menu>li>a>span.ab-label{display:inline}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon{display:inline!important}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before{content:"Menu";font:14px/45px sans-serif!important;display:inline-block!important;color:#fff}.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item{color:#fff}@media screen and (max-width:782px){html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:32px}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-right:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;right:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .cp-logo{padding:3px 4px 3px 5px;width:26px;height:26px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#a0a5aa;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-right:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:normal 32px/1 dashicons;speak:none;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon{margin:0}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;right:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:24px;color:#eee}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wp-toolbar>ul>li{display:none}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-moz-fit-content;min-width:fit-content}#wpadminbar ul#wp-admin-bar-root-default>li{margin-right:0}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:right}.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-right:0}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;left:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;left:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-left:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;left:auto;position:relative}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 15px 19px 30px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{position:static;box-shadow:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}} \ No newline at end of file diff --git a/wp-includes/css/buttons-rtl.css b/wp-includes/css/buttons-rtl.css index d99cf7b..ebe5353 100644 --- a/wp-includes/css/buttons-rtl.css +++ b/wp-includes/css/buttons-rtl.css @@ -6,7 +6,7 @@ buttons in the following files are updated. * jquery-ui-dialog.css * editor.css -WordPress-style Buttons +ClassicPress-style Buttons ======================= Create a button by adding the `.button` class to an element. For backward compatibility, we support several other classes (such as `.button-secondary`), @@ -46,10 +46,10 @@ TABLE OF CONTENTS: display: inline-block; text-decoration: none; font-size: 13px; - line-height: 2.15384615; /* 28px */ - min-height: 30px; + line-height: 26px; + height: 28px; margin: 0; - padding: 0 10px; + padding: 0 10px 1px; cursor: pointer; border-width: 1px; border-style: solid; @@ -71,27 +71,32 @@ TABLE OF CONTENTS: .wp-core-ui .button.button-large, .wp-core-ui .button-group.button-large .button { - min-height: 32px; - line-height: 2.30769231; /* 30px */ - padding: 0 12px; + height: 30px; + line-height: 28px; + padding: 0 12px 2px; } .wp-core-ui .button.button-small, .wp-core-ui .button-group.button-small .button { - min-height: 26px; - line-height: 2.18181818; /* 24px */ - padding: 0 8px; + height: 24px; + line-height: 22px; + padding: 0 8px 1px; font-size: 11px; } .wp-core-ui .button.button-hero, .wp-core-ui .button-group.button-hero .button { font-size: 14px; - min-height: 46px; - line-height: 3.14285714; + height: 46px; + line-height: 44px; padding: 0 36px; } +.wp-core-ui .button:active, +.wp-core-ui .button:focus { + outline: none; +} + .wp-core-ui .button.hidden { display: none; } @@ -115,10 +120,11 @@ TABLE OF CONTENTS: .wp-core-ui .button, .wp-core-ui .button-secondary { - color: #2271b1; - border-color: #2271b1; - background: #f6f7f7; - vertical-align: top; + color: #555; + border-color: #cccccc; + background: #f7f7f7; + box-shadow: 0 1px 0 #cccccc; + vertical-align: top; } .wp-core-ui p .button { @@ -127,47 +133,37 @@ TABLE OF CONTENTS: .wp-core-ui .button.hover, .wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover{ - background: #f0f0f1; - border-color: #0a4b78; - color: #0a4b78; +.wp-core-ui .button-secondary:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + background: #fafafa; + border-color: #999; + color: #23282d; } .wp-core-ui .button.focus, .wp-core-ui .button:focus, .wp-core-ui .button-secondary:focus { - background: #f6f7f7; - border-color: #3582c4; - color: #0a4b78; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - /* Reset inherited offset from Gutenberg */ - outline-offset: 0; + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } -/* :active state */ +.wp-core-ui .button.active, +.wp-core-ui .button.active:hover, .wp-core-ui .button:active, .wp-core-ui .button-secondary:active { - background: #f6f7f7; - border-color: #8c8f94; - box-shadow: none; -} - -/* pressed state e.g. a selected setting */ -.wp-core-ui .button.active, -.wp-core-ui .button.active:hover { - background-color: #dcdcde; - color: #135e96; - border-color: #0a4b78; - box-shadow: inset 0 2px 5px -3px #0a4b78; + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } .wp-core-ui .button.active:focus { - border-color: #3582c4; + border-color: #5b9dd9; box-shadow: - inset 0 2px 5px -3px #0a4b78, - 0 0 0 1px #3582c4; + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 3px rgba( 0, 115, 170, .8 ); } .wp-core-ui .button[disabled], @@ -177,10 +173,11 @@ TABLE OF CONTENTS: .wp-core-ui .button-secondary:disabled, .wp-core-ui .button-secondary.disabled, .wp-core-ui .button-disabled { - color: #a7aaad !important; - border-color: #dcdcde !important; - background: #f6f7f7 !important; + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; box-shadow: none !important; + text-shadow: 0 1px 0 #fff !important; cursor: default; transform: none !important; } @@ -193,10 +190,11 @@ TABLE OF CONTENTS: border: 0; border-radius: 0; background: none; + outline: none; cursor: pointer; text-align: right; /* Mimics the default link style in common.css */ - color: #2271b1; + color: #0073aa; text-decoration: underline; transition-property: border, background, color; transition-duration: .05s; @@ -205,84 +203,93 @@ TABLE OF CONTENTS: .wp-core-ui .button-link:hover, .wp-core-ui .button-link:active { - color: #135e96; + color: #00a0d2; } .wp-core-ui .button-link:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .wp-core-ui .button-link-delete { - color: #d63638; + color: #a00; } .wp-core-ui .button-link-delete:hover, .wp-core-ui .button-link-delete:focus { - color: #d63638; - background: transparent; + color: #dc3232; } -.wp-core-ui .button-link-delete:disabled { - /* overrides the default buttons disabled background */ - background: transparent !important; +.ie8 .wp-core-ui .button-link:focus { + outline: #5b9dd9 solid 1px; } - /* ---------------------------------------------------------------------------- 3.0 - Primary Button Style ---------------------------------------------------------------------------- */ .wp-core-ui .button-primary { - background: #2271b1; - border-color: #2271b1; + background: #0085ba; + border-color: #0073aa #006799 #006799; + box-shadow: 0 1px 0 #006799; color: #fff; text-decoration: none; - text-shadow: none; + text-shadow: 0 -1px 1px #006799, + -1px 0 1px #006799, + 0 1px 1px #006799, + 1px 0 1px #006799; } .wp-core-ui .button-primary.hover, .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary.focus, .wp-core-ui .button-primary:focus { - background: #135e96; - border-color: #135e96; + background: #008ec2; + border-color: #006799; color: #fff; } .wp-core-ui .button-primary.focus, .wp-core-ui .button-primary:focus { - box-shadow: - 0 0 0 1px #fff, - 0 0 0 3px #2271b1; + box-shadow: 0 1px 0 #0073aa, + 0 0 2px 1px #33b3db; } .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:hover, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary:active { - background: #135e96; - border-color: #135e96; - box-shadow: none; - color: #fff; + background: #0073aa; + border-color: #006799; + box-shadow: inset 0 2px 0 #006799; + vertical-align: top; } .wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary-disabled, .wp-core-ui .button-primary.disabled { - color: #a7aaad !important; - background: #f6f7f7 !important; - border-color: #dcdcde !important; + color: #66c6e4 !important; + background: #008ec2 !important; + border-color: #007cb2 !important; box-shadow: none !important; - text-shadow: none !important; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important; cursor: default; } +.wp-core-ui .button.button-primary.button-hero { + box-shadow: 0 2px 0 #006799; +} + +.wp-core-ui .button.button-primary.button-hero.active, +.wp-core-ui .button.button-primary.button-hero.active:hover, +.wp-core-ui .button.button-primary.button-hero.active:focus, +.wp-core-ui .button.button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #006799; +} + /* ---------------------------------------------------------------------------- 4.0 - Button Groups ---------------------------------------------------------------------------- */ @@ -299,6 +306,15 @@ TABLE OF CONTENTS: display: inline-block; border-radius: 0; margin-left: -1px; + z-index: 10; +} + +.wp-core-ui .button-group > .button-primary { + z-index: 100; +} + +.wp-core-ui .button-group > .button:hover { + z-index: 20; } .wp-core-ui .button-group > .button:first-child { @@ -309,35 +325,16 @@ TABLE OF CONTENTS: border-radius: 3px 0 0 3px; } -.wp-core-ui .button-group > .button-primary + .button { - border-right: 0; -} - .wp-core-ui .button-group > .button:focus { position: relative; z-index: 1; } -/* pressed state e.g. a selected setting */ -.wp-core-ui .button-group > .button.active { - background-color: #dcdcde; - color: #135e96; - border-color: #0a4b78; - box-shadow: inset 0 2px 5px -3px #0a4b78; -} - -.wp-core-ui .button-group > .button.active:focus { - border-color: #3582c4; - box-shadow: - inset 0 2px 5px -3px #0a4b78, - 0 0 0 1px #3582c4; -} - /* ---------------------------------------------------------------------------- 5.0 - Responsive Button Styles ---------------------------------------------------------------------------- */ -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-core-ui .button, .wp-core-ui .button.button-large, @@ -345,22 +342,17 @@ TABLE OF CONTENTS: input#publish, input#save-post, a.preview { - padding: 0 14px; - line-height: 2.71428571; /* 38px */ + padding: 6px 14px; + line-height: normal; font-size: 14px; vertical-align: middle; - min-height: 40px; + height: auto; margin-bottom: 4px; } - /* Copy attachment URL button in the legacy edit media page. */ - .wp-core-ui .copy-to-clipboard-container .copy-attachment-url { - margin-bottom: 0; - } - #media-upload.wp-core-ui .button { padding: 0 10px 1px; - min-height: 24px; + height: 24px; line-height: 22px; font-size: 13px; } @@ -378,9 +370,10 @@ TABLE OF CONTENTS: /* Reset responsive styles in Press This, Customizer */ .wp-core-ui.wp-customizer .button { + padding: 0 10px 1px; font-size: 13px; - line-height: 2.15384615; /* 28px */ - min-height: 30px; + line-height: 26px; + height: 28px; margin: 0; vertical-align: inherit; } @@ -393,9 +386,72 @@ TABLE OF CONTENTS: /* Reset responsive styles on Log in button on iframed login form */ .interim-login .button.button-large { - min-height: 30px; - line-height: 2; + height: 30px; + line-height: 28px; padding: 0 12px 2px; } } + +/* ---------------------------------------------------------------------------- + 6.0 - ClassicPress Branded Button Styles +---------------------------------------------------------------------------- */ + +.wp-core-ui .button-primary.cp-button { + background: #057f99; + border-color: #034b59; + box-shadow: 0 1px 0 #034b59; + text-shadow: 0 -1px 1px #034b59, + -1px 0 1px #034b59, + 0 1px 1px #034b59, + 1px 0 1px #034b59; +} + +.wp-core-ui .button-primary.cp-button[disabled], +.wp-core-ui .button-primary.cp-button:disabled, +.wp-core-ui .button-primary-disabled.cp-button, +.wp-core-ui .button-primary.disabled.cp-button { + background: #057f99 !important; + border-color: #034b59 !important; + text-shadow: 0 -1px 1px #034b59, + -1px 0 1px #034b59, + 0 1px 1px #034b59, + 1px 0 1px #034b59 !important; + color: rgba(255, 255, 255, 0.9) !important; + opacity: 0.7; +} + +.wp-core-ui .button.button-primary.button-hero.cp-button { + box-shadow: 0 2px 0 #034b59; + font-weight: bold; +} + +.wp-core-ui .button-primary.cp-button.hover, +.wp-core-ui .button-primary.cp-button:hover, +.wp-core-ui .button-primary.cp-button.focus, +.wp-core-ui .button-primary.cp-button:focus { + background: #006b81; + border-color: #034b59; +} + +.wp-core-ui .button-primary.cp-button.focus, +.wp-core-ui .button-primary.cp-button:focus { + box-shadow: 0 1px 0 #034b59, + 0 0 2px 1px #07989e; +} + +.wp-core-ui .button-primary.cp-button.active, +.wp-core-ui .button-primary.cp-button.active:hover, +.wp-core-ui .button-primary.cp-button.active:focus, +.wp-core-ui .button-primary.cp-button:active { + background: #006b81; + border-color: #034b59; + box-shadow: inset 0 2px 0 #034b59; +} + +.wp-core-ui .button.button-primary.button-hero.cp-button.active, +.wp-core-ui .button.button-primary.button-hero.cp-button.active:hover, +.wp-core-ui .button.button-primary.button-hero.cp-button.active:focus, +.wp-core-ui .button.button-primary.button-hero.cp-button:active { + box-shadow: inset 0 3px 0 #034b59; +} diff --git a/wp-includes/css/buttons-rtl.min.css b/wp-includes/css/buttons-rtl.min.css index 91d1750..4f84129 100644 --- a/wp-includes/css/buttons-rtl.min.css +++ b/wp-includes/css/buttons-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{min-height:32px;line-height:2.30769231;padding:0 12px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{min-height:26px;line-height:2.18181818;padding:0 8px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;min-height:46px;line-height:3.14285714;padding:0 36px}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#2271b1;border-color:#2271b1;background:#f6f7f7;vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{background:#f6f7f7;border-color:#3582c4;color:#0a4b78;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent;outline-offset:0}.wp-core-ui .button-secondary:active,.wp-core-ui .button:active{background:#f6f7f7;border-color:#8c8f94;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:hover{background-color:#dcdcde;color:#135e96;border-color:#0a4b78;box-shadow:inset 0 2px 5px -3px #0a4b78}.wp-core-ui .button.active:focus{border-color:#3582c4;box-shadow:inset 0 2px 5px -3px #0a4b78,0 0 0 1px #3582c4}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a7aaad!important;border-color:#dcdcde!important;background:#f6f7f7!important;box-shadow:none!important;cursor:default;transform:none!important}.wp-core-ui .button-link{margin:0;padding:0;box-shadow:none;border:0;border-radius:0;background:0 0;cursor:pointer;text-align:right;color:#2271b1;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}.wp-core-ui .button-link:active,.wp-core-ui .button-link:hover{color:#135e96}.wp-core-ui .button-link:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}.wp-core-ui .button-link-delete{color:#d63638}.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#d63638;background:0 0}.wp-core-ui .button-link-delete:disabled{background:0 0!important}.wp-core-ui .button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-decoration:none;text-shadow:none}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#135e96;border-color:#135e96;color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#135e96;border-color:#135e96;box-shadow:none;color:#fff}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;box-shadow:none!important;text-shadow:none!important;cursor:default}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;border-radius:0;margin-left:-1px}.wp-core-ui .button-group>.button:first-child{border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:last-child{border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button-primary+.button{border-right:0}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}.wp-core-ui .button-group>.button.active{background-color:#dcdcde;color:#135e96;border-color:#0a4b78;box-shadow:inset 0 2px 5px -3px #0a4b78}.wp-core-ui .button-group>.button.active:focus{border-color:#3582c4;box-shadow:inset 0 2px 5px -3px #0a4b78,0 0 0 1px #3582c4}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:0 14px;line-height:2.71428571;font-size:14px;vertical-align:middle;min-height:40px;margin-bottom:4px}.wp-core-ui .copy-to-clipboard-container .copy-attachment-url{margin-bottom:0}#media-upload.wp-core-ui .button{padding:0 10px 1px;min-height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 10px 0 14px}.wp-core-ui.wp-customizer .button{font-size:13px;line-height:2.15384615;min-height:30px;margin:0;vertical-align:inherit}.media-modal-content .media-toolbar-primary .media-button{margin-top:10px;margin-right:5px}.interim-login .button.button-large{min-height:30px;line-height:2;padding:0 12px 2px}} \ No newline at end of file +.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{height:24px;line-height:22px;padding:0 8px 1px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;height:46px;line-height:44px;padding:0 36px}.wp-core-ui .button:active,.wp-core-ui .button:focus{outline:0}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-secondary:focus,.wp-core-ui .button-secondary:hover,.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-secondary:active,.wp-core-ui .button.active,.wp-core-ui .button.active:hover,.wp-core-ui .button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-core-ui .button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}.wp-core-ui .button-link{margin:0;padding:0;box-shadow:none;border:0;border-radius:0;background:0 0;outline:0;cursor:pointer;text-align:right;color:#0073aa;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}.wp-core-ui .button-link:active,.wp-core-ui .button-link:hover{color:#00a0d2}.wp-core-ui .button-link:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-link-delete{color:#a00}.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}.ie8 .wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.wp-core-ui .button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.wp-core-ui .button.button-primary.button-hero{box-shadow:0 2px 0 #006799}.wp-core-ui .button.button-primary.button-hero.active,.wp-core-ui .button.button-primary.button-hero.active:focus,.wp-core-ui .button.button-primary.button-hero.active:hover,.wp-core-ui .button.button-primary.button-hero:active{box-shadow:inset 0 3px 0 #006799}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;border-radius:0;margin-left:-1px;z-index:10}.wp-core-ui .button-group>.button-primary{z-index:100}.wp-core-ui .button-group>.button:hover{z-index:20}.wp-core-ui .button-group>.button:first-child{border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:last-child{border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#media-upload.wp-core-ui .button{padding:0 10px 1px;height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 10px 0 14px}.wp-core-ui.wp-customizer .button{padding:0 10px 1px;font-size:13px;line-height:26px;height:28px;margin:0;vertical-align:inherit}.media-modal-content .media-toolbar-primary .media-button{margin-top:10px;margin-right:5px}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}}.wp-core-ui .button-primary.cp-button{background:#057f99;border-color:#034b59;box-shadow:0 1px 0 #034b59;text-shadow:0 -1px 1px #034b59,-1px 0 1px #034b59,0 1px 1px #034b59,1px 0 1px #034b59}.wp-core-ui .button-primary-disabled.cp-button,.wp-core-ui .button-primary.cp-button:disabled,.wp-core-ui .button-primary.cp-button[disabled],.wp-core-ui .button-primary.disabled.cp-button{background:#057f99!important;border-color:#034b59!important;text-shadow:0 -1px 1px #034b59,-1px 0 1px #034b59,0 1px 1px #034b59,1px 0 1px #034b59!important;color:rgba(255,255,255,.9)!important;opacity:.7}.wp-core-ui .button.button-primary.button-hero.cp-button{box-shadow:0 2px 0 #034b59;font-weight:700}.wp-core-ui .button-primary.cp-button.focus,.wp-core-ui .button-primary.cp-button.hover,.wp-core-ui .button-primary.cp-button:focus,.wp-core-ui .button-primary.cp-button:hover{background:#006b81;border-color:#034b59}.wp-core-ui .button-primary.cp-button.focus,.wp-core-ui .button-primary.cp-button:focus{box-shadow:0 1px 0 #034b59,0 0 2px 1px #07989e}.wp-core-ui .button-primary.cp-button.active,.wp-core-ui .button-primary.cp-button.active:focus,.wp-core-ui .button-primary.cp-button.active:hover,.wp-core-ui .button-primary.cp-button:active{background:#006b81;border-color:#034b59;box-shadow:inset 0 2px 0 #034b59}.wp-core-ui .button.button-primary.button-hero.cp-button.active,.wp-core-ui .button.button-primary.button-hero.cp-button.active:focus,.wp-core-ui .button.button-primary.button-hero.cp-button.active:hover,.wp-core-ui .button.button-primary.button-hero.cp-button:active{box-shadow:inset 0 3px 0 #034b59} \ No newline at end of file diff --git a/wp-includes/css/buttons.css b/wp-includes/css/buttons.css index 6da6da5..8730828 100644 --- a/wp-includes/css/buttons.css +++ b/wp-includes/css/buttons.css @@ -6,7 +6,7 @@ buttons in the following files are updated. * jquery-ui-dialog.css * editor.css -WordPress-style Buttons +ClassicPress-style Buttons ======================= Create a button by adding the `.button` class to an element. For backward compatibility, we support several other classes (such as `.button-secondary`), @@ -46,10 +46,10 @@ TABLE OF CONTENTS: display: inline-block; text-decoration: none; font-size: 13px; - line-height: 2.15384615; /* 28px */ - min-height: 30px; + line-height: 26px; + height: 28px; margin: 0; - padding: 0 10px; + padding: 0 10px 1px; cursor: pointer; border-width: 1px; border-style: solid; @@ -71,27 +71,32 @@ TABLE OF CONTENTS: .wp-core-ui .button.button-large, .wp-core-ui .button-group.button-large .button { - min-height: 32px; - line-height: 2.30769231; /* 30px */ - padding: 0 12px; + height: 30px; + line-height: 28px; + padding: 0 12px 2px; } .wp-core-ui .button.button-small, .wp-core-ui .button-group.button-small .button { - min-height: 26px; - line-height: 2.18181818; /* 24px */ - padding: 0 8px; + height: 24px; + line-height: 22px; + padding: 0 8px 1px; font-size: 11px; } .wp-core-ui .button.button-hero, .wp-core-ui .button-group.button-hero .button { font-size: 14px; - min-height: 46px; - line-height: 3.14285714; + height: 46px; + line-height: 44px; padding: 0 36px; } +.wp-core-ui .button:active, +.wp-core-ui .button:focus { + outline: none; +} + .wp-core-ui .button.hidden { display: none; } @@ -115,10 +120,11 @@ TABLE OF CONTENTS: .wp-core-ui .button, .wp-core-ui .button-secondary { - color: #2271b1; - border-color: #2271b1; - background: #f6f7f7; - vertical-align: top; + color: #555; + border-color: #cccccc; + background: #f7f7f7; + box-shadow: 0 1px 0 #cccccc; + vertical-align: top; } .wp-core-ui p .button { @@ -127,47 +133,37 @@ TABLE OF CONTENTS: .wp-core-ui .button.hover, .wp-core-ui .button:hover, -.wp-core-ui .button-secondary:hover{ - background: #f0f0f1; - border-color: #0a4b78; - color: #0a4b78; +.wp-core-ui .button-secondary:hover, +.wp-core-ui .button.focus, +.wp-core-ui .button:focus, +.wp-core-ui .button-secondary:focus { + background: #fafafa; + border-color: #999; + color: #23282d; } .wp-core-ui .button.focus, .wp-core-ui .button:focus, .wp-core-ui .button-secondary:focus { - background: #f6f7f7; - border-color: #3582c4; - color: #0a4b78; - box-shadow: 0 0 0 1px #3582c4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - /* Reset inherited offset from Gutenberg */ - outline-offset: 0; + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } -/* :active state */ +.wp-core-ui .button.active, +.wp-core-ui .button.active:hover, .wp-core-ui .button:active, .wp-core-ui .button-secondary:active { - background: #f6f7f7; - border-color: #8c8f94; - box-shadow: none; -} - -/* pressed state e.g. a selected setting */ -.wp-core-ui .button.active, -.wp-core-ui .button.active:hover { - background-color: #dcdcde; - color: #135e96; - border-color: #0a4b78; - box-shadow: inset 0 2px 5px -3px #0a4b78; + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } .wp-core-ui .button.active:focus { - border-color: #3582c4; + border-color: #5b9dd9; box-shadow: - inset 0 2px 5px -3px #0a4b78, - 0 0 0 1px #3582c4; + inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ), + 0 0 3px rgba( 0, 115, 170, .8 ); } .wp-core-ui .button[disabled], @@ -177,10 +173,11 @@ TABLE OF CONTENTS: .wp-core-ui .button-secondary:disabled, .wp-core-ui .button-secondary.disabled, .wp-core-ui .button-disabled { - color: #a7aaad !important; - border-color: #dcdcde !important; - background: #f6f7f7 !important; + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; box-shadow: none !important; + text-shadow: 0 1px 0 #fff !important; cursor: default; transform: none !important; } @@ -193,10 +190,11 @@ TABLE OF CONTENTS: border: 0; border-radius: 0; background: none; + outline: none; cursor: pointer; text-align: left; /* Mimics the default link style in common.css */ - color: #2271b1; + color: #0073aa; text-decoration: underline; transition-property: border, background, color; transition-duration: .05s; @@ -205,84 +203,93 @@ TABLE OF CONTENTS: .wp-core-ui .button-link:hover, .wp-core-ui .button-link:active { - color: #135e96; + color: #00a0d2; } .wp-core-ui .button-link:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .wp-core-ui .button-link-delete { - color: #d63638; + color: #a00; } .wp-core-ui .button-link-delete:hover, .wp-core-ui .button-link-delete:focus { - color: #d63638; - background: transparent; + color: #dc3232; } -.wp-core-ui .button-link-delete:disabled { - /* overrides the default buttons disabled background */ - background: transparent !important; +.ie8 .wp-core-ui .button-link:focus { + outline: #5b9dd9 solid 1px; } - /* ---------------------------------------------------------------------------- 3.0 - Primary Button Style ---------------------------------------------------------------------------- */ .wp-core-ui .button-primary { - background: #2271b1; - border-color: #2271b1; + background: #0085ba; + border-color: #0073aa #006799 #006799; + box-shadow: 0 1px 0 #006799; color: #fff; text-decoration: none; - text-shadow: none; + text-shadow: 0 -1px 1px #006799, + 1px 0 1px #006799, + 0 1px 1px #006799, + -1px 0 1px #006799; } .wp-core-ui .button-primary.hover, .wp-core-ui .button-primary:hover, .wp-core-ui .button-primary.focus, .wp-core-ui .button-primary:focus { - background: #135e96; - border-color: #135e96; + background: #008ec2; + border-color: #006799; color: #fff; } .wp-core-ui .button-primary.focus, .wp-core-ui .button-primary:focus { - box-shadow: - 0 0 0 1px #fff, - 0 0 0 3px #2271b1; + box-shadow: 0 1px 0 #0073aa, + 0 0 2px 1px #33b3db; } .wp-core-ui .button-primary.active, .wp-core-ui .button-primary.active:hover, .wp-core-ui .button-primary.active:focus, .wp-core-ui .button-primary:active { - background: #135e96; - border-color: #135e96; - box-shadow: none; - color: #fff; + background: #0073aa; + border-color: #006799; + box-shadow: inset 0 2px 0 #006799; + vertical-align: top; } .wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary-disabled, .wp-core-ui .button-primary.disabled { - color: #a7aaad !important; - background: #f6f7f7 !important; - border-color: #dcdcde !important; + color: #66c6e4 !important; + background: #008ec2 !important; + border-color: #007cb2 !important; box-shadow: none !important; - text-shadow: none !important; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important; cursor: default; } +.wp-core-ui .button.button-primary.button-hero { + box-shadow: 0 2px 0 #006799; +} + +.wp-core-ui .button.button-primary.button-hero.active, +.wp-core-ui .button.button-primary.button-hero.active:hover, +.wp-core-ui .button.button-primary.button-hero.active:focus, +.wp-core-ui .button.button-primary.button-hero:active { + box-shadow: inset 0 3px 0 #006799; +} + /* ---------------------------------------------------------------------------- 4.0 - Button Groups ---------------------------------------------------------------------------- */ @@ -299,6 +306,15 @@ TABLE OF CONTENTS: display: inline-block; border-radius: 0; margin-right: -1px; + z-index: 10; +} + +.wp-core-ui .button-group > .button-primary { + z-index: 100; +} + +.wp-core-ui .button-group > .button:hover { + z-index: 20; } .wp-core-ui .button-group > .button:first-child { @@ -309,35 +325,16 @@ TABLE OF CONTENTS: border-radius: 0 3px 3px 0; } -.wp-core-ui .button-group > .button-primary + .button { - border-left: 0; -} - .wp-core-ui .button-group > .button:focus { position: relative; z-index: 1; } -/* pressed state e.g. a selected setting */ -.wp-core-ui .button-group > .button.active { - background-color: #dcdcde; - color: #135e96; - border-color: #0a4b78; - box-shadow: inset 0 2px 5px -3px #0a4b78; -} - -.wp-core-ui .button-group > .button.active:focus { - border-color: #3582c4; - box-shadow: - inset 0 2px 5px -3px #0a4b78, - 0 0 0 1px #3582c4; -} - /* ---------------------------------------------------------------------------- 5.0 - Responsive Button Styles ---------------------------------------------------------------------------- */ -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-core-ui .button, .wp-core-ui .button.button-large, @@ -345,22 +342,17 @@ TABLE OF CONTENTS: input#publish, input#save-post, a.preview { - padding: 0 14px; - line-height: 2.71428571; /* 38px */ + padding: 6px 14px; + line-height: normal; font-size: 14px; vertical-align: middle; - min-height: 40px; + height: auto; margin-bottom: 4px; } - /* Copy attachment URL button in the legacy edit media page. */ - .wp-core-ui .copy-to-clipboard-container .copy-attachment-url { - margin-bottom: 0; - } - #media-upload.wp-core-ui .button { padding: 0 10px 1px; - min-height: 24px; + height: 24px; line-height: 22px; font-size: 13px; } @@ -378,9 +370,10 @@ TABLE OF CONTENTS: /* Reset responsive styles in Press This, Customizer */ .wp-core-ui.wp-customizer .button { + padding: 0 10px 1px; font-size: 13px; - line-height: 2.15384615; /* 28px */ - min-height: 30px; + line-height: 26px; + height: 28px; margin: 0; vertical-align: inherit; } @@ -393,9 +386,72 @@ TABLE OF CONTENTS: /* Reset responsive styles on Log in button on iframed login form */ .interim-login .button.button-large { - min-height: 30px; - line-height: 2; + height: 30px; + line-height: 28px; padding: 0 12px 2px; } } + +/* ---------------------------------------------------------------------------- + 6.0 - ClassicPress Branded Button Styles +---------------------------------------------------------------------------- */ + +.wp-core-ui .button-primary.cp-button { + background: #057f99; + border-color: #034b59; + box-shadow: 0 1px 0 #034b59; + text-shadow: 0 -1px 1px #034b59, + 1px 0 1px #034b59, + 0 1px 1px #034b59, + -1px 0 1px #034b59; +} + +.wp-core-ui .button-primary.cp-button[disabled], +.wp-core-ui .button-primary.cp-button:disabled, +.wp-core-ui .button-primary-disabled.cp-button, +.wp-core-ui .button-primary.disabled.cp-button { + background: #057f99 !important; + border-color: #034b59 !important; + text-shadow: 0 -1px 1px #034b59, + 1px 0 1px #034b59, + 0 1px 1px #034b59, + -1px 0 1px #034b59 !important; + color: rgba(255, 255, 255, 0.9) !important; + opacity: 0.7; +} + +.wp-core-ui .button.button-primary.button-hero.cp-button { + box-shadow: 0 2px 0 #034b59; + font-weight: bold; +} + +.wp-core-ui .button-primary.cp-button.hover, +.wp-core-ui .button-primary.cp-button:hover, +.wp-core-ui .button-primary.cp-button.focus, +.wp-core-ui .button-primary.cp-button:focus { + background: #006b81; + border-color: #034b59; +} + +.wp-core-ui .button-primary.cp-button.focus, +.wp-core-ui .button-primary.cp-button:focus { + box-shadow: 0 1px 0 #034b59, + 0 0 2px 1px #07989e; +} + +.wp-core-ui .button-primary.cp-button.active, +.wp-core-ui .button-primary.cp-button.active:hover, +.wp-core-ui .button-primary.cp-button.active:focus, +.wp-core-ui .button-primary.cp-button:active { + background: #006b81; + border-color: #034b59; + box-shadow: inset 0 2px 0 #034b59; +} + +.wp-core-ui .button.button-primary.button-hero.cp-button.active, +.wp-core-ui .button.button-primary.button-hero.cp-button.active:hover, +.wp-core-ui .button.button-primary.button-hero.cp-button.active:focus, +.wp-core-ui .button.button-primary.button-hero.cp-button:active { + box-shadow: inset 0 3px 0 #034b59; +} diff --git a/wp-includes/css/buttons.min.css b/wp-includes/css/buttons.min.css index 38ec0f2..4e47c20 100644 --- a/wp-includes/css/buttons.min.css +++ b/wp-includes/css/buttons.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:2.15384615;min-height:30px;margin:0;padding:0 10px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{min-height:32px;line-height:2.30769231;padding:0 12px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{min-height:26px;line-height:2.18181818;padding:0 8px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;min-height:46px;line-height:3.14285714;padding:0 36px}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#2271b1;border-color:#2271b1;background:#f6f7f7;vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-secondary:hover,.wp-core-ui .button.hover,.wp-core-ui .button:hover{background:#f0f0f1;border-color:#0a4b78;color:#0a4b78}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{background:#f6f7f7;border-color:#3582c4;color:#0a4b78;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent;outline-offset:0}.wp-core-ui .button-secondary:active,.wp-core-ui .button:active{background:#f6f7f7;border-color:#8c8f94;box-shadow:none}.wp-core-ui .button.active,.wp-core-ui .button.active:hover{background-color:#dcdcde;color:#135e96;border-color:#0a4b78;box-shadow:inset 0 2px 5px -3px #0a4b78}.wp-core-ui .button.active:focus{border-color:#3582c4;box-shadow:inset 0 2px 5px -3px #0a4b78,0 0 0 1px #3582c4}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a7aaad!important;border-color:#dcdcde!important;background:#f6f7f7!important;box-shadow:none!important;cursor:default;transform:none!important}.wp-core-ui .button-link{margin:0;padding:0;box-shadow:none;border:0;border-radius:0;background:0 0;cursor:pointer;text-align:left;color:#2271b1;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}.wp-core-ui .button-link:active,.wp-core-ui .button-link:hover{color:#135e96}.wp-core-ui .button-link:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:1px solid transparent}.wp-core-ui .button-link-delete{color:#d63638}.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#d63638;background:0 0}.wp-core-ui .button-link-delete:disabled{background:0 0!important}.wp-core-ui .button-primary{background:#2271b1;border-color:#2271b1;color:#fff;text-decoration:none;text-shadow:none}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#135e96;border-color:#135e96;color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#135e96;border-color:#135e96;box-shadow:none;color:#fff}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;box-shadow:none!important;text-shadow:none!important;cursor:default}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;border-radius:0;margin-right:-1px}.wp-core-ui .button-group>.button:first-child{border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:last-child{border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button-primary+.button{border-left:0}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}.wp-core-ui .button-group>.button.active{background-color:#dcdcde;color:#135e96;border-color:#0a4b78;box-shadow:inset 0 2px 5px -3px #0a4b78}.wp-core-ui .button-group>.button.active:focus{border-color:#3582c4;box-shadow:inset 0 2px 5px -3px #0a4b78,0 0 0 1px #3582c4}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:0 14px;line-height:2.71428571;font-size:14px;vertical-align:middle;min-height:40px;margin-bottom:4px}.wp-core-ui .copy-to-clipboard-container .copy-attachment-url{margin-bottom:0}#media-upload.wp-core-ui .button{padding:0 10px 1px;min-height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 14px 0 10px}.wp-core-ui.wp-customizer .button{font-size:13px;line-height:2.15384615;min-height:30px;margin:0;vertical-align:inherit}.media-modal-content .media-toolbar-primary .media-button{margin-top:10px;margin-left:5px}.interim-login .button.button-large{min-height:30px;line-height:2;padding:0 12px 2px}} \ No newline at end of file +.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{height:24px;line-height:22px;padding:0 8px 1px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;height:46px;line-height:44px;padding:0 36px}.wp-core-ui .button:active,.wp-core-ui .button:focus{outline:0}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-secondary:focus,.wp-core-ui .button-secondary:hover,.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-secondary:active,.wp-core-ui .button.active,.wp-core-ui .button.active:hover,.wp-core-ui .button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.wp-core-ui .button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}.wp-core-ui .button-link{margin:0;padding:0;box-shadow:none;border:0;border-radius:0;background:0 0;outline:0;cursor:pointer;text-align:left;color:#0073aa;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out}.wp-core-ui .button-link:active,.wp-core-ui .button-link:hover{color:#00a0d2}.wp-core-ui .button-link:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-link-delete{color:#a00}.wp-core-ui .button-link-delete:focus,.wp-core-ui .button-link-delete:hover{color:#dc3232}.ie8 .wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.wp-core-ui .button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.wp-core-ui .button.button-primary.button-hero{box-shadow:0 2px 0 #006799}.wp-core-ui .button.button-primary.button-hero.active,.wp-core-ui .button.button-primary.button-hero.active:focus,.wp-core-ui .button.button-primary.button-hero.active:hover,.wp-core-ui .button.button-primary.button-hero:active{box-shadow:inset 0 3px 0 #006799}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;border-radius:0;margin-right:-1px;z-index:10}.wp-core-ui .button-group>.button-primary{z-index:100}.wp-core-ui .button-group>.button:hover{z-index:20}.wp-core-ui .button-group>.button:first-child{border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:last-child{border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#media-upload.wp-core-ui .button{padding:0 10px 1px;height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 14px 0 10px}.wp-core-ui.wp-customizer .button{padding:0 10px 1px;font-size:13px;line-height:26px;height:28px;margin:0;vertical-align:inherit}.media-modal-content .media-toolbar-primary .media-button{margin-top:10px;margin-left:5px}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}}.wp-core-ui .button-primary.cp-button{background:#057f99;border-color:#034b59;box-shadow:0 1px 0 #034b59;text-shadow:0 -1px 1px #034b59,1px 0 1px #034b59,0 1px 1px #034b59,-1px 0 1px #034b59}.wp-core-ui .button-primary-disabled.cp-button,.wp-core-ui .button-primary.cp-button:disabled,.wp-core-ui .button-primary.cp-button[disabled],.wp-core-ui .button-primary.disabled.cp-button{background:#057f99!important;border-color:#034b59!important;text-shadow:0 -1px 1px #034b59,1px 0 1px #034b59,0 1px 1px #034b59,-1px 0 1px #034b59!important;color:rgba(255,255,255,.9)!important;opacity:.7}.wp-core-ui .button.button-primary.button-hero.cp-button{box-shadow:0 2px 0 #034b59;font-weight:700}.wp-core-ui .button-primary.cp-button.focus,.wp-core-ui .button-primary.cp-button.hover,.wp-core-ui .button-primary.cp-button:focus,.wp-core-ui .button-primary.cp-button:hover{background:#006b81;border-color:#034b59}.wp-core-ui .button-primary.cp-button.focus,.wp-core-ui .button-primary.cp-button:focus{box-shadow:0 1px 0 #034b59,0 0 2px 1px #07989e}.wp-core-ui .button-primary.cp-button.active,.wp-core-ui .button-primary.cp-button.active:focus,.wp-core-ui .button-primary.cp-button.active:hover,.wp-core-ui .button-primary.cp-button:active{background:#006b81;border-color:#034b59;box-shadow:inset 0 2px 0 #034b59}.wp-core-ui .button.button-primary.button-hero.cp-button.active,.wp-core-ui .button.button-primary.button-hero.cp-button.active:focus,.wp-core-ui .button.button-primary.button-hero.cp-button.active:hover,.wp-core-ui .button.button-primary.button-hero.cp-button:active{box-shadow:inset 0 3px 0 #034b59} \ No newline at end of file diff --git a/wp-includes/css/customize-preview-rtl.css b/wp-includes/css/customize-preview-rtl.css index 49f8efb..8f55f3b 100644 --- a/wp-includes/css/customize-preview-rtl.css +++ b/wp-includes/css/customize-preview-rtl.css @@ -41,13 +41,13 @@ height: 30px; min-width: 30px; min-height: 30px; - line-height: 1 !important; + line-height: 1em !important; font-size: 18px; z-index: 5; - background: #3582c4 !important; + background: #0085ba !important; border-radius: 50%; border: 2px solid #fff; - box-shadow: 0 2px 1px rgba(60, 67, 74, 0.15); + box-shadow: 0 2px 1px rgba(46,68,83,0.15); text-align: center; cursor: pointer; box-sizing: border-box; @@ -56,11 +56,10 @@ animation-duration: .4s; opacity: 0; pointer-events: none; - text-shadow: - 0 -1px 1px #135e96, - -1px 0 1px #135e96, - 0 1px 1px #135e96, - 1px 0 1px #135e96; + text-shadow: 0 -1px 1px #006799, + -1px 0 1px #006799, + 0 1px 1px #006799, + 1px 0 1px #006799; } .wp-custom-header .customize-partial-edit-shortcut button { right: 2px @@ -76,11 +75,11 @@ } .customize-partial-edit-shortcut button:hover { - background: #4f94d4 !important; /* matches primary buttons */ + background: #008ec2 !important; /* matches primary buttons */ } .customize-partial-edit-shortcut button:focus { - box-shadow: 0 0 0 2px #4f94d4; + box-shadow: 0 0 0 2px #008ec2; } body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button { @@ -151,14 +150,14 @@ body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut bu } } -@media screen and (max-width: 800px) { +@media screen and (max-width:800px) { .widget .customize-partial-edit-shortcut button, .customize-partial-edit-shortcut button { right: -32px; } } -@media screen and (max-width: 320px) { +@media screen and (max-width:320px) { .widget .customize-partial-edit-shortcut button, .customize-partial-edit-shortcut button { right: -30px; diff --git a/wp-includes/css/customize-preview-rtl.min.css b/wp-includes/css/customize-preview-rtl.min.css index cfbb910..9252f0f 100644 --- a/wp-includes/css/customize-preview-rtl.min.css +++ b/wp-includes/css/customize-preview-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.customize-partial-refreshing{opacity:.25;transition:opacity .25s;cursor:progress}.customize-partial-refreshing.widget-customizer-highlighted-widget{box-shadow:none}.customize-partial-edit-shortcut,.widget .customize-partial-edit-shortcut{position:absolute;float:right;width:1px;height:1px;padding:0;margin:-1px -1px 0 0;border:0;background:0 0;color:transparent;box-shadow:none;outline:0;z-index:5}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{position:absolute;right:-30px;top:2px;color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;line-height:1!important;font-size:18px;z-index:5;background:#3582c4!important;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 1px rgba(60,67,74,.15);text-align:center;cursor:pointer;box-sizing:border-box;padding:3px;animation-fill-mode:both;animation-duration:.4s;opacity:0;pointer-events:none;text-shadow:0 -1px 1px #135e96,-1px 0 1px #135e96,0 1px 1px #135e96,1px 0 1px #135e96}.wp-custom-header .customize-partial-edit-shortcut button{right:2px}.customize-partial-edit-shortcut button svg{fill:#fff;min-width:20px;min-height:20px;width:20px;height:20px;margin:auto}.customize-partial-edit-shortcut button:hover{background:#4f94d4!important}.customize-partial-edit-shortcut button:focus{box-shadow:0 0 0 2px #4f94d4}body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-appear;pointer-events:auto}body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-disappear;pointer-events:none}.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button,.page-sidebar-collapsed .customize-partial-edit-shortcut button{visibility:hidden}@keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}@keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:1;transform:scale3d(1,1,1)}20%{transform:scale3d(.97,.97,.97)}40%{opacity:1;transform:scale3d(1.03,1.03,1.03)}60%{transform:scale3d(.9,.9,.9)}80%{transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@media screen and (max-width:800px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{right:-32px}}@media screen and (max-width:320px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{right:-30px}} \ No newline at end of file +.customize-partial-refreshing{opacity:.25;transition:opacity .25s;cursor:progress}.customize-partial-refreshing.widget-customizer-highlighted-widget{box-shadow:none}.customize-partial-edit-shortcut,.widget .customize-partial-edit-shortcut{position:absolute;float:right;width:1px;height:1px;padding:0;margin:-1px -1px 0 0;border:0;background:0 0;color:transparent;box-shadow:none;outline:0;z-index:5}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{position:absolute;right:-30px;top:2px;color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;line-height:1em!important;font-size:18px;z-index:5;background:#0085ba!important;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 1px rgba(46,68,83,.15);text-align:center;cursor:pointer;box-sizing:border-box;padding:3px;animation-fill-mode:both;animation-duration:.4s;opacity:0;pointer-events:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.wp-custom-header .customize-partial-edit-shortcut button{right:2px}.customize-partial-edit-shortcut button svg{fill:#fff;min-width:20px;min-height:20px;width:20px;height:20px;margin:auto}.customize-partial-edit-shortcut button:hover{background:#008ec2!important}.customize-partial-edit-shortcut button:focus{box-shadow:0 0 0 2px #008ec2}body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-appear;pointer-events:auto}body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-disappear;pointer-events:none}.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button,.page-sidebar-collapsed .customize-partial-edit-shortcut button{visibility:hidden}@keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}@keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:1;transform:scale3d(1,1,1)}20%{transform:scale3d(.97,.97,.97)}40%{opacity:1;transform:scale3d(1.03,1.03,1.03)}60%{transform:scale3d(.9,.9,.9)}80%{transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@media screen and (max-width:800px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{right:-32px}}@media screen and (max-width:320px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{right:-30px}} \ No newline at end of file diff --git a/wp-includes/css/customize-preview.css b/wp-includes/css/customize-preview.css index 6bdf302..7f9b10b 100644 --- a/wp-includes/css/customize-preview.css +++ b/wp-includes/css/customize-preview.css @@ -41,13 +41,13 @@ height: 30px; min-width: 30px; min-height: 30px; - line-height: 1 !important; + line-height: 1em !important; font-size: 18px; z-index: 5; - background: #3582c4 !important; + background: #0085ba !important; border-radius: 50%; border: 2px solid #fff; - box-shadow: 0 2px 1px rgba(60, 67, 74, 0.15); + box-shadow: 0 2px 1px rgba(46,68,83,0.15); text-align: center; cursor: pointer; box-sizing: border-box; @@ -56,11 +56,10 @@ animation-duration: .4s; opacity: 0; pointer-events: none; - text-shadow: - 0 -1px 1px #135e96, - 1px 0 1px #135e96, - 0 1px 1px #135e96, - -1px 0 1px #135e96; + text-shadow: 0 -1px 1px #006799, + 1px 0 1px #006799, + 0 1px 1px #006799, + -1px 0 1px #006799; } .wp-custom-header .customize-partial-edit-shortcut button { left: 2px @@ -76,11 +75,11 @@ } .customize-partial-edit-shortcut button:hover { - background: #4f94d4 !important; /* matches primary buttons */ + background: #008ec2 !important; /* matches primary buttons */ } .customize-partial-edit-shortcut button:focus { - box-shadow: 0 0 0 2px #4f94d4; + box-shadow: 0 0 0 2px #008ec2; } body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button { @@ -151,14 +150,14 @@ body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut bu } } -@media screen and (max-width: 800px) { +@media screen and (max-width:800px) { .widget .customize-partial-edit-shortcut button, .customize-partial-edit-shortcut button { left: -32px; } } -@media screen and (max-width: 320px) { +@media screen and (max-width:320px) { .widget .customize-partial-edit-shortcut button, .customize-partial-edit-shortcut button { left: -30px; diff --git a/wp-includes/css/customize-preview.min.css b/wp-includes/css/customize-preview.min.css index f3b5d31..0220b58 100644 --- a/wp-includes/css/customize-preview.min.css +++ b/wp-includes/css/customize-preview.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.customize-partial-refreshing{opacity:.25;transition:opacity .25s;cursor:progress}.customize-partial-refreshing.widget-customizer-highlighted-widget{box-shadow:none}.customize-partial-edit-shortcut,.widget .customize-partial-edit-shortcut{position:absolute;float:left;width:1px;height:1px;padding:0;margin:-1px 0 0 -1px;border:0;background:0 0;color:transparent;box-shadow:none;outline:0;z-index:5}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{position:absolute;left:-30px;top:2px;color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;line-height:1!important;font-size:18px;z-index:5;background:#3582c4!important;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 1px rgba(60,67,74,.15);text-align:center;cursor:pointer;box-sizing:border-box;padding:3px;animation-fill-mode:both;animation-duration:.4s;opacity:0;pointer-events:none;text-shadow:0 -1px 1px #135e96,1px 0 1px #135e96,0 1px 1px #135e96,-1px 0 1px #135e96}.wp-custom-header .customize-partial-edit-shortcut button{left:2px}.customize-partial-edit-shortcut button svg{fill:#fff;min-width:20px;min-height:20px;width:20px;height:20px;margin:auto}.customize-partial-edit-shortcut button:hover{background:#4f94d4!important}.customize-partial-edit-shortcut button:focus{box-shadow:0 0 0 2px #4f94d4}body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-appear;pointer-events:auto}body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-disappear;pointer-events:none}.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button,.page-sidebar-collapsed .customize-partial-edit-shortcut button{visibility:hidden}@keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}@keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:1;transform:scale3d(1,1,1)}20%{transform:scale3d(.97,.97,.97)}40%{opacity:1;transform:scale3d(1.03,1.03,1.03)}60%{transform:scale3d(.9,.9,.9)}80%{transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@media screen and (max-width:800px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{left:-32px}}@media screen and (max-width:320px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{left:-30px}} \ No newline at end of file +.customize-partial-refreshing{opacity:.25;transition:opacity .25s;cursor:progress}.customize-partial-refreshing.widget-customizer-highlighted-widget{box-shadow:none}.customize-partial-edit-shortcut,.widget .customize-partial-edit-shortcut{position:absolute;float:left;width:1px;height:1px;padding:0;margin:-1px 0 0 -1px;border:0;background:0 0;color:transparent;box-shadow:none;outline:0;z-index:5}.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{position:absolute;left:-30px;top:2px;color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;line-height:1em!important;font-size:18px;z-index:5;background:#0085ba!important;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 1px rgba(46,68,83,.15);text-align:center;cursor:pointer;box-sizing:border-box;padding:3px;animation-fill-mode:both;animation-duration:.4s;opacity:0;pointer-events:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wp-custom-header .customize-partial-edit-shortcut button{left:2px}.customize-partial-edit-shortcut button svg{fill:#fff;min-width:20px;min-height:20px;width:20px;height:20px;margin:auto}.customize-partial-edit-shortcut button:hover{background:#008ec2!important}.customize-partial-edit-shortcut button:focus{box-shadow:0 0 0 2px #008ec2}body.customize-partial-edit-shortcuts-shown .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-appear;pointer-events:auto}body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut button{animation-name:customize-partial-edit-shortcut-bounce-disappear;pointer-events:none}.customize-partial-edit-shortcut-hidden .customize-partial-edit-shortcut button,.page-sidebar-collapsed .customize-partial-edit-shortcut button{visibility:hidden}@keyframes customize-partial-edit-shortcut-bounce-appear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scale3d(1,1,1)}}@keyframes customize-partial-edit-shortcut-bounce-disappear{20%,40%,60%,80%,from,to{animation-timing-function:cubic-bezier(0.215,0.610,0.355,1.000)}0%{opacity:1;transform:scale3d(1,1,1)}20%{transform:scale3d(.97,.97,.97)}40%{opacity:1;transform:scale3d(1.03,1.03,1.03)}60%{transform:scale3d(.9,.9,.9)}80%{transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}@media screen and (max-width:800px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{left:-32px}}@media screen and (max-width:320px){.customize-partial-edit-shortcut button,.widget .customize-partial-edit-shortcut button{left:-30px}} \ No newline at end of file diff --git a/wp-includes/css/dashicons.css b/wp-includes/css/dashicons.css index 6eeff47..b49cf81 100644 --- a/wp-includes/css/dashicons.css +++ b/wp-includes/css/dashicons.css @@ -35,7 +35,7 @@ font-size: 20px; vertical-align: top; text-align: center; - transition: color 0.1s ease-in; + transition: color 0.1s ease-in 0; } /* Icons */ diff --git a/wp-includes/css/dashicons.min.css b/wp-includes/css/dashicons.min.css index 25af7b0..9619a43 100644 --- a/wp-includes/css/dashicons.min.css +++ b/wp-includes/css/dashicons.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -@font-face{font-family:dashicons;src:url("../fonts/dashicons.eot?99ac726223c749443b642ce33df8b800");src:url("../fonts/dashicons.eot?99ac726223c749443b642ce33df8b800#iefix") format("embedded-opentype"),url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAHvwAAsAAAAA3EgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAAQAAAAFZAuk8lY21hcAAAAXwAAAk/AAAU9l+BPsxnbHlmAAAKvAAAYwIAAKlAcWTMRWhlYWQAAG3AAAAALwAAADYXkmaRaGhlYQAAbfAAAAAfAAAAJAQ3A0hobXR4AABuEAAAACUAAAVQpgT/9mxvY2EAAG44AAACqgAAAqps5EEYbWF4cAAAcOQAAAAfAAAAIAJvAKBuYW1lAABxBAAAATAAAAIiwytf8nBvc3QAAHI0AAAJvAAAEhojMlz2eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/Mc4gYGVgYOBhzGNgYHBHUp/ZZBkaGFgYGJgZWbACgLSXFMYHD4yfHVnAnH1mBgZGIE0CDMAAI/zCGl4nN3Y93/eVRnG8c/9JE2bstLdQIF0N8x0t8w0pSMt0BZKS5ml7F32lrL3hlKmCxEQtzjAhQMRRcEJijhQQWV4vgNBGV4nl3+B/mbTd8+reeVJvuc859znvgL0A5pkO2nW3xcJ8qee02ej7/NNDOz7fHPTw/r/LnTo60ale4ooWov2orOYXXQXPWVr2V52lrPL3qq3WlmtqlZXx1bnVFdVd9TNdWvdXnfWk+tZ9dx6wfvvQ6KgaCraio6iq+/VUbaVHWVX2V0trJb2vXpNtbZaV91YU7fUbXVH3VVPrbvrefnV//WfYJc4M86OS2N9PBCP9n08FS/E6w0agxtDG2P6ProaPY3ljaMaJzVOb1ze2NC4s3Ff46G+VzfRQn8GsBEbM4RN2YQtGMVlMY2v8COGai0Hxm6MjEWxOBZGb+zJArbidjajjUGxJHbgUzwYG/EJPsNDfJLFsYzpXM6Pmcd8Ps1BvB8LGEE7W7KSzdmGA9ifgzmau7ibcUxkB7bnHhZxb+xDgw/yYb7GU/yQp2NgDI9xMZ61sWVsFZtHkxb5+ZgQE2NSdMYmDOM5HmZrfs6H+Cbf4bt8m28xhb2YyjQWciDHxk7RGg2W8DFWxbyYE20cx/GcwImcxKmxWYyIGXr3l7MPp/MAn+PzfIFH+Co/4296Q2v+wdvRHP1iQIyKMTE2ZsZesW8QSzmHi7mFK7iWsziTs7mIG/gAl3Irl3Az13A117GeC7iSdVzIjdzGMXycP/ITfskv+B5PRk/MjT1iCPuyLAbF4Jgds2Jj7uOj7MmX+DI78hfejBa6+Kxmekp0s5TBXM/kiNg29uaNmM5p0c6fmMmMGMbLMZS/8w2+zh78lPFMYFvt9Ul0Moax/IA/s5P2+hy6mcXO7EoPu7F7bM1feSR25wzuZAN3xBasiJGxDSfH9pzLeVzF7NgxtmM0+/FK7MLrvBNTeZSXYlP+wO/5J//SV/2O3/Iiv+EFfs2veDf68xHOj53p5Yt8n72ZG6MZzhoO5wgO4VCO5CgOY3VM4S1epYxdYzKP8QSPx3xu4v7o4Fmdydbo4j1eo+IZbdaW/+Gc/L/82Tj/0zbS/4kVue5YrmzpP3L1Sw3T+SY1mU46qdl05kn9TKef1GL5J6T+popAGmCqDaRWU5UgDTTVC9JGpspB2ti4TOMmpmpC2tRUV0ibmSoMqc1Ua0iDLFfwNNhypU5DTJWINNTQGqRhFos0DrdYrHGExUKNIy16Nbabqhhpc1M9I21hqmykUaYaR9rSyM+7lZGfd2sjP2+HxRKNo01VkTTGVB9JY40HNY6zyGs23lQ9SRNMdZQ00VRRSZNMtZXUaeQ5bmOqt6RtTZWXtJ2pBpO2N1Vj0g6mukza0VShSV2mWk2abKrapClGvtumWuS1mmbkNZ5u5HWdYeQ1m2mq+KRZRl7v2UZ+9p1M9wFpZ9PNQNrFdEeQdjXdFqTdTPcGaXfTDULqNvK6zjHy+vUYed5zjbwee5juHNI8I++f+ca9GheYbiTSQiOfp17TLUVaZLqvSItNNxdpT9MdRtrLdJuR9jae1rjEIu/tpRZ5/y6zyHPZxyLvkX2NtRqXW+R13s8i780VFnmdV1rkc7+/5SKRVhnPazzAIu+7Ay3yuh1kkffdwRZ53x1ikc/0oUY+f6tNNxTpMNOtTFpj5LNyuOmmJh1hurNJR5pub9JRpnucdLTpRicdY7rbSceabnnScUbep8cbeb1PMPKePdHIe/YkI7+fJxt53muN/L1Psch781SLXPNOs8h74HQjv4dnmLoL0plGXuOzLPL+Otsi781zLHINOdfI8zjPyPM438jzuMDI8/iAkedxoZGfcZ1FrlEXWeSzebFFPpeXGLlWXWrkfXSZkffa5Uae3xWmjoh0pak3Il1l6pJIV5v6JdI1ps6JdK2phyJdZ+qmSNeb+irSDaYOi3Sjqdci3WTqukg3G29rvMUi3123WuQ74jaLfEett8j1+3aLXIM3WOQafIdFrk93WuQ9c5dFPmd3W75G0z2mbi8/ah/1fRRh6gDV85t6QYpmU1dI0c/UH1K0mDpFiv6mnpFigKl7pGg19ZEUbaaOkmKQqbekGGzqMimGmPpNiqGmzpNimKkHpRhu6kYpRpj6UoqRpg6Vot3Uq1J0mLpWitGm/pVijKmTpRhr6mkpxpm6W4rxpj6XYoKp46WYaOp9KSaZumCKTlM/TNFl6owpJpt6ZIoppm6ZYqrxpMZpFqrvxXQL1fdihoXqezHTIq/TLFOnTTHbUJ0tui3yGvdYaH3LsNDXlQ0Lvb5sMnXplM2mfp2yn6lzp2wx9fCU/U3dPOUAU19P2Wrq8CnbTL0+5SDjTY2DLXe95RBTEqAcasoElMMs195yuKH6VY4wJQbKkabsQNlu5O/dYcoTlKMNrXs5xiKvwVgL9RblOFPuoBxvvKFxgimLUE40VCvLSRb5Z3aakgpllymzUE429J6VUyzynKYaL2ucZpHnPd2UcihnmPIO5UxT8qGcZcpAlLNNaYiy28jPPsfIz95j5DnOtfybg3IPI89jnpHnMd/I67TAyOu00JSzKHtNiYtqoSl7UfWaUhjVUlMeo1pmSmZU+5gyGtW+prRGtdyU26j2MyU4qhWmLEe10lBvVK0y5Tuq1aakR7XGcq2uDrfIX3+EKQdSHWlKhFRHmbIh1dGGamh1jCkvUh1r5GdZa6E9V51iSpNUpxq6d6vTTAmT6nRT1qQ6w5Qnqc405U+qswy9l9XZFjo71TmmdEq1zpRTqS4y8jpdbLyi8RKLvP6XmvIs1WXGOxovN2VcqitMaZfqSuMljVeZEjDVjaYsTHWTKRVT3WzKx1S3mJIy1a3WN8fbTOmZar0pR1PdbkrUVBtM2ZrqDlPKztdlH+Vt6jAlb+qG8a7GJlMap2425XLqFkN9Rt3flNWpB5hSO3WrKb9Tt5mSPPUgU6anHmzozNRDTDmfeqgp8VMPM2V/6uGG9lw9wtCeq0ca6i/rdkP9Zd1haC/Wow3txXqMoV6zHmtof9fjLFRH6vHGWxonGK9qnGiUGidZ6EzVnRaqR3WX8ZjGycYTGqcaj2ucZqFaUE839N7XM4z7Nc60yPOYZTyrsdvybyfrOUZe7x6L/PPnGu9pnGe8pnG+UWlcYDzzb8iLsxoAeJysvQmcJMdZJ5qRlZmR91F5VWXdZ/bd0511zEzP9PSMPKOrS5JHEpJGI0uyRbUk27KMMMuitVU25lgW+cAyuGt3f17A2Muaw6bHwMIzC5g15jFlMNcaA7vAmp41ZtnfW1h48PbVvC8is46eGZnj97qrIiMjj7i/+H9HfMWwDPyh/wddZTRmnWEaYbfj+cl/F4dYcErIc7BgIAHDv9ftdDtnEASbkL7ZRS98qimf8DXL84pOsbr/qTWMc6Io59OWVFC0WiVfkDTFUbEr5kQX/8mnmgpniLqtmTzGQ7gb0rGH4Q5NKuTLdU0pSJZZUDHOY0yKFpfvV9CvMCpjQGyziBwdVddQaxvZbYyY7uVO5/Jzlzvdy898EP0KjXYuv/mxzvi3Pvt68ih9fohGTJph7GjTKyBHWEa4Xas2T6NWZ3DoFYteNIjcYhGNiu4VtzgY0MMk7y+iX2fKTASxTrsTNsMmruIN2hg4aZJtRFql20GdbvLv+cW4vdBvI4RYLKqYU+or9XVPVZRUyg/8SMnUcjl//ICnYlHgJT29YkoCVvOrC+iHUqwoSIKEkODnc7WMlgm8IMOynpI51lipj39AdxQ/LemylrKkak3J8VxS1hHUM2SOQT/WBOzjUMBurd0McdhthrV21OmGXb/TbUeu53d97PkR3uy0mlXB8dDoONYXOgte0At8OOq42xWMhU7o5XuBB0ddOP6l8urqzurqKOeH8Q30CT/YTZ44flzQQ5LwArltZ5UUKUXL9Qvo5xmJ0UkfICgWlMdvR9h3K22/XXPRMMx99KO5X+i3hsPx1VEfNZPzaGF/f/+lwWD6nq+i/8x4TJU5DnFoYQPpCAYs1MBATRiW28hLkVMyWh2vg7sevWWNpdd8GMzeJvqsaxhu6J7IP2uW18xnsU5OTvz2PxctX/xO0fTVZ0VI8o6fWIb7FtzjhWetyir693AP3KjjZ821svlsnpwYxvhL/1z0TYRpGNFUT9eXZ7dWSLE5WvZr6BpjM3lmielA/7RbzWUU1nCtKsCI9KLKZifc9Byh2mx1/MiKI9EmNA+G7pqcop6hLFf71WXZMGTEKMYw12i0m83RgISBgHv9KI4dXpGNKDJkOBifbLbJXeH4L+nd7LvelXuExqBYUjzJ0G8yPKPADHOZHIz2BrPIQPch2lMGCtswWqCjfHJeilMbPgwtGpArFdKNb37zm+3BINj7+n5/t4XpyX+n4XjQv4r6/auDFmq10H1PPGE///zWQw/bly61lpf3Hn88/fzzaRpGj1y69Ah8dyL4S8b076P/RtuN9jiGDjfYGoznDkw7bzZ8fyJrWdnCPfVjvWYv+6tprZA5dy7UHSfvOOjnsufOZgua+aD4ePQfG68twK3fQi7knckcJ/QhRdqia1UsPnIrVjREzPhwdJ2JBqg3Pggi1EvG4GfRLzMYWqkGcWiITpHF0Dow14GqkG46g9qtbscnFwyE7rv/2P1CxuF+079W0kqFzFNlpewpZSx9FpJtHt+P3gd3YN7xW4VrriaJZcWDW96QLVQvQbKdEe5PaNgfoD9mYDghyKxJhzWZSJTINGOiHHY9Os6Rsv6D6+6G5Vi8trZ9B3ayaU/W5LSB79hedzbSdppHB2s/sK5xEN1wyS1GWtYkP51x8e3bSfp0zo3QFRgXy8ztMGqtVrNWqQquFY/YRkSG7DKi4/M0qpFBugXV72x6rj9/VkDzd7bRyFDGB3QM9xTjOpNVDEPJirI4jQwCcjXACg5IEon0UYukja9C+F2GazQFDFWHyMsk8shNKZN5N2IRrB0R8wBzGVaAqo6cItrcRq015OsIr6Gw021WsQALXgER6t6EZux2Qph7ReRvdrpeClK7HZg/zRDuhgMl8ckS6cGITAG9F3Cne7j97Pb2s28nwTt535RWSrwh2YLEsaInNyqcqAeSXpDa60GR5QwO/x92iuU5JImKUMAqdLaPc4WgYpXltMln3DvfbZQk00McyyRvheCjVh6XI81SBFGxJA1xWgbZnosUxcgG9omKKWrjrzielrUlQ8EplktxUr6TFnguldILS0iqr4Tn0JsESTM4RWFg1s/aaAFWjlPMG29oJRtinS40BtS0RhpICGmjkVUvJO2jo2YXmsrzyaXmOnLXYCKQxvPIdCUDFK7FLUf+BZc0IcS2WeiAuTZTeUlkeV3lUq7Ga6JTNNQ0JxliKFsPWTlWQk7uQmpTcQRsBxBWNZ9nWVZjOY7n0rwoaBiX/BrmIDGFrbKSYhGbUrx7X3/M9eebcPxLWEKiyIoFQ0urCPE4lTJVhDmfFwsZS87ZXAlaS4BLLMe77xQMSYYsDF7UeFbiBMnzcx5b9FRXF6DAdU8xpAa09tqWZTptaE5rrk3TTIYpAK1YYNZgDJ5gdpjzzC5zkXmYeYx5A/PMDW3NR55fa3bbMLIAXvm1dujWyFgjIYZvJPiRW2v6pAlDWELJ9D+N4ABXyHUYpPCGELoJQpKSglO4kzyJ55p6/Ndnkdg1vti0RV6V2Mdqtwui3XyMlZpnOaMrBo9dlB4l1565wEP6ZQTpKfO4yCLpuJFqrqn+sfL/8tXVcnlV9TdKf+lrq+Vj8038f9eqlR+7z2hoeq1aO/8N9xla4w3na9Xz9Ur1wvnqbffqDc249x5I1b8hSa7Wq9VKfa9e8JbPFurL4/9aK3or54q1JW9Kh2h7nmTuuGl84s5kbIUwKEndaSQeeHS0wsgssnS+kqGKJ3fPtUjwNGAuXUqrvMilMvbpNdYo2Xb/LCBRjktrupgXZFHXontdG/NVuRMoJtAkTeXE1JGx9fndlapnq1jGHAFfkrxoq2pu+96Uk81nChYrcDbisF7K6apsqvfV1pqXli1d0hVBlmd49zfQFxgHxg1DAE6yqjRhvmAfIA3vJase+nj2Qvm77E7T/pimbZ4t3XXHXbI+/jD2DMMDBJTV9Y/Zzbb9L8rnN3XlrjvvKu18GhsE/Uzz+RlY9xxY6xlUJQ2yDjO5s+l7CdjHXUDbBTqDq+RiGzB3hBjH0CSBSwmW07MtPgUTQjWcC4VOOVerHrv/WLWaK7ZLyNYVW7e0Zr5czjc1S7cV/dx6tZPfwRIviryEdwrtygSffwHquwXHJmE0CKILm8YU2QHJIFgWlxCBr9toHU0uzI4Avj+j+2njkW2T41Kav6Zxosw5mllWXjl5SbtvLS3sfFAVRN5NYSWluT6HZdYIntR5AX1GEwT99QHQwxQGTKqlZIFzBcxrr2wL6bX7tEsnX1GrmuZwsshpGz45GKcfUhyfFF2gnYbRb1F0WwT0vcXcyzDtShv4AjZcY3G74ls1i9cJAWwDCoXx522jNehZD+gfjM5tBHO9SwhqkRDOW6QhZvtU67zjpHffsHmdObyKHta6gSqaq25g38/JmIUVBF30o4zAszLPLVRsJSVLbErncmdLgsBKAt9ZDdI0zY6w6dkPvKm1cVtGw8F4iPq/EdiaID1hibLW5VNIkgUkKk8akoBkmUdQXM3iWUHm/K6t80iCvJBQtHI8yytceYoTrgBOSAEygkXFrrQrqF1xMRx7qA95RACkaGQAseGwH83G+uQ5QBcVyydPHoyHMMyuMwckgFv5G95vAB6kediAOhsRBPDlJ3kdHqJsD/7G1+Yy3IuG0X70NcpaQNOyQqZHizp5Zjh5pgsd2k3yPdwfAZOyD+hkfPUK5DKXx/T+Btwfwt0ufNHBfmv6wLWoFTGvXj9aL8imFlGIHZevB+HhoNdLyrgfDYd/R91c0qoDWq8oadoj/RDjpF9DP8eYwFvdxzwKJRZqMOXJKh7BEg/TrNuMuX/AcQnPGwJMAoq6eQYR8ttuwVivEaLhRICaYKDDNexWAQH4ruN1XU9nARG2W+jDd97/lsspjl16+vjqgw0eL6dDI4VYw0hjWQC8YhhfcRd0Q4ZJVeU4nWP5XC3dyJR4vAJPuYEmppaW/Ry7cInlJEvWjG8tdRCXaoRBFgkpX+RUJMC6X5M5xGqNFrLSrsyyJU7Scj3ADRmF1dM1zPOsZrCaZfKmGGaUbO2fyWo2rVjmMsOIU16atKMJPFEWaHEFuCI6RslIwW6U8GptwLpd4K3dyZe0+WjcR3vjq6h1rUdY4ZNucbhH/0hahIZwuRf0epSfjqKimw32WnvBXjDpw2uzsYMIk1yxKg3CYR2OW1n6dDBEw1arB3MkCBIaegXKKxIZhwUcAhDKw1Y/OjiI+lCYUT84OAj6zFQecgXtkVFnEylAOBgM4EbUHwyyBwezewaoRWYo8DhosNdH0f7+7BrhCURaNpoVnuWBgiTb6b17cC9P3kNuTXJBcZ7Te3pQHpZKn1APhvPe1x/Np9uuhLRSEYribCaVO5oH4YF8PKRZJDlMrtP3A8CGyYr60/cnbdaoWbQa4bT004xuarMG5X6TCgxvarMeyecM8g/2+gfD4Q3pCEco2BtBHae079MwroDTtr2YlfO9WIBEVgmSoBOWhEJt36OAu0kQ9e9hFokqm0qrvl4IZN8vFng+W1jffMtl11akU43mDm4sSorI1xcUBf1ECnNKWjYV0ZSCjKDywtnOyehksZRqbyxF6/c73idMFKQ9RxcKlj2hR59Evw6UKAPlC2kJfbIA+6SJ12FMYJ+MfsLUhZMItJ/fjRp+F4e1b9D1Vmlrq9TS9ai8tVV+dOnUqQdObS3HEqRzlfbZ+s74z8qdnfoO+mfxfeT+cgT3/+KpB7fg5mwsRMqfUL/3xHee0D54ImmzX4dylZglIg9gdZagO8p9bLNrrE4Hmb/N4ma7u0EkFd0memzzJI4uv3mjvqktSQvFxgMXQn717gcu2Mdekteyl9+8LaJstvcC4tBPwtkbTuIgfbKeK22aNr0Nbm5m7v1gZvOk8EdY4V988WIHsTOaPQLqKQIuNQFHQf/CZOVxFEbJl5AKBOtYfzzid8SI38HwFccjSrtHe9ksjCHyd53IF2MsgT6PPg84YoFpM+cASbyRoKIEruKQoB0ikY3FskB6IblBZbFwreUTmEi6gkoHZidCtZtgSALunG6z1gFcAo8ChiQUXgBSHTkEVaInK2mP01Sd812loe1oWtrQ9ee0hvIRT+fG/zMSTE67y+QcQXiO1yX+OUFbmkQ5/RMQkYXnBD3FvVkWRbG44KQkvZ7VBEtkFcWtB/UsSnNekE2pluundX0HOADHAG7gLZr2MU7XT7R4XrvPFPQXBI17q6Bq3HMCWhLIgcYvvJVX9NRbgHgbb5btpbyIFUkLmpqAjaLipoNcY4Yr/jX0jUAkJg1YjmqwBLVblC1YQ1XBdQBmFaCVSIetIcS4xX7xxaUqAt4x7Zt8dZnNuyjyC0Cb3eJvbNW6MiuximXBlBK7jeN+KO/siM052jAkXB8iazX5EqFeBfKroUGvD6uOjvq6gvot+NOV0UjRp/Laa/Ac4Pxuxa3A6mi1OhHQeiLR6loE4xNJy2aHiqBg6pTJUTGMbWA94NOLVkuoVVodDwHVP4ICgqvHhzwVnKPp+2FCo8hK3r6FrBp5e1RBwyh+5+EhkbCgAGDX3tz7pu1I3nECxiJjAxyB8rnwOSr3EWoTAVByrIaThDYVAfkTMd0oWi/6+cAtFt0A8tA0CKJJJFgtR0PZIBwKOjyIiuue1ysuFUmSfJyjwp9WHHLHyWEvW149OKAMjZHMHbJmS4zP1OnseRuUmXR1t9PuNP1OE2oOk8GLNrudIxxkqhpLdoC9idUL3dm923AVGKFOd9PBG0QgC8QYLpK51N10McFDRC5C2CcBw6vpC18omTkO4ccE3TVyHBYs3TO01e7j3e7jz5Ggu3B7lrO4Uuvhpx9utR5eFXTHDDiZswyn+GjzfMbyMR8UzaKt8Szp6nwG81kvqBRE4XgtYxpcfmV1c/2e9fV70JNL3Ubt7Z4gCx/JlV1rJe2kTbSc5APB+IVCjnf5Ns0IgrfTu2yPrSOpnGM5JH9T2t/2bKyzqRTiX0wvV8sriqyXuML6Pa+7Z500a6KIgeGgAhJqAq06xewyj9+gjfHnmxQfvYKLMFbwNnCQTUzGARkPRP9A5RxRi1A3gw3pCghgdcLOI+bC286ff9t3k+DCuefPnn3+3SQ4t/XU1tZT30SCZ1y7FOpBZeVyaWVle2XlHs0xVMyzbNk1sqrU6XQaviXyLMpxItZVU9FYJnkhBFryQgiyyQshWFHxRjnwhIVcaSUgL91eGRiCqaU1Q+3kHXiZ224j18w5vl0PfJrfhHZfgbki0hm9GNNuuxVCq0B9u5MIbpOpUIgT5+I+UKcbphE8MFHFbVJYsA3tOtE2uXHznkZTdd1hVjZNx9gL6BzaiydGcuhvLPhlL/DK/sKG7S6JtqfaVaJFEpcWDkxHXZIqtmYcu/j6i8d0wy5Ljqc66CCTkwuuacjJ8b2PKIYpHw3M/Lp+xvR9c3eXhGf09eOer6WwxAkCJ+GUtvoWIWWxAD78Xn49l1vP93zFklhRSgkz3oOsoz5TY9aJlHkiR25S4gHw2sGU3vAVEtYqFHbPxxNqBDdCSHiMLn0DunTF9DxzkfXMwPTYRTgZ/+85IXKdKFAM5ToJtymVySe35uEE9aCxME8qxWPSdnFD9uLDruEZk4sQnfAMA6iHDr2/ypxmzjLnmTuZHh0DzXUK59xkJMyfpqgmKB4FUFs6JubPw66LzyDXQPER/6Eqaqqii6q/6g1VUVdUTVS9Vf8VQ45IdSLZGNKQnh9GwBomH/QmM5t2LctNZ82sbWePnI3/dkQeGZFXTGMfCSL6DzglaMF3uq78FNRznWpkiEIG10IhFov7BE/4AvbbaywlpmSF7dJlF2gw+u6qFBiR95rcbV7HCKSaZbP8Yg4bUbCqOCvbq7a8FrRNKb/IszZ6In1XzQvYwSCV82p3WxIyjcoZ05OffJ+49ZqtWg0C8QOvF7PmTsUwETO3Xo0YjeqLAOz4wK/FiNoOuyGGDyBXDGwPYo7dv1Qe991cUC81R48/rpwU/lCNxMcfln/gY2i0Uy6PD1HgZJy86Yy/4+7b5cpz2jdmxNvvVJ5+dkoT0RfRLzH3MA8xTzDPMS8y38F8ANAGUeKtI4d0sJEIvdsT+NUlgxNaCNqDDtFooh1JjvFAjm8g497zw8nS2Z3QTaLFJAMDhhGMEz8eLXESzJPO5Nyfi6Nf8FbP+KIqpSVbIpyApIr+mVXPdNI1lq8EelPiyJoMa00LviTKSaEWVDm2mguuSSYZ9A/FS/N5HtYm+Ka4gHuNxO3CJBd2BfzILtG5kKBEcQgJ/sbfWfW1Zt41RYUXVNF0cw3NX93xZU1eP6nq1ZMuLDuwxGvkWS0O4ZQ1BPdkVVdPrpvWU/F8i+LDBzgVgA+f2hGwCAhzCyuiqOAohkMJLTlEf0TXKTIHATtTxEygMqxDs5NOi5g1kI6aImPPwfz81IQGRYpSVt5PFHLvV9BptaS+T/VJ3HwjSXvjGlHlvZ8E4y8roqpIiiA5hlhFv6Mo71dLPrl2WonvgOD736iUfRWeou/wS+p70jnbteyMHeh+fiq/eRl9gXHpCsKQqUREr2GXcDmeTway3zQQgTCwWgKxCCn2wB7KfmN6uflAczn9gn6ieSbKamo6WN/4pgyAtoWglmnuOIG90/R8M0QXf6Pu2bZX/0Imh+6ub7iKId6lvmOFy6653x14q17AF1zgZyhdZpk5mZTP5IDzqgE/uAyzP2K6zBZzhmEIYvVr7Wjyxf+AOJGYUElWP4r2WsB8R6NXj/SJwAr+WKZHDtGA4OnWII7T8HCfxOZli7/KNJg1qm+Pp2IN+y4O292wGuumCBtAFk8CCrsA9SiAaaIDzcooQdpeNIMgveza2YyMJZF385X1zQvbJfOgHqqNVkMN790pe0Vd5FIrlV4+36uspDhDlUwtY+1g4BV0jNGLJ+85duy+4zP53K8yAZUUE9kKnqAeKMMWonpcWlLCS4fT4lw8HgTH12F9S/mF4nJYDJeLBT8lOO47F+FvUhbE9Or1nuo7DX+bZI7gK2z7DccX0ouL/+ekGNNyjKActzN3Q+uQpqkRAUsVC3F7dD1SlHYLmKcuEUEkIIOQNShTZ9KcIVGdxv8wZXwoNBqaWb2EspcvZ08WskG5ura4uFYtB+O/MhqczYsqLyqGnQHWTeMaJUfLcBxiBfNZU2ARx2U0Z29ra+tQF1KpzusuHw+8E3eIooAR9JUo3tE5rwoZK6jwgoB5nLJM1RRULKT0QFP8ghmGZsFXtEBPCXgleOWV6Ti4hgYwgksQq8zsLU4jAKExiCCWQJDkuUT2TMgf6kPI6+p4qOq6ivqqjgZFl16C4IAkDhRdVxiqtKH2A7GsZImi4/PMa5lLzOvi/CbacuC/mqmbpCYz8cnXuBTjQapXnyZ2iWxhcJ2hBSThoWbZvp3Wjhx6WhoIDJxNDukgnX7O9h04rUCib1vZ67Cqo9F8ZcffBhfgcxluBJj7UHw4uCExk7Gz/vdoaUe5RILjSfpDpEm0ZC3+EtCN0hF6cRsdc/cy98d8qXV0DXRrFBWRvqkK/lzcJis5kIstRMThkYtviE8oC3Dc437PL/l9+B7GK8NBfKBkBpjwPSApyWFICQsajgdokCVwLkvDHbKE7ZD1aBobfwuRm1+jJCdLiU1Aw2iCBW6u6z+sfu2K241VCvQb1wMwaB/A5y3qMWwNSbn30d7fUe5XDg+zV+gfMzcfRolNDWBnGJ90EsTygW6UmhrVDO5WDVMZP6uYhnp3rx9RId4pmOHq+DeUdFpBa6oZjQ9OPXgKPvP2IsSWhtjbkXpYNVxzuxPbpmEPDa5Fg2ul1dUzq6sIyDaMvqB1OEpMxhKbDfRtgKhX6FxiGk6i8OzW1lhCtWsTdEwbNIrDuB0rVMHmT5lMtAMtCA14eRGv7VTD4zhtFx1NbGzWL9Y3G6LmFMb/QzpXcyv4E9B+Jd//KHAJ8MRT1cgTcadZtCu6k200suTr6EW3VKvLQtknAww+Ezz8x+h/EK1fN5HeAl1M7EO2UaxXpclNCgmbVIabcHaYGlRgYi9IFYRHokKUvufC3T1b05S8bsmOKWmeKuCMVlJ9N49QvaaJMse5Ws4GUq+noctLxYqb9pfrHOIlrr6SNhdKHMvLXDFsWOkFs1qK2mWvUijIImfpHAZ4Y2IuhQQ97aTLnKcVlBNphfV0gDKqKRlmRpJUtbyaSUkim8qs5ooLHitjlnXDO7bOMsxMXzECxFWFsc90owln1rYSRo6M/gqu4ckYiKaD4XDCgFF+pacYaLd/qMVd8Fcm6TiPCngUxNBDdLDnQdrkMyfnGhLrLbtC5psPE4hIzPoHrSsB6sH46rUOZ7wmKWuBacIsPU70OVQoUaWrF4YjDjuzczQpKD81zZtE0EglUNXUntXKgdBJERSr7qJ9hYLk8X9SiA7e+P4YM0doS8joZPEwssIPy2k9lCRidqr5+DvRIIa2B0f4y+lcGs3rEOk/mVOjvagf7cWKpGB8OBrN8T5lZgNijoCtCmE3OpSB9qnoipySo1tEKQt7iZghJLo+jEaaMn7Hm3hoVtSAZRVfNjwT0IuibTwoQEcsKjD0LqKPKg43/sSPSjIhNxxvquxH1LTpp1Ip3h7/S1T4PrgCTDebxuy75nEY0c9QCSkwhW7oRlPhEGI2Lh4bXdm4+OT9x47dj5iDYxc3hleOkZMnL27EfDXLoDFgz1Wmw5xktplzzAXmLoKOPaoogVkkEDRPBN3rKBFzA49HzeLaa6gGM6wm+EnHbRoIkBU++kUbNaOUV50sQimOrWP8VdEVfxnjP8Oup7/DAGjCskjVJE9Vc/eLtIt+KP2D6V+efn/A/lz6B230V3WWwJmMq+bKel104QX4l+FVXxXP6S8Zdk5VPUnTUIpNWSLtZwueege84aW571zfEz6mfoOczY4lbLG0DZgC7APLsoEdxBx/Xbf7uudJcHzpwtLShQdIkEml0Au9LNRslFyEYLyfXIXgO1MIdS6++CKvzPPQQ8CGZYbYPLeILBSTgErN3RjMAB8adgkf/SJ/aqmwoRpK0EzVVtp1BFh7/Zcu1teerKPAkJdOl7N8Iyezwma13ulcaH3gtfW119fn5m3lVXLZQu1al8xlSsdvzOZS74UXdh+BrG7OBK70IKN52pCDY+vVq4Lenjq1VNzQZW2uEqsoSFn80mngZ2flvz2a0pFfR78FfXMnc5H5ZrLSUeUCwWik3JR+ABV0CblI6lJt8gQwd6iomTAePiH1XWroFQe+12k3G1N8Rwu8jNzYaN2jGgtPoAnkCpEeVJv/SpRVCTCwkTZYRVUV1kjDoiAi2VnLK36KXauH95cKWSwWyk+t5DVdFRSFNWXTcPzU+K+XycJ9SknBQ1gWJUmRiLxZSxsp8i6k5SWJZWWlgHlN0bEti4Yo29iQDf4Zt1jAjeWF16TTWi57d2OhWDf8vJk2RU1CuiCzrO8ET8bI4EXexrqi8bgAr+NkKS/y8Ir4dbM1hPQTBh4TRl03AcyNmA2HlZ2qRKKQtK4LLdkvekRnMx4V3QM4/H7YbofLGVtR7MyAkNknHRKOogc2Lzu5x4LpuP499HuA0pcSucBUnRZLBKhdEZ/YLPqxgeMZFKLPOW17HeYrdjEeiI6YFkVjzR5/ryMJMi9aaddVV1Tbeddl9DnbXktjnIZ7B6KYxq5ordvta44NN7hu2hJ5WZDgxjm6OIhtX7qRVbPh29sn5iSxrQbDHFnfBBhlDbdrAfFEzHAI38ceG1997LEb7kF8G1t+G42uT25CLbiJTeSTwyQ/K7JIfkQ91aOmKOQ7zY/cR/TlGoqLMiSq7CltuEJl3Izt4nal7eO23+66FTfsuoMIZff2gmh8bW8P9XrNj0a93WiYHGfl3Kd2DaQmoVuzIrdLjAuAyx+h05fHo8uXX3wRRS++OF8vYnNDauW3ocxtPBoOye2foVV78cXxVXL35P4gtgWwI8igFu0NBlAUgpjn8SkP6//5yT0NOvWcmIslmpxONyIrB2FxiRiTMr01eiWWvU8vRERwQHM4L+sZ03XNjC6zKSnFcjyyrbKlOarKcXII8A1WEJIuiaqoKBBIHCfxyNLzcel+l5PTQe11tSAtcwDmZFZK1zohAAaJk2XuPQs5XUQSL6UEUbWWLFUUUpLMs6KeY+b3FxApzXGCme3KBNcLFNcjAEaNVoxOyXaCmOndjBUwcTI98XHFrRxHL2tOWh0/r9g2+nZiEQUcuqSnc7pK2M20qSmiwPNQFNWsmyoU5o/pCDq0lfHvahabVtGiYo9HZOjsyTKVoV4h3PKeqXmmY8LH00wRK6L024SeitN+0RgPOChih0w0jncTvSjBZ3S1A1pgT9DXzVASd+NNEtNNFJXplZiZ2ew8gXbcDF3+Mp+K4dmjMTz7TzFoe+nrAMTtxXG0HV96m0GNKfu5czW6uh6vnUPZOK0VI7X48563EdnAcnc+rRe/ipnTTYqMA/U7BjzwvWRVn4h2gYUltmEA7dq41enW4tr6sN633VildpqqJWEMzieRIRmtEXNBmob6MTm3KFvaymcCQFYPXYaA6nWOXfTXgslJZUW+HDhZ7uyjxy4iJibTsQgtCoptR89oduFPdV/vaRkdTnoQfZOgZ/QenEBSFATaos8WbXJhrn4yrLRrgNFuI/jM/sdXJZo2jU+b5fDvXZnvi9tgiUgIUf8fWpW4IQ56u7ukSvP1Kty6XjdXA99Y1VvXi3Q5Dif1+sjRysxquXFDvaBve7uzer3jSEX6R2s5uLFeQOppxebHoworLtmRdPv8eHSPjsOv3Vc39e1kHP6T/datqzep08asnnNjMLh15eZ6aXC0nrfspzv//+mnkFrI/YO7yVy+K3359D+2n966Ak9vz+tGVVqvM6SP5sD/TS0f/p0JlNuaFPrviqK+nsmRYkJweLTM/Vl94KDvkavwTQ5zmG5ELSfrsxVpAmgr7QQq0/WJJ9KvCPdQn0gEBhHZFQTs/gDO0MPjq8HhIdkzdJ2RgezKQUAPRH177cqVYX+ebyFtlbmRYwrn9X4zLumne71o8jnCHR3OXWDm94hhRidWjxE1zfXJDI7aaC8aX23t9waDHuCk0WjY2h8O52wlfx19nuzIRMTGhAzGyVZaujuhGAvbO/EOrm0YeGRnG6zFnSb6abVQvuvsome7fNrAAPEVwRZ5XledQOSB3xZct1sweMPJp5csQUYve7aTquzUC13XJdt9eDlnqzrPi46gmIIi6K7g2h5b2jElKTOzF/499AcUE9qw2vrddRb7tu8JBkv3sX6k8smqUflk/csPKEj+fz9Z/3NTrXxf5ROQ9ok6Wn5AKcrj+if/pyKlZjj+t9FvA75KA11h7JpVadfIrDIQAL12t9M00Bnk9wHBjtBTFTEjQc/uYXa44791EQ3GBxG6rSKyOBiPhn0p8z3+zlsXJ+/9CXQA8zvZQ0oKCJjdI8w80eqip85LCI/eWxzh3On35t+z9978e9EPn5ey4ucL7/m8iO57X/59PwVp0zk1s7WmVltk/PHJEfWvoiygnmx8AJJElFM0ZL7W8/7k+egwsUPv3/T4qz3vJ/mTIzo4PCRm+TS84fGkLd4JmNiAFi5BG1sxO0j2FhAGF7djARyONqk9xPAb26eDohds3Vaq5YNMEC4eD/KQDG29WmlilgsLK4vvvssK08eXfG8OcxP73ijG9RExFjscDK6h4bXeXr/HzMsJeGppTq17bbJBAx/2+9nhsEdD1O+TXb3XGXqY42euUJ4c4He35nb9ShcazweEj6M2DiuY8DgfOHmy3C8/Me4/AYc4joYQR/c/MYbjXvnECQieQP1JfGqL99FYZkLkXgImwnSK5qlQD2YbEa/HWnmAxcxGlNaX9l/XsOwHP/CAbTYe23dVU7Qi9E3d9kYtl4P1qBquv+be+25bDytwpiuGWdlod0lW/LQuRN4d750FnsKtQaZhF/OkLn7Kx1C5CqlleDAcDvZKx59Ezl7pyeOl6taTpfEIolvE2rhfevLE7f3SiSfR7ZXHT5T6EH183qZfjTWZM/IPND0kBnbAqBLBBg4JGoY+BwbWxYkQoYoOEmIOwfcvqJahGJpXMCuNUsNwdbGJ9ayuZ+eXBUXRXeD2bdmo2MWs5RuKIt0rBCqQ+ilWv5aMXzIbParNrBIZCLByRBsTEaaw1iDR5Bslx95h0O9H8LnOHB7AMA/6ox4Z4kE224suPULgZ6/V2o0ich7N2viGvREomW0TXUk8a8jWiMM+0G6YNjD69qiqprXfn7Ph/hcxL4lgduBaN+rCF31L546O8aMmDWHSRdFhazpPR/Pz1AbWaP4/Fr/Ofw8I7qYqoUR/fm0qv/0a+nNi4U/XP3d+G0H89V/lGtF4VZI42RUAte/3okE0aME36s8njAbZEcpCFAHbPOj3e63p3+DatdHBwX6U/O3GqXM6Irpyo1o83rYQVVeR5Zou5TROkZIPLHzv58vtYrFd1kzbjD+BZJrmAI1K7TPt0r5smjKKSDge0XgPbtm72mdmtnNXoG3uZy4zTzBPMU8TqSCwpDCHHYOsuLVuwpOvI+KBoSoQDwcdv0kn9wakwwwgUu4OoXs4hhk+NTskeLUauqS4rdRml7wL+3w0Gz9okDJYIcUv3rFSYgWWZ/mUgkUeiYhs+dwQZRXWUlW3dZno1JEp8KoIHDyHeJlXeMzLoRdxnJOuyOO/uEb/UImFl/Apll9Mp4speI6XOY4kpFhR5j8mcgKv6ByWDZ7VeJ5Np1iOg7U9xad53VRQTby3n9XCYAj/8+0j0l26K8xF5uuodg37Z4iBFSE5wDtSC8GYPGB/mxJAWCbjy5RC+ARguBMMBotEtQntMls/yObSIVRDFdGdh4flFc1ICRw2LFnFqqCoQiplZGFZqtimo8tY5g1Fw1hXFQXrWEs7nqbJWgXWvV4/0CQsn4+CD6WRCvVUDRWzgqDzgiBAPY3A2AzuVjXF4FOqKFiCiVOcLViGrCHE6lYwoTNXbk1nanStxDAN/HbUoAQg/taS40EfZnJACA2aIzTDbJbqbG9FaGZ+Qip/nxGPBv+h3C6V2mUFWHzTIQZSAYxqMth32qUPUYvqiNhIjqlFHSJqnSlNGQFV02FmrRAkAxO8O7WP7t6kjiUG6sTBAqGh6PRt15nXnIplF98XkhePhyQMddRqXd1toVEvCHqJCimAq6NJQaxTp34Q5vvgpjJs3FQG2yJSZ5pWmxkvECM/+ER+Fz5HCvJFkv/4qk7LQ/A7NGgQtDeAqLeywZEijUdxWU6bSdm+eGUwgA+UK6Y5vwj02SaWMd3YCAawMNGDJtvQbpH2F6bipA1htVbbqi2K/Gajsvz5I0nCRrO8/GN5R4fpV7qQ3sy3tm5b74aVm1LmcP5PMQ6lez6RuydapdMo1isR/yLraCY4Rs/lTfPfGavGCcMgh3d9RBS72MM/hHFXdNF35Q0fUOq/M83jptfx4RZj/NUfwi7cgz8ieriLGeYfTm9LqP2Po7ejPpHxTuwVfo0iyHVYh04z54m0jQoEu82YZwZWpK3Htrg4CmHFhPXSfRWsSYhzaeLjgerUQvS9kiTIkrNateoVPy06kp/Jfil3Incyp291ukHBsDSjUHY8y9DN51Z0PiU+lbUsy8gBzgxGffTv2RTnynY901zEXorLHy9++3C4/Jah75oWh9i05tg7y7KnBAuWEtTVjPbBwSgY9qaY4RfQPcxZ5nbmXqCWl+gukK5LhbhhLbYUBsRZIx5YyO49GNWAUagI1IUujwgl3fTxGtQfMCSQRbjQwNE6EqANKN7CG7Uo1sW00AdlS0n7lbSRyvCFbLeeyRknjVwmU83k/LXVtCJhA7MVVpDKa46EbcnVJPbuu1lJHf8FnxMF7vmirJvWG1euoI3AND/LpVzsWAVRdTI7O8vLO8HOzk4KnnbgMVNN27KbEgzFChzZeFB3PNNcQqIvv2ZZzc5kO1eO4I7ZvsUb7O9mOxXjmRh/kn2wxDqmNYzxTDxG3011NDK8L0rVUtBqYa2L7j/2TKt/LP9G5WJzQLTRvfDtszVrSNcsl1oHNMnO/Yl2iyxKr3rycqz7P3Z4uHOLGDXNhngU7N8UmckC9tCArhpMbE8fxob11JS+7RIlej+qd9JOlCn+01LmEA2+pxHabu0D37taDsPS6k9CreM16Kvoq0wGkFsRZmebOQ6YbZtJvA8JOCSKI6AGbBi7H+J9IJEh9qncKPE85MdGp10+hPEGc8NPXBApVmc5JD6InNOWqBInRON3jYatfjQcjT5t2rXEBVH9lBValVUT8ZOL8DzxMKSK1lJIvBHZZ7qmQtwRnYWLo71+9H7rVB1Ol08c92q2uWCuViw3uUSqZE3Xuq+FS2M7LdJ6sKpaBMFHKEGdeA6B3ur4atfQsAcYfdi7zgSICbLDLDlcnQY3JaBREIwH2SzqZ8nfYBCQv2gaBJBCLkQ0IAlTe5QW1VHBcLATtb/XmNgE1SaRQXGpCB9EfH9B7HPxgSgWybEYX40/UxpN+O7V2H9Tbc6WMCSepoghQpVujiTD7QyRe3Q7RL2CDj1zvE/sItCe6VWEFPf0U5hPSannO93nUxLLC089zbGACP/Nv9FfPiSWFST4G0HhnngaCyn28Y2Nx9mUgJ9+glMEWX3nO9Up//1nUJ4i0foR7TAAiAZVQhPvCWTbaIklXpIcYE6uUqvGFoTC8ONEc8Rx3/+ulKygL78orvn/xXPFbyFH3737z19QMM8idPLjHIul2Xy6RnmnLJXkQVZQe8iIbIci0h1i0+T5bwBacGz8o8e+9CM8p1ji+78Hp+UUj4ZrX1yDzx+8hzMNln/DG3jWMDlmprcibUp8pBCL5xvsM3HNnbnCinzsu8R1WDds+0csNT9HNooVXV3t95vN3d2g2QS0V/SuEiMbCHp7RDlTFJ97GQAEDEDC/vfm91onvPuNuUOX3jq/198ql4/Nv1yYe7cNrVaClX31VvU7WquwDaOnOzXAO1LHg4Np5a6tFVumQsSt+nwJRvsvzJUhu9N01rZjqeyRtl6lnmhuUdupT6nmvD+pkHqcetW2/zNZTAluvoJNB+sKruRd2RexxApuz1X8b71VSw1EMSO5haqgati2hGreEVhJlDKKc5fLp47Nt+N8uX06Sm5uw5Aywt1XHx3RAHjiW3ZZfWOwVt07Miom+CHWp2aYPPWGdpPvq6ltWIUg9PkTdGjI4z71bjWUjfEg0Sg+NL7WmkUjRHcc0fvQd8XweH9/NInM2U0RDwRE5mwBE2ABKxAbLSFA2f3+Z56rf/zj9efQQexfY9R6rv4jP1J/jpm3uxJjz4cuGVrdmk109Ras/+7hKHpv/V8+HUXja6NWHx2MgnvfW/9X15ledICy0Wxv/ltgnXCJhQKgpBpxbbaF2k1qggkF+t27t+U7BMltZspL0Zkz0c/euZYW5bOpaLVz51TWNzoq/4/fc+Q1bqIGuAu9SQYm8um2eFpLl61iY7nd/iUJBvlIk8evyNqHt0PDOM4uh6vbH9ZkcjMzlR9cozbYs9VsTgcevxxROQpdyNp8cjzaDeNhtheMxlchoC7KhhOWZrx/7doIWEVgbAOqEpjKGr9EfXW0EwV6CbnYBbK/jtq9bKWy9sBapZId2F7FVNHLEcY8/URXDlK8qesvMUd9oLiJZ5H2xLmYK8Q29oOol615axvBci1YzrY3/GaEBuPBcCQiRGzjpZHKIowRO6Fpv0/bnOiZAXGRJk42GtamGw4npsfxcuFDF8T8RVXwYYwLc9fDVvOAF7NYga+KfUPP6IaPVwOgKuXVK7kG6zgQdRzURC9L3M6OgCfhA1aWpabyB2zWeoCTtOE+NTAfrODNmr+gf5ycfVxf8Gubc3Nusp+e+kCxcMUmIrCEC/a7tQBd3R+PdmOTleFwNBigw/FoHwE22AOIEAT9wax/rqFDsjrajQ4dCZOFBLsJY0NOWp0DRBRKd7XbDds+5KNqo9Vq2I6OPhmxpjL+xUa7fVdL+v7oT8orcJP0W3TQsdPy2gTXIjqSp15FY5vXqbdRN0zSUeC6tR7BG+6+V9wnR+haIEaoX7fXe72iS82X+nD0iru7RW9A/JDO2iZLLVepZcS85TZ1vRdvHid7GMh+nInRg9+ZGH3U2nPmHhEdrFYtFgah4SYVJnxKMWkE3a2YY6AC42sDArnLfgToQ1Q0M30trco8x6KUIGt2ThfZg6yp/AkamuRheHLTJA+Td30eZRPE/obEBGQ0VGVL1VXNkLWspsH7/0Qxs8yN9it5gq9vmrvAv9jTOk0MWax5Q5aNJJHET6Lv1tNpffyNEKLvGA8PYhTXS+xYYpvjcqAJsRFLuhyoGB0mD+jk4fEe5YFI3ywXi29U1UKmamfoXlHlIAqyUA9LVgNtNhYIP019aR2VU2DhFsKLJPH3bC3j2EJ7cWm51ky72tZyuPl/pbWMm8btxcWVatN2tJOQ9jOVjMnzfOOie9KpNlc333R2Nbw5aUoHr1GOq0g9wZ6IuXqHQlLil3KCLaKbIvgm6xrEvP3EsWMn/pYEcmyV/a0mtb3+1rhrfyVOPD3ZtX9scbh4jAZX5+2048/LyViKzWemcghSXonRAK3HfnbKk96HFbfjE7EDkT0kX7oLBBLpytoy3toKoh7wAoP4m+2Nh4P9/XgBRmhfNqgnKOIM6pDu3tijugB9ui6lKDerQ97OdN1oQh+ukN2tRJND1gu+WwPs6TZCtwuMHZSBOGMCxMHDlIJruBuWUNtAUXRwcO1g/PPN3mgA4SAMd0Kylg6Je48BAmwRhOGl5g4gkBHx+bHTHAwGcEsvbGrhdQZSgMEJw72wCbfuNBlmTlYnQPs4VLtE9EhUywYMZjuFY4UZ0ZeF3YPB2vnwjs+t3RGeX3shPL88WPub82uDtTvQaEDT4CokXmdCmkqun791HvFbqRTHjXiaU60SZ/xQ/Q54+PAOchh/jh5QH95Wh1zopTpNe4WGNH1ajy8AhiO7Y1p0X+YaIltTqf/kif57M1n1yJ4JHFtD0UXan3Bw3UkEfZ+y4A/9BSVv6IJjFKywqGfyvl5sWkXTEXTjMMgG8PkuzdHgs6Hbmmbr6AXbcezl4+2HdMWUSxnJMKRMSbIU/aH28TVyf9CUyY36kkwe02bryK9Su3rCC0fUPRu1BNz0u2sTWR1x/NAOm+gzP/88PruweZ5FpRPVldpWcEez+7rjx1/XPXlpg2VRc3dhg0XnN6tbdVQ8HuSpi4bo0ZO6fSPunOCYmyihn3jbnXjdnUcwPzdE/f2IBEcx6FXicIy6KUtoxK+gnwZezqO+h7aoTRPphk3Cy1UpcUqi/iya6naASpQQ2f0XwhG6Yh016XaCTY+wDtUw3vjyeU5R9WqgiIVq4bmU5BU8GWcL2T/kZIhKOFPIpsv6xrObRpkvheUP5ay8Vs1xOXVpVZY/v7qkQryqF6x8ipPRe6wl3Swu1TKZRb2ezdYLjmNMIuOrz60fP77+nJZOf6HZeVLU1ccW1hFaX3hM1cUnuk2OQ9P++1P0acK5Evam2wwnGwW6jWSfTgmh/1h/pO7p2W/6DuyKJYBS2a2ve+ZMLjACAb2u/lDdrQQ//M0Yl7CHxw1UzihZo4pn42OQ6BVnohIL7Qx24IOG3/7t44Nv+zbUm9z7m+iniFSqETt0IO7EBRxvUiDGIIg5vbESZHmvcTK7Ydsb2ZMNj49WNu4Klhc31h/Mr7GuabrsWv7rHl9cno6ZrwB+JLLcJnOK2WFi6+ZmTUcYcJxHBFFF1EWdFo+hwl0dxTYmJaBJmJiVLyPcKRHXA9Q7jgEx9LOiL28vLd35YpU3iivLIrIyEjovjr9S3Siu35nl3iyzsKrLP+hlsmWv8swpJ1A948xb65zGcdo39JdOoR/BeNtAd52RHbRQWBYzFpLQHVLmv1Tya+cyubuPSzkZ462ymc2UoxMBi9BWJDg8l5b6p2bt+jGYd4T3qlHLeWgwuljVKvGGd0IuCAlJPNpQvczLGmvYx9Yck9WIxen4kIRH01AAYb9TDguFsNKO+eOjZ3M8xRXoV5vKJtaZNvFEVqPMZsw9UP0rifsRkVq2a7hG3PzRG1LUIiKm1f2IiKei+uOVKKilmkHA5s08e3U3G/2vrS3zkUfWaNine5kHgGL3Bg89NLhvZ+e+QR85J7dKlx55Zetk6ZFLTOKvO1m74vWK9PhrmDuYXWgnQH54G51JdShhYl0yX1Ob3UQrhsNqst2ZjLRN4PFZYltb86catEpswEKEwsPrPE5xKUBMlibqIo8QD7yGrH4BVq2HambOEARRti090DXNteH8Cl1nqR050KT3pDAvi5LiG4KsYl6y4Iy7LYA1OrvumTm9TFwtAZCEA8eX9ZyVy2ZbQbBLQ2amoxgm9Tye1JPWkZ+rI3ZcH+rI/z3rF9dtfI0XWS7FskJaEzWoHM8Cw6IibvBdNSOvAypU0lA1Q42rdo2oqMbDPmp9IytysiTCYCfV4mSoFlSu3/d8K9DLQOFT8FIWsTypk9mmcsoomPn1A6iYBpyTgXokBr/JIgejBLgE14/a6LDfG/X7vYNe0OvvEcVln353s70DGBxTO/b/hr4wkXGiCTLmyUwn9NqfuBhFfbJl84FT4//e8JZfe5e3dPHXGq9d9u66uOShZ5eoseJ97sW73KWLd3qfdV2SfufFGSaH8hIZMSkzQ9iFCX1LAZ8KIxwwETq82rp6taUFO/0+YvqxGQbqUysMgqC1S/B3JX4fC2+E9+nJ+1y6grWJNV0jCv2KW8E1n2V68RvGf3Hl0gF5ySNXLqGA5HH1atT/KOTDTMpHfRIpVL5WINgI8G3UBva15jegrGTrrU81pyG8+mAzbYenzq/dhj4MXXk4gjwGdOPzoGY7ndtPPPRpwI6IOYyg3Ye3fD8MpG4NqI8LQKVRARIPhbdJa7SJkhZ9aPPibasXtkLbGr8L3gNvi3q7WZLBQw+duL3j2LcdEhwYXWd6B4dztlCERy1TlF4ku/aoUr4bIwoyeKvE+W3b3wZOf6e9eeLEZnvn1NPlc97ZxuLtS0u3LzbOumv7xypvQIfl4jMvPVMsd9fDQm3p9tfevlQtNltXFpeJK/fpfCIyf6IVyUOei8TrHBAHq0IaCapjQ9tFrSaBFt2IjCkSa0z4A79dpdCn5hL3iK1oPAImda/4K9lRH3irQTARnN+xVHV2nMryoIeYXg+qi6gXNeDUe3DDjw0GWcJSLRf7kQrQVR0cobVE4lakPgcJ919z426MqA3MdDt8mwCfLl+JI4BAI+LXNEK98egwLgM/Pgx61Ifs+BrxbHatFaEgGl27thdzgsPg6uHh/iA7OpzDXfP6EIZwGpXEFw/5lQMojEX3mcM3QFfHwAn/E806JH4ziRM/9OPjd6M9V01bX0e3NDPEX0WrNcfbphLvWUSSVpt6cwmPOiKj9qqx7ephq0VMChzTlM88e/r0s+8gwZmZndZg2I/1vv3kGgTjvZm117wNbqyBu8Ff14RoUGXYnFnsxWR/w7xJbLIt4vfpuJ3ZJSvQW1Q6SqSDber6DvD6vI2yPZ9lqtKuHLaojVQwZ3Fc26pWty6Q4H2EZIyoMdLw2MU3kKsQoFZ16/aT1erJ27eq40E0zf/aLH9Ec3ZpKV69SVNkngZfqwC/g/ooujH/8dVZ/sRajWSfmvYr6dUGxF8917myIeaWfem3dnfhgw5v3ZUoS662ZjxCbLtvUf8dj8/R/+5NrFJYrVVrsEoKxLGHAyslcTOyOfmdmtOIuO2lflH82GqKTHEiqSJiXmo/hc4vnFyAT/30w6fhk48R0rfxSsOu5l2OaIpYyc3X7EaxYdf0nJqk6HrNafyHSrXzb6OGkU4bS2s0gpgCedtCYYW87fQ5GFe+bm6wqqfpVbtRpm+VyCt4NWfU7Dp5K+SDWfTDD0SNSiW9mv232dU0jczJjq7QmevNpAczjokH6h/GprkxTOwRFxeJuwv0CIEsPeKRs2Wq6BXVRAe6MvGqoejR6KB/kCW/SzHf9vN+munOPbdGdvCliB6bWAYOBsPBYH9vbx8iRCUOqOMQBYAhYIkcZPeYmdyX+KWlnmuJ/qJHXENf37t6de/rmek974cxVmY249nr0p9ioro+6uuMCG/XETVmhelFfylmOblEZJGICc+FmgxcsmQofcWQgDeW9PBccygqWFcjVcOKiA6b50K35GUcMafEv8Ch5EQn45VcuHP8rOdppqppqjkb95+lbaASayxS7yk18yk8aAEj4cceL+gPPuz0ek07lwuD4IO7u5axZJg9362UTkUo/45cMwefH14ef/l7CmkTmVbpe35soxAIQmaCdY/qYTaZDtVNM93Eo8pEJ2O/qj7m1U/meefTt1TT3DoaxGx1/CTaT1xURf1JZO+mlCkt/gVKi4Gvb3TnPA9M3WP4XUCxuN0FjrRXNOxmu5E2i7GQ7dQDb//Xg8FzK5/4kFhMB81mkC6Kr4sla99SvdZqRYetxs/M7VUgFhdMvHFusr948ttdbeqhcSrkW7qw5JgFPg8sLa4aeb5gOpBUb7XuaMEiQKLVYpbznZVsdsXxuWyxWofEc9Gdrdads30EQ+rDr0G1nFN9w43aTuAvE5cEAqZaICKvHgQAUANqpMRA+HxLkTW/6CtqnQALFOwunzq1vGvKB+QWCK6c4GzZ8H1DTade3CWqvKP7P25c6Y7smD+yTX5G+I/s/zhIEiEgr535+OGovFCj2gmP0n1ikU2czPlRiKkKMpwL8WZn4lDMm3YxivbGV0e9Xn+ttLbWmwahlWFZJRIExGZMIpRWFDTaGwMHtNfTokALslor0LKBFmUh7GctqZzPFVUjd1qxFPgc6QdSznBWMpsaa0FXJP7gNgnl77rEHwmV/06KFAjcmyVeTOmOUxLNnmoLsmsZzrQc4799Nyc4rPIQ6xQcrOsPmlspXpALjnskb5lqLEnedOcNMMdk8w3NBFZPokXr9bIA1+LXjg+jVra3u9vLEl/47JE6TGswKeG0KDf2i3iTLUvyLNmoQ/oGDu1KgY3oL46F8SnlCumrgyEU62DYv870gXL3h0Qem+RFbNN7wMP1qIQQeNxsNjtlUxPsOilveqJ7nLU8LP0YuLtoHU0NnBIUOalTdBVeF5BsYgrzTb3ecNbk1/b3iVH2bgLKWq0ezdg8UvfY/3SGovo6tRA+xrQSnjkpS8IDT8ye8T8gTgt6hVjutIbQd7cKp+XtxYY5weRADXeyyaFFTXQSu6pb9dut+izZm3PLzor3ydOd7jd1VkRzh0+CESZ9RNH9pH9u9L5JdIOTfsmaco+6pZHN3WiuQ3bJEkkCYxDbm8Vj/0voT6Hl6a9/IM8lkAuo3zLy49W4G1InmWvUp8A2S382rDbdZY4SQXgsjqT7VgSq+YVFAn1BRGbJ4QSW437sBBZ6AkZBCUmu5Boidr6S4kTRWWmWTiJD9bBWMSpGSVMLpXIFi5Ysp0RdMLHBC5hV0dPFUn6zIrDoZXiIexkhUbJP5DPSd7MpjhX0WvRTnB60/FxUNlROWlp4rlD8NJvCtptRZAfuwHrG9SWNme1Lmf0mBvm9CvhaEMT2g/R72LrSQkyrNWunQeLzIHmmTdS709+nSL4D4vRv2Jo8wzIzPzhobkSwzJiZfNGAWJb19nu9adlumc9c2QiLPslnQncIT0E8m8576XXILqLYtjX5TbPpKkY3FRCNRBTzlXt3diMiY6ToIOrcBVMW1jbyczzBfqL1LbknHpTbMTBoyw+eIHeSBU425n1uD+O9hnZEERWgS7qnpj/dX4j6rcmuw6ntOrV+I7tUYocOwbT96Lp4grlAfa6R4daKf2SAuAQC6A/zihhUT2BCvGOCyoY9wrbEG4zCr8GqIsNSeJ7jMId5T/dFQ7WKjmmnTCWPNVUUZcOVVTFQjGw671mSIknp5pw37GOvPXbstU+QAAWcwkqSxPIoxaZLoizW65zlO4Gh6CleFDOqLEtq3lCMapiy5HyQwemfnXN2/a7kPRBMeCUYO4Q3aMLMJL5aGJj3tZkfGFzp6ogKSbdTAI1ifY5PpYaJNDHWeJxh6fJNnUOF2wgnu6uaLGNvVLMLiizbBWH8v38HGBcO8RiqiPkUYWJMDav4eSOjlyt6RlczYtEtitbXFxYXTzgStE3tm4NGAB90MB5VN3Ie51pfxqpgpiSR5wVJ4kSZ/MzY9xe0rEH8S2iFlIBSKcSxiycXbcPSA2z7j6RzuUa8Hk1kSteI1S+iFJxsUq3RbXyJQx0iYuzv0k9yRMzcCTlO5UUx9o5R9x3MffHMOOKfeIJr7NhbzYQvmf9hS/ITJlMWdRLBAEMAoTVRZMixW3fZiJItBUW3l02/Jp3tTawWg/FwP3F6Hx8+1HxHkzt5z0mY9onrMOPhZJPBwQiaOJ3NpqGtIVr88eEwwe5yfHAdxyatha5fT2jLg8SieWKtMTHhIG3390qbbGSeWX5Mtti4aEQZKrqrORjM4tlBMIsX3SNX3OJBvL6QIIpeJe4V58+KM19oL6GXKJ3E8Q+tEh0EeunRR+uPXmo8+mjj0qPoUXICMXKePPN+9H76zOwRH3Ue7V56tPMo/SDmUvfR5KQ7R6M4uks0rMH9qYqNtOhj6dCJUC8C8vSXP59NnNjE938efYZ6xmTs2Mx+YqvRrBIv+kVWmFjbC24tNvAgW5boXeQH3cjJnNDq91XRV2Tdz3sFP68s7VUMO7+ZZg0j1a6kzSXPGZTy6yvrGf/ia/RaaSGzoivloFbIWLvvi80Q0Gc4uRDU7bSbzmxkPC5dWm7Ki2fl7IWdS7ed7iw2TG6znc+kjdA2pEztKzETlrTXf0Z/NLMC1xFg/DUU/8YsoZ9Ev0jdkNFfJ9OpR0JiSknEfcLcD0iiK+RHS69kzuxkORJ7h3XM00TPe4cIK/s7sO7hd5DfRLI075h1xV8pplKSIAJUkDhhA/1s9ty5zKcyluFxmXPnsi9ZoiKI/hn/JWy4+CX6hvQxT00Lsmh9yttZQYjYinnEGT7LTuTB8Z52smO+CphxkzkJa2XicYvs3bYwHcg1ss3D9WPbPfpzR4m7kgiWVeLHInnkFQdWSjwYod4fO6YTrJnOM3mnXrcLj0fArvbGh1f671UURTeGARBFFBHndZ8x3GzfMdN2oZ93fEDB/eCwf9DSfWNeB6TQX8Ob+FaF9bwzdQrTnZDiKU2mJk8b9Ffrmq1pavemyBNoZ5Xyewcxth7Eh2/U72k2GqFurpbfnphjxheGiVuX43fEKv07/igmJ4uEaOn6rrbgWLv3aGZ5NRunKEcOE/nRj9P1qAR88gnqxW4zBoFk6BNOvTZ/LhRRl6ZT/8Tk1xNasfcywrV1af0hsglnpD3Qhm/qkpL2TaB096UV2TD9tCKxWvbXMpaZNn0I/rzqmemaZ1oXsyeaTbMVbBrLzRNoMZ8NPNMuZHKuadummw/yacu1wiDIZ/J2LpfN2fn7cu28HbRzmdWz+YrjVPJnV2e6qK8CN7ZKf5c5bMZChhLC5PfBsDBxtEx6hPiy9r1EDNHthHzYjB0flBBqCxKSexoPy9/eWz3V1mEJ9PDJJ+RA1OzierH0fEkgysazpiYI4vjTvMKyWk9RZR71BVmT79EQq/IvvbVYXCs5mhjI5x4RfQANSlp137oIC7LmnU1rqiF8mVdEXu3JrMTP6ZmJVQpxCk3kMV7shjkhUXQPqQDknSxe1NOxD3BJ2IjlKVNVDeI7C82wkBFSKS7lS8VK1C1kvUzN8K1UpqyoYglLiCtqLMZSOR1uV5fvRCPPOb9QaJssp6T5VP6+fLFSXFkuVVnHlI9V7TTWraxjvhhusmilLgYZzVi6cP9tzdk+n2sJxiW/17wxQ8eEV2pQ59aT7Q7dNjD8SZzKYhKGEIDHgBiTjkbou4e8IJpuobCQZweKnCkUlgrSXw/39sjG5thBd1RAgvC2VGGxkEm/lH+Eh0jB/QQW9ycOCvAN5crRPZvNoyXr3rCGElOjG4qztxc7ByXBww8+COdzpWjNfqPgSivqTX0rXP9bsqij65AzkX516CrY7ayxbeJklRrgEacblPoSQweINRtUMo5jt/BklhGXb5fvXbtX4GxX+aenT2Zydo4XO7nC+XvWz36b7Av02vhXVQmXFL+olp7M5opa8b+it5MLvs29DT9xbFM3RJUXtkvwVHThqzIn3Lt+kfNrWjmfeT0846slLGrOl5O18XfR7yZ+S4pIZ9fYbdZLzRQqLnplMZ9/7Zve9FoaXtjb24XWeGVhkgDh+CdJ2u7MB8KVxB5lakYV/+5gC7iCfRKZYcVYj3PDvQPqzqRHQvrz60k5D9BvQo9ukV9Bi61nyc+UEY0zZZfohshOy16DOnhxnCyMUJnkPuIDF118RobZyeoax4qOya2dW/OfwWmzVn3k4ddkMlUSF5/JWNaxc2czJZwVBMMRKsqHn5EDJ5XK6LLJif9fZVce3MZ13vft9fbGsVgssABxElyKBEGRi0MSKZKSTOowoYOU4viWFQW04qN2bcty3ThIrXQSJemRNrXJmcTNjNI2mTRNQ9e5HWfGaTIxWTfH1E3SNskfISepp+00bqedNlDf9xYAQcpuEhDcA8Du2337ju/4fb8vFMyMlg6Rw/QI4rK2feiWm7MXpGCIHHfwwO5QKJa5rYAjmiCV3w6X7ev/LVInJrn6GkVF5wHLRBE4E4gmUhCxnfedHpyYJ0IrGaHIx76wCzZ3PyFQgYahT1DAaWNBUtFg3BFZQ74cEQKnJZV9uIElXMPKU1oE/YFisMNIwQsKvoto22z4QVFhizza/wBPtHG8T8M8i5qacu38haQiTYZknNd1vfVtU1X+XlYKvIJ5vh+LX7R/KEoC0JxvPYcl8sx8zz/opmAuGOvopLjDlowaw1lH17PDRAFtm6hRI1+TPhw0ZfxNqZYnSmfIl7d79M5NonWCN8sPD3cxEOpOoTZqlA58oCn6/SSKfiM3NpaT5URr4zWulItls7uz4oIcMAVWilt4UUMbu2fH2ETrZ6hZcN+XG83liA60KNsJHoUMaVHs9Uv740UnCo0pgCeR/AOgpkbDxzo6Bxju/TGMy9NO4kcyes2ms7JSr9dpMAT4bzxE1zevkVfZcTbidaceX1taMtSmZjSblMK9tbnaqC/He3yaOvUiwUzWZgH2XMgf5ULxHqllF1t+go4K3qYFQMC97Qv9jGYoopTFAVaXjegsGw6usudOnDjH1g11BcwDEjtYHWQl1UAK2VFZ0HJV4/6Q7rp66Ey9fvpKOn3ldH2dkuaphgvmftdQmS285ia1NfYD43KHZRyC+4EBIUVqCFJ11cZyogCW3zEy2Lr06sto1Wk1nNxEPhGLJfITuda652RGEDOScepOmYhkmyjukc8VhfzG84byI4teZiQ/5N1r5zwv18uhCFbeuK9jYhpBWxE8oj/kBfIBmeSJlrm+1GjWyWNprdf7kgkPrSw1+/qcBmrMe+tgeNlT8p6dh6W3dV/PUZbfObCiFWiyKKKm1+xu4B45f87COUxT10W9LrXVFBK64p/o5lw/jzHwcUd9wnwiqaP1hCmFxMnJyCEzEY4YcoA/LLLOwao+4OiSQD2tmtFaD8fDZjy0OlgYyvM8i1E6m0sJAU0PR2Jh1vx5xGGJHHNXUA+RsyhSWLjfNRIFQ9Jy4CLOaWI0Arz6kfDhBG/zEstaPG8JUtGMmWY83KujQ+5lsPCAZcdHtFl536yy3lxebg7t3z/UbFImX6LlLjXqk2cmvV2HFw/vYnb6n/v+P/8zGLvfwO/81NobuZzXy+UeW0KFPA1S+fmyWxvvAMZhMBjIV3q8WFY7brxa8yi8nfQatBJ3pXu1v+KDXKJQqAyIz1p5O1k8UEzadnJyqK+kXZIGY+kSO7KatOPWF7iBSqGQUAKfC98rufFMsZghx18yRp3hyaRtpUYyqeJWG/wa6asxmuHPTyFGkTlE4vTAfGMRlRJ3A+meOLGndtvZX7ulfmNx5L0njr79qDtb63tPNJMZyWS8++64rVKrF4tH528+8vjherI6W0gXM5liuvusPoEe83OYUrLod3/ySP+930KXyOqebzLXj2FbGBLgiWmz4gCEXKDpYdvoQWCMoTTe15jGNWZpjYzpS8sNSHBCptzmChG7INLodfiizB0I4I1l1CBTOqB+nS2gb3dM/wJ6kWJ9aLYm38QHiTMByQOeY2qUJlM0blfVOKrllYQsa6GgpIdVFIo7CU1WHVEcvDWbMM3qkaOyUzlWLh9DH+x/yy4JS5om6URNCLKqqcmBgiRYejZx9EjVNJ93biyXb+yx/W6ir9I4yAWwkUNu0xJHZDKDx5ZIx5ApDhi9uS5lJx6APMIAWqhN8bVKlQaKGxzpfyUOPSOLTloWiZ6i2rZqhUMa6a4Xb+AUJ5MLu244l3HODJQHyPsHnV+aejSmm+Gg3v1l1nRdM5tx0L1GOiwaOKzJrCCw5PbDCpKUeTHgWAFOkriA5TzuwMkGFjq/lDhB4CQtGJE7vzTArG5YTi9XrkKxbrgCSFWYNbisH4JH7pj08339uwvCrYubyPFazX+fGz6OvMY80sPF2ePC8damt+v3kKO5nXb4FdLGcsBlQEc6MsS7PszDbjO9g4kSR4HuHT1EU61yD9gHR0YOxB7gIL/CAftBjnswSnMtZGR5wiEbzoQs05+SjTD5aJtcCFwo7exynk+Q20n70k5sBUgSxGAciiT7+vOlbNWJSIoSMIimaYQ0Q5RmZjImWud5BcwTT9x2aDgq84KkaEEzGk9lC7tKXrwnhsYvc88vUyqRCqgKWaGfUYIGCuT+RRfT5AXyx+fdvkG1KUdDTjgS/IUXuC6Sx2wn85Ks6Opqvr8vGQnrPXMhpihBpkblkZBne2be9tN9h1bK5aWlZPWO6gLZWFkrt9YgnL28Vka0X3T0uKXtfA01wETCyEHGCpgW3LZ61ERMa9UjR5NRYoW81tbiK/S11Cay6fhY1tt4GDK/dOIufTSMSXOX45U10K5g8fyK02jsCHek1L0bzW6//TZ6nNosimC9A32Y2ifG/HwC2/c5PytVbsDFKbRqpbAWDMZNnPoLsqkHgk4Y99UOP2LnzHOXzpk5+xH0OMRtc6yg0QQJ3c3WRxZvUPfMze1Rb1hktuLt6j5eBmVtL+si5xrTnEdME9UhC/MWD6hG7t0hsuQQ1Yl7GdMKNmlNRFrAFGTZJZ0AUwUuIdut1mxjO1X+qwNx9awxhtSzanwgPfaUDzD8vL/3T+0ve0AF/+h/c9L/Ztn3C0X8vWn/O6Y37kZjksxuyK+6bQY3aZwJzrngqoGomFzeDz2hjkH4KIV8hbaEqDGRqliI2XKrDLIav+uOosYLwvjSqBhFiOV1sfS2iqCznL7vsbLAs7uPHPIkncfSxNHFKlE3VHLnW96U73I8a6u6IsgooDnqqMjxCS3IYsGQw4E0r1eSokB2gwYXEsUsFxSDvXGRMmVqI0o2rtmQMzqNIHqq5pLxor58oW9lpe/Ccn3y0VPRS5eipx5FG8vmox+bn//Yo+bZS4FbL09OXr41sM2fIZP1652j50hme/mB68u/ruzryu2WuYQ2YPyDgGmfW8Emcw8djsA5RpPb+sGzzY1YOh27CZHZABuYTAlvJvvo6gF0UHDjenxAOHhQTqSseNxKJeSDB4UB8qHbnZ8pxjgDyHaTUpO0GUq2rfYjN0vUPNuPOvDHwAimnWzHBnYCpYCzY1FvER2n2WjqWoDHmO8bTfWsEjpiVNXMZMydS8h/nvnvZnOVlRVRDhCVxrK6a8Uga5PtznPALAXcqFkM+b/JI5qGCof8VPX19Y8Ui1L/mG2P9RNBdn39PGxJwyUp2+ufBD4q0GhrgocLOD8NilbErnkBMhdMsW7FRcm/bG14q8h55tjMC+dXB35wZOq5wfHKYhEJiFknL6f0/mK9fvzAxdJv9wfM+tLeOuePCazexrF3cQaFHuuKANw4vkmb/kP8LLr7jjuKd97ZepHVWk8/SV/oSOu7yP3M7aXbyfu30EutCvr4uSz5Q3e3nn6jcswt6GeFI+Vw5NxmT1lXaTF/y2ovwsmvXqYv9IxfSOuP/FJaT6O7aUlMx6epd/Py5WmkYq3i2jXLBVBDIV+hhAi4za1vV/wF1/XsYPtqNns1k3nx56+hVy+LzpMJ8cknw4EnY9LlPzx52l08OXhywV04iVAGZ7OZuey/wFUcdHCiVEpgB909GQ5MTMSk4dbayUV38ZR7cmFw4WR3Lnuduu5UNOC423Vda/8DjyI6d6z/GHm3PuxX9lXyvnyZ3PhL/3PsWO7YsavtuoZXevONyzE7FU1Kg7ouANEfYG5BCidlfdwv5uOklM/RUuh5XyL1fSstp/VZeqOkFCRups91sAedcvJg9doiEoY7cfOu75vP+rYKTARy9NcnT5HacxdOu6dPts6yWkbLjpQyRqvyTObLz2c/hF76PlTvqQH4waknoMir8GzbD3grN19n/n69SGgPN3oS2aL+awyR/HdSFvgggGYvNo6HvGzIs5DbRfUjZ/Uas4rm/UBntA57DR+gD4cp7fH0Web1eCwpd+UWw0+W4pp6GX86fJUwU6O11eYyIOfja2hto0FEmaVVb7WBVsHj3IToIZrdse60Xz0cnB32P1obvuW4G2sP8F4/dsTyGpThxnKaQP6BRgF061B87+YmWqW5QppNuvIcL16OM1v8optML6YXemqe8lRQ+1LFz1JJlHJvjb4o5eZa69m4nx+XeUPeLdQmL+itE6DWo2FINLPG0vIKWllvEJHLN29Tsl/for2lQ1Dew1rOHSsh6kZspzkeo7ZICwL9DES6mfd5Dqsyx9m2VlcNjxcl/NOqdFzkDaRC3kw+oipzVtBQg1dlLG9ID6uSsrzRLueb6G8oVzdEooylECWtAm92hPJVg+uPaC9EciKPE831lhN3egpq/QcA+7olWW863VvSFiZjkwmSeyozpyh+HVcofxAu1KJTRCusQQZ2opzSFOxpSHdadW24JAOBQdknyjajnp2tULtQxcO2P0f72WLsqECd8nYbjcAyTmQgELac1hOO6RrhiIO4vKBpX9FiQp5Xta+IghL69AsS5vJcAL8giWyeVURuVQ+hFhDIWAl8VNFNfV03LaG1oeHoN1RpHWvo9qMIEwUSH3nPESk86OKjrR+fJeecI+c+q8f4OVZdn+MMfBfGHFlLZwXc+rpSnycC4fFIgguqDd009REpFGlI6pExSVUZzccksAy1rk0SufAYqaMLzGPMO5h3Me+HDMOICNrbasuuQqhXClXdqJ0nX9ljUbBY1+xodZQdENMsBnbHUVJrmIi3JXB7TIP67Vo2iDKAcNlWlX5iajKliBGPTOJubXwggPJVXIaDa9TBDZioaSC8qgG1/vX1+5+Bwol6H/n3ckEkqkTU5Fk9wiocy8WiPMdLyKU7feHSWayjsPZgVRM4PlQYQsGArpypCImtur8vMXlm8k8LLKcYkZzKIz4mChGpGEveU+REpRS3kryOLib6AgENXTyCw4MD+OiVw7CWjv5wsJ7sP0n+P6KlWVEPBlUcSl7gkISwjESWHxq/wGEkG3g6bDRN7+whIyDbpczxBVbkpZvNkDV/IxkJj1tunwsgrRkdiWhw8jw5Hkn7zPAldWQ6KAUi2T3OkHZKE/jbT53osdP7/D1EDiUaf0XEFbGQtYjqWq2R0eSOM7ehQGsF8u989p7n7Oqx6k+ei9fqnsUI0AbomGuTUW+IuZHaS3zrJ6aRpltYEwvna/ZOd1pHtEkh0i3y5CkRnYw844FpEBRJLybKj0caCHJcLYrto/uHzSOUd2Q1mnqo7Dy0SrfJ4uWFvlMZLqQH8xKRsYKjlrU7RDbkfEgPsdMRsYpNhOqKNLvqNfwjrMaN4+0tGGyTtVoylA9gmY/JIU0LKXHSrwL9wbFwOh1GW3YhP38qxcWjnuwAYFLHHo1Jz3L+/bnIq2tGazWg1PlCqXCuztux6D3IsYPKZ+UAi1YMzXHUAFyAahhvbv1cNnSlq289T8qR20wTjIlDEHjp1SqkdQN/Lp1CwN8wG14olW78/fzM0p4TqDTT37/U34/WD7W+tWvXu1793oTnvXbo/PnzbT3hQ+ScSZBycvtRO+d2Bzxo0yzclRJC569IH7CyWesD2ZFUKrXvSjTDZp9R6umRdNVOp+1/rmaybNay0+1z/hh9nuYMaDt3wBMDCIASaq/2k+5fQjSVeFsHt6s1EVfRj81kOrNvZuH4QV054KV2y7Kk6dmhSNS09fxb93E1N9KvZxJqKoF+py+izUzOFIaG0CDqTyJOLOeQivRd49FimVUVtxY0cDAX5np4nCLQDinrrg+HtDqub+8XGax77dUWZCjazmO+lawHxqZ2PqYA3aCggTEfPADADtB+0MbUhScuTNHFhs9IslxMjxeL4+liysr1KZqAsVIwg+FIwMJKSFZTOSuFmOn2MVMX/tcnjHwMCzQImRcCMsZCbcrdw/E35PL9g/E8x7+tUibn6eHA+xh6npEoPvRXvWDml7/KL/0ql7aFl++jviDfGJ9vp5z1x4VuhmPb7c12STGrHoRedLJwBtQVRdHIdWqKghwaWUFDLwLqKuW9UQPP1gRTBSJD1RRqW/UCY1WIcm7BzBztEGPgPPBTe5RsCcxB0Fpq3gekqcFkKThszw0W58dx5eZbXrhlQpnc9hlyBrxY1EumB+eGl5a8JXc8Fh3ry5C9bpmvoj/3ywQ3hw0oRz9altyjmSM9BbCOPvUOWHSEkflxsXrLLZPy1GBid3A4PtdXrO/4BH1i8PBwo+GOx63xvkzrz3r3tu51hXKlGDRyFuCUHTP8OjjLl8uoXF4BgG4ZoLq9MWMgEQL7yYHrueRciGmnkm1HNezh++jYwl3KZk7NvtXadlnfoWjmryFN0kBw1qTWa5Kmfd/PJrMUMcJkCgsb7eQqncPimpSZL89nwH4PR6742X0fTYnxIAyfwbjIbOnnKzTGIANZddpBJBQuXwu5eAcglFxZE1STphpYXlqKb0E1UNP3Nj8C7g4PMqWqyzSurjdHt+lza/aesGaHoK12ZxWi6qx2MnGnzjyEmIe2tUOIVr+uhgsVG22krBY9B6pbqdYmZNmDvWuwHF3rxtX/hFwHsCdVGGCpoeZnPzcjRQvUgIii3fntHJBSiF0nZHnABToN9J1d75w9vG84JwR3zUxd2bcrwuu8JP2dnDDNhIknLmRHj8ad0b27+wL60dHsBaTv24vxULaqRvb1JbTBTEqwBFWbkU044At7xw/GUm5yLOmM9nFmvxE7OL53e2xv8PrY3lo+jboOnR7j5Bl5Xt4jh/tNM99r5Py3j370TXI6HE6He2UXwIWADuOLE6EsUYRq21AiXn0DxR0H8mHHEcRdtJqbNC+208MZDOcJv4HuZvco1O3H4dEo8X+dAdZj/43WKY4XNDey+l7n4/jMDNMbH4D99olcM2+6BaFL9wqmXeo6pvBScFd8WfM0MiKD/uW3SPV3k6KujJ2KxU6NKbqYRMx8axP1B5aWHKxKkopX9g6U2N2uu5stDfTmhghQK/Pw6/TocWgJVNraomKjzj/gXO7tu+vDJzKZE2+CxR2+rdgDAoS1FcRAv6GX+Mpgf2FwsNA/OE95TFOfcRzQXfV2m+/lPfRjf/Yy+8k4c4w5/jq8lURV7rAgUibEzkwGiiTIlu62D3b+ghILNenFN4HcEtVbq04dkBWt74oYaqvYaCw3my90d1Z7v2mgOh2DVsFsMbVU92Otm34tO06zLikSeTvA0y8B0Fvq+tL+Af2EtHXIIUw1EIuMmbXqOK65RJD9VL8k3U8eWagkWVeu9F8Jox/1Y0u6/79QsyT96D2FK9Wtdv0yepm0xxnauylOiegwIFURVYrmeWx7mSjR5XgUlKMIpgRHbXoqGAVonAT6ZOqu++4c51JCZF4qVybHR8e4xWCc19Rw3/SQxUckrAtExTBY4O7lOTYQicdkng3zAr8LeHHvJwfsu+u+UVyPCMk0OdkH4xxiOTU1FXfTFiY6dpYXWSwqLOaJKqsIWAjziLUENgA6wrVrRE9EpE4OMHVmkbl5h0wluHBLeSI8uv6kPOADTMm1+4ghdxwUaaLagXg5NiBGvTS7uwKoTJo4AgGgqJam37LM7MUrF2dnH3nvxdnW125KibwoWnEjkH7rRPFkOqAbAi8LRliWj8tYEHlBjMYC0QFR4EU7+3Vwkyb2l1/ZN2d+52Aunybda5ac6+J7HyGLG37KIkNHLBrdk0myimapmhTEMdeuJexXWJZog0QE4lAwyN6kISuUdscnpt+WkpIPHBofeueqJm/ZHeHxAhaiztzE3M68ZUdt7EwINl6FqhlGb1w1/i9yo2QmgpqhiFWX9ISCCRXTrZdH3kduAxbXeqRL7XhCILVgRnWj75aKeyShq7rIyZwWlKRZDD4CnnzpRE2R54Ro3wOHeIE0klit9am7vOmXJ1IZJ4GYufaJZx9BxS1xt/XMt1hdQ2hoPBlHsmIqmhTgonlrLBZ5gWUNA0RGsjz+pU/roXA8Xrz/zp+2fuacnyyd+GNV6vSBT1P8WIGMyRTeFvEA0AqT7TRbpWg4sPnYkIIA7AZf4owJ0n53zXCcwO1ThZlvcBwrwsYBdJqV+QkB8wvoQUUSZu/nRUF5YIXDnPLrD/ErAmkMT22LzTV3IlXyfrRBzxx1JLeYO3g5t80J98WHM1NPx5iOb+bD6Ema69bGcDj6zdwH4Rj0ZOyVhzP7u+X9CUWfQsQTOMpyFIIcafficT+djEDkgq9KyUpipP/USS1CpunOTlKSrjHvQpeSkgBJW/iItv/i/vaOlNw7PfFuyDXwfwVB8YUAAHicY2BkYGAA4lWM4ubx/DZfGbiZGEDgtpnQKRj9/9f//0y8TCCVHAxgaQAQawqVAHicY2BkYGBiAAI9Job/v/5/ZuJlYGRAAYwhAF9SBIQAeJxjYGBgYBrFo3gUD0H8/z8Zen4NvLtpHR7khAt1wh4A/0IMmAAAAAAAAAAAUABwAI4A5AEwAVQBsgIAAk4CgAKWAtIDDgNuBAAEqgVSBcgF/AZABqAHIgc+B1IHeAeSB6oHwgfmCAIIigjICOII+AkKCRgJLglACUwJYAlwCXwJkgmkCbAJvAoKClYKnArGC2oLoAu8C+wMDgxkDRINpA5ADqQPGA9mD5wQZhDGEQwRbBG2EfoScBKgEywTohP4FCYUSBSgFSAVYBV2FcwV5BYwFlAWyhcIFzwXbheaGEIYdBi8GNAY4hj0GQgZFhk2GU4ZZhl2GeIaQhqyGyIbjhv6HGIczh0sHWQdkh2uHf4eJh5SHngemB64HtgfCB8cHzgfZh+eH9AgGCBQIHQgjCCsIQohQiHSIkwihCK2IvgjRCOGI8Ij+iRqJOglFCUsJWoljiX6JmgmlCbcJxInPid+J6wn9ChQKIoozCjsKQ4pLiliKZwpwCnoKkQqbCqcKtIrQiuiK+YsPix6LM4tAC0yLZAtxi34LnAuoC62LuAvTC+ML9gwTDC0MNoxDDE0MVwxjDG+MfQyQjKCMrAy7jMaM1oznDPYNGA0ljS8NM41GDVONbQ16DYiNmQ2kjbmNyQ3SDdeN6A33Dg6OHI4ojkcOTY5UDlqOYQ5yDniOfA6bjroOww7fjvmPAA8GjwyPJg8/D1OPbY+ID6APtw/KD9mP8A/6D/+QBRAckDYQQRBQEGEQdhCGEJEQrpC3EMOQ1pDkEOiQ9BD7kQ0RKxE1EUKRURFnkXARehGEEZURmZGvEcoR1BHaEeKR75IIEhASHBIpEjYSSZJWkmOSchJ8koQSk5KgEqkSs5LAks4S8hMrEzKTUBNdE2eTchOEk40TpRO4E8gT1pPlk+wUBBQQlBkUIZQ3FEKUS5RYFGaUd5SUlJ2UtxTYlP4VDJUWFRqVKAAAHicY2BkYGAMYZjCIMgAAkxAzAWEDAz/wXwGACE9AhEAeJxtkE1OwzAQhV/6h2glVIGExM5iwQaR/iy66AHafRfZp6nTpEriyHEr9QKcgDNwBk7AkjNwFF7CKAuoR7K/efPGIxvAGJ/wUC8P181erw6umP1ylzQW7pEfhPsY4VF4QP1FeIhnLIRHuEPIG7xefdstnHAHN3gV7lJ/E+6R34X7uMeH8ID6l/AQAb6FR3jyFruwStLIFNVG749ZaNu8hUDbKjWFmvnTVlvrQtvQ6Z3anlV12s+di1VsTa5WpnA6y4wqrTnoyPmJc+VyMolF9yOTY8d3VUiQIoJBQd5AY48jMlbshfp/JWCH5Zk2ucIMPqYXfGv6isYb8gc1HQpbnLlXOHHmnKpDzDymxyAnrZre2p0xDJWyqR2oRNR9Tqi7SiwxYcR//H4zPf8B3ldh6nicbVcFdOO4Fu1Vw1Camd2dZeYsdJaZmeEzKbaSaCtbXktum/3MzMzMzMzMzMzMzP9JtpN0zu85je99kp+fpEeaY3P5X3Xu//7hJjDMo4IqaqijgSZaaKODLhawiCUsYwXbsB07sAf2xF7Yib2xD/bFftgfB+BAHISDcQgOxWE4HEfgSByFo3EMjkUPx+F4nIATsYpdOAkn4xScitNwOs7AmTgLZ+McnIvzcD4uwIW4CBfjElyKy3A5rsCVuApX4xpci+twPW7AjWTlzbgdbo874I64E+6Mu+CuuBvujnuAo48AIQQGGGIEiVuwBoUIMTQS3IoUBhYZ1rGBTYxxG+6Je+HeuA/ui/vh/ngAHogH4cF4CB6Kh+HheAQeiUfh0XgMHovH4fF4Ap6IJ+HJeAqeiqfh6XgGnoln4dl4Dp6L5+H5eAFeiBfhxXgJXoqX4eV4BV6JV+HVeA1ei9fh9XgD3og34c14C96Kt+HteAfeiXfh3XgP3ov34f34AD6ID+HD+Ag+io/h4/gEPolP4dP4DD6Lz+Hz+AK+iC/hy/gKvoqv4ev4Br6Jb+Hb+A6+i+/h+/gBfogf4cf4CX6Kn+Hn+AV+iV/h1/gNfovf4ff4A/6IP+HP+Av+ir/h7/gH/ol/4d/4D/7L5hgYY/OswqqsxuqswZqsxdqsw7psgS2yJbbMVtg2tp3tYHuwPdlebCfbm+3D9mX7sf3ZAexAdhA7mB3CDmWHscPZEexIdhQ7mh3DjmU9dhw7np3ATmSrbBc7iZ3MTmGnstPY6ewMdiY7i53NzmHnsvPY+ewCdiG7iF3MLmGXssvY5ewKdiW7il3NrmHXsuvY9ewGdiO7id08t8TDSMY9niSCpzwOxEIuCLRSPDFTGkUitqaYHmTG6kjeJtJuLhiKWKQyaOVspCPRzqGS8ZopcCRCyRcLnCkrjbSiUBALu6HTtUJBwoflQKKyoYxNOaCNLUwywloZD01JSVePK7u4la7uxne1prwwy2qtShMzI1LT4DJNFI9Flat+FnW4kkNaM61fpEs5GWRK9TZkaEetXKDEwBYw1rFYzGHiprmhpRmeyuHItnOBx8V7pE7UeMRv03GTx1yNrQxMnafBSK7TOaSp3uiFeiPOV7mFrramvJjpvjozs6TlTMeLIW+DG1vaja+2ZwSdHGeJG+nOktWVCQuzRMmAW9EoRfM8tTW+wdPQ1Po8WMuSSp/Ha5W+ECn9KNXtKx2s9UIx4OQSjb7Wa05pxYGVfhaGMtCx6fHAynVpx3tMRf1+kgpjekoP9c4ZMaHxdGTbdMQ5cRaTkqWpbKDTLDLLM4JUijg0M1OGqc4S05kKkmhmfipoyWJ2vtUJHdyM7TalhZOrNvqZVCGBdj8zMiYLIx4vlDghz9Nxt6QbmgZr/cxaHbcCroJMcavTDkGyj6dukxoloQmRSLmT1XI4H/CUIJ2CrdDDTbViqNNxKxgR7fFU8GYO++59jyhYRSFMJCElk76mo6sG7oza9JuFPcPXRdjJMR235n44CxcCHYqesdwZRKcd6MFAiA4lEp2SumBNpHUiWRSbLm2LTSnqes4lliaMDsN5ysJEkHAKyOlsCsrx4oTRzgtulyfcrJG5pG/7Fkmhc2UiXHc2CDJueXdR3A70ukh7MqL00wy5GfnVd0JueZ8byh9huDghYjPRqZ1yGW3lqYhIW3fC16XYaJSsHgqzRo5SD6WJpDENF7luL5uh80eK/LUWZUs6Ep6SLR66pFhxaMX9aOcBlDaKtDQrcrG9PCvIM04h6WsVdkpMXrC2oyD+/CYRvDiRxs5/Jwrz1O+cpFtIaCPozEv1I6GSckTGIVm3PGGUXG2kUzEZt2ResFCwW0izHIzL1a1JG4xETNGQbwWJlJ18VFMetao5YaUSnVn3zXI/Eipqw5Qno+WJwFAhsGLTbpVQ8Znsyq2ZtmLPguTHSF4UcV9vSlvo66UGCl2lyFZyvVJiU7km7Igyx3BUqqWTV6I0zFngQ6NcQqbKoYx2LXWh2J0IXBUt1axTmdAN+qJMjDRNEXGpXOC3Jmi16mFbRH0R9ngWSt3NcVGmi5FkpK1uFZgKayH2H+iIzUCkifVuWxGb0jbIYpFSXeoMeCDKPN0oSYOCPXThVxtIRRMrA8WHlYHWYSffvB43pHhCnFXtgpA32YUCD7lSIh2X83wslsQfTLcglGlsZsohb3TVEbPgirMJUiF8bdw2Q906nKw6pCRpakOth0o0h6kM/TpreaqvjTh1O2l9JLjL1lV6UhEbyZA8qznSWTpU3JjKyEaqRm+SPibDlre0F6Q66eQw34cdBaHjor4olVTdyeu3zUgp5VC8c7WcyyhjU/j5Ar2yRZKX4VlR/k3jLGhP4WrLxd1mL3C5S8YD7YLC+VPFkU4ehj0+IOO6Bek7Bxe1nDXpYV3URDVqASlJ0WNMKprOJG9EU7nffqb6DeeZ5JgxiUzuLB2qFdxK7Te/UZKFvMqX2aUW8ZQKQte3hL2ix2kXzLlGK8cuJxWTig5hoWA6yFxHupxT6ZKg7xFEITHUAvDQjISwhS4XcsUnvLc0IzGkzEDdWoM0Zc7cZglWJ2hXxaFWJN3Jusn1SNLeWFGlfjEzzYhEY+9THlVctqjH5F60ha2iqyUnqsXaO0qs2zohTxxQFhZpI+EqsuSazYRT/XcFdz4JB23C3q8pu1cSYU3Vf7mZ+GUKaoFdJfQ77jdrSv3CFoueuedzkggbxL1nNEuwWnGommh6uenKFplD4eiSQBFXTd9B2ZE09ST1n3XPdR6MG0mqwyywpkn3hdDfAmqpoF7HVuiha3nCbDgz6Voh51Njqr5naBiyJ8yU6ObRqBPnGKZmhDv/pqGS4lv01gStVj0kgRTKB1othzSZjHbOUTOKlmxa1Eql1u9SjQqqooMwNGPeaFM3iXZ1pUULo2IVJXbc9pDiUwlS5fCIq0HNl91xleoblSiT0SGMROqPrTlhiz6Lu+tRHkFLU54H0YwgFEpQIc0Frh2efcPxLW/4/t2/UfMCO08e1KB/3121Le2nJBeTXDWdJ+ftgPdpO8qivvHNf7PAWdJ2iyHXcebXC1yxtFdtKuexUT4qq4TNqGY3XK1tuwcZmL+R4woVI72dmmZKUobTmoPANdbusrC7sEZlimK8lSUhz+9atRzWii5x3YVv03uoP+YJWp3CXQSN7EtFXXqd+raYQmdpQyhq3X375Vc9EZS30pVSoMiV6G5Jm7pcilxK8re9HaWE7llDtzEurqevbqTuhkiXkWFjg8qRoRtx1zUF+U3C+cCEVTbJqvo4z7bz9Ky79Jj1xdzc/wARDj0u") format("woff"),url("../fonts/dashicons.ttf?99ac726223c749443b642ce33df8b800") format("truetype");font-weight:400;font-style:normal}.dashicons,.dashicons-before:before{font-family:dashicons;display:inline-block;line-height:1;font-weight:400;font-style:normal;speak:never;text-decoration:inherit;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:20px;height:20px;font-size:20px;vertical-align:top;text-align:center;transition:color .1s ease-in}.dashicons-admin-appearance:before{content:"\f100"}.dashicons-admin-collapse:before{content:"\f148"}.dashicons-admin-comments:before{content:"\f101"}.dashicons-admin-customizer:before{content:"\f540"}.dashicons-admin-generic:before{content:"\f111"}.dashicons-admin-home:before{content:"\f102"}.dashicons-admin-links:before{content:"\f103"}.dashicons-admin-media:before{content:"\f104"}.dashicons-admin-multisite:before{content:"\f541"}.dashicons-admin-network:before{content:"\f112"}.dashicons-admin-page:before{content:"\f105"}.dashicons-admin-plugins:before{content:"\f106"}.dashicons-admin-post:before{content:"\f109"}.dashicons-admin-settings:before{content:"\f108"}.dashicons-admin-site-alt:before{content:"\f11d"}.dashicons-admin-site-alt2:before{content:"\f11e"}.dashicons-admin-site-alt3:before{content:"\f11f"}.dashicons-admin-site:before{content:"\f319"}.dashicons-admin-tools:before{content:"\f107"}.dashicons-admin-users:before{content:"\f110"}.dashicons-airplane:before{content:"\f15f"}.dashicons-album:before{content:"\f514"}.dashicons-align-center:before{content:"\f134"}.dashicons-align-full-width:before{content:"\f114"}.dashicons-align-left:before{content:"\f135"}.dashicons-align-none:before{content:"\f138"}.dashicons-align-pull-left:before{content:"\f10a"}.dashicons-align-pull-right:before{content:"\f10b"}.dashicons-align-right:before{content:"\f136"}.dashicons-align-wide:before{content:"\f11b"}.dashicons-amazon:before{content:"\f162"}.dashicons-analytics:before{content:"\f183"}.dashicons-archive:before{content:"\f480"}.dashicons-arrow-down-alt:before{content:"\f346"}.dashicons-arrow-down-alt2:before{content:"\f347"}.dashicons-arrow-down:before{content:"\f140"}.dashicons-arrow-left-alt:before{content:"\f340"}.dashicons-arrow-left-alt2:before{content:"\f341"}.dashicons-arrow-left:before{content:"\f141"}.dashicons-arrow-right-alt:before{content:"\f344"}.dashicons-arrow-right-alt2:before{content:"\f345"}.dashicons-arrow-right:before{content:"\f139"}.dashicons-arrow-up-alt:before{content:"\f342"}.dashicons-arrow-up-alt2:before{content:"\f343"}.dashicons-arrow-up-duplicate:before{content:"\f143"}.dashicons-arrow-up:before{content:"\f142"}.dashicons-art:before{content:"\f309"}.dashicons-awards:before{content:"\f313"}.dashicons-backup:before{content:"\f321"}.dashicons-bank:before{content:"\f16a"}.dashicons-beer:before{content:"\f16c"}.dashicons-bell:before{content:"\f16d"}.dashicons-block-default:before{content:"\f12b"}.dashicons-book-alt:before{content:"\f331"}.dashicons-book:before{content:"\f330"}.dashicons-buddicons-activity:before{content:"\f452"}.dashicons-buddicons-bbpress-logo:before{content:"\f477"}.dashicons-buddicons-buddypress-logo:before{content:"\f448"}.dashicons-buddicons-community:before{content:"\f453"}.dashicons-buddicons-forums:before{content:"\f449"}.dashicons-buddicons-friends:before{content:"\f454"}.dashicons-buddicons-groups:before{content:"\f456"}.dashicons-buddicons-pm:before{content:"\f457"}.dashicons-buddicons-replies:before{content:"\f451"}.dashicons-buddicons-topics:before{content:"\f450"}.dashicons-buddicons-tracking:before{content:"\f455"}.dashicons-building:before{content:"\f512"}.dashicons-businessman:before{content:"\f338"}.dashicons-businessperson:before{content:"\f12e"}.dashicons-businesswoman:before{content:"\f12f"}.dashicons-button:before{content:"\f11a"}.dashicons-calculator:before{content:"\f16e"}.dashicons-calendar-alt:before{content:"\f508"}.dashicons-calendar:before{content:"\f145"}.dashicons-camera-alt:before{content:"\f129"}.dashicons-camera:before{content:"\f306"}.dashicons-car:before{content:"\f16b"}.dashicons-carrot:before{content:"\f511"}.dashicons-cart:before{content:"\f174"}.dashicons-category:before{content:"\f318"}.dashicons-chart-area:before{content:"\f239"}.dashicons-chart-bar:before{content:"\f185"}.dashicons-chart-line:before{content:"\f238"}.dashicons-chart-pie:before{content:"\f184"}.dashicons-clipboard:before{content:"\f481"}.dashicons-clock:before{content:"\f469"}.dashicons-cloud-saved:before{content:"\f137"}.dashicons-cloud-upload:before{content:"\f13b"}.dashicons-cloud:before{content:"\f176"}.dashicons-code-standards:before{content:"\f13a"}.dashicons-coffee:before{content:"\f16f"}.dashicons-color-picker:before{content:"\f131"}.dashicons-columns:before{content:"\f13c"}.dashicons-controls-back:before{content:"\f518"}.dashicons-controls-forward:before{content:"\f519"}.dashicons-controls-pause:before{content:"\f523"}.dashicons-controls-play:before{content:"\f522"}.dashicons-controls-repeat:before{content:"\f515"}.dashicons-controls-skipback:before{content:"\f516"}.dashicons-controls-skipforward:before{content:"\f517"}.dashicons-controls-volumeoff:before{content:"\f520"}.dashicons-controls-volumeon:before{content:"\f521"}.dashicons-cover-image:before{content:"\f13d"}.dashicons-dashboard:before{content:"\f226"}.dashicons-database-add:before{content:"\f170"}.dashicons-database-export:before{content:"\f17a"}.dashicons-database-import:before{content:"\f17b"}.dashicons-database-remove:before{content:"\f17c"}.dashicons-database-view:before{content:"\f17d"}.dashicons-database:before{content:"\f17e"}.dashicons-desktop:before{content:"\f472"}.dashicons-dismiss:before{content:"\f153"}.dashicons-download:before{content:"\f316"}.dashicons-drumstick:before{content:"\f17f"}.dashicons-edit-large:before{content:"\f327"}.dashicons-edit-page:before{content:"\f186"}.dashicons-edit:before{content:"\f464"}.dashicons-editor-aligncenter:before{content:"\f207"}.dashicons-editor-alignleft:before{content:"\f206"}.dashicons-editor-alignright:before{content:"\f208"}.dashicons-editor-bold:before{content:"\f200"}.dashicons-editor-break:before{content:"\f474"}.dashicons-editor-code-duplicate:before{content:"\f494"}.dashicons-editor-code:before{content:"\f475"}.dashicons-editor-contract:before{content:"\f506"}.dashicons-editor-customchar:before{content:"\f220"}.dashicons-editor-expand:before{content:"\f211"}.dashicons-editor-help:before{content:"\f223"}.dashicons-editor-indent:before{content:"\f222"}.dashicons-editor-insertmore:before{content:"\f209"}.dashicons-editor-italic:before{content:"\f201"}.dashicons-editor-justify:before{content:"\f214"}.dashicons-editor-kitchensink:before{content:"\f212"}.dashicons-editor-ltr:before{content:"\f10c"}.dashicons-editor-ol-rtl:before{content:"\f12c"}.dashicons-editor-ol:before{content:"\f204"}.dashicons-editor-outdent:before{content:"\f221"}.dashicons-editor-paragraph:before{content:"\f476"}.dashicons-editor-paste-text:before{content:"\f217"}.dashicons-editor-paste-word:before{content:"\f216"}.dashicons-editor-quote:before{content:"\f205"}.dashicons-editor-removeformatting:before{content:"\f218"}.dashicons-editor-rtl:before{content:"\f320"}.dashicons-editor-spellcheck:before{content:"\f210"}.dashicons-editor-strikethrough:before{content:"\f224"}.dashicons-editor-table:before{content:"\f535"}.dashicons-editor-textcolor:before{content:"\f215"}.dashicons-editor-ul:before{content:"\f203"}.dashicons-editor-underline:before{content:"\f213"}.dashicons-editor-unlink:before{content:"\f225"}.dashicons-editor-video:before{content:"\f219"}.dashicons-ellipsis:before{content:"\f11c"}.dashicons-email-alt:before{content:"\f466"}.dashicons-email-alt2:before{content:"\f467"}.dashicons-email:before{content:"\f465"}.dashicons-embed-audio:before{content:"\f13e"}.dashicons-embed-generic:before{content:"\f13f"}.dashicons-embed-photo:before{content:"\f144"}.dashicons-embed-post:before{content:"\f146"}.dashicons-embed-video:before{content:"\f149"}.dashicons-excerpt-view:before{content:"\f164"}.dashicons-exit:before{content:"\f14a"}.dashicons-external:before{content:"\f504"}.dashicons-facebook-alt:before{content:"\f305"}.dashicons-facebook:before{content:"\f304"}.dashicons-feedback:before{content:"\f175"}.dashicons-filter:before{content:"\f536"}.dashicons-flag:before{content:"\f227"}.dashicons-food:before{content:"\f187"}.dashicons-format-aside:before{content:"\f123"}.dashicons-format-audio:before{content:"\f127"}.dashicons-format-chat:before{content:"\f125"}.dashicons-format-gallery:before{content:"\f161"}.dashicons-format-image:before{content:"\f128"}.dashicons-format-quote:before{content:"\f122"}.dashicons-format-status:before{content:"\f130"}.dashicons-format-video:before{content:"\f126"}.dashicons-forms:before{content:"\f314"}.dashicons-fullscreen-alt:before{content:"\f188"}.dashicons-fullscreen-exit-alt:before{content:"\f189"}.dashicons-games:before{content:"\f18a"}.dashicons-google:before{content:"\f18b"}.dashicons-googleplus:before{content:"\f462"}.dashicons-grid-view:before{content:"\f509"}.dashicons-groups:before{content:"\f307"}.dashicons-hammer:before{content:"\f308"}.dashicons-heading:before{content:"\f10e"}.dashicons-heart:before{content:"\f487"}.dashicons-hidden:before{content:"\f530"}.dashicons-hourglass:before{content:"\f18c"}.dashicons-html:before{content:"\f14b"}.dashicons-id-alt:before{content:"\f337"}.dashicons-id:before{content:"\f336"}.dashicons-image-crop:before{content:"\f165"}.dashicons-image-filter:before{content:"\f533"}.dashicons-image-flip-horizontal:before{content:"\f169"}.dashicons-image-flip-vertical:before{content:"\f168"}.dashicons-image-rotate-left:before{content:"\f166"}.dashicons-image-rotate-right:before{content:"\f167"}.dashicons-image-rotate:before{content:"\f531"}.dashicons-images-alt:before{content:"\f232"}.dashicons-images-alt2:before{content:"\f233"}.dashicons-index-card:before{content:"\f510"}.dashicons-info-outline:before{content:"\f14c"}.dashicons-info:before{content:"\f348"}.dashicons-insert-after:before{content:"\f14d"}.dashicons-insert-before:before{content:"\f14e"}.dashicons-insert:before{content:"\f10f"}.dashicons-instagram:before{content:"\f12d"}.dashicons-laptop:before{content:"\f547"}.dashicons-layout:before{content:"\f538"}.dashicons-leftright:before{content:"\f229"}.dashicons-lightbulb:before{content:"\f339"}.dashicons-linkedin:before{content:"\f18d"}.dashicons-list-view:before{content:"\f163"}.dashicons-location-alt:before{content:"\f231"}.dashicons-location:before{content:"\f230"}.dashicons-lock-duplicate:before{content:"\f315"}.dashicons-lock:before{content:"\f160"}.dashicons-marker:before{content:"\f159"}.dashicons-media-archive:before{content:"\f501"}.dashicons-media-audio:before{content:"\f500"}.dashicons-media-code:before{content:"\f499"}.dashicons-media-default:before{content:"\f498"}.dashicons-media-document:before{content:"\f497"}.dashicons-media-interactive:before{content:"\f496"}.dashicons-media-spreadsheet:before{content:"\f495"}.dashicons-media-text:before{content:"\f491"}.dashicons-media-video:before{content:"\f490"}.dashicons-megaphone:before{content:"\f488"}.dashicons-menu-alt:before{content:"\f228"}.dashicons-menu-alt2:before{content:"\f329"}.dashicons-menu-alt3:before{content:"\f349"}.dashicons-menu:before{content:"\f333"}.dashicons-microphone:before{content:"\f482"}.dashicons-migrate:before{content:"\f310"}.dashicons-minus:before{content:"\f460"}.dashicons-money-alt:before{content:"\f18e"}.dashicons-money:before{content:"\f526"}.dashicons-move:before{content:"\f545"}.dashicons-nametag:before{content:"\f484"}.dashicons-networking:before{content:"\f325"}.dashicons-no-alt:before{content:"\f335"}.dashicons-no:before{content:"\f158"}.dashicons-open-folder:before{content:"\f18f"}.dashicons-palmtree:before{content:"\f527"}.dashicons-paperclip:before{content:"\f546"}.dashicons-pdf:before{content:"\f190"}.dashicons-performance:before{content:"\f311"}.dashicons-pets:before{content:"\f191"}.dashicons-phone:before{content:"\f525"}.dashicons-pinterest:before{content:"\f192"}.dashicons-playlist-audio:before{content:"\f492"}.dashicons-playlist-video:before{content:"\f493"}.dashicons-plugins-checked:before{content:"\f485"}.dashicons-plus-alt:before{content:"\f502"}.dashicons-plus-alt2:before{content:"\f543"}.dashicons-plus:before{content:"\f132"}.dashicons-podio:before{content:"\f19c"}.dashicons-portfolio:before{content:"\f322"}.dashicons-post-status:before{content:"\f173"}.dashicons-pressthis:before{content:"\f157"}.dashicons-printer:before{content:"\f193"}.dashicons-privacy:before{content:"\f194"}.dashicons-products:before{content:"\f312"}.dashicons-randomize:before{content:"\f503"}.dashicons-reddit:before{content:"\f195"}.dashicons-redo:before{content:"\f172"}.dashicons-remove:before{content:"\f14f"}.dashicons-rest-api:before{content:"\f124"}.dashicons-rss:before{content:"\f303"}.dashicons-saved:before{content:"\f15e"}.dashicons-schedule:before{content:"\f489"}.dashicons-screenoptions:before{content:"\f180"}.dashicons-search:before{content:"\f179"}.dashicons-share-alt:before{content:"\f240"}.dashicons-share-alt2:before{content:"\f242"}.dashicons-share:before{content:"\f237"}.dashicons-shield-alt:before{content:"\f334"}.dashicons-shield:before{content:"\f332"}.dashicons-shortcode:before{content:"\f150"}.dashicons-slides:before{content:"\f181"}.dashicons-smartphone:before{content:"\f470"}.dashicons-smiley:before{content:"\f328"}.dashicons-sort:before{content:"\f156"}.dashicons-sos:before{content:"\f468"}.dashicons-spotify:before{content:"\f196"}.dashicons-star-empty:before{content:"\f154"}.dashicons-star-filled:before{content:"\f155"}.dashicons-star-half:before{content:"\f459"}.dashicons-sticky:before{content:"\f537"}.dashicons-store:before{content:"\f513"}.dashicons-superhero-alt:before{content:"\f197"}.dashicons-superhero:before{content:"\f198"}.dashicons-table-col-after:before{content:"\f151"}.dashicons-table-col-before:before{content:"\f152"}.dashicons-table-col-delete:before{content:"\f15a"}.dashicons-table-row-after:before{content:"\f15b"}.dashicons-table-row-before:before{content:"\f15c"}.dashicons-table-row-delete:before{content:"\f15d"}.dashicons-tablet:before{content:"\f471"}.dashicons-tag:before{content:"\f323"}.dashicons-tagcloud:before{content:"\f479"}.dashicons-testimonial:before{content:"\f473"}.dashicons-text-page:before{content:"\f121"}.dashicons-text:before{content:"\f478"}.dashicons-thumbs-down:before{content:"\f542"}.dashicons-thumbs-up:before{content:"\f529"}.dashicons-tickets-alt:before{content:"\f524"}.dashicons-tickets:before{content:"\f486"}.dashicons-tide:before{content:"\f10d"}.dashicons-translation:before{content:"\f326"}.dashicons-trash:before{content:"\f182"}.dashicons-twitch:before{content:"\f199"}.dashicons-twitter-alt:before{content:"\f302"}.dashicons-twitter:before{content:"\f301"}.dashicons-undo:before{content:"\f171"}.dashicons-universal-access-alt:before{content:"\f507"}.dashicons-universal-access:before{content:"\f483"}.dashicons-unlock:before{content:"\f528"}.dashicons-update-alt:before{content:"\f113"}.dashicons-update:before{content:"\f463"}.dashicons-upload:before{content:"\f317"}.dashicons-vault:before{content:"\f178"}.dashicons-video-alt:before{content:"\f234"}.dashicons-video-alt2:before{content:"\f235"}.dashicons-video-alt3:before{content:"\f236"}.dashicons-visibility:before{content:"\f177"}.dashicons-warning:before{content:"\f534"}.dashicons-welcome-add-page:before{content:"\f133"}.dashicons-welcome-comments:before{content:"\f117"}.dashicons-welcome-learn-more:before{content:"\f118"}.dashicons-welcome-view-site:before{content:"\f115"}.dashicons-welcome-widgets-menus:before{content:"\f116"}.dashicons-welcome-write-blog:before{content:"\f119"}.dashicons-whatsapp:before{content:"\f19a"}.dashicons-wordpress-alt:before{content:"\f324"}.dashicons-wordpress:before{content:"\f120"}.dashicons-xing:before{content:"\f19d"}.dashicons-yes-alt:before{content:"\f12a"}.dashicons-yes:before{content:"\f147"}.dashicons-youtube:before{content:"\f19b"}.dashicons-editor-distractionfree:before{content:"\f211"}.dashicons-exerpt-view:before{content:"\f164"}.dashicons-format-links:before{content:"\f103"}.dashicons-format-standard:before{content:"\f109"}.dashicons-post-trash:before{content:"\f182"}.dashicons-share1:before{content:"\f237"}.dashicons-welcome-edit-page:before{content:"\f119"} \ No newline at end of file +@font-face{font-family:dashicons;src:url("../fonts/dashicons.eot?99ac726223c749443b642ce33df8b800");src:url("../fonts/dashicons.eot?99ac726223c749443b642ce33df8b800#iefix") format("embedded-opentype"),url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAHvwAAsAAAAA3EgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAAQAAAAFZAuk8lY21hcAAAAXwAAAk/AAAU9l+BPsxnbHlmAAAKvAAAYwIAAKlAcWTMRWhlYWQAAG3AAAAALwAAADYXkmaRaGhlYQAAbfAAAAAfAAAAJAQ3A0hobXR4AABuEAAAACUAAAVQpgT/9mxvY2EAAG44AAACqgAAAqps5EEYbWF4cAAAcOQAAAAfAAAAIAJvAKBuYW1lAABxBAAAATAAAAIiwytf8nBvc3QAAHI0AAAJvAAAEhojMlz2eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/Mc4gYGVgYOBhzGNgYHBHUp/ZZBkaGFgYGJgZWbACgLSXFMYHD4yfHVnAnH1mBgZGIE0CDMAAI/zCGl4nN3Y93/eVRnG8c/9JE2bstLdQIF0N8x0t8w0pSMt0BZKS5ml7F32lrL3hlKmCxEQtzjAhQMRRcEJijhQQWV4vgNBGV4nl3+B/mbTd8+reeVJvuc859znvgL0A5pkO2nW3xcJ8qee02ej7/NNDOz7fHPTw/r/LnTo60ale4ooWov2orOYXXQXPWVr2V52lrPL3qq3WlmtqlZXx1bnVFdVd9TNdWvdXnfWk+tZ9dx6wfvvQ6KgaCraio6iq+/VUbaVHWVX2V0trJb2vXpNtbZaV91YU7fUbXVH3VVPrbvrefnV//WfYJc4M86OS2N9PBCP9n08FS/E6w0agxtDG2P6ProaPY3ljaMaJzVOb1ze2NC4s3Ff46G+VzfRQn8GsBEbM4RN2YQtGMVlMY2v8COGai0Hxm6MjEWxOBZGb+zJArbidjajjUGxJHbgUzwYG/EJPsNDfJLFsYzpXM6Pmcd8Ps1BvB8LGEE7W7KSzdmGA9ifgzmau7ibcUxkB7bnHhZxb+xDgw/yYb7GU/yQp2NgDI9xMZ61sWVsFZtHkxb5+ZgQE2NSdMYmDOM5HmZrfs6H+Cbf4bt8m28xhb2YyjQWciDHxk7RGg2W8DFWxbyYE20cx/GcwImcxKmxWYyIGXr3l7MPp/MAn+PzfIFH+Co/4296Q2v+wdvRHP1iQIyKMTE2ZsZesW8QSzmHi7mFK7iWsziTs7mIG/gAl3Irl3Az13A117GeC7iSdVzIjdzGMXycP/ITfskv+B5PRk/MjT1iCPuyLAbF4Jgds2Jj7uOj7MmX+DI78hfejBa6+Kxmekp0s5TBXM/kiNg29uaNmM5p0c6fmMmMGMbLMZS/8w2+zh78lPFMYFvt9Ul0Moax/IA/s5P2+hy6mcXO7EoPu7F7bM1feSR25wzuZAN3xBasiJGxDSfH9pzLeVzF7NgxtmM0+/FK7MLrvBNTeZSXYlP+wO/5J//SV/2O3/Iiv+EFfs2veDf68xHOj53p5Yt8n72ZG6MZzhoO5wgO4VCO5CgOY3VM4S1epYxdYzKP8QSPx3xu4v7o4Fmdydbo4j1eo+IZbdaW/+Gc/L/82Tj/0zbS/4kVue5YrmzpP3L1Sw3T+SY1mU46qdl05kn9TKef1GL5J6T+popAGmCqDaRWU5UgDTTVC9JGpspB2ti4TOMmpmpC2tRUV0ibmSoMqc1Ua0iDLFfwNNhypU5DTJWINNTQGqRhFos0DrdYrHGExUKNIy16Nbabqhhpc1M9I21hqmykUaYaR9rSyM+7lZGfd2sjP2+HxRKNo01VkTTGVB9JY40HNY6zyGs23lQ9SRNMdZQ00VRRSZNMtZXUaeQ5bmOqt6RtTZWXtJ2pBpO2N1Vj0g6mukza0VShSV2mWk2abKrapClGvtumWuS1mmbkNZ5u5HWdYeQ1m2mq+KRZRl7v2UZ+9p1M9wFpZ9PNQNrFdEeQdjXdFqTdTPcGaXfTDULqNvK6zjHy+vUYed5zjbwee5juHNI8I++f+ca9GheYbiTSQiOfp17TLUVaZLqvSItNNxdpT9MdRtrLdJuR9jae1rjEIu/tpRZ5/y6zyHPZxyLvkX2NtRqXW+R13s8i780VFnmdV1rkc7+/5SKRVhnPazzAIu+7Ay3yuh1kkffdwRZ53x1ikc/0oUY+f6tNNxTpMNOtTFpj5LNyuOmmJh1hurNJR5pub9JRpnucdLTpRicdY7rbSceabnnScUbep8cbeb1PMPKePdHIe/YkI7+fJxt53muN/L1Psch781SLXPNOs8h74HQjv4dnmLoL0plGXuOzLPL+Otsi781zLHINOdfI8zjPyPM438jzuMDI8/iAkedxoZGfcZ1FrlEXWeSzebFFPpeXGLlWXWrkfXSZkffa5Uae3xWmjoh0pak3Il1l6pJIV5v6JdI1ps6JdK2phyJdZ+qmSNeb+irSDaYOi3Sjqdci3WTqukg3G29rvMUi3123WuQ74jaLfEett8j1+3aLXIM3WOQafIdFrk93WuQ9c5dFPmd3W75G0z2mbi8/ah/1fRRh6gDV85t6QYpmU1dI0c/UH1K0mDpFiv6mnpFigKl7pGg19ZEUbaaOkmKQqbekGGzqMimGmPpNiqGmzpNimKkHpRhu6kYpRpj6UoqRpg6Vot3Uq1J0mLpWitGm/pVijKmTpRhr6mkpxpm6W4rxpj6XYoKp46WYaOp9KSaZumCKTlM/TNFl6owpJpt6ZIoppm6ZYqrxpMZpFqrvxXQL1fdihoXqezHTIq/TLFOnTTHbUJ0tui3yGvdYaH3LsNDXlQ0Lvb5sMnXplM2mfp2yn6lzp2wx9fCU/U3dPOUAU19P2Wrq8CnbTL0+5SDjTY2DLXe95RBTEqAcasoElMMs195yuKH6VY4wJQbKkabsQNlu5O/dYcoTlKMNrXs5xiKvwVgL9RblOFPuoBxvvKFxgimLUE40VCvLSRb5Z3aakgpllymzUE429J6VUyzynKYaL2ucZpHnPd2UcihnmPIO5UxT8qGcZcpAlLNNaYiy28jPPsfIz95j5DnOtfybg3IPI89jnpHnMd/I67TAyOu00JSzKHtNiYtqoSl7UfWaUhjVUlMeo1pmSmZU+5gyGtW+prRGtdyU26j2MyU4qhWmLEe10lBvVK0y5Tuq1aakR7XGcq2uDrfIX3+EKQdSHWlKhFRHmbIh1dGGamh1jCkvUh1r5GdZa6E9V51iSpNUpxq6d6vTTAmT6nRT1qQ6w5Qnqc405U+qswy9l9XZFjo71TmmdEq1zpRTqS4y8jpdbLyi8RKLvP6XmvIs1WXGOxovN2VcqitMaZfqSuMljVeZEjDVjaYsTHWTKRVT3WzKx1S3mJIy1a3WN8fbTOmZar0pR1PdbkrUVBtM2ZrqDlPKztdlH+Vt6jAlb+qG8a7GJlMap2425XLqFkN9Rt3flNWpB5hSO3WrKb9Tt5mSPPUgU6anHmzozNRDTDmfeqgp8VMPM2V/6uGG9lw9wtCeq0ca6i/rdkP9Zd1haC/Wow3txXqMoV6zHmtof9fjLFRH6vHGWxonGK9qnGiUGidZ6EzVnRaqR3WX8ZjGycYTGqcaj2ucZqFaUE839N7XM4z7Nc60yPOYZTyrsdvybyfrOUZe7x6L/PPnGu9pnGe8pnG+UWlcYDzzb8iLsxoAeJysvQmcJMdZJ5qRlZmR91F5VWXdZ/bd0511zEzP9PSMPKOrS5JHEpJGI0uyRbUk27KMMMuitVU25lgW+cAyuGt3f17A2Muaw6bHwMIzC5g15jFlMNcaA7vAmp41ZtnfW1h48PbVvC8is46eGZnj97qrIiMjj7i/+H9HfMWwDPyh/wddZTRmnWEaYbfj+cl/F4dYcErIc7BgIAHDv9ftdDtnEASbkL7ZRS98qimf8DXL84pOsbr/qTWMc6Io59OWVFC0WiVfkDTFUbEr5kQX/8mnmgpniLqtmTzGQ7gb0rGH4Q5NKuTLdU0pSJZZUDHOY0yKFpfvV9CvMCpjQGyziBwdVddQaxvZbYyY7uVO5/Jzlzvdy898EP0KjXYuv/mxzvi3Pvt68ih9fohGTJph7GjTKyBHWEa4Xas2T6NWZ3DoFYteNIjcYhGNiu4VtzgY0MMk7y+iX2fKTASxTrsTNsMmruIN2hg4aZJtRFql20GdbvLv+cW4vdBvI4RYLKqYU+or9XVPVZRUyg/8SMnUcjl//ICnYlHgJT29YkoCVvOrC+iHUqwoSIKEkODnc7WMlgm8IMOynpI51lipj39AdxQ/LemylrKkak3J8VxS1hHUM2SOQT/WBOzjUMBurd0McdhthrV21OmGXb/TbUeu53d97PkR3uy0mlXB8dDoONYXOgte0At8OOq42xWMhU7o5XuBB0ddOP6l8urqzurqKOeH8Q30CT/YTZ44flzQQ5LwArltZ5UUKUXL9Qvo5xmJ0UkfICgWlMdvR9h3K22/XXPRMMx99KO5X+i3hsPx1VEfNZPzaGF/f/+lwWD6nq+i/8x4TJU5DnFoYQPpCAYs1MBATRiW28hLkVMyWh2vg7sevWWNpdd8GMzeJvqsaxhu6J7IP2uW18xnsU5OTvz2PxctX/xO0fTVZ0VI8o6fWIb7FtzjhWetyir693AP3KjjZ821svlsnpwYxvhL/1z0TYRpGNFUT9eXZ7dWSLE5WvZr6BpjM3lmielA/7RbzWUU1nCtKsCI9KLKZifc9Byh2mx1/MiKI9EmNA+G7pqcop6hLFf71WXZMGTEKMYw12i0m83RgISBgHv9KI4dXpGNKDJkOBifbLbJXeH4L+nd7LvelXuExqBYUjzJ0G8yPKPADHOZHIz2BrPIQPch2lMGCtswWqCjfHJeilMbPgwtGpArFdKNb37zm+3BINj7+n5/t4XpyX+n4XjQv4r6/auDFmq10H1PPGE///zWQw/bly61lpf3Hn88/fzzaRpGj1y69Ah8dyL4S8b076P/RtuN9jiGDjfYGoznDkw7bzZ8fyJrWdnCPfVjvWYv+6tprZA5dy7UHSfvOOjnsufOZgua+aD4ePQfG68twK3fQi7knckcJ/QhRdqia1UsPnIrVjREzPhwdJ2JBqg3Pggi1EvG4GfRLzMYWqkGcWiITpHF0Dow14GqkG46g9qtbscnFwyE7rv/2P1CxuF+079W0kqFzFNlpewpZSx9FpJtHt+P3gd3YN7xW4VrriaJZcWDW96QLVQvQbKdEe5PaNgfoD9mYDghyKxJhzWZSJTINGOiHHY9Os6Rsv6D6+6G5Vi8trZ9B3ayaU/W5LSB79hedzbSdppHB2s/sK5xEN1wyS1GWtYkP51x8e3bSfp0zo3QFRgXy8ztMGqtVrNWqQquFY/YRkSG7DKi4/M0qpFBugXV72x6rj9/VkDzd7bRyFDGB3QM9xTjOpNVDEPJirI4jQwCcjXACg5IEon0UYukja9C+F2GazQFDFWHyMsk8shNKZN5N2IRrB0R8wBzGVaAqo6cItrcRq015OsIr6Gw021WsQALXgER6t6EZux2Qph7ReRvdrpeClK7HZg/zRDuhgMl8ckS6cGITAG9F3Cne7j97Pb2s28nwTt535RWSrwh2YLEsaInNyqcqAeSXpDa60GR5QwO/x92iuU5JImKUMAqdLaPc4WgYpXltMln3DvfbZQk00McyyRvheCjVh6XI81SBFGxJA1xWgbZnosUxcgG9omKKWrjrzielrUlQ8EplktxUr6TFnguldILS0iqr4Tn0JsESTM4RWFg1s/aaAFWjlPMG29oJRtinS40BtS0RhpICGmjkVUvJO2jo2YXmsrzyaXmOnLXYCKQxvPIdCUDFK7FLUf+BZc0IcS2WeiAuTZTeUlkeV3lUq7Ga6JTNNQ0JxliKFsPWTlWQk7uQmpTcQRsBxBWNZ9nWVZjOY7n0rwoaBiX/BrmIDGFrbKSYhGbUrx7X3/M9eebcPxLWEKiyIoFQ0urCPE4lTJVhDmfFwsZS87ZXAlaS4BLLMe77xQMSYYsDF7UeFbiBMnzcx5b9FRXF6DAdU8xpAa09tqWZTptaE5rrk3TTIYpAK1YYNZgDJ5gdpjzzC5zkXmYeYx5A/PMDW3NR55fa3bbMLIAXvm1dujWyFgjIYZvJPiRW2v6pAlDWELJ9D+N4ABXyHUYpPCGELoJQpKSglO4kzyJ55p6/Ndnkdg1vti0RV6V2Mdqtwui3XyMlZpnOaMrBo9dlB4l1565wEP6ZQTpKfO4yCLpuJFqrqn+sfL/8tXVcnlV9TdKf+lrq+Vj8038f9eqlR+7z2hoeq1aO/8N9xla4w3na9Xz9Ur1wvnqbffqDc249x5I1b8hSa7Wq9VKfa9e8JbPFurL4/9aK3or54q1JW9Kh2h7nmTuuGl84s5kbIUwKEndaSQeeHS0wsgssnS+kqGKJ3fPtUjwNGAuXUqrvMilMvbpNdYo2Xb/LCBRjktrupgXZFHXontdG/NVuRMoJtAkTeXE1JGx9fndlapnq1jGHAFfkrxoq2pu+96Uk81nChYrcDbisF7K6apsqvfV1pqXli1d0hVBlmd49zfQFxgHxg1DAE6yqjRhvmAfIA3vJase+nj2Qvm77E7T/pimbZ4t3XXHXbI+/jD2DMMDBJTV9Y/Zzbb9L8rnN3XlrjvvKu18GhsE/Uzz+RlY9xxY6xlUJQ2yDjO5s+l7CdjHXUDbBTqDq+RiGzB3hBjH0CSBSwmW07MtPgUTQjWcC4VOOVerHrv/WLWaK7ZLyNYVW7e0Zr5czjc1S7cV/dx6tZPfwRIviryEdwrtygSffwHquwXHJmE0CKILm8YU2QHJIFgWlxCBr9toHU0uzI4Avj+j+2njkW2T41Kav6Zxosw5mllWXjl5SbtvLS3sfFAVRN5NYSWluT6HZdYIntR5AX1GEwT99QHQwxQGTKqlZIFzBcxrr2wL6bX7tEsnX1GrmuZwsshpGz45GKcfUhyfFF2gnYbRb1F0WwT0vcXcyzDtShv4AjZcY3G74ls1i9cJAWwDCoXx522jNehZD+gfjM5tBHO9SwhqkRDOW6QhZvtU67zjpHffsHmdObyKHta6gSqaq25g38/JmIUVBF30o4zAszLPLVRsJSVLbErncmdLgsBKAt9ZDdI0zY6w6dkPvKm1cVtGw8F4iPq/EdiaID1hibLW5VNIkgUkKk8akoBkmUdQXM3iWUHm/K6t80iCvJBQtHI8yytceYoTrgBOSAEygkXFrrQrqF1xMRx7qA95RACkaGQAseGwH83G+uQ5QBcVyydPHoyHMMyuMwckgFv5G95vAB6kediAOhsRBPDlJ3kdHqJsD/7G1+Yy3IuG0X70NcpaQNOyQqZHizp5Zjh5pgsd2k3yPdwfAZOyD+hkfPUK5DKXx/T+Btwfwt0ufNHBfmv6wLWoFTGvXj9aL8imFlGIHZevB+HhoNdLyrgfDYd/R91c0qoDWq8oadoj/RDjpF9DP8eYwFvdxzwKJRZqMOXJKh7BEg/TrNuMuX/AcQnPGwJMAoq6eQYR8ttuwVivEaLhRICaYKDDNexWAQH4ruN1XU9nARG2W+jDd97/lsspjl16+vjqgw0eL6dDI4VYw0hjWQC8YhhfcRd0Q4ZJVeU4nWP5XC3dyJR4vAJPuYEmppaW/Ry7cInlJEvWjG8tdRCXaoRBFgkpX+RUJMC6X5M5xGqNFrLSrsyyJU7Scj3ADRmF1dM1zPOsZrCaZfKmGGaUbO2fyWo2rVjmMsOIU16atKMJPFEWaHEFuCI6RslIwW6U8GptwLpd4K3dyZe0+WjcR3vjq6h1rUdY4ZNucbhH/0hahIZwuRf0epSfjqKimw32WnvBXjDpw2uzsYMIk1yxKg3CYR2OW1n6dDBEw1arB3MkCBIaegXKKxIZhwUcAhDKw1Y/OjiI+lCYUT84OAj6zFQecgXtkVFnEylAOBgM4EbUHwyyBwezewaoRWYo8DhosNdH0f7+7BrhCURaNpoVnuWBgiTb6b17cC9P3kNuTXJBcZ7Te3pQHpZKn1APhvPe1x/Np9uuhLRSEYribCaVO5oH4YF8PKRZJDlMrtP3A8CGyYr60/cnbdaoWbQa4bT004xuarMG5X6TCgxvarMeyecM8g/2+gfD4Q3pCEco2BtBHae079MwroDTtr2YlfO9WIBEVgmSoBOWhEJt36OAu0kQ9e9hFokqm0qrvl4IZN8vFng+W1jffMtl11akU43mDm4sSorI1xcUBf1ECnNKWjYV0ZSCjKDywtnOyehksZRqbyxF6/c73idMFKQ9RxcKlj2hR59Evw6UKAPlC2kJfbIA+6SJ12FMYJ+MfsLUhZMItJ/fjRp+F4e1b9D1Vmlrq9TS9ai8tVV+dOnUqQdObS3HEqRzlfbZ+s74z8qdnfoO+mfxfeT+cgT3/+KpB7fg5mwsRMqfUL/3xHee0D54ImmzX4dylZglIg9gdZagO8p9bLNrrE4Hmb/N4ma7u0EkFd0memzzJI4uv3mjvqktSQvFxgMXQn717gcu2Mdekteyl9+8LaJstvcC4tBPwtkbTuIgfbKeK22aNr0Nbm5m7v1gZvOk8EdY4V988WIHsTOaPQLqKQIuNQFHQf/CZOVxFEbJl5AKBOtYfzzid8SI38HwFccjSrtHe9ksjCHyd53IF2MsgT6PPg84YoFpM+cASbyRoKIEruKQoB0ikY3FskB6IblBZbFwreUTmEi6gkoHZidCtZtgSALunG6z1gFcAo8ChiQUXgBSHTkEVaInK2mP01Sd812loe1oWtrQ9ee0hvIRT+fG/zMSTE67y+QcQXiO1yX+OUFbmkQ5/RMQkYXnBD3FvVkWRbG44KQkvZ7VBEtkFcWtB/UsSnNekE2pluundX0HOADHAG7gLZr2MU7XT7R4XrvPFPQXBI17q6Bq3HMCWhLIgcYvvJVX9NRbgHgbb5btpbyIFUkLmpqAjaLipoNcY4Yr/jX0jUAkJg1YjmqwBLVblC1YQ1XBdQBmFaCVSIetIcS4xX7xxaUqAt4x7Zt8dZnNuyjyC0Cb3eJvbNW6MiuximXBlBK7jeN+KO/siM052jAkXB8iazX5EqFeBfKroUGvD6uOjvq6gvot+NOV0UjRp/Laa/Ac4Pxuxa3A6mi1OhHQeiLR6loE4xNJy2aHiqBg6pTJUTGMbWA94NOLVkuoVVodDwHVP4ICgqvHhzwVnKPp+2FCo8hK3r6FrBp5e1RBwyh+5+EhkbCgAGDX3tz7pu1I3nECxiJjAxyB8rnwOSr3EWoTAVByrIaThDYVAfkTMd0oWi/6+cAtFt0A8tA0CKJJJFgtR0PZIBwKOjyIiuue1ysuFUmSfJyjwp9WHHLHyWEvW149OKAMjZHMHbJmS4zP1OnseRuUmXR1t9PuNP1OE2oOk8GLNrudIxxkqhpLdoC9idUL3dm923AVGKFOd9PBG0QgC8QYLpK51N10McFDRC5C2CcBw6vpC18omTkO4ccE3TVyHBYs3TO01e7j3e7jz5Ggu3B7lrO4Uuvhpx9utR5eFXTHDDiZswyn+GjzfMbyMR8UzaKt8Szp6nwG81kvqBRE4XgtYxpcfmV1c/2e9fV70JNL3Ubt7Z4gCx/JlV1rJe2kTbSc5APB+IVCjnf5Ns0IgrfTu2yPrSOpnGM5JH9T2t/2bKyzqRTiX0wvV8sriqyXuML6Pa+7Z500a6KIgeGgAhJqAq06xewyj9+gjfHnmxQfvYKLMFbwNnCQTUzGARkPRP9A5RxRi1A3gw3pCghgdcLOI+bC286ff9t3k+DCuefPnn3+3SQ4t/XU1tZT30SCZ1y7FOpBZeVyaWVle2XlHs0xVMyzbNk1sqrU6XQaviXyLMpxItZVU9FYJnkhBFryQgiyyQshWFHxRjnwhIVcaSUgL91eGRiCqaU1Q+3kHXiZ224j18w5vl0PfJrfhHZfgbki0hm9GNNuuxVCq0B9u5MIbpOpUIgT5+I+UKcbphE8MFHFbVJYsA3tOtE2uXHznkZTdd1hVjZNx9gL6BzaiydGcuhvLPhlL/DK/sKG7S6JtqfaVaJFEpcWDkxHXZIqtmYcu/j6i8d0wy5Ljqc66CCTkwuuacjJ8b2PKIYpHw3M/Lp+xvR9c3eXhGf09eOer6WwxAkCJ+GUtvoWIWWxAD78Xn49l1vP93zFklhRSgkz3oOsoz5TY9aJlHkiR25S4gHw2sGU3vAVEtYqFHbPxxNqBDdCSHiMLn0DunTF9DxzkfXMwPTYRTgZ/+85IXKdKFAM5ToJtymVySe35uEE9aCxME8qxWPSdnFD9uLDruEZk4sQnfAMA6iHDr2/ypxmzjLnmTuZHh0DzXUK59xkJMyfpqgmKB4FUFs6JubPw66LzyDXQPER/6Eqaqqii6q/6g1VUVdUTVS9Vf8VQ45IdSLZGNKQnh9GwBomH/QmM5t2LctNZ82sbWePnI3/dkQeGZFXTGMfCSL6DzglaMF3uq78FNRznWpkiEIG10IhFov7BE/4AvbbaywlpmSF7dJlF2gw+u6qFBiR95rcbV7HCKSaZbP8Yg4bUbCqOCvbq7a8FrRNKb/IszZ6In1XzQvYwSCV82p3WxIyjcoZ05OffJ+49ZqtWg0C8QOvF7PmTsUwETO3Xo0YjeqLAOz4wK/FiNoOuyGGDyBXDGwPYo7dv1Qe991cUC81R48/rpwU/lCNxMcfln/gY2i0Uy6PD1HgZJy86Yy/4+7b5cpz2jdmxNvvVJ5+dkoT0RfRLzH3MA8xTzDPMS8y38F8ANAGUeKtI4d0sJEIvdsT+NUlgxNaCNqDDtFooh1JjvFAjm8g497zw8nS2Z3QTaLFJAMDhhGMEz8eLXESzJPO5Nyfi6Nf8FbP+KIqpSVbIpyApIr+mVXPdNI1lq8EelPiyJoMa00LviTKSaEWVDm2mguuSSYZ9A/FS/N5HtYm+Ka4gHuNxO3CJBd2BfzILtG5kKBEcQgJ/sbfWfW1Zt41RYUXVNF0cw3NX93xZU1eP6nq1ZMuLDuwxGvkWS0O4ZQ1BPdkVVdPrpvWU/F8i+LDBzgVgA+f2hGwCAhzCyuiqOAohkMJLTlEf0TXKTIHATtTxEygMqxDs5NOi5g1kI6aImPPwfz81IQGRYpSVt5PFHLvV9BptaS+T/VJ3HwjSXvjGlHlvZ8E4y8roqpIiiA5hlhFv6Mo71dLPrl2WonvgOD736iUfRWeou/wS+p70jnbteyMHeh+fiq/eRl9gXHpCsKQqUREr2GXcDmeTway3zQQgTCwWgKxCCn2wB7KfmN6uflAczn9gn6ieSbKamo6WN/4pgyAtoWglmnuOIG90/R8M0QXf6Pu2bZX/0Imh+6ub7iKId6lvmOFy6653x14q17AF1zgZyhdZpk5mZTP5IDzqgE/uAyzP2K6zBZzhmEIYvVr7Wjyxf+AOJGYUElWP4r2WsB8R6NXj/SJwAr+WKZHDtGA4OnWII7T8HCfxOZli7/KNJg1qm+Pp2IN+y4O292wGuumCBtAFk8CCrsA9SiAaaIDzcooQdpeNIMgveza2YyMJZF385X1zQvbJfOgHqqNVkMN790pe0Vd5FIrlV4+36uspDhDlUwtY+1g4BV0jNGLJ+85duy+4zP53K8yAZUUE9kKnqAeKMMWonpcWlLCS4fT4lw8HgTH12F9S/mF4nJYDJeLBT8lOO47F+FvUhbE9Or1nuo7DX+bZI7gK2z7DccX0ouL/+ekGNNyjKActzN3Q+uQpqkRAUsVC3F7dD1SlHYLmKcuEUEkIIOQNShTZ9KcIVGdxv8wZXwoNBqaWb2EspcvZ08WskG5ura4uFYtB+O/MhqczYsqLyqGnQHWTeMaJUfLcBxiBfNZU2ARx2U0Z29ra+tQF1KpzusuHw+8E3eIooAR9JUo3tE5rwoZK6jwgoB5nLJM1RRULKT0QFP8ghmGZsFXtEBPCXgleOWV6Ti4hgYwgksQq8zsLU4jAKExiCCWQJDkuUT2TMgf6kPI6+p4qOq6ivqqjgZFl16C4IAkDhRdVxiqtKH2A7GsZImi4/PMa5lLzOvi/CbacuC/mqmbpCYz8cnXuBTjQapXnyZ2iWxhcJ2hBSThoWbZvp3Wjhx6WhoIDJxNDukgnX7O9h04rUCib1vZ67Cqo9F8ZcffBhfgcxluBJj7UHw4uCExk7Gz/vdoaUe5RILjSfpDpEm0ZC3+EtCN0hF6cRsdc/cy98d8qXV0DXRrFBWRvqkK/lzcJis5kIstRMThkYtviE8oC3Dc437PL/l9+B7GK8NBfKBkBpjwPSApyWFICQsajgdokCVwLkvDHbKE7ZD1aBobfwuRm1+jJCdLiU1Aw2iCBW6u6z+sfu2K241VCvQb1wMwaB/A5y3qMWwNSbn30d7fUe5XDg+zV+gfMzcfRolNDWBnGJ90EsTygW6UmhrVDO5WDVMZP6uYhnp3rx9RId4pmOHq+DeUdFpBa6oZjQ9OPXgKPvP2IsSWhtjbkXpYNVxzuxPbpmEPDa5Fg2ul1dUzq6sIyDaMvqB1OEpMxhKbDfRtgKhX6FxiGk6i8OzW1lhCtWsTdEwbNIrDuB0rVMHmT5lMtAMtCA14eRGv7VTD4zhtFx1NbGzWL9Y3G6LmFMb/QzpXcyv4E9B+Jd//KHAJ8MRT1cgTcadZtCu6k200suTr6EW3VKvLQtknAww+Ezz8x+h/EK1fN5HeAl1M7EO2UaxXpclNCgmbVIabcHaYGlRgYi9IFYRHokKUvufC3T1b05S8bsmOKWmeKuCMVlJ9N49QvaaJMse5Ws4GUq+noctLxYqb9pfrHOIlrr6SNhdKHMvLXDFsWOkFs1qK2mWvUijIImfpHAZ4Y2IuhQQ97aTLnKcVlBNphfV0gDKqKRlmRpJUtbyaSUkim8qs5ooLHitjlnXDO7bOMsxMXzECxFWFsc90owln1rYSRo6M/gqu4ckYiKaD4XDCgFF+pacYaLd/qMVd8Fcm6TiPCngUxNBDdLDnQdrkMyfnGhLrLbtC5psPE4hIzPoHrSsB6sH46rUOZ7wmKWuBacIsPU70OVQoUaWrF4YjDjuzczQpKD81zZtE0EglUNXUntXKgdBJERSr7qJ9hYLk8X9SiA7e+P4YM0doS8joZPEwssIPy2k9lCRidqr5+DvRIIa2B0f4y+lcGs3rEOk/mVOjvagf7cWKpGB8OBrN8T5lZgNijoCtCmE3OpSB9qnoipySo1tEKQt7iZghJLo+jEaaMn7Hm3hoVtSAZRVfNjwT0IuibTwoQEcsKjD0LqKPKg43/sSPSjIhNxxvquxH1LTpp1Ip3h7/S1T4PrgCTDebxuy75nEY0c9QCSkwhW7oRlPhEGI2Lh4bXdm4+OT9x47dj5iDYxc3hleOkZMnL27EfDXLoDFgz1Wmw5xktplzzAXmLoKOPaoogVkkEDRPBN3rKBFzA49HzeLaa6gGM6wm+EnHbRoIkBU++kUbNaOUV50sQimOrWP8VdEVfxnjP8Oup7/DAGjCskjVJE9Vc/eLtIt+KP2D6V+efn/A/lz6B230V3WWwJmMq+bKel104QX4l+FVXxXP6S8Zdk5VPUnTUIpNWSLtZwueege84aW571zfEz6mfoOczY4lbLG0DZgC7APLsoEdxBx/Xbf7uudJcHzpwtLShQdIkEml0Au9LNRslFyEYLyfXIXgO1MIdS6++CKvzPPQQ8CGZYbYPLeILBSTgErN3RjMAB8adgkf/SJ/aqmwoRpK0EzVVtp1BFh7/Zcu1teerKPAkJdOl7N8Iyezwma13ulcaH3gtfW119fn5m3lVXLZQu1al8xlSsdvzOZS74UXdh+BrG7OBK70IKN52pCDY+vVq4Lenjq1VNzQZW2uEqsoSFn80mngZ2flvz2a0pFfR78FfXMnc5H5ZrLSUeUCwWik3JR+ABV0CblI6lJt8gQwd6iomTAePiH1XWroFQe+12k3G1N8Rwu8jNzYaN2jGgtPoAnkCpEeVJv/SpRVCTCwkTZYRVUV1kjDoiAi2VnLK36KXauH95cKWSwWyk+t5DVdFRSFNWXTcPzU+K+XycJ9SknBQ1gWJUmRiLxZSxsp8i6k5SWJZWWlgHlN0bEti4Yo29iQDf4Zt1jAjeWF16TTWi57d2OhWDf8vJk2RU1CuiCzrO8ET8bI4EXexrqi8bgAr+NkKS/y8Ir4dbM1hPQTBh4TRl03AcyNmA2HlZ2qRKKQtK4LLdkvekRnMx4V3QM4/H7YbofLGVtR7MyAkNknHRKOogc2Lzu5x4LpuP499HuA0pcSucBUnRZLBKhdEZ/YLPqxgeMZFKLPOW17HeYrdjEeiI6YFkVjzR5/ryMJMi9aaddVV1Tbeddl9DnbXktjnIZ7B6KYxq5ordvta44NN7hu2hJ5WZDgxjm6OIhtX7qRVbPh29sn5iSxrQbDHFnfBBhlDbdrAfFEzHAI38ceG1997LEb7kF8G1t+G42uT25CLbiJTeSTwyQ/K7JIfkQ91aOmKOQ7zY/cR/TlGoqLMiSq7CltuEJl3Izt4nal7eO23+66FTfsuoMIZff2gmh8bW8P9XrNj0a93WiYHGfl3Kd2DaQmoVuzIrdLjAuAyx+h05fHo8uXX3wRRS++OF8vYnNDauW3ocxtPBoOye2foVV78cXxVXL35P4gtgWwI8igFu0NBlAUgpjn8SkP6//5yT0NOvWcmIslmpxONyIrB2FxiRiTMr01eiWWvU8vRERwQHM4L+sZ03XNjC6zKSnFcjyyrbKlOarKcXII8A1WEJIuiaqoKBBIHCfxyNLzcel+l5PTQe11tSAtcwDmZFZK1zohAAaJk2XuPQs5XUQSL6UEUbWWLFUUUpLMs6KeY+b3FxApzXGCme3KBNcLFNcjAEaNVoxOyXaCmOndjBUwcTI98XHFrRxHL2tOWh0/r9g2+nZiEQUcuqSnc7pK2M20qSmiwPNQFNWsmyoU5o/pCDq0lfHvahabVtGiYo9HZOjsyTKVoV4h3PKeqXmmY8LH00wRK6L024SeitN+0RgPOChih0w0jncTvSjBZ3S1A1pgT9DXzVASd+NNEtNNFJXplZiZ2ew8gXbcDF3+Mp+K4dmjMTz7TzFoe+nrAMTtxXG0HV96m0GNKfu5czW6uh6vnUPZOK0VI7X48563EdnAcnc+rRe/ipnTTYqMA/U7BjzwvWRVn4h2gYUltmEA7dq41enW4tr6sN633VildpqqJWEMzieRIRmtEXNBmob6MTm3KFvaymcCQFYPXYaA6nWOXfTXgslJZUW+HDhZ7uyjxy4iJibTsQgtCoptR89oduFPdV/vaRkdTnoQfZOgZ/QenEBSFATaos8WbXJhrn4yrLRrgNFuI/jM/sdXJZo2jU+b5fDvXZnvi9tgiUgIUf8fWpW4IQ56u7ukSvP1Kty6XjdXA99Y1VvXi3Q5Dif1+sjRysxquXFDvaBve7uzer3jSEX6R2s5uLFeQOppxebHoworLtmRdPv8eHSPjsOv3Vc39e1kHP6T/datqzep08asnnNjMLh15eZ6aXC0nrfspzv//+mnkFrI/YO7yVy+K3359D+2n966Ak9vz+tGVVqvM6SP5sD/TS0f/p0JlNuaFPrviqK+nsmRYkJweLTM/Vl94KDvkavwTQ5zmG5ELSfrsxVpAmgr7QQq0/WJJ9KvCPdQn0gEBhHZFQTs/gDO0MPjq8HhIdkzdJ2RgezKQUAPRH177cqVYX+ebyFtlbmRYwrn9X4zLumne71o8jnCHR3OXWDm94hhRidWjxE1zfXJDI7aaC8aX23t9waDHuCk0WjY2h8O52wlfx19nuzIRMTGhAzGyVZaujuhGAvbO/EOrm0YeGRnG6zFnSb6abVQvuvsome7fNrAAPEVwRZ5XledQOSB3xZct1sweMPJp5csQUYve7aTquzUC13XJdt9eDlnqzrPi46gmIIi6K7g2h5b2jElKTOzF/499AcUE9qw2vrddRb7tu8JBkv3sX6k8smqUflk/csPKEj+fz9Z/3NTrXxf5ROQ9ok6Wn5AKcrj+if/pyKlZjj+t9FvA75KA11h7JpVadfIrDIQAL12t9M00Bnk9wHBjtBTFTEjQc/uYXa44791EQ3GBxG6rSKyOBiPhn0p8z3+zlsXJ+/9CXQA8zvZQ0oKCJjdI8w80eqip85LCI/eWxzh3On35t+z9978e9EPn5ey4ucL7/m8iO57X/59PwVp0zk1s7WmVltk/PHJEfWvoiygnmx8AJJElFM0ZL7W8/7k+egwsUPv3/T4qz3vJ/mTIzo4PCRm+TS84fGkLd4JmNiAFi5BG1sxO0j2FhAGF7djARyONqk9xPAb26eDohds3Vaq5YNMEC4eD/KQDG29WmlilgsLK4vvvssK08eXfG8OcxP73ijG9RExFjscDK6h4bXeXr/HzMsJeGppTq17bbJBAx/2+9nhsEdD1O+TXb3XGXqY42euUJ4c4He35nb9ShcazweEj6M2DiuY8DgfOHmy3C8/Me4/AYc4joYQR/c/MYbjXvnECQieQP1JfGqL99FYZkLkXgImwnSK5qlQD2YbEa/HWnmAxcxGlNaX9l/XsOwHP/CAbTYe23dVU7Qi9E3d9kYtl4P1qBquv+be+25bDytwpiuGWdlod0lW/LQuRN4d750FnsKtQaZhF/OkLn7Kx1C5CqlleDAcDvZKx59Ezl7pyeOl6taTpfEIolvE2rhfevLE7f3SiSfR7ZXHT5T6EH183qZfjTWZM/IPND0kBnbAqBLBBg4JGoY+BwbWxYkQoYoOEmIOwfcvqJahGJpXMCuNUsNwdbGJ9ayuZ+eXBUXRXeD2bdmo2MWs5RuKIt0rBCqQ+ilWv5aMXzIbParNrBIZCLByRBsTEaaw1iDR5Bslx95h0O9H8LnOHB7AMA/6ox4Z4kE224suPULgZ6/V2o0ich7N2viGvREomW0TXUk8a8jWiMM+0G6YNjD69qiqprXfn7Ph/hcxL4lgduBaN+rCF31L546O8aMmDWHSRdFhazpPR/Pz1AbWaP4/Fr/Ofw8I7qYqoUR/fm0qv/0a+nNi4U/XP3d+G0H89V/lGtF4VZI42RUAte/3okE0aME36s8njAbZEcpCFAHbPOj3e63p3+DatdHBwX6U/O3GqXM6Irpyo1o83rYQVVeR5Zou5TROkZIPLHzv58vtYrFd1kzbjD+BZJrmAI1K7TPt0r5smjKKSDge0XgPbtm72mdmtnNXoG3uZy4zTzBPMU8TqSCwpDCHHYOsuLVuwpOvI+KBoSoQDwcdv0kn9wakwwwgUu4OoXs4hhk+NTskeLUauqS4rdRml7wL+3w0Gz9okDJYIcUv3rFSYgWWZ/mUgkUeiYhs+dwQZRXWUlW3dZno1JEp8KoIHDyHeJlXeMzLoRdxnJOuyOO/uEb/UImFl/Apll9Mp4speI6XOY4kpFhR5j8mcgKv6ByWDZ7VeJ5Np1iOg7U9xad53VRQTby3n9XCYAj/8+0j0l26K8xF5uuodg37Z4iBFSE5wDtSC8GYPGB/mxJAWCbjy5RC+ARguBMMBotEtQntMls/yObSIVRDFdGdh4flFc1ICRw2LFnFqqCoQiplZGFZqtimo8tY5g1Fw1hXFQXrWEs7nqbJWgXWvV4/0CQsn4+CD6WRCvVUDRWzgqDzgiBAPY3A2AzuVjXF4FOqKFiCiVOcLViGrCHE6lYwoTNXbk1nanStxDAN/HbUoAQg/taS40EfZnJACA2aIzTDbJbqbG9FaGZ+Qip/nxGPBv+h3C6V2mUFWHzTIQZSAYxqMth32qUPUYvqiNhIjqlFHSJqnSlNGQFV02FmrRAkAxO8O7WP7t6kjiUG6sTBAqGh6PRt15nXnIplF98XkhePhyQMddRqXd1toVEvCHqJCimAq6NJQaxTp34Q5vvgpjJs3FQG2yJSZ5pWmxkvECM/+ER+Fz5HCvJFkv/4qk7LQ/A7NGgQtDeAqLeywZEijUdxWU6bSdm+eGUwgA+UK6Y5vwj02SaWMd3YCAawMNGDJtvQbpH2F6bipA1htVbbqi2K/Gajsvz5I0nCRrO8/GN5R4fpV7qQ3sy3tm5b74aVm1LmcP5PMQ6lez6RuydapdMo1isR/yLraCY4Rs/lTfPfGavGCcMgh3d9RBS72MM/hHFXdNF35Q0fUOq/M83jptfx4RZj/NUfwi7cgz8ieriLGeYfTm9LqP2Po7ejPpHxTuwVfo0iyHVYh04z54m0jQoEu82YZwZWpK3Htrg4CmHFhPXSfRWsSYhzaeLjgerUQvS9kiTIkrNateoVPy06kp/Jfil3Incyp291ukHBsDSjUHY8y9DN51Z0PiU+lbUsy8gBzgxGffTv2RTnynY901zEXorLHy9++3C4/Jah75oWh9i05tg7y7KnBAuWEtTVjPbBwSgY9qaY4RfQPcxZ5nbmXqCWl+gukK5LhbhhLbYUBsRZIx5YyO49GNWAUagI1IUujwgl3fTxGtQfMCSQRbjQwNE6EqANKN7CG7Uo1sW00AdlS0n7lbSRyvCFbLeeyRknjVwmU83k/LXVtCJhA7MVVpDKa46EbcnVJPbuu1lJHf8FnxMF7vmirJvWG1euoI3AND/LpVzsWAVRdTI7O8vLO8HOzk4KnnbgMVNN27KbEgzFChzZeFB3PNNcQqIvv2ZZzc5kO1eO4I7ZvsUb7O9mOxXjmRh/kn2wxDqmNYzxTDxG3011NDK8L0rVUtBqYa2L7j/2TKt/LP9G5WJzQLTRvfDtszVrSNcsl1oHNMnO/Yl2iyxKr3rycqz7P3Z4uHOLGDXNhngU7N8UmckC9tCArhpMbE8fxob11JS+7RIlej+qd9JOlCn+01LmEA2+pxHabu0D37taDsPS6k9CreM16Kvoq0wGkFsRZmebOQ6YbZtJvA8JOCSKI6AGbBi7H+J9IJEh9qncKPE85MdGp10+hPEGc8NPXBApVmc5JD6InNOWqBInRON3jYatfjQcjT5t2rXEBVH9lBValVUT8ZOL8DzxMKSK1lJIvBHZZ7qmQtwRnYWLo71+9H7rVB1Ol08c92q2uWCuViw3uUSqZE3Xuq+FS2M7LdJ6sKpaBMFHKEGdeA6B3ur4atfQsAcYfdi7zgSICbLDLDlcnQY3JaBREIwH2SzqZ8nfYBCQv2gaBJBCLkQ0IAlTe5QW1VHBcLATtb/XmNgE1SaRQXGpCB9EfH9B7HPxgSgWybEYX40/UxpN+O7V2H9Tbc6WMCSepoghQpVujiTD7QyRe3Q7RL2CDj1zvE/sItCe6VWEFPf0U5hPSannO93nUxLLC089zbGACP/Nv9FfPiSWFST4G0HhnngaCyn28Y2Nx9mUgJ9+glMEWX3nO9Up//1nUJ4i0foR7TAAiAZVQhPvCWTbaIklXpIcYE6uUqvGFoTC8ONEc8Rx3/+ulKygL78orvn/xXPFbyFH3737z19QMM8idPLjHIul2Xy6RnmnLJXkQVZQe8iIbIci0h1i0+T5bwBacGz8o8e+9CM8p1ji+78Hp+UUj4ZrX1yDzx+8hzMNln/DG3jWMDlmprcibUp8pBCL5xvsM3HNnbnCinzsu8R1WDds+0csNT9HNooVXV3t95vN3d2g2QS0V/SuEiMbCHp7RDlTFJ97GQAEDEDC/vfm91onvPuNuUOX3jq/198ql4/Nv1yYe7cNrVaClX31VvU7WquwDaOnOzXAO1LHg4Np5a6tFVumQsSt+nwJRvsvzJUhu9N01rZjqeyRtl6lnmhuUdupT6nmvD+pkHqcetW2/zNZTAluvoJNB+sKruRd2RexxApuz1X8b71VSw1EMSO5haqgati2hGreEVhJlDKKc5fLp47Nt+N8uX06Sm5uw5Aywt1XHx3RAHjiW3ZZfWOwVt07Miom+CHWp2aYPPWGdpPvq6ltWIUg9PkTdGjI4z71bjWUjfEg0Sg+NL7WmkUjRHcc0fvQd8XweH9/NInM2U0RDwRE5mwBE2ABKxAbLSFA2f3+Z56rf/zj9efQQexfY9R6rv4jP1J/jpm3uxJjz4cuGVrdmk109Ras/+7hKHpv/V8+HUXja6NWHx2MgnvfW/9X15ledICy0Wxv/ltgnXCJhQKgpBpxbbaF2k1qggkF+t27t+U7BMltZspL0Zkz0c/euZYW5bOpaLVz51TWNzoq/4/fc+Q1bqIGuAu9SQYm8um2eFpLl61iY7nd/iUJBvlIk8evyNqHt0PDOM4uh6vbH9ZkcjMzlR9cozbYs9VsTgcevxxROQpdyNp8cjzaDeNhtheMxlchoC7KhhOWZrx/7doIWEVgbAOqEpjKGr9EfXW0EwV6CbnYBbK/jtq9bKWy9sBapZId2F7FVNHLEcY8/URXDlK8qesvMUd9oLiJZ5H2xLmYK8Q29oOol615axvBci1YzrY3/GaEBuPBcCQiRGzjpZHKIowRO6Fpv0/bnOiZAXGRJk42GtamGw4npsfxcuFDF8T8RVXwYYwLc9fDVvOAF7NYga+KfUPP6IaPVwOgKuXVK7kG6zgQdRzURC9L3M6OgCfhA1aWpabyB2zWeoCTtOE+NTAfrODNmr+gf5ycfVxf8Gubc3Nusp+e+kCxcMUmIrCEC/a7tQBd3R+PdmOTleFwNBigw/FoHwE22AOIEAT9wax/rqFDsjrajQ4dCZOFBLsJY0NOWp0DRBRKd7XbDds+5KNqo9Vq2I6OPhmxpjL+xUa7fVdL+v7oT8orcJP0W3TQsdPy2gTXIjqSp15FY5vXqbdRN0zSUeC6tR7BG+6+V9wnR+haIEaoX7fXe72iS82X+nD0iru7RW9A/JDO2iZLLVepZcS85TZ1vRdvHid7GMh+nInRg9+ZGH3U2nPmHhEdrFYtFgah4SYVJnxKMWkE3a2YY6AC42sDArnLfgToQ1Q0M30trco8x6KUIGt2ThfZg6yp/AkamuRheHLTJA+Td30eZRPE/obEBGQ0VGVL1VXNkLWspsH7/0Qxs8yN9it5gq9vmrvAv9jTOk0MWax5Q5aNJJHET6Lv1tNpffyNEKLvGA8PYhTXS+xYYpvjcqAJsRFLuhyoGB0mD+jk4fEe5YFI3ywXi29U1UKmamfoXlHlIAqyUA9LVgNtNhYIP019aR2VU2DhFsKLJPH3bC3j2EJ7cWm51ky72tZyuPl/pbWMm8btxcWVatN2tJOQ9jOVjMnzfOOie9KpNlc333R2Nbw5aUoHr1GOq0g9wZ6IuXqHQlLil3KCLaKbIvgm6xrEvP3EsWMn/pYEcmyV/a0mtb3+1rhrfyVOPD3ZtX9scbh4jAZX5+2048/LyViKzWemcghSXonRAK3HfnbKk96HFbfjE7EDkT0kX7oLBBLpytoy3toKoh7wAoP4m+2Nh4P9/XgBRmhfNqgnKOIM6pDu3tijugB9ui6lKDerQ97OdN1oQh+ukN2tRJND1gu+WwPs6TZCtwuMHZSBOGMCxMHDlIJruBuWUNtAUXRwcO1g/PPN3mgA4SAMd0Kylg6Je48BAmwRhOGl5g4gkBHx+bHTHAwGcEsvbGrhdQZSgMEJw72wCbfuNBlmTlYnQPs4VLtE9EhUywYMZjuFY4UZ0ZeF3YPB2vnwjs+t3RGeX3shPL88WPub82uDtTvQaEDT4CokXmdCmkqun791HvFbqRTHjXiaU60SZ/xQ/Q54+PAOchh/jh5QH95Wh1zopTpNe4WGNH1ajy8AhiO7Y1p0X+YaIltTqf/kif57M1n1yJ4JHFtD0UXan3Bw3UkEfZ+y4A/9BSVv6IJjFKywqGfyvl5sWkXTEXTjMMgG8PkuzdHgs6Hbmmbr6AXbcezl4+2HdMWUSxnJMKRMSbIU/aH28TVyf9CUyY36kkwe02bryK9Su3rCC0fUPRu1BNz0u2sTWR1x/NAOm+gzP/88PruweZ5FpRPVldpWcEez+7rjx1/XPXlpg2VRc3dhg0XnN6tbdVQ8HuSpi4bo0ZO6fSPunOCYmyihn3jbnXjdnUcwPzdE/f2IBEcx6FXicIy6KUtoxK+gnwZezqO+h7aoTRPphk3Cy1UpcUqi/iya6naASpQQ2f0XwhG6Yh016XaCTY+wDtUw3vjyeU5R9WqgiIVq4bmU5BU8GWcL2T/kZIhKOFPIpsv6xrObRpkvheUP5ay8Vs1xOXVpVZY/v7qkQryqF6x8ipPRe6wl3Swu1TKZRb2ezdYLjmNMIuOrz60fP77+nJZOf6HZeVLU1ccW1hFaX3hM1cUnuk2OQ9P++1P0acK5Evam2wwnGwW6jWSfTgmh/1h/pO7p2W/6DuyKJYBS2a2ve+ZMLjACAb2u/lDdrQQ//M0Yl7CHxw1UzihZo4pn42OQ6BVnohIL7Qx24IOG3/7t44Nv+zbUm9z7m+iniFSqETt0IO7EBRxvUiDGIIg5vbESZHmvcTK7Ydsb2ZMNj49WNu4Klhc31h/Mr7GuabrsWv7rHl9cno6ZrwB+JLLcJnOK2WFi6+ZmTUcYcJxHBFFF1EWdFo+hwl0dxTYmJaBJmJiVLyPcKRHXA9Q7jgEx9LOiL28vLd35YpU3iivLIrIyEjovjr9S3Siu35nl3iyzsKrLP+hlsmWv8swpJ1A948xb65zGcdo39JdOoR/BeNtAd52RHbRQWBYzFpLQHVLmv1Tya+cyubuPSzkZ462ymc2UoxMBi9BWJDg8l5b6p2bt+jGYd4T3qlHLeWgwuljVKvGGd0IuCAlJPNpQvczLGmvYx9Yck9WIxen4kIRH01AAYb9TDguFsNKO+eOjZ3M8xRXoV5vKJtaZNvFEVqPMZsw9UP0rifsRkVq2a7hG3PzRG1LUIiKm1f2IiKei+uOVKKilmkHA5s08e3U3G/2vrS3zkUfWaNine5kHgGL3Bg89NLhvZ+e+QR85J7dKlx55Zetk6ZFLTOKvO1m74vWK9PhrmDuYXWgnQH54G51JdShhYl0yX1Ob3UQrhsNqst2ZjLRN4PFZYltb86catEpswEKEwsPrPE5xKUBMlibqIo8QD7yGrH4BVq2HambOEARRti090DXNteH8Cl1nqR050KT3pDAvi5LiG4KsYl6y4Iy7LYA1OrvumTm9TFwtAZCEA8eX9ZyVy2ZbQbBLQ2amoxgm9Tye1JPWkZ+rI3ZcH+rI/z3rF9dtfI0XWS7FskJaEzWoHM8Cw6IibvBdNSOvAypU0lA1Q42rdo2oqMbDPmp9IytysiTCYCfV4mSoFlSu3/d8K9DLQOFT8FIWsTypk9mmcsoomPn1A6iYBpyTgXokBr/JIgejBLgE14/a6LDfG/X7vYNe0OvvEcVln353s70DGBxTO/b/hr4wkXGiCTLmyUwn9NqfuBhFfbJl84FT4//e8JZfe5e3dPHXGq9d9u66uOShZ5eoseJ97sW73KWLd3qfdV2SfufFGSaH8hIZMSkzQ9iFCX1LAZ8KIxwwETq82rp6taUFO/0+YvqxGQbqUysMgqC1S/B3JX4fC2+E9+nJ+1y6grWJNV0jCv2KW8E1n2V68RvGf3Hl0gF5ySNXLqGA5HH1atT/KOTDTMpHfRIpVL5WINgI8G3UBva15jegrGTrrU81pyG8+mAzbYenzq/dhj4MXXk4gjwGdOPzoGY7ndtPPPRpwI6IOYyg3Ye3fD8MpG4NqI8LQKVRARIPhbdJa7SJkhZ9aPPibasXtkLbGr8L3gNvi3q7WZLBQw+duL3j2LcdEhwYXWd6B4dztlCERy1TlF4ku/aoUr4bIwoyeKvE+W3b3wZOf6e9eeLEZnvn1NPlc97ZxuLtS0u3LzbOumv7xypvQIfl4jMvPVMsd9fDQm3p9tfevlQtNltXFpeJK/fpfCIyf6IVyUOei8TrHBAHq0IaCapjQ9tFrSaBFt2IjCkSa0z4A79dpdCn5hL3iK1oPAImda/4K9lRH3irQTARnN+xVHV2nMryoIeYXg+qi6gXNeDUe3DDjw0GWcJSLRf7kQrQVR0cobVE4lakPgcJ919z426MqA3MdDt8mwCfLl+JI4BAI+LXNEK98egwLgM/Pgx61Ifs+BrxbHatFaEgGl27thdzgsPg6uHh/iA7OpzDXfP6EIZwGpXEFw/5lQMojEX3mcM3QFfHwAn/E806JH4ziRM/9OPjd6M9V01bX0e3NDPEX0WrNcfbphLvWUSSVpt6cwmPOiKj9qqx7ephq0VMChzTlM88e/r0s+8gwZmZndZg2I/1vv3kGgTjvZm117wNbqyBu8Ff14RoUGXYnFnsxWR/w7xJbLIt4vfpuJ3ZJSvQW1Q6SqSDber6DvD6vI2yPZ9lqtKuHLaojVQwZ3Fc26pWty6Q4H2EZIyoMdLw2MU3kKsQoFZ16/aT1erJ27eq40E0zf/aLH9Ec3ZpKV69SVNkngZfqwC/g/ooujH/8dVZ/sRajWSfmvYr6dUGxF8917myIeaWfem3dnfhgw5v3ZUoS662ZjxCbLtvUf8dj8/R/+5NrFJYrVVrsEoKxLGHAyslcTOyOfmdmtOIuO2lflH82GqKTHEiqSJiXmo/hc4vnFyAT/30w6fhk48R0rfxSsOu5l2OaIpYyc3X7EaxYdf0nJqk6HrNafyHSrXzb6OGkU4bS2s0gpgCedtCYYW87fQ5GFe+bm6wqqfpVbtRpm+VyCt4NWfU7Dp5K+SDWfTDD0SNSiW9mv232dU0jczJjq7QmevNpAczjokH6h/GprkxTOwRFxeJuwv0CIEsPeKRs2Wq6BXVRAe6MvGqoejR6KB/kCW/SzHf9vN+munOPbdGdvCliB6bWAYOBsPBYH9vbx8iRCUOqOMQBYAhYIkcZPeYmdyX+KWlnmuJ/qJHXENf37t6de/rmek974cxVmY249nr0p9ioro+6uuMCG/XETVmhelFfylmOblEZJGICc+FmgxcsmQofcWQgDeW9PBccygqWFcjVcOKiA6b50K35GUcMafEv8Ch5EQn45VcuHP8rOdppqppqjkb95+lbaASayxS7yk18yk8aAEj4cceL+gPPuz0ek07lwuD4IO7u5axZJg9362UTkUo/45cMwefH14ef/l7CmkTmVbpe35soxAIQmaCdY/qYTaZDtVNM93Eo8pEJ2O/qj7m1U/meefTt1TT3DoaxGx1/CTaT1xURf1JZO+mlCkt/gVKi4Gvb3TnPA9M3WP4XUCxuN0FjrRXNOxmu5E2i7GQ7dQDb//Xg8FzK5/4kFhMB81mkC6Kr4sla99SvdZqRYetxs/M7VUgFhdMvHFusr948ttdbeqhcSrkW7qw5JgFPg8sLa4aeb5gOpBUb7XuaMEiQKLVYpbznZVsdsXxuWyxWofEc9Gdrdads30EQ+rDr0G1nFN9w43aTuAvE5cEAqZaICKvHgQAUANqpMRA+HxLkTW/6CtqnQALFOwunzq1vGvKB+QWCK6c4GzZ8H1DTade3CWqvKP7P25c6Y7smD+yTX5G+I/s/zhIEiEgr535+OGovFCj2gmP0n1ikU2czPlRiKkKMpwL8WZn4lDMm3YxivbGV0e9Xn+ttLbWmwahlWFZJRIExGZMIpRWFDTaGwMHtNfTokALslor0LKBFmUh7GctqZzPFVUjd1qxFPgc6QdSznBWMpsaa0FXJP7gNgnl77rEHwmV/06KFAjcmyVeTOmOUxLNnmoLsmsZzrQc4799Nyc4rPIQ6xQcrOsPmlspXpALjnskb5lqLEnedOcNMMdk8w3NBFZPokXr9bIA1+LXjg+jVra3u9vLEl/47JE6TGswKeG0KDf2i3iTLUvyLNmoQ/oGDu1KgY3oL46F8SnlCumrgyEU62DYv870gXL3h0Qem+RFbNN7wMP1qIQQeNxsNjtlUxPsOilveqJ7nLU8LP0YuLtoHU0NnBIUOalTdBVeF5BsYgrzTb3ecNbk1/b3iVH2bgLKWq0ezdg8UvfY/3SGovo6tRA+xrQSnjkpS8IDT8ye8T8gTgt6hVjutIbQd7cKp+XtxYY5weRADXeyyaFFTXQSu6pb9dut+izZm3PLzor3ydOd7jd1VkRzh0+CESZ9RNH9pH9u9L5JdIOTfsmaco+6pZHN3WiuQ3bJEkkCYxDbm8Vj/0voT6Hl6a9/IM8lkAuo3zLy49W4G1InmWvUp8A2S382rDbdZY4SQXgsjqT7VgSq+YVFAn1BRGbJ4QSW437sBBZ6AkZBCUmu5Boidr6S4kTRWWmWTiJD9bBWMSpGSVMLpXIFi5Ysp0RdMLHBC5hV0dPFUn6zIrDoZXiIexkhUbJP5DPSd7MpjhX0WvRTnB60/FxUNlROWlp4rlD8NJvCtptRZAfuwHrG9SWNme1Lmf0mBvm9CvhaEMT2g/R72LrSQkyrNWunQeLzIHmmTdS709+nSL4D4vRv2Jo8wzIzPzhobkSwzJiZfNGAWJb19nu9adlumc9c2QiLPslnQncIT0E8m8576XXILqLYtjX5TbPpKkY3FRCNRBTzlXt3diMiY6ToIOrcBVMW1jbyczzBfqL1LbknHpTbMTBoyw+eIHeSBU425n1uD+O9hnZEERWgS7qnpj/dX4j6rcmuw6ntOrV+I7tUYocOwbT96Lp4grlAfa6R4daKf2SAuAQC6A/zihhUT2BCvGOCyoY9wrbEG4zCr8GqIsNSeJ7jMId5T/dFQ7WKjmmnTCWPNVUUZcOVVTFQjGw671mSIknp5pw37GOvPXbstU+QAAWcwkqSxPIoxaZLoizW65zlO4Gh6CleFDOqLEtq3lCMapiy5HyQwemfnXN2/a7kPRBMeCUYO4Q3aMLMJL5aGJj3tZkfGFzp6ogKSbdTAI1ifY5PpYaJNDHWeJxh6fJNnUOF2wgnu6uaLGNvVLMLiizbBWH8v38HGBcO8RiqiPkUYWJMDav4eSOjlyt6RlczYtEtitbXFxYXTzgStE3tm4NGAB90MB5VN3Ie51pfxqpgpiSR5wVJ4kSZ/MzY9xe0rEH8S2iFlIBSKcSxiycXbcPSA2z7j6RzuUa8Hk1kSteI1S+iFJxsUq3RbXyJQx0iYuzv0k9yRMzcCTlO5UUx9o5R9x3MffHMOOKfeIJr7NhbzYQvmf9hS/ITJlMWdRLBAEMAoTVRZMixW3fZiJItBUW3l02/Jp3tTawWg/FwP3F6Hx8+1HxHkzt5z0mY9onrMOPhZJPBwQiaOJ3NpqGtIVr88eEwwe5yfHAdxyatha5fT2jLg8SieWKtMTHhIG3390qbbGSeWX5Mtti4aEQZKrqrORjM4tlBMIsX3SNX3OJBvL6QIIpeJe4V58+KM19oL6GXKJ3E8Q+tEh0EeunRR+uPXmo8+mjj0qPoUXICMXKePPN+9H76zOwRH3Ue7V56tPMo/SDmUvfR5KQ7R6M4uks0rMH9qYqNtOhj6dCJUC8C8vSXP59NnNjE938efYZ6xmTs2Mx+YqvRrBIv+kVWmFjbC24tNvAgW5boXeQH3cjJnNDq91XRV2Tdz3sFP68s7VUMO7+ZZg0j1a6kzSXPGZTy6yvrGf/ia/RaaSGzoivloFbIWLvvi80Q0Gc4uRDU7bSbzmxkPC5dWm7Ki2fl7IWdS7ed7iw2TG6znc+kjdA2pEztKzETlrTXf0Z/NLMC1xFg/DUU/8YsoZ9Ev0jdkNFfJ9OpR0JiSknEfcLcD0iiK+RHS69kzuxkORJ7h3XM00TPe4cIK/s7sO7hd5DfRLI075h1xV8pplKSIAJUkDhhA/1s9ty5zKcyluFxmXPnsi9ZoiKI/hn/JWy4+CX6hvQxT00Lsmh9yttZQYjYinnEGT7LTuTB8Z52smO+CphxkzkJa2XicYvs3bYwHcg1ss3D9WPbPfpzR4m7kgiWVeLHInnkFQdWSjwYod4fO6YTrJnOM3mnXrcLj0fArvbGh1f671UURTeGARBFFBHndZ8x3GzfMdN2oZ93fEDB/eCwf9DSfWNeB6TQX8Ob+FaF9bwzdQrTnZDiKU2mJk8b9Ffrmq1pavemyBNoZ5Xyewcxth7Eh2/U72k2GqFurpbfnphjxheGiVuX43fEKv07/igmJ4uEaOn6rrbgWLv3aGZ5NRunKEcOE/nRj9P1qAR88gnqxW4zBoFk6BNOvTZ/LhRRl6ZT/8Tk1xNasfcywrV1af0hsglnpD3Qhm/qkpL2TaB096UV2TD9tCKxWvbXMpaZNn0I/rzqmemaZ1oXsyeaTbMVbBrLzRNoMZ8NPNMuZHKuadummw/yacu1wiDIZ/J2LpfN2fn7cu28HbRzmdWz+YrjVPJnV2e6qK8CN7ZKf5c5bMZChhLC5PfBsDBxtEx6hPiy9r1EDNHthHzYjB0flBBqCxKSexoPy9/eWz3V1mEJ9PDJJ+RA1OzierH0fEkgysazpiYI4vjTvMKyWk9RZR71BVmT79EQq/IvvbVYXCs5mhjI5x4RfQANSlp137oIC7LmnU1rqiF8mVdEXu3JrMTP6ZmJVQpxCk3kMV7shjkhUXQPqQDknSxe1NOxD3BJ2IjlKVNVDeI7C82wkBFSKS7lS8VK1C1kvUzN8K1UpqyoYglLiCtqLMZSOR1uV5fvRCPPOb9QaJssp6T5VP6+fLFSXFkuVVnHlI9V7TTWraxjvhhusmilLgYZzVi6cP9tzdk+n2sJxiW/17wxQ8eEV2pQ59aT7Q7dNjD8SZzKYhKGEIDHgBiTjkbou4e8IJpuobCQZweKnCkUlgrSXw/39sjG5thBd1RAgvC2VGGxkEm/lH+Eh0jB/QQW9ycOCvAN5crRPZvNoyXr3rCGElOjG4qztxc7ByXBww8+COdzpWjNfqPgSivqTX0rXP9bsqij65AzkX516CrY7ayxbeJklRrgEacblPoSQweINRtUMo5jt/BklhGXb5fvXbtX4GxX+aenT2Zydo4XO7nC+XvWz36b7Av02vhXVQmXFL+olp7M5opa8b+it5MLvs29DT9xbFM3RJUXtkvwVHThqzIn3Lt+kfNrWjmfeT0846slLGrOl5O18XfR7yZ+S4pIZ9fYbdZLzRQqLnplMZ9/7Zve9FoaXtjb24XWeGVhkgDh+CdJ2u7MB8KVxB5lakYV/+5gC7iCfRKZYcVYj3PDvQPqzqRHQvrz60k5D9BvQo9ukV9Bi61nyc+UEY0zZZfohshOy16DOnhxnCyMUJnkPuIDF118RobZyeoax4qOya2dW/OfwWmzVn3k4ddkMlUSF5/JWNaxc2czJZwVBMMRKsqHn5EDJ5XK6LLJif9fZVce3MZ13vft9fbGsVgssABxElyKBEGRi0MSKZKSTOowoYOU4viWFQW04qN2bcty3ThIrXQSJemRNrXJmcTNjNI2mTRNQ9e5HWfGaTIxWTfH1E3SNskfISepp+00bqedNlDf9xYAQcpuEhDcA8Du2337ju/4fb8vFMyMlg6Rw/QI4rK2feiWm7MXpGCIHHfwwO5QKJa5rYAjmiCV3w6X7ev/LVInJrn6GkVF5wHLRBE4E4gmUhCxnfedHpyYJ0IrGaHIx76wCzZ3PyFQgYahT1DAaWNBUtFg3BFZQ74cEQKnJZV9uIElXMPKU1oE/YFisMNIwQsKvoto22z4QVFhizza/wBPtHG8T8M8i5qacu38haQiTYZknNd1vfVtU1X+XlYKvIJ5vh+LX7R/KEoC0JxvPYcl8sx8zz/opmAuGOvopLjDlowaw1lH17PDRAFtm6hRI1+TPhw0ZfxNqZYnSmfIl7d79M5NonWCN8sPD3cxEOpOoTZqlA58oCn6/SSKfiM3NpaT5URr4zWulItls7uz4oIcMAVWilt4UUMbu2fH2ETrZ6hZcN+XG83liA60KNsJHoUMaVHs9Uv740UnCo0pgCeR/AOgpkbDxzo6Bxju/TGMy9NO4kcyes2ms7JSr9dpMAT4bzxE1zevkVfZcTbidaceX1taMtSmZjSblMK9tbnaqC/He3yaOvUiwUzWZgH2XMgf5ULxHqllF1t+go4K3qYFQMC97Qv9jGYoopTFAVaXjegsGw6usudOnDjH1g11BcwDEjtYHWQl1UAK2VFZ0HJV4/6Q7rp66Ey9fvpKOn3ldH2dkuaphgvmftdQmS285ia1NfYD43KHZRyC+4EBIUVqCFJ11cZyogCW3zEy2Lr06sto1Wk1nNxEPhGLJfITuda652RGEDOScepOmYhkmyjukc8VhfzG84byI4teZiQ/5N1r5zwv18uhCFbeuK9jYhpBWxE8oj/kBfIBmeSJlrm+1GjWyWNprdf7kgkPrSw1+/qcBmrMe+tgeNlT8p6dh6W3dV/PUZbfObCiFWiyKKKm1+xu4B45f87COUxT10W9LrXVFBK64p/o5lw/jzHwcUd9wnwiqaP1hCmFxMnJyCEzEY4YcoA/LLLOwao+4OiSQD2tmtFaD8fDZjy0OlgYyvM8i1E6m0sJAU0PR2Jh1vx5xGGJHHNXUA+RsyhSWLjfNRIFQ9Jy4CLOaWI0Arz6kfDhBG/zEstaPG8JUtGMmWY83KujQ+5lsPCAZcdHtFl536yy3lxebg7t3z/UbFImX6LlLjXqk2cmvV2HFw/vYnb6n/v+P/8zGLvfwO/81NobuZzXy+UeW0KFPA1S+fmyWxvvAMZhMBjIV3q8WFY7brxa8yi8nfQatBJ3pXu1v+KDXKJQqAyIz1p5O1k8UEzadnJyqK+kXZIGY+kSO7KatOPWF7iBSqGQUAKfC98rufFMsZghx18yRp3hyaRtpUYyqeJWG/wa6asxmuHPTyFGkTlE4vTAfGMRlRJ3A+meOLGndtvZX7ulfmNx5L0njr79qDtb63tPNJMZyWS8++64rVKrF4tH528+8vjherI6W0gXM5liuvusPoEe83OYUrLod3/ySP+930KXyOqebzLXj2FbGBLgiWmz4gCEXKDpYdvoQWCMoTTe15jGNWZpjYzpS8sNSHBCptzmChG7INLodfiizB0I4I1l1CBTOqB+nS2gb3dM/wJ6kWJ9aLYm38QHiTMByQOeY2qUJlM0blfVOKrllYQsa6GgpIdVFIo7CU1WHVEcvDWbMM3qkaOyUzlWLh9DH+x/yy4JS5om6URNCLKqqcmBgiRYejZx9EjVNJ93biyXb+yx/W6ir9I4yAWwkUNu0xJHZDKDx5ZIx5ApDhi9uS5lJx6APMIAWqhN8bVKlQaKGxzpfyUOPSOLTloWiZ6i2rZqhUMa6a4Xb+AUJ5MLu244l3HODJQHyPsHnV+aejSmm+Gg3v1l1nRdM5tx0L1GOiwaOKzJrCCw5PbDCpKUeTHgWAFOkriA5TzuwMkGFjq/lDhB4CQtGJE7vzTArG5YTi9XrkKxbrgCSFWYNbisH4JH7pj08339uwvCrYubyPFazX+fGz6OvMY80sPF2ePC8damt+v3kKO5nXb4FdLGcsBlQEc6MsS7PszDbjO9g4kSR4HuHT1EU61yD9gHR0YOxB7gIL/CAftBjnswSnMtZGR5wiEbzoQs05+SjTD5aJtcCFwo7exynk+Q20n70k5sBUgSxGAciiT7+vOlbNWJSIoSMIimaYQ0Q5RmZjImWud5BcwTT9x2aDgq84KkaEEzGk9lC7tKXrwnhsYvc88vUyqRCqgKWaGfUYIGCuT+RRfT5AXyx+fdvkG1KUdDTjgS/IUXuC6Sx2wn85Ks6Opqvr8vGQnrPXMhpihBpkblkZBne2be9tN9h1bK5aWlZPWO6gLZWFkrt9YgnL28Vka0X3T0uKXtfA01wETCyEHGCpgW3LZ61ERMa9UjR5NRYoW81tbiK/S11Cay6fhY1tt4GDK/dOIufTSMSXOX45U10K5g8fyK02jsCHek1L0bzW6//TZ6nNosimC9A32Y2ifG/HwC2/c5PytVbsDFKbRqpbAWDMZNnPoLsqkHgk4Y99UOP2LnzHOXzpk5+xH0OMRtc6yg0QQJ3c3WRxZvUPfMze1Rb1hktuLt6j5eBmVtL+si5xrTnEdME9UhC/MWD6hG7t0hsuQQ1Yl7GdMKNmlNRFrAFGTZJZ0AUwUuIdut1mxjO1X+qwNx9awxhtSzanwgPfaUDzD8vL/3T+0ve0AF/+h/c9L/Ztn3C0X8vWn/O6Y37kZjksxuyK+6bQY3aZwJzrngqoGomFzeDz2hjkH4KIV8hbaEqDGRqliI2XKrDLIav+uOosYLwvjSqBhFiOV1sfS2iqCznL7vsbLAs7uPHPIkncfSxNHFKlE3VHLnW96U73I8a6u6IsgooDnqqMjxCS3IYsGQw4E0r1eSokB2gwYXEsUsFxSDvXGRMmVqI0o2rtmQMzqNIHqq5pLxor58oW9lpe/Ccn3y0VPRS5eipx5FG8vmox+bn//Yo+bZS4FbL09OXr41sM2fIZP1652j50hme/mB68u/ruzryu2WuYQ2YPyDgGmfW8Emcw8djsA5RpPb+sGzzY1YOh27CZHZABuYTAlvJvvo6gF0UHDjenxAOHhQTqSseNxKJeSDB4UB8qHbnZ8pxjgDyHaTUpO0GUq2rfYjN0vUPNuPOvDHwAimnWzHBnYCpYCzY1FvER2n2WjqWoDHmO8bTfWsEjpiVNXMZMydS8h/nvnvZnOVlRVRDhCVxrK6a8Uga5PtznPALAXcqFkM+b/JI5qGCof8VPX19Y8Ui1L/mG2P9RNBdn39PGxJwyUp2+ufBD4q0GhrgocLOD8NilbErnkBMhdMsW7FRcm/bG14q8h55tjMC+dXB35wZOq5wfHKYhEJiFknL6f0/mK9fvzAxdJv9wfM+tLeOuePCazexrF3cQaFHuuKANw4vkmb/kP8LLr7jjuKd97ZepHVWk8/SV/oSOu7yP3M7aXbyfu30EutCvr4uSz5Q3e3nn6jcswt6GeFI+Vw5NxmT1lXaTF/y2ovwsmvXqYv9IxfSOuP/FJaT6O7aUlMx6epd/Py5WmkYq3i2jXLBVBDIV+hhAi4za1vV/wF1/XsYPtqNns1k3nx56+hVy+LzpMJ8cknw4EnY9LlPzx52l08OXhywV04iVAGZ7OZuey/wFUcdHCiVEpgB909GQ5MTMSk4dbayUV38ZR7cmFw4WR3Lnuduu5UNOC423Vda/8DjyI6d6z/GHm3PuxX9lXyvnyZ3PhL/3PsWO7YsavtuoZXevONyzE7FU1Kg7ouANEfYG5BCidlfdwv5uOklM/RUuh5XyL1fSstp/VZeqOkFCRups91sAedcvJg9doiEoY7cfOu75vP+rYKTARy9NcnT5HacxdOu6dPts6yWkbLjpQyRqvyTObLz2c/hF76PlTvqQH4waknoMir8GzbD3grN19n/n69SGgPN3oS2aL+awyR/HdSFvgggGYvNo6HvGzIs5DbRfUjZ/Uas4rm/UBntA57DR+gD4cp7fH0Web1eCwpd+UWw0+W4pp6GX86fJUwU6O11eYyIOfja2hto0FEmaVVb7WBVsHj3IToIZrdse60Xz0cnB32P1obvuW4G2sP8F4/dsTyGpThxnKaQP6BRgF061B87+YmWqW5QppNuvIcL16OM1v8optML6YXemqe8lRQ+1LFz1JJlHJvjb4o5eZa69m4nx+XeUPeLdQmL+itE6DWo2FINLPG0vIKWllvEJHLN29Tsl/for2lQ1Dew1rOHSsh6kZspzkeo7ZICwL9DES6mfd5Dqsyx9m2VlcNjxcl/NOqdFzkDaRC3kw+oipzVtBQg1dlLG9ID6uSsrzRLueb6G8oVzdEooylECWtAm92hPJVg+uPaC9EciKPE831lhN3egpq/QcA+7olWW863VvSFiZjkwmSeyozpyh+HVcofxAu1KJTRCusQQZ2opzSFOxpSHdadW24JAOBQdknyjajnp2tULtQxcO2P0f72WLsqECd8nYbjcAyTmQgELac1hOO6RrhiIO4vKBpX9FiQp5Xta+IghL69AsS5vJcAL8giWyeVURuVQ+hFhDIWAl8VNFNfV03LaG1oeHoN1RpHWvo9qMIEwUSH3nPESk86OKjrR+fJeecI+c+q8f4OVZdn+MMfBfGHFlLZwXc+rpSnycC4fFIgguqDd009REpFGlI6pExSVUZzccksAy1rk0SufAYqaMLzGPMO5h3Me+HDMOICNrbasuuQqhXClXdqJ0nX9ljUbBY1+xodZQdENMsBnbHUVJrmIi3JXB7TIP67Vo2iDKAcNlWlX5iajKliBGPTOJubXwggPJVXIaDa9TBDZioaSC8qgG1/vX1+5+Bwol6H/n3ckEkqkTU5Fk9wiocy8WiPMdLyKU7feHSWayjsPZgVRM4PlQYQsGArpypCImtur8vMXlm8k8LLKcYkZzKIz4mChGpGEveU+REpRS3kryOLib6AgENXTyCw4MD+OiVw7CWjv5wsJ7sP0n+P6KlWVEPBlUcSl7gkISwjESWHxq/wGEkG3g6bDRN7+whIyDbpczxBVbkpZvNkDV/IxkJj1tunwsgrRkdiWhw8jw5Hkn7zPAldWQ6KAUi2T3OkHZKE/jbT53osdP7/D1EDiUaf0XEFbGQtYjqWq2R0eSOM7ehQGsF8u989p7n7Oqx6k+ei9fqnsUI0AbomGuTUW+IuZHaS3zrJ6aRpltYEwvna/ZOd1pHtEkh0i3y5CkRnYw844FpEBRJLybKj0caCHJcLYrto/uHzSOUd2Q1mnqo7Dy0SrfJ4uWFvlMZLqQH8xKRsYKjlrU7RDbkfEgPsdMRsYpNhOqKNLvqNfwjrMaN4+0tGGyTtVoylA9gmY/JIU0LKXHSrwL9wbFwOh1GW3YhP38qxcWjnuwAYFLHHo1Jz3L+/bnIq2tGazWg1PlCqXCuztux6D3IsYPKZ+UAi1YMzXHUAFyAahhvbv1cNnSlq289T8qR20wTjIlDEHjp1SqkdQN/Lp1CwN8wG14olW78/fzM0p4TqDTT37/U34/WD7W+tWvXu1793oTnvXbo/PnzbT3hQ+ScSZBycvtRO+d2Bzxo0yzclRJC569IH7CyWesD2ZFUKrXvSjTDZp9R6umRdNVOp+1/rmaybNay0+1z/hh9nuYMaDt3wBMDCIASaq/2k+5fQjSVeFsHt6s1EVfRj81kOrNvZuH4QV054KV2y7Kk6dmhSNS09fxb93E1N9KvZxJqKoF+py+izUzOFIaG0CDqTyJOLOeQivRd49FimVUVtxY0cDAX5np4nCLQDinrrg+HtDqub+8XGax77dUWZCjazmO+lawHxqZ2PqYA3aCggTEfPADADtB+0MbUhScuTNHFhs9IslxMjxeL4+liysr1KZqAsVIwg+FIwMJKSFZTOSuFmOn2MVMX/tcnjHwMCzQImRcCMsZCbcrdw/E35PL9g/E8x7+tUibn6eHA+xh6npEoPvRXvWDml7/KL/0ql7aFl++jviDfGJ9vp5z1x4VuhmPb7c12STGrHoRedLJwBtQVRdHIdWqKghwaWUFDLwLqKuW9UQPP1gRTBSJD1RRqW/UCY1WIcm7BzBztEGPgPPBTe5RsCcxB0Fpq3gekqcFkKThszw0W58dx5eZbXrhlQpnc9hlyBrxY1EumB+eGl5a8JXc8Fh3ry5C9bpmvoj/3ywQ3hw0oRz9altyjmSM9BbCOPvUOWHSEkflxsXrLLZPy1GBid3A4PtdXrO/4BH1i8PBwo+GOx63xvkzrz3r3tu51hXKlGDRyFuCUHTP8OjjLl8uoXF4BgG4ZoLq9MWMgEQL7yYHrueRciGmnkm1HNezh++jYwl3KZk7NvtXadlnfoWjmryFN0kBw1qTWa5Kmfd/PJrMUMcJkCgsb7eQqncPimpSZL89nwH4PR6742X0fTYnxIAyfwbjIbOnnKzTGIANZddpBJBQuXwu5eAcglFxZE1STphpYXlqKb0E1UNP3Nj8C7g4PMqWqyzSurjdHt+lza/aesGaHoK12ZxWi6qx2MnGnzjyEmIe2tUOIVr+uhgsVG22krBY9B6pbqdYmZNmDvWuwHF3rxtX/hFwHsCdVGGCpoeZnPzcjRQvUgIii3fntHJBSiF0nZHnABToN9J1d75w9vG84JwR3zUxd2bcrwuu8JP2dnDDNhIknLmRHj8ad0b27+wL60dHsBaTv24vxULaqRvb1JbTBTEqwBFWbkU044At7xw/GUm5yLOmM9nFmvxE7OL53e2xv8PrY3lo+jboOnR7j5Bl5Xt4jh/tNM99r5Py3j370TXI6HE6He2UXwIWADuOLE6EsUYRq21AiXn0DxR0H8mHHEcRdtJqbNC+208MZDOcJv4HuZvco1O3H4dEo8X+dAdZj/43WKY4XNDey+l7n4/jMDNMbH4D99olcM2+6BaFL9wqmXeo6pvBScFd8WfM0MiKD/uW3SPV3k6KujJ2KxU6NKbqYRMx8axP1B5aWHKxKkopX9g6U2N2uu5stDfTmhghQK/Pw6/TocWgJVNraomKjzj/gXO7tu+vDJzKZE2+CxR2+rdgDAoS1FcRAv6GX+Mpgf2FwsNA/OE95TFOfcRzQXfV2m+/lPfRjf/Yy+8k4c4w5/jq8lURV7rAgUibEzkwGiiTIlu62D3b+ghILNenFN4HcEtVbq04dkBWt74oYaqvYaCw3my90d1Z7v2mgOh2DVsFsMbVU92Otm34tO06zLikSeTvA0y8B0Fvq+tL+Af2EtHXIIUw1EIuMmbXqOK65RJD9VL8k3U8eWagkWVeu9F8Jox/1Y0u6/79QsyT96D2FK9Wtdv0yepm0xxnauylOiegwIFURVYrmeWx7mSjR5XgUlKMIpgRHbXoqGAVonAT6ZOqu++4c51JCZF4qVybHR8e4xWCc19Rw3/SQxUckrAtExTBY4O7lOTYQicdkng3zAr8LeHHvJwfsu+u+UVyPCMk0OdkH4xxiOTU1FXfTFiY6dpYXWSwqLOaJKqsIWAjziLUENgA6wrVrRE9EpE4OMHVmkbl5h0wluHBLeSI8uv6kPOADTMm1+4ghdxwUaaLagXg5NiBGvTS7uwKoTJo4AgGgqJam37LM7MUrF2dnH3nvxdnW125KibwoWnEjkH7rRPFkOqAbAi8LRliWj8tYEHlBjMYC0QFR4EU7+3Vwkyb2l1/ZN2d+52Aunybda5ac6+J7HyGLG37KIkNHLBrdk0myimapmhTEMdeuJexXWJZog0QE4lAwyN6kISuUdscnpt+WkpIPHBofeueqJm/ZHeHxAhaiztzE3M68ZUdt7EwINl6FqhlGb1w1/i9yo2QmgpqhiFWX9ISCCRXTrZdH3kduAxbXeqRL7XhCILVgRnWj75aKeyShq7rIyZwWlKRZDD4CnnzpRE2R54Ro3wOHeIE0klit9am7vOmXJ1IZJ4GYufaJZx9BxS1xt/XMt1hdQ2hoPBlHsmIqmhTgonlrLBZ5gWUNA0RGsjz+pU/roXA8Xrz/zp+2fuacnyyd+GNV6vSBT1P8WIGMyRTeFvEA0AqT7TRbpWg4sPnYkIIA7AZf4owJ0n53zXCcwO1ThZlvcBwrwsYBdJqV+QkB8wvoQUUSZu/nRUF5YIXDnPLrD/ErAmkMT22LzTV3IlXyfrRBzxx1JLeYO3g5t80J98WHM1NPx5iOb+bD6Ema69bGcDj6zdwH4Rj0ZOyVhzP7u+X9CUWfQsQTOMpyFIIcafficT+djEDkgq9KyUpipP/USS1CpunOTlKSrjHvQpeSkgBJW/iItv/i/vaOlNw7PfFuyDXwfwVB8YUAAHicY2BkYGAA4lWM4ubx/DZfGbiZGEDgtpnQKRj9/9f//0y8TCCVHAxgaQAQawqVAHicY2BkYGBiAAI9Job/v/5/ZuJlYGRAAYwhAF9SBIQAeJxjYGBgYBrFo3gUD0H8/z8Zen4NvLtpHR7khAt1wh4A/0IMmAAAAAAAAAAAUABwAI4A5AEwAVQBsgIAAk4CgAKWAtIDDgNuBAAEqgVSBcgF/AZABqAHIgc+B1IHeAeSB6oHwgfmCAIIigjICOII+AkKCRgJLglACUwJYAlwCXwJkgmkCbAJvAoKClYKnArGC2oLoAu8C+wMDgxkDRINpA5ADqQPGA9mD5wQZhDGEQwRbBG2EfoScBKgEywTohP4FCYUSBSgFSAVYBV2FcwV5BYwFlAWyhcIFzwXbheaGEIYdBi8GNAY4hj0GQgZFhk2GU4ZZhl2GeIaQhqyGyIbjhv6HGIczh0sHWQdkh2uHf4eJh5SHngemB64HtgfCB8cHzgfZh+eH9AgGCBQIHQgjCCsIQohQiHSIkwihCK2IvgjRCOGI8Ij+iRqJOglFCUsJWoljiX6JmgmlCbcJxInPid+J6wn9ChQKIoozCjsKQ4pLiliKZwpwCnoKkQqbCqcKtIrQiuiK+YsPix6LM4tAC0yLZAtxi34LnAuoC62LuAvTC+ML9gwTDC0MNoxDDE0MVwxjDG+MfQyQjKCMrAy7jMaM1oznDPYNGA0ljS8NM41GDVONbQ16DYiNmQ2kjbmNyQ3SDdeN6A33Dg6OHI4ojkcOTY5UDlqOYQ5yDniOfA6bjroOww7fjvmPAA8GjwyPJg8/D1OPbY+ID6APtw/KD9mP8A/6D/+QBRAckDYQQRBQEGEQdhCGEJEQrpC3EMOQ1pDkEOiQ9BD7kQ0RKxE1EUKRURFnkXARehGEEZURmZGvEcoR1BHaEeKR75IIEhASHBIpEjYSSZJWkmOSchJ8koQSk5KgEqkSs5LAks4S8hMrEzKTUBNdE2eTchOEk40TpRO4E8gT1pPlk+wUBBQQlBkUIZQ3FEKUS5RYFGaUd5SUlJ2UtxTYlP4VDJUWFRqVKAAAHicY2BkYGAMYZjCIMgAAkxAzAWEDAz/wXwGACE9AhEAeJxtkE1OwzAQhV/6h2glVIGExM5iwQaR/iy66AHafRfZp6nTpEriyHEr9QKcgDNwBk7AkjNwFF7CKAuoR7K/efPGIxvAGJ/wUC8P181erw6umP1ylzQW7pEfhPsY4VF4QP1FeIhnLIRHuEPIG7xefdstnHAHN3gV7lJ/E+6R34X7uMeH8ID6l/AQAb6FR3jyFruwStLIFNVG749ZaNu8hUDbKjWFmvnTVlvrQtvQ6Z3anlV12s+di1VsTa5WpnA6y4wqrTnoyPmJc+VyMolF9yOTY8d3VUiQIoJBQd5AY48jMlbshfp/JWCH5Zk2ucIMPqYXfGv6isYb8gc1HQpbnLlXOHHmnKpDzDymxyAnrZre2p0xDJWyqR2oRNR9Tqi7SiwxYcR//H4zPf8B3ldh6nicbVcFdOO4Fu1Vw1Camd2dZeYsdJaZmeEzKbaSaCtbXktum/3MzMzMzMzMzMzMzP9JtpN0zu85je99kp+fpEeaY3P5X3Xu//7hJjDMo4IqaqijgSZaaKODLhawiCUsYwXbsB07sAf2xF7Yib2xD/bFftgfB+BAHISDcQgOxWE4HEfgSByFo3EMjkUPx+F4nIATsYpdOAkn4xScitNwOs7AmTgLZ+McnIvzcD4uwIW4CBfjElyKy3A5rsCVuApX4xpci+twPW7AjWTlzbgdbo874I64E+6Mu+CuuBvujnuAo48AIQQGGGIEiVuwBoUIMTQS3IoUBhYZ1rGBTYxxG+6Je+HeuA/ui/vh/ngAHogH4cF4CB6Kh+HheAQeiUfh0XgMHovH4fF4Ap6IJ+HJeAqeiqfh6XgGnoln4dl4Dp6L5+H5eAFeiBfhxXgJXoqX4eV4BV6JV+HVeA1ei9fh9XgD3og34c14C96Kt+HteAfeiXfh3XgP3ov34f34AD6ID+HD+Ag+io/h4/gEPolP4dP4DD6Lz+Hz+AK+iC/hy/gKvoqv4ev4Br6Jb+Hb+A6+i+/h+/gBfogf4cf4CX6Kn+Hn+AV+iV/h1/gNfovf4ff4A/6IP+HP+Av+ir/h7/gH/ol/4d/4D/7L5hgYY/OswqqsxuqswZqsxdqsw7psgS2yJbbMVtg2tp3tYHuwPdlebCfbm+3D9mX7sf3ZAexAdhA7mB3CDmWHscPZEexIdhQ7mh3DjmU9dhw7np3ATmSrbBc7iZ3MTmGnstPY6ewMdiY7i53NzmHnsvPY+ewCdiG7iF3MLmGXssvY5ewKdiW7il3NrmHXsuvY9ewGdiO7id08t8TDSMY9niSCpzwOxEIuCLRSPDFTGkUitqaYHmTG6kjeJtJuLhiKWKQyaOVspCPRzqGS8ZopcCRCyRcLnCkrjbSiUBALu6HTtUJBwoflQKKyoYxNOaCNLUwywloZD01JSVePK7u4la7uxne1prwwy2qtShMzI1LT4DJNFI9Flat+FnW4kkNaM61fpEs5GWRK9TZkaEetXKDEwBYw1rFYzGHiprmhpRmeyuHItnOBx8V7pE7UeMRv03GTx1yNrQxMnafBSK7TOaSp3uiFeiPOV7mFrramvJjpvjozs6TlTMeLIW+DG1vaja+2ZwSdHGeJG+nOktWVCQuzRMmAW9EoRfM8tTW+wdPQ1Po8WMuSSp/Ha5W+ECn9KNXtKx2s9UIx4OQSjb7Wa05pxYGVfhaGMtCx6fHAynVpx3tMRf1+kgpjekoP9c4ZMaHxdGTbdMQ5cRaTkqWpbKDTLDLLM4JUijg0M1OGqc4S05kKkmhmfipoyWJ2vtUJHdyM7TalhZOrNvqZVCGBdj8zMiYLIx4vlDghz9Nxt6QbmgZr/cxaHbcCroJMcavTDkGyj6dukxoloQmRSLmT1XI4H/CUIJ2CrdDDTbViqNNxKxgR7fFU8GYO++59jyhYRSFMJCElk76mo6sG7oza9JuFPcPXRdjJMR235n44CxcCHYqesdwZRKcd6MFAiA4lEp2SumBNpHUiWRSbLm2LTSnqes4lliaMDsN5ysJEkHAKyOlsCsrx4oTRzgtulyfcrJG5pG/7Fkmhc2UiXHc2CDJueXdR3A70ukh7MqL00wy5GfnVd0JueZ8byh9huDghYjPRqZ1yGW3lqYhIW3fC16XYaJSsHgqzRo5SD6WJpDENF7luL5uh80eK/LUWZUs6Ep6SLR66pFhxaMX9aOcBlDaKtDQrcrG9PCvIM04h6WsVdkpMXrC2oyD+/CYRvDiRxs5/Jwrz1O+cpFtIaCPozEv1I6GSckTGIVm3PGGUXG2kUzEZt2ResFCwW0izHIzL1a1JG4xETNGQbwWJlJ18VFMetao5YaUSnVn3zXI/Eipqw5Qno+WJwFAhsGLTbpVQ8Znsyq2ZtmLPguTHSF4UcV9vSlvo66UGCl2lyFZyvVJiU7km7Igyx3BUqqWTV6I0zFngQ6NcQqbKoYx2LXWh2J0IXBUt1axTmdAN+qJMjDRNEXGpXOC3Jmi16mFbRH0R9ngWSt3NcVGmi5FkpK1uFZgKayH2H+iIzUCkifVuWxGb0jbIYpFSXeoMeCDKPN0oSYOCPXThVxtIRRMrA8WHlYHWYSffvB43pHhCnFXtgpA32YUCD7lSIh2X83wslsQfTLcglGlsZsohb3TVEbPgirMJUiF8bdw2Q906nKw6pCRpakOth0o0h6kM/TpreaqvjTh1O2l9JLjL1lV6UhEbyZA8qznSWTpU3JjKyEaqRm+SPibDlre0F6Q66eQw34cdBaHjor4olVTdyeu3zUgp5VC8c7WcyyhjU/j5Ar2yRZKX4VlR/k3jLGhP4WrLxd1mL3C5S8YD7YLC+VPFkU4ehj0+IOO6Bek7Bxe1nDXpYV3URDVqASlJ0WNMKprOJG9EU7nffqb6DeeZ5JgxiUzuLB2qFdxK7Te/UZKFvMqX2aUW8ZQKQte3hL2ix2kXzLlGK8cuJxWTig5hoWA6yFxHupxT6ZKg7xFEITHUAvDQjISwhS4XcsUnvLc0IzGkzEDdWoM0Zc7cZglWJ2hXxaFWJN3Jusn1SNLeWFGlfjEzzYhEY+9THlVctqjH5F60ha2iqyUnqsXaO0qs2zohTxxQFhZpI+EqsuSazYRT/XcFdz4JB23C3q8pu1cSYU3Vf7mZ+GUKaoFdJfQ77jdrSv3CFoueuedzkggbxL1nNEuwWnGommh6uenKFplD4eiSQBFXTd9B2ZE09ST1n3XPdR6MG0mqwyywpkn3hdDfAmqpoF7HVuiha3nCbDgz6Voh51Njqr5naBiyJ8yU6ObRqBPnGKZmhDv/pqGS4lv01gStVj0kgRTKB1othzSZjHbOUTOKlmxa1Eql1u9SjQqqooMwNGPeaFM3iXZ1pUULo2IVJXbc9pDiUwlS5fCIq0HNl91xleoblSiT0SGMROqPrTlhiz6Lu+tRHkFLU54H0YwgFEpQIc0Frh2efcPxLW/4/t2/UfMCO08e1KB/3121Le2nJBeTXDWdJ+ftgPdpO8qivvHNf7PAWdJ2iyHXcebXC1yxtFdtKuexUT4qq4TNqGY3XK1tuwcZmL+R4woVI72dmmZKUobTmoPANdbusrC7sEZlimK8lSUhz+9atRzWii5x3YVv03uoP+YJWp3CXQSN7EtFXXqd+raYQmdpQyhq3X375Vc9EZS30pVSoMiV6G5Jm7pcilxK8re9HaWE7llDtzEurqevbqTuhkiXkWFjg8qRoRtx1zUF+U3C+cCEVTbJqvo4z7bz9Ky79Jj1xdzc/wARDj0u") format("woff"),url("../fonts/dashicons.ttf?99ac726223c749443b642ce33df8b800") format("truetype");font-weight:400;font-style:normal}.dashicons,.dashicons-before:before{font-family:dashicons;display:inline-block;line-height:1;font-weight:400;font-style:normal;speak:never;text-decoration:inherit;text-transform:none;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:20px;height:20px;font-size:20px;vertical-align:top;text-align:center;transition:color .1s ease-in 0}.dashicons-admin-appearance:before{content:"\f100"}.dashicons-admin-collapse:before{content:"\f148"}.dashicons-admin-comments:before{content:"\f101"}.dashicons-admin-customizer:before{content:"\f540"}.dashicons-admin-generic:before{content:"\f111"}.dashicons-admin-home:before{content:"\f102"}.dashicons-admin-links:before{content:"\f103"}.dashicons-admin-media:before{content:"\f104"}.dashicons-admin-multisite:before{content:"\f541"}.dashicons-admin-network:before{content:"\f112"}.dashicons-admin-page:before{content:"\f105"}.dashicons-admin-plugins:before{content:"\f106"}.dashicons-admin-post:before{content:"\f109"}.dashicons-admin-settings:before{content:"\f108"}.dashicons-admin-site-alt:before{content:"\f11d"}.dashicons-admin-site-alt2:before{content:"\f11e"}.dashicons-admin-site-alt3:before{content:"\f11f"}.dashicons-admin-site:before{content:"\f319"}.dashicons-admin-tools:before{content:"\f107"}.dashicons-admin-users:before{content:"\f110"}.dashicons-airplane:before{content:"\f15f"}.dashicons-album:before{content:"\f514"}.dashicons-align-center:before{content:"\f134"}.dashicons-align-full-width:before{content:"\f114"}.dashicons-align-left:before{content:"\f135"}.dashicons-align-none:before{content:"\f138"}.dashicons-align-pull-left:before{content:"\f10a"}.dashicons-align-pull-right:before{content:"\f10b"}.dashicons-align-right:before{content:"\f136"}.dashicons-align-wide:before{content:"\f11b"}.dashicons-amazon:before{content:"\f162"}.dashicons-analytics:before{content:"\f183"}.dashicons-archive:before{content:"\f480"}.dashicons-arrow-down-alt:before{content:"\f346"}.dashicons-arrow-down-alt2:before{content:"\f347"}.dashicons-arrow-down:before{content:"\f140"}.dashicons-arrow-left-alt:before{content:"\f340"}.dashicons-arrow-left-alt2:before{content:"\f341"}.dashicons-arrow-left:before{content:"\f141"}.dashicons-arrow-right-alt:before{content:"\f344"}.dashicons-arrow-right-alt2:before{content:"\f345"}.dashicons-arrow-right:before{content:"\f139"}.dashicons-arrow-up-alt:before{content:"\f342"}.dashicons-arrow-up-alt2:before{content:"\f343"}.dashicons-arrow-up-duplicate:before{content:"\f143"}.dashicons-arrow-up:before{content:"\f142"}.dashicons-art:before{content:"\f309"}.dashicons-awards:before{content:"\f313"}.dashicons-backup:before{content:"\f321"}.dashicons-bank:before{content:"\f16a"}.dashicons-beer:before{content:"\f16c"}.dashicons-bell:before{content:"\f16d"}.dashicons-block-default:before{content:"\f12b"}.dashicons-book-alt:before{content:"\f331"}.dashicons-book:before{content:"\f330"}.dashicons-buddicons-activity:before{content:"\f452"}.dashicons-buddicons-bbpress-logo:before{content:"\f477"}.dashicons-buddicons-buddypress-logo:before{content:"\f448"}.dashicons-buddicons-community:before{content:"\f453"}.dashicons-buddicons-forums:before{content:"\f449"}.dashicons-buddicons-friends:before{content:"\f454"}.dashicons-buddicons-groups:before{content:"\f456"}.dashicons-buddicons-pm:before{content:"\f457"}.dashicons-buddicons-replies:before{content:"\f451"}.dashicons-buddicons-topics:before{content:"\f450"}.dashicons-buddicons-tracking:before{content:"\f455"}.dashicons-building:before{content:"\f512"}.dashicons-businessman:before{content:"\f338"}.dashicons-businessperson:before{content:"\f12e"}.dashicons-businesswoman:before{content:"\f12f"}.dashicons-button:before{content:"\f11a"}.dashicons-calculator:before{content:"\f16e"}.dashicons-calendar-alt:before{content:"\f508"}.dashicons-calendar:before{content:"\f145"}.dashicons-camera-alt:before{content:"\f129"}.dashicons-camera:before{content:"\f306"}.dashicons-car:before{content:"\f16b"}.dashicons-carrot:before{content:"\f511"}.dashicons-cart:before{content:"\f174"}.dashicons-category:before{content:"\f318"}.dashicons-chart-area:before{content:"\f239"}.dashicons-chart-bar:before{content:"\f185"}.dashicons-chart-line:before{content:"\f238"}.dashicons-chart-pie:before{content:"\f184"}.dashicons-clipboard:before{content:"\f481"}.dashicons-clock:before{content:"\f469"}.dashicons-cloud-saved:before{content:"\f137"}.dashicons-cloud-upload:before{content:"\f13b"}.dashicons-cloud:before{content:"\f176"}.dashicons-code-standards:before{content:"\f13a"}.dashicons-coffee:before{content:"\f16f"}.dashicons-color-picker:before{content:"\f131"}.dashicons-columns:before{content:"\f13c"}.dashicons-controls-back:before{content:"\f518"}.dashicons-controls-forward:before{content:"\f519"}.dashicons-controls-pause:before{content:"\f523"}.dashicons-controls-play:before{content:"\f522"}.dashicons-controls-repeat:before{content:"\f515"}.dashicons-controls-skipback:before{content:"\f516"}.dashicons-controls-skipforward:before{content:"\f517"}.dashicons-controls-volumeoff:before{content:"\f520"}.dashicons-controls-volumeon:before{content:"\f521"}.dashicons-cover-image:before{content:"\f13d"}.dashicons-dashboard:before{content:"\f226"}.dashicons-database-add:before{content:"\f170"}.dashicons-database-export:before{content:"\f17a"}.dashicons-database-import:before{content:"\f17b"}.dashicons-database-remove:before{content:"\f17c"}.dashicons-database-view:before{content:"\f17d"}.dashicons-database:before{content:"\f17e"}.dashicons-desktop:before{content:"\f472"}.dashicons-dismiss:before{content:"\f153"}.dashicons-download:before{content:"\f316"}.dashicons-drumstick:before{content:"\f17f"}.dashicons-edit-large:before{content:"\f327"}.dashicons-edit-page:before{content:"\f186"}.dashicons-edit:before{content:"\f464"}.dashicons-editor-aligncenter:before{content:"\f207"}.dashicons-editor-alignleft:before{content:"\f206"}.dashicons-editor-alignright:before{content:"\f208"}.dashicons-editor-bold:before{content:"\f200"}.dashicons-editor-break:before{content:"\f474"}.dashicons-editor-code-duplicate:before{content:"\f494"}.dashicons-editor-code:before{content:"\f475"}.dashicons-editor-contract:before{content:"\f506"}.dashicons-editor-customchar:before{content:"\f220"}.dashicons-editor-expand:before{content:"\f211"}.dashicons-editor-help:before{content:"\f223"}.dashicons-editor-indent:before{content:"\f222"}.dashicons-editor-insertmore:before{content:"\f209"}.dashicons-editor-italic:before{content:"\f201"}.dashicons-editor-justify:before{content:"\f214"}.dashicons-editor-kitchensink:before{content:"\f212"}.dashicons-editor-ltr:before{content:"\f10c"}.dashicons-editor-ol-rtl:before{content:"\f12c"}.dashicons-editor-ol:before{content:"\f204"}.dashicons-editor-outdent:before{content:"\f221"}.dashicons-editor-paragraph:before{content:"\f476"}.dashicons-editor-paste-text:before{content:"\f217"}.dashicons-editor-paste-word:before{content:"\f216"}.dashicons-editor-quote:before{content:"\f205"}.dashicons-editor-removeformatting:before{content:"\f218"}.dashicons-editor-rtl:before{content:"\f320"}.dashicons-editor-spellcheck:before{content:"\f210"}.dashicons-editor-strikethrough:before{content:"\f224"}.dashicons-editor-table:before{content:"\f535"}.dashicons-editor-textcolor:before{content:"\f215"}.dashicons-editor-ul:before{content:"\f203"}.dashicons-editor-underline:before{content:"\f213"}.dashicons-editor-unlink:before{content:"\f225"}.dashicons-editor-video:before{content:"\f219"}.dashicons-ellipsis:before{content:"\f11c"}.dashicons-email-alt:before{content:"\f466"}.dashicons-email-alt2:before{content:"\f467"}.dashicons-email:before{content:"\f465"}.dashicons-embed-audio:before{content:"\f13e"}.dashicons-embed-generic:before{content:"\f13f"}.dashicons-embed-photo:before{content:"\f144"}.dashicons-embed-post:before{content:"\f146"}.dashicons-embed-video:before{content:"\f149"}.dashicons-excerpt-view:before{content:"\f164"}.dashicons-exit:before{content:"\f14a"}.dashicons-external:before{content:"\f504"}.dashicons-facebook-alt:before{content:"\f305"}.dashicons-facebook:before{content:"\f304"}.dashicons-feedback:before{content:"\f175"}.dashicons-filter:before{content:"\f536"}.dashicons-flag:before{content:"\f227"}.dashicons-food:before{content:"\f187"}.dashicons-format-aside:before{content:"\f123"}.dashicons-format-audio:before{content:"\f127"}.dashicons-format-chat:before{content:"\f125"}.dashicons-format-gallery:before{content:"\f161"}.dashicons-format-image:before{content:"\f128"}.dashicons-format-quote:before{content:"\f122"}.dashicons-format-status:before{content:"\f130"}.dashicons-format-video:before{content:"\f126"}.dashicons-forms:before{content:"\f314"}.dashicons-fullscreen-alt:before{content:"\f188"}.dashicons-fullscreen-exit-alt:before{content:"\f189"}.dashicons-games:before{content:"\f18a"}.dashicons-google:before{content:"\f18b"}.dashicons-googleplus:before{content:"\f462"}.dashicons-grid-view:before{content:"\f509"}.dashicons-groups:before{content:"\f307"}.dashicons-hammer:before{content:"\f308"}.dashicons-heading:before{content:"\f10e"}.dashicons-heart:before{content:"\f487"}.dashicons-hidden:before{content:"\f530"}.dashicons-hourglass:before{content:"\f18c"}.dashicons-html:before{content:"\f14b"}.dashicons-id-alt:before{content:"\f337"}.dashicons-id:before{content:"\f336"}.dashicons-image-crop:before{content:"\f165"}.dashicons-image-filter:before{content:"\f533"}.dashicons-image-flip-horizontal:before{content:"\f169"}.dashicons-image-flip-vertical:before{content:"\f168"}.dashicons-image-rotate-left:before{content:"\f166"}.dashicons-image-rotate-right:before{content:"\f167"}.dashicons-image-rotate:before{content:"\f531"}.dashicons-images-alt:before{content:"\f232"}.dashicons-images-alt2:before{content:"\f233"}.dashicons-index-card:before{content:"\f510"}.dashicons-info-outline:before{content:"\f14c"}.dashicons-info:before{content:"\f348"}.dashicons-insert-after:before{content:"\f14d"}.dashicons-insert-before:before{content:"\f14e"}.dashicons-insert:before{content:"\f10f"}.dashicons-instagram:before{content:"\f12d"}.dashicons-laptop:before{content:"\f547"}.dashicons-layout:before{content:"\f538"}.dashicons-leftright:before{content:"\f229"}.dashicons-lightbulb:before{content:"\f339"}.dashicons-linkedin:before{content:"\f18d"}.dashicons-list-view:before{content:"\f163"}.dashicons-location-alt:before{content:"\f231"}.dashicons-location:before{content:"\f230"}.dashicons-lock-duplicate:before{content:"\f315"}.dashicons-lock:before{content:"\f160"}.dashicons-marker:before{content:"\f159"}.dashicons-media-archive:before{content:"\f501"}.dashicons-media-audio:before{content:"\f500"}.dashicons-media-code:before{content:"\f499"}.dashicons-media-default:before{content:"\f498"}.dashicons-media-document:before{content:"\f497"}.dashicons-media-interactive:before{content:"\f496"}.dashicons-media-spreadsheet:before{content:"\f495"}.dashicons-media-text:before{content:"\f491"}.dashicons-media-video:before{content:"\f490"}.dashicons-megaphone:before{content:"\f488"}.dashicons-menu-alt:before{content:"\f228"}.dashicons-menu-alt2:before{content:"\f329"}.dashicons-menu-alt3:before{content:"\f349"}.dashicons-menu:before{content:"\f333"}.dashicons-microphone:before{content:"\f482"}.dashicons-migrate:before{content:"\f310"}.dashicons-minus:before{content:"\f460"}.dashicons-money-alt:before{content:"\f18e"}.dashicons-money:before{content:"\f526"}.dashicons-move:before{content:"\f545"}.dashicons-nametag:before{content:"\f484"}.dashicons-networking:before{content:"\f325"}.dashicons-no-alt:before{content:"\f335"}.dashicons-no:before{content:"\f158"}.dashicons-open-folder:before{content:"\f18f"}.dashicons-palmtree:before{content:"\f527"}.dashicons-paperclip:before{content:"\f546"}.dashicons-pdf:before{content:"\f190"}.dashicons-performance:before{content:"\f311"}.dashicons-pets:before{content:"\f191"}.dashicons-phone:before{content:"\f525"}.dashicons-pinterest:before{content:"\f192"}.dashicons-playlist-audio:before{content:"\f492"}.dashicons-playlist-video:before{content:"\f493"}.dashicons-plugins-checked:before{content:"\f485"}.dashicons-plus-alt:before{content:"\f502"}.dashicons-plus-alt2:before{content:"\f543"}.dashicons-plus:before{content:"\f132"}.dashicons-podio:before{content:"\f19c"}.dashicons-portfolio:before{content:"\f322"}.dashicons-post-status:before{content:"\f173"}.dashicons-pressthis:before{content:"\f157"}.dashicons-printer:before{content:"\f193"}.dashicons-privacy:before{content:"\f194"}.dashicons-products:before{content:"\f312"}.dashicons-randomize:before{content:"\f503"}.dashicons-reddit:before{content:"\f195"}.dashicons-redo:before{content:"\f172"}.dashicons-remove:before{content:"\f14f"}.dashicons-rest-api:before{content:"\f124"}.dashicons-rss:before{content:"\f303"}.dashicons-saved:before{content:"\f15e"}.dashicons-schedule:before{content:"\f489"}.dashicons-screenoptions:before{content:"\f180"}.dashicons-search:before{content:"\f179"}.dashicons-share-alt:before{content:"\f240"}.dashicons-share-alt2:before{content:"\f242"}.dashicons-share:before{content:"\f237"}.dashicons-shield-alt:before{content:"\f334"}.dashicons-shield:before{content:"\f332"}.dashicons-shortcode:before{content:"\f150"}.dashicons-slides:before{content:"\f181"}.dashicons-smartphone:before{content:"\f470"}.dashicons-smiley:before{content:"\f328"}.dashicons-sort:before{content:"\f156"}.dashicons-sos:before{content:"\f468"}.dashicons-spotify:before{content:"\f196"}.dashicons-star-empty:before{content:"\f154"}.dashicons-star-filled:before{content:"\f155"}.dashicons-star-half:before{content:"\f459"}.dashicons-sticky:before{content:"\f537"}.dashicons-store:before{content:"\f513"}.dashicons-superhero-alt:before{content:"\f197"}.dashicons-superhero:before{content:"\f198"}.dashicons-table-col-after:before{content:"\f151"}.dashicons-table-col-before:before{content:"\f152"}.dashicons-table-col-delete:before{content:"\f15a"}.dashicons-table-row-after:before{content:"\f15b"}.dashicons-table-row-before:before{content:"\f15c"}.dashicons-table-row-delete:before{content:"\f15d"}.dashicons-tablet:before{content:"\f471"}.dashicons-tag:before{content:"\f323"}.dashicons-tagcloud:before{content:"\f479"}.dashicons-testimonial:before{content:"\f473"}.dashicons-text-page:before{content:"\f121"}.dashicons-text:before{content:"\f478"}.dashicons-thumbs-down:before{content:"\f542"}.dashicons-thumbs-up:before{content:"\f529"}.dashicons-tickets-alt:before{content:"\f524"}.dashicons-tickets:before{content:"\f486"}.dashicons-tide:before{content:"\f10d"}.dashicons-translation:before{content:"\f326"}.dashicons-trash:before{content:"\f182"}.dashicons-twitch:before{content:"\f199"}.dashicons-twitter-alt:before{content:"\f302"}.dashicons-twitter:before{content:"\f301"}.dashicons-undo:before{content:"\f171"}.dashicons-universal-access-alt:before{content:"\f507"}.dashicons-universal-access:before{content:"\f483"}.dashicons-unlock:before{content:"\f528"}.dashicons-update-alt:before{content:"\f113"}.dashicons-update:before{content:"\f463"}.dashicons-upload:before{content:"\f317"}.dashicons-vault:before{content:"\f178"}.dashicons-video-alt:before{content:"\f234"}.dashicons-video-alt2:before{content:"\f235"}.dashicons-video-alt3:before{content:"\f236"}.dashicons-visibility:before{content:"\f177"}.dashicons-warning:before{content:"\f534"}.dashicons-welcome-add-page:before{content:"\f133"}.dashicons-welcome-comments:before{content:"\f117"}.dashicons-welcome-learn-more:before{content:"\f118"}.dashicons-welcome-view-site:before{content:"\f115"}.dashicons-welcome-widgets-menus:before{content:"\f116"}.dashicons-welcome-write-blog:before{content:"\f119"}.dashicons-whatsapp:before{content:"\f19a"}.dashicons-wordpress-alt:before{content:"\f324"}.dashicons-wordpress:before{content:"\f120"}.dashicons-xing:before{content:"\f19d"}.dashicons-yes-alt:before{content:"\f12a"}.dashicons-yes:before{content:"\f147"}.dashicons-youtube:before{content:"\f19b"}.dashicons-editor-distractionfree:before{content:"\f211"}.dashicons-exerpt-view:before{content:"\f164"}.dashicons-format-links:before{content:"\f103"}.dashicons-format-standard:before{content:"\f109"}.dashicons-post-trash:before{content:"\f182"}.dashicons-share1:before{content:"\f237"}.dashicons-welcome-edit-page:before{content:"\f119"} \ No newline at end of file diff --git a/wp-includes/css/editor-rtl.css b/wp-includes/css/editor-rtl.css index f149ffe..0519c48 100644 --- a/wp-includes/css/editor-rtl.css +++ b/wp-includes/css/editor-rtl.css @@ -34,7 +34,7 @@ .mce-window { border-radius: 0; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); -webkit-font-smoothing: subpixel-antialiased; transition: none; } @@ -44,14 +44,14 @@ } .mce-window .mce-window-head { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #ddd; padding: 0; min-height: 36px; } .mce-window .mce-window-head .mce-title { - color: #3c434a; + color: #444; font-size: 18px; font-weight: 600; line-height: 36px; @@ -74,7 +74,7 @@ .mce-window-head .mce-close .mce-i-remove:before { font: normal 20px/36px dashicons; text-align: center; - color: #646970; + color: #666; width: 36px; height: 36px; display: block; @@ -82,13 +82,13 @@ .mce-window-head .mce-close:hover .mce-i-remove:before, .mce-window-head .mce-close:focus .mce-i-remove:before { - color: #135e96; + color: #00a0d2; } .mce-window-head .mce-close:focus .mce-i-remove, div.mce-tab:focus { - box-shadow: 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .mce-window .mce-window-head .mce-dragh { @@ -96,15 +96,15 @@ div.mce-tab:focus { } .mce-window .mce-foot { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .mce-textbox, .mce-checkbox i.mce-i-checkbox, #wp-link .query-results { - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-radius: 0; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); transition: .05s all ease-in-out; } @@ -112,8 +112,8 @@ div.mce-tab:focus { .mce-textbox.mce-focus, .mce-checkbox:focus i.mce-i-checkbox, #wp-link .query-results:focus { - border-color: #4f94d4; - box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba(30,140,190,0.8); } .mce-window .mce-wp-help { @@ -188,21 +188,21 @@ div.mce-tab:focus { padding: 2px 7px 3px; font-weight: 600; margin: 0; - background: #f0f0f1; - background: rgba(0, 0, 0, 0.08); + background: #eaeaea; + background: rgba(0,0,0,0.08); } .mce-window .wp-help-th-center td:nth-child(odd), .mce-window .wp-help-th-center th:nth-child(odd) { - text-align: center; + text-align: center; } /* TinyMCE menus */ .mce-menu, .mce-floatpanel.mce-popover { - border-color: rgba(0, 0, 0, 0.15); + border-color: rgba(0,0,0,0.15); border-radius: 0; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); } .mce-menu, @@ -235,7 +235,7 @@ div.mce-panel { } .mce-panel.mce-menu { - border: 1px solid #dcdcde; + border: 1px solid #ddd; } div.mce-tab { @@ -244,21 +244,21 @@ div.mce-tab { /* TinyMCE toolbars */ div.mce-toolbar-grp { - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f5f5f5; padding: 0; position: relative; } div.mce-inline-toolbar-grp { - border: 1px solid #a7aaad; + border: 1px solid #a0a5aa; border-radius: 2px; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.15 ); box-sizing: border-box; margin-bottom: 8px; position: absolute; - -webkit-user-select: none; -moz-user-select: none; + -webkit-user-select: none; user-select: none; max-width: 98%; z-index: 100100; /* Same as the other TinyMCE "panels" */ @@ -287,28 +287,28 @@ div.mce-inline-toolbar-grp:after { div.mce-inline-toolbar-grp.mce-arrow-up:before { top: -9px; - border-bottom-color: #a7aaad; + border-bottom-color: #a0a5aa; border-width: 0 9px 9px; margin-right: -9px; } div.mce-inline-toolbar-grp.mce-arrow-down:before { bottom: -9px; - border-top-color: #a7aaad; + border-top-color: #a0a5aa; border-width: 9px 9px 0; margin-right: -9px; } div.mce-inline-toolbar-grp.mce-arrow-up:after { top: -8px; - border-bottom-color: #f6f7f7; + border-bottom-color: #f5f5f5; border-width: 0 8px 8px; margin-right: -8px; } div.mce-inline-toolbar-grp.mce-arrow-down:after { bottom: -8px; - border-top-color: #f6f7f7; + border-top-color: #f5f5f5; border-width: 8px 8px 0; margin-right: -8px; } @@ -360,17 +360,8 @@ div.mce-toolbar-grp > div { margin: 0; } -/* Classic block hide/show toolbars */ -.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child) { - display: none; -} - -.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar { - display: block; -} - div.mce-statusbar { - border-top: 1px solid #dcdcde; + border-top: 1px solid #e5e5e5; } div.mce-path { @@ -409,19 +400,19 @@ div.mce-path { .mce-toolbar .mce-btn-group .mce-btn:focus, .qt-dfw:hover, .qt-dfw:focus { - background: #f6f7f7; - border-color: #50575e; - color: #1d2327; - box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0, 0, 0, 0.08); + background: #fafafa; + border-color: #555d66; + color: #23282d; + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); outline: none; } .mce-toolbar .mce-btn-group .mce-btn.mce-active, .mce-toolbar .mce-btn-group .mce-btn:active, .qt-dfw.active { - background: #f0f0f1; - border-color: #50575e; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.3); + background: #ebebeb; + border-color: #555d66; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.3 ); } .mce-btn.mce-active, @@ -434,20 +425,20 @@ div.mce-path { .mce-toolbar .mce-btn-group .mce-btn.mce-active:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-active:focus { - border-color: #1d2327; + border-color: #23282d; } .mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus { - color: #a7aaad; + color: #a0a5aa; background: none; - border-color: #dcdcde; + border-color: #ddd; text-shadow: 0 1px 0 #fff; box-shadow: none; } .mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus { - border-color: #50575e; + border-color: #555d66; } .mce-toolbar .mce-btn-group .mce-first, @@ -463,7 +454,7 @@ div.mce-path { .mce-toolbar .mce-listbox button { font-size: 13px; - line-height: 1.53846153; + line-height: 20px; padding-right: 6px; padding-left: 20px; } @@ -488,14 +479,14 @@ div.mce-path { right: 3px; height: 3px; width: 20px; - background: #50575e; + background: #555d66; } .mce-toolbar .mce-btn-group .mce-btn.mce-primary { min-width: 0; - background: #3582c4; - border-color: #2271b1 #135e96 #135e96; - box-shadow: 0 1px 0 #135e96; + background: #0085ba; + border-color: #0073aa #006799 #006799; + box-shadow: 0 1px 0 #006799; color: #fff; text-decoration: none; text-shadow: none; @@ -512,37 +503,37 @@ div.mce-path { .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus { - background: #4f94d4; - border-color: #135e96; + background: #008ec2; + border-color: #006799; color: #fff; } .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus { - box-shadow: 0 0 1px 1px #72aee6; + box-shadow: 0 0 1px 1px #33b3db; } .mce-toolbar .mce-btn-group .mce-btn.mce-primary:active { - background: #2271b1; - border-color: #135e96; - box-shadow: inset 0 2px 0 #135e96; + background: #0073aa; + border-color: #006799; + box-shadow: inset 0 2px 0 #006799; } /* mce listbox */ .mce-toolbar .mce-btn-group .mce-btn.mce-listbox { - border-radius: 0; - direction: rtl; - background: #fff; - border: 1px solid #dcdcde; - box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, 0.2); + border-radius: 0; + direction: rtl; + background: #fff; + border: 1px solid #ddd; + box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2); } .mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-listbox:focus { - border-color: #c3c4c7; + border-color: #b4b9be; } .mce-panel .mce-btn i.mce-caret { - border-top: 6px solid #50575e; + border-top: 6px solid #555d66; margin-right: 2px; margin-left: 2px; } @@ -553,12 +544,12 @@ div.mce-path { .mce-panel .mce-btn:hover i.mce-caret, .mce-panel .mce-btn:focus i.mce-caret { - border-top-color: #1d2327; + border-top-color: #23282d; } .mce-panel .mce-active i.mce-caret { border-top: 0; - border-bottom: 6px solid #1d2327; + border-bottom: 6px solid #23282d; margin-top: 7px; } @@ -578,37 +569,21 @@ div.mce-path { .mce-menu .mce-menu-item:hover, .mce-menu .mce-menu-item.mce-selected, .mce-menu .mce-menu-item:focus, -.mce-menu .mce-menu-item.mce-active.mce-menu-item-normal, -.mce-menu .mce-menu-item.mce-active.mce-menu-item-preview { - background: #2271b1; /* See color scheme. */ +.mce-menu .mce-menu-item-normal.mce-active, +.mce-menu .mce-menu-item-preview.mce-active { + background: #0073aa; /* See color scheme. */ color: #fff; } -.mce-menu .mce-menu-item:hover .mce-caret, -.mce-menu .mce-menu-item:focus .mce-caret, -.mce-menu .mce-menu-item.mce-selected .mce-caret { - border-right-color: #fff; -} - -/* rtl:ignore */ -.rtl .mce-menu .mce-menu-item:hover .mce-caret, -.rtl .mce-menu .mce-menu-item:focus .mce-caret, -.rtl .mce-menu .mce-menu-item.mce-selected .mce-caret { - border-left-color: inherit; - border-right-color: #fff; -} - -.mce-menu .mce-menu-item:hover .mce-text, -.mce-menu .mce-menu-item:focus .mce-text, -.mce-menu .mce-menu-item:hover .mce-ico, -.mce-menu .mce-menu-item:focus .mce-ico, -.mce-menu .mce-menu-item.mce-selected .mce-text, -.mce-menu .mce-menu-item.mce-selected .mce-ico, -.mce-menu .mce-menu-item:hover .mce-menu-shortcut, -.mce-menu .mce-menu-item:focus .mce-menu-shortcut, -.mce-menu .mce-menu-item.mce-active .mce-menu-shortcut, -.mce-menu .mce-menu-item.mce-disabled:hover .mce-text, -.mce-menu .mce-menu-item.mce-disabled:hover .mce-ico { +.mce-menu-item:hover .mce-text, +.mce-menu-item:focus .mce-text, +.mce-menu-item:hover .mce-ico, +.mce-menu-item:focus .mce-ico, +.mce-menu-item:hover .mce-menu-shortcut, +.mce-menu-item:focus .mce-menu-shortcut, +.mce-menu-item.mce-active .mce-menu-shortcut, +.mce-menu-item.mce-disabled:hover .mce-text, +.mce-menu-item.mce-disabled:hover .mce-ico { color: inherit; } @@ -617,14 +592,14 @@ div.mce-path { } .mce-menu .mce-menu-item.mce-disabled:hover { - background: #c3c4c7; + background: #ccc; } /* Menubar */ div.mce-menubar { - border-color: #dcdcde; + border-color: #e5e5e5; background: #fff; - border-width: 0 0 1px; + border-width: 0px 0px 1px; } .mce-menubar .mce-menubtn:hover, @@ -635,16 +610,16 @@ div.mce-menubar { } .mce-menubar .mce-menubtn:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } div.mce-menu .mce-menu-item-sep, .mce-menu-item-sep:hover { - border-bottom: 1px solid #dcdcde; - height: 0; + border-bottom: 1px solid #ddd; + height: 0px; margin: 5px 0; } @@ -674,12 +649,12 @@ div.mce-menu .mce-menu-item-sep, color: #fff; text-shadow: none; padding: 0; - line-height: 1.85714285; + line-height: 26px; } .mce-window .mce-btn { - color: #50575e; - background: #f6f7f7; + color: #555; + background: #f7f7f7; text-decoration: none; font-size: 13px; line-height: 26px; @@ -687,11 +662,11 @@ div.mce-menu .mce-menu-item-sep, margin: 0; padding: 0; cursor: pointer; - border: 1px solid #c3c4c7; + border: 1px solid #cccccc; -webkit-appearance: none; border-radius: 3px; white-space: nowrap; - box-shadow: 0 1px 0 #c3c4c7; + box-shadow: 0 1px 0 #cccccc; } /* Remove the dotted border on :focus and the extra padding in Firefox */ @@ -703,27 +678,27 @@ div.mce-menu .mce-menu-item-sep, .mce-window .mce-btn:hover, .mce-window .mce-btn:focus { - background: #f6f7f7; - border-color: #8c8f94; - color: #1d2327; + background: #fafafa; + border-color: #999; + color: #23282d; } .mce-window .mce-btn:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .mce-window .mce-btn:active { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); transform: translateY(1px); } .mce-window .mce-btn.mce-disabled { - color: #a7aaad !important; - border-color: #dcdcde !important; - background: #f6f7f7 !important; + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; box-shadow: none !important; text-shadow: 0 1px 0 #fff !important; cursor: default; @@ -731,42 +706,42 @@ div.mce-menu .mce-menu-item-sep, } .mce-window .mce-btn.mce-primary { - background: #3582c4; - border-color: #2271b1 #135e96 #135e96; - box-shadow: 0 1px 0 #135e96; + background: #0085ba; + border-color: #0073aa #006799 #006799; + box-shadow: 0 1px 0 #006799; color: #fff; text-decoration: none; - text-shadow: 0 -1px 1px #135e96, - -1px 0 1px #135e96, - 0 1px 1px #135e96, - 1px 0 1px #135e96; + text-shadow: 0 -1px 1px #006799, + -1px 0 1px #006799, + 0 1px 1px #006799, + 1px 0 1px #006799; } .mce-window .mce-btn.mce-primary:hover, .mce-window .mce-btn.mce-primary:focus { - background: #4f94d4; - border-color: #135e96; + background: #008ec2; + border-color: #006799; color: #fff; } .mce-window .mce-btn.mce-primary:focus { - box-shadow: 0 1px 0 #2271b1, - 0 0 2px 1px #72aee6; + box-shadow: 0 1px 0 #0073aa, + 0 0 2px 1px #33b3db; } .mce-window .mce-btn.mce-primary:active { - background: #2271b1; - border-color: #135e96; - box-shadow: inset 0 2px 0 #135e96; + background: #0073aa; + border-color: #006799; + box-shadow: inset 0 2px 0 #006799; vertical-align: top; } .mce-window .mce-btn.mce-primary.mce-disabled { - color: #9ec2e6 !important; - background: #4f94d4 !important; - border-color: #3582c4 !important; + color: #66c6e4 !important; + background: #008ec2 !important; + border-color: #007cb2 !important; box-shadow: none !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) !important; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important; cursor: default; } @@ -783,18 +758,18 @@ div.mce-menu .mce-menu-item-sep, .mce-charmap td { padding: 0; - border-color: #dcdcde; + border-color: #ddd; cursor: pointer; } .mce-charmap td:hover { - background: #f6f7f7; + background: #f3f3f3; } .mce-charmap td div { width: 18px; height: 22px; - line-height: 1.57142857; + line-height: 22px; } /* TinyMCE tooltips */ @@ -802,25 +777,30 @@ div.mce-menu .mce-menu-item-sep, margin-top: 2px; } +/* Don't show the tooltip. Used in Chrome RTL, see https://core.trac.wordpress.org/ticket/42018 */ +.rtl .mce-tooltip.wp-hide-mce-tooltip { + display: none !important; +} + .mce-tooltip-inner { border-radius: 3px; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); color: #fff; font-size: 12px; } /* TinyMCE icons */ .mce-ico { - font-family: tinymce, Arial; + font-family: 'tinymce', Arial; } .mce-btn-small .mce-ico { - font-family: tinymce-small, Arial; + font-family: 'tinymce-small', Arial; } .mce-toolbar .mce-ico { - color: #50575e; - line-height: 1; + color: #555d66; + line-height: 20px; width: 20px; height: 20px; text-align: center; @@ -830,8 +810,8 @@ div.mce-menu .mce-menu-item-sep, } .qt-dfw { - color: #50575e; - line-height: 1; + color: #555d66; + line-height: 20px; width: 28px; height: 26px; text-align: center; @@ -845,7 +825,7 @@ div.mce-menu .mce-menu-item-sep, .mce-toolbar .mce-btn:hover .mce-open, .mce-toolbar .mce-btn:focus .mce-open, .mce-toolbar .mce-btn.mce-active .mce-open { - border-right-color: #1d2327; + border-right-color: #23282d; } div.mce-notification { @@ -857,7 +837,7 @@ div.mce-notification { left: 6px; top: 3px; font-weight: 400; - color: #50575e; + color: #555d66; } .mce-notification button.mce-close:hover, @@ -906,7 +886,7 @@ i.mce-i-remove { font: normal 20px/1 dashicons; padding: 0; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; margin-right: -2px; @@ -916,7 +896,7 @@ i.mce-i-remove { .qt-dfw { font: normal 20px/1 dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -1081,7 +1061,7 @@ i.mce-i-wp_code:before { .wp-editor-container { clear: both; - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; } .wp-editor-area { @@ -1120,23 +1100,23 @@ i.mce-i-wp_code:before { box-sizing: content-box; position: relative; top: 1px; - background: #f0f0f1; - color: #646970; + background: #ebebeb; + color: #666; cursor: pointer; font-size: 13px; - line-height: 1.46153846; + line-height: 19px; height: 20px; margin: 5px 5px 0 0; padding: 3px 8px 4px; - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; } .wp-switch-editor:focus { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); outline: none; - color: #1d2327; + color: #23282d; } .wp-switch-editor:active, @@ -1146,7 +1126,7 @@ i.mce-i-wp_code:before { } .wp-switch-editor:active { - background-color: #f6f7f7; + background-color: #f5f5f5; box-shadow: none; } @@ -1155,14 +1135,14 @@ i.mce-i-wp_code:before { } .tmce-active .quicktags-toolbar { - display: none; + display: none; } .tmce-active .switch-tmce, .html-active .switch-html { - background: #f6f7f7; - color: #50575e; - border-bottom-color: #f6f7f7; + background: #f5f5f5; + color: #555; + border-bottom-color: #f5f5f5; } .wp-media-buttons { @@ -1189,7 +1169,7 @@ i.mce-i-wp_code:before { .wp-media-buttons a { text-decoration: none; - color: #3c434a; + color: #444; font-size: 12px; } @@ -1200,10 +1180,9 @@ i.mce-i-wp_code:before { .wp-media-buttons span.wp-media-buttons-icon { display: inline-block; - width: 20px; - height: 20px; - line-height: 1; - vertical-align: middle; + width: 18px; + height: 18px; + vertical-align: text-top; margin: 0 2px; } @@ -1213,7 +1192,7 @@ i.mce-i-wp_code:before { .wp-media-buttons .add_media span.wp-media-buttons-icon:before { font: normal 18px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -1222,16 +1201,12 @@ i.mce-i-wp_code:before { content: "\f104"; } -.mce-content-body dl.wp-caption { - max-width: 100%; -} - /* Quicktags */ .quicktags-toolbar { padding: 3px; position: relative; - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f5f5f5; min-height: 30px; } @@ -1264,13 +1239,6 @@ i.mce-i-wp_code:before { position: absolute; top: 0; left: 0; -} - -.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw { - margin: 7px 0 0 7px; -} - -.qt-dfw { margin: 5px 0 0 5px; } @@ -1279,7 +1247,7 @@ i.mce-i-wp_code:before { margin: 2px; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .mce-toolbar .mce-btn button, .qt-dfw { padding: 6px 7px; @@ -1318,12 +1286,12 @@ i.mce-i-wp_code:before { } } -@media screen and (min-width: 782px) { +@media screen and ( min-width: 782px ) { .wp-core-ui .quicktags-toolbar input.button.button-small { /* .button-small is normally 11px, but a bit too small for these buttons. */ font-size: 12px; - min-height: 26px; - line-height: 2; + height: 26px; + line-height: 24px; } } @@ -1339,10 +1307,12 @@ i.mce-i-wp_code:before { #wp_delimgbtn, #wp_editgallery, #wp_delgallery { - background-color: #f0f0f1; + border-color: #999; + background-color: #eee; margin: 2px; padding: 2px; - border: 1px solid #8c8f94; + border-width: 1px; + border-style: solid; border-radius: 3px; } @@ -1350,8 +1320,8 @@ i.mce-i-wp_code:before { #wp_delimgbtn:hover, #wp_editgallery:hover, #wp_delgallery:hover { - border-color: #50575e; - background-color: #c3c4c7; + border-color: #555; + background-color: #ccc; } /*------------------------------------------------------------------------------ @@ -1361,7 +1331,7 @@ i.mce-i-wp_code:before { #wp-link-wrap { display: none; background-color: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); width: 500px; overflow: hidden; margin-right: -250px; @@ -1393,8 +1363,8 @@ i.mce-i-wp_code:before { } #wp-link-wrap { - height: 600px; - margin-top: -300px; + height: 500px; + margin-top: -250px; } #wp-link-wrap .wp-link-text-field { @@ -1406,17 +1376,18 @@ i.mce-i-wp_code:before { } #link-modal-title { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #ddd; + height: 36px; font-size: 18px; font-weight: 600; - line-height: 2; + line-height: 36px; margin: 0; padding: 0 16px 0 36px; } #wp-link-close { - color: #646970; + color: #666; padding: 0; position: absolute; top: 0; @@ -1432,7 +1403,7 @@ i.mce-i-wp_code:before { #wp-link-close:before { font: normal 20px/36px dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 36px; @@ -1442,30 +1413,24 @@ i.mce-i-wp_code:before { #wp-link-close:hover, #wp-link-close:focus { - color: #135e96; + color: #00a0d2; } #wp-link-close:focus { outline: none; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } #wp-link-wrap #link-selector { -webkit-overflow-scrolling: touch; padding: 0 16px; position: absolute; - top: calc(2.15384615em + 16px); + top: 37px; right: 0; left: 0; - bottom: calc(2.15384615em + 19px); - display: flex; - flex-direction: column; - overflow: auto; + bottom: 44px; } #wp-link ol, @@ -1500,7 +1465,7 @@ i.mce-i-wp_code:before { #wp-link #link-options label span, #wp-link #search-panel label span.search-label { display: inline-block; - width: 120px; + width: 80px; text-align: left; padding-left: 5px; max-width: 24%; @@ -1509,6 +1474,7 @@ i.mce-i-wp_code:before { } #wp-link .link-search-field { + float: right; width: 250px; max-width: 70%; } @@ -1516,20 +1482,23 @@ i.mce-i-wp_code:before { #wp-link .link-search-wrapper { margin: 5px 0 9px; display: block; + overflow: hidden; } -#wp-link .query-results { - position: absolute; - width: calc(100% - 32px); +#wp-link .link-search-wrapper span { + float: right; + margin-top: 4px; } #wp-link .link-search-wrapper .spinner { - float: none; - margin: -3px 4px 0 0; + margin-top: 5px; } #wp-link .link-target { padding: 3px 0 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } #wp-link .link-target label { @@ -1537,18 +1506,26 @@ i.mce-i-wp_code:before { } #wp-link .query-results { - border: 1px #dcdcde solid; + border: 1px #dfdfdf solid; margin: 0 0 12px; background: #fff; overflow: auto; - max-height: 290px; + position: absolute; + right: 16px; + left: 16px; + bottom: 0; + top: 166px; +} + +.has-text-field #wp-link .query-results { + top: 200px; } #wp-link li { clear: both; margin-bottom: 0; - border-bottom: 1px solid #f0f0f1; - color: #2c3338; + border-bottom: 1px solid #f1f1f1; + color: #32373c; padding: 4px 10px 4px 6px; cursor: pointer; position: relative; @@ -1556,8 +1533,8 @@ i.mce-i-wp_code:before { #wp-link .query-notice { padding: 0; - border-bottom: 1px solid #dcdcde; - background-color: #fff; + border-bottom: 1px solid #dfdfdf; + background-color: #f7fcfe; color: #000; } @@ -1565,19 +1542,19 @@ i.mce-i-wp_code:before { #wp-link .query-notice .query-notice-hint { display: block; padding: 6px; - border-right: 4px solid #72aee6; + border-right: 4px solid #00a0d2; } #wp-link .unselectable.no-matches-found { padding: 0; - border-bottom: 1px solid #dcdcde; - background-color: #f6f7f7; + border-bottom: 1px solid #dfdfdf; + background-color: #fef7f1; } #wp-link .no-matches-found .item-title { display: block; padding: 6px; - border-right: 4px solid #d63638; + border-right: 4px solid #d54e21; } #wp-link .query-results em { @@ -1585,23 +1562,23 @@ i.mce-i-wp_code:before { } #wp-link li:hover { - background: #f0f6fc; - color: #101517; + background: #eaf2fa; + color: #151515; } #wp-link li.unselectable { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #dfdfdf; } #wp-link li.unselectable:hover { background: #fff; cursor: auto; - color: #2c3338; + color: #32373c; } #wp-link li.selected { - background: #dcdcde; - color: #2c3338; + background: #ddd; + color: #32373c; } #wp-link li.selected .item-title { @@ -1621,7 +1598,7 @@ i.mce-i-wp_code:before { #wp-link .item-info { text-transform: uppercase; - color: #646970; + color: #666; font-size: 11px; position: absolute; left: 5px; @@ -1635,8 +1612,8 @@ i.mce-i-wp_code:before { #wp-link .submitbox { padding: 8px 16px; - background: #fff; - border-top: 1px solid #dcdcde; + background: #fcfcfc; + border-top: 1px solid #ddd; position: absolute; bottom: 0; right: 0; @@ -1644,12 +1621,12 @@ i.mce-i-wp_code:before { } #wp-link-cancel { - line-height: 1.92307692; + line-height: 25px; float: right; } #wp-link-update { - line-height: 1.76923076; + line-height: 23px; float: left; } @@ -1657,17 +1634,29 @@ i.mce-i-wp_code:before { float: left; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { + #wp-link-wrap { + margin-top: -140px; + } + + #wp-link-wrap .query-results { + top: 195px; + } + + #wp-link-wrap.has-text-field .query-results { + top: 235px; + } + #link-selector { padding: 0 16px 60px; } #wp-link-wrap #link-selector { - bottom: calc(2.71428571em + 23px); + bottom: 52px; } #wp-link-cancel { - line-height: 2.46153846; + line-height: 32px; } #wp-link .link-target { @@ -1679,7 +1668,7 @@ i.mce-i-wp_code:before { } } -@media screen and (max-width: 520px) { +@media screen and ( max-width: 520px ) { #wp-link-wrap { width: auto; margin-right: 0; @@ -1689,7 +1678,7 @@ i.mce-i-wp_code:before { } } -@media screen and (max-height: 620px) { +@media screen and ( max-height: 520px ) { #wp-link-wrap { transition: none; height: auto; @@ -1701,9 +1690,13 @@ i.mce-i-wp_code:before { #link-selector { overflow: auto; } + + #search-panel .query-results { + position: static; + } } -@media screen and (max-height: 290px) { +@media screen and ( max-height: 290px ) { #wp-link-wrap { height: auto; margin-top: 0; @@ -1716,6 +1709,10 @@ i.mce-i-wp_code:before { height: calc(100% - 92px); padding-bottom: 2px; } + + #search-panel .query-results { + position: static; + } } div.wp-link-preview { @@ -1727,7 +1724,7 @@ div.wp-link-preview { } div.wp-link-preview a { - color: #2271b1; + color: #0073aa; text-decoration: underline; transition-property: border, background, color; transition-duration: .05s; @@ -1736,7 +1733,7 @@ div.wp-link-preview a { } div.wp-link-preview a.wplink-url-error { - color: #d63638; + color: #dc3232; } div.wp-link-input { @@ -1749,9 +1746,6 @@ div.wp-link-input input { width: 300px; padding: 3px; box-sizing: border-box; - line-height: 1.28571429; /* 18px */ - /* Override value inherited from default input fields. */ - min-height: 26px; } .mce-toolbar div.wp-link-preview ~ .mce-btn, @@ -1771,8 +1765,8 @@ div.wp-link-input input { margin: 0; list-style: none; position: absolute; - border: 1px solid #4f94d4; - box-shadow: 0 1px 2px rgba(79, 148, 212, 0.8); + border: 1px solid #5b9dd9; + box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); background-color: #fff; } @@ -1789,11 +1783,11 @@ div.wp-link-input input { } .ui-autocomplete.wplink-autocomplete li.ui-state-focus { - background-color: #dcdcde; + background-color: #ddd; cursor: pointer; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { div.wp-link-preview, div.wp-link-input { max-width: 70%; @@ -1840,8 +1834,8 @@ div.wp-link-input input { } html:lang(he-il) .rtl .wp-switch-editor, -html:lang(he-il) .rtl .quicktags-toolbar input { - font-family: Arial, sans-serif; +html:lang(he-il) .rtl .quicktags-toolbar input { + font-family: Arial, sans-serif; } /* HiDPI */ diff --git a/wp-includes/css/editor-rtl.min.css b/wp-includes/css/editor-rtl.min.css index cc46a22..4f02202 100644 --- a/wp-includes/css/editor-rtl.min.css +++ b/wp-includes/css/editor-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.mce-tinymce{box-shadow:none}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}.mce-container .mce-monospace,.mce-widget .mce-monospace{font-family:Consolas,Monaco,monospace;font-size:13px;line-height:150%}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);transition:none;background:#000}.mce-window{border-radius:0;box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fff;border-bottom:1px solid #dcdcde;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#3c434a;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;left:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:normal 20px/36px dashicons;text-align:center;color:#646970;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#135e96}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.mce-window .mce-window-head .mce-dragh{width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dcdcde}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #dcdcde;border-radius:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#4f94d4;box-shadow:0 0 2px rgba(79,148,212,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 20px 0 10px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(2n),.mce-window .wp-editor-help table.fixed th:nth-child(2n){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#f0f0f1;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);border-radius:0;box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px;padding:6px 12px 6px 15px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #dcdcde}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #dcdcde;background:#f6f7f7;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a7aaad;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.15);box-sizing:border-box;margin-bottom:8px;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-width:98%;z-index:100100}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;right:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a7aaad;border-width:0 9px 9px;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a7aaad;border-width:9px 9px 0;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f6f7f7;border-width:0 8px 8px;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f6f7f7;border-width:8px 8px 0;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{right:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-full{left:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:32px}.mce-toolbar .mce-btn-group{margin:0}.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child){display:none}.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar{display:block}div.mce-statusbar{border-top:1px solid #dcdcde}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#f6f7f7;border-color:#50575e;color:#1d2327;box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#f0f0f1;border-color:#50575e;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-btn.mce-active,.mce-btn.mce-active button,.mce-btn.mce-active i,.mce-btn.mce-active:hover button,.mce-btn.mce-active:hover i{color:inherit}.mce-toolbar .mce-btn-group .mce-btn.mce-active:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#1d2327}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a7aaad;background:0 0;border-color:#dcdcde;text-shadow:0 1px 0 #fff;box-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#50575e}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:1.53846153;padding-right:6px;padding-left:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-left:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;right:3px;height:3px;width:20px;background:#50575e}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#3582c4;border-color:#2271b1 #135e96 #135e96;box-shadow:0 1px 0 #135e96;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#4f94d4;border-color:#135e96;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{box-shadow:0 0 1px 1px #72aee6}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#2271b1;border-color:#135e96;box-shadow:inset 0 2px 0 #135e96}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{border-radius:0;direction:rtl;background:#fff;border:1px solid #dcdcde;box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#c3c4c7}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #50575e;margin-right:2px;margin-left:2px}.mce-listbox i.mce-caret{left:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#1d2327}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #1d2327;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-left-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item.mce-active.mce-menu-item-normal,.mce-menu .mce-menu-item.mce-active.mce-menu-item-preview,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#2271b1;color:#fff}.mce-menu .mce-menu-item.mce-selected .mce-caret,.mce-menu .mce-menu-item:focus .mce-caret,.mce-menu .mce-menu-item:hover .mce-caret{border-right-color:#fff}.rtl .mce-menu .mce-menu-item.mce-selected .mce-caret,.rtl .mce-menu .mce-menu-item:focus .mce-caret,.rtl .mce-menu .mce-menu-item:hover .mce-caret{border-left-color:inherit;border-right-color:#fff}.mce-menu .mce-menu-item.mce-active .mce-menu-shortcut,.mce-menu .mce-menu-item.mce-disabled:hover .mce-ico,.mce-menu .mce-menu-item.mce-disabled:hover .mce-text,.mce-menu .mce-menu-item.mce-selected .mce-ico,.mce-menu .mce-menu-item.mce-selected .mce-text,.mce-menu .mce-menu-item:focus .mce-ico,.mce-menu .mce-menu-item:focus .mce-menu-shortcut,.mce-menu .mce-menu-item:focus .mce-text,.mce-menu .mce-menu-item:hover .mce-ico,.mce-menu .mce-menu-item:hover .mce-menu-shortcut,.mce-menu .mce-menu-item:hover .mce-text{color:inherit}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#c3c4c7}div.mce-menubar{border-color:#dcdcde;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #dcdcde;height:0;margin:5px 0}.mce-menubtn span{margin-left:0;padding-right:3px}.mce-menu-has-icons i.mce-ico:before{margin-right:-2px}.mce-menu.mce-menu-align .mce-menu-item-normal{position:relative}.mce-menu.mce-menu-align .mce-menu-shortcut{bottom:.6em;font-size:.9em}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:1.85714285}.mce-window .mce-btn{color:#50575e;background:#f6f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #c3c4c7;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-shadow:0 1px 0 #c3c4c7}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.mce-window .mce-btn:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.mce-window .mce-btn:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.mce-window .mce-btn.mce-disabled{color:#a7aaad!important;border-color:#dcdcde!important;background:#f6f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}.mce-window .mce-btn.mce-primary{background:#3582c4;border-color:#2271b1 #135e96 #135e96;box-shadow:0 1px 0 #135e96;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #135e96,-1px 0 1px #135e96,0 1px 1px #135e96,1px 0 1px #135e96}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#4f94d4;border-color:#135e96;color:#fff}.mce-window .mce-btn.mce-primary:focus{box-shadow:0 1px 0 #2271b1,0 0 2px 1px #72aee6}.mce-window .mce-btn.mce-primary:active{background:#2271b1;border-color:#135e96;box-shadow:inset 0 2px 0 #135e96;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#9ec2e6!important;background:#4f94d4!important;border-color:#3582c4!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-menubtn.mce-fixed-width span{overflow-x:hidden;text-overflow:ellipsis;width:82px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dcdcde;cursor:pointer}.mce-charmap td:hover{background:#f6f7f7}.mce-charmap td div{width:18px;height:22px;line-height:1.57142857}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{border-radius:3px;box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#50575e;line-height:1;width:20px;height:20px;text-align:center;text-shadow:none;margin:0;padding:0}.qt-dfw{color:#50575e;line-height:1;width:28px;height:26px;text-align:center;text-shadow:none}.mce-toolbar .mce-btn .mce-open{line-height:20px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-right-color:#1d2327}div.mce-notification{right:10%!important;left:10%}.mce-notification button.mce-close{left:6px;top:3px;font-weight:400;color:#50575e}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:normal 20px/1 dashicons;padding:0;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:-2px;padding-left:2px}.qt-dfw{font:normal 20px/1 dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:"\f200"}i.mce-i-italic:before{content:"\f201"}i.mce-i-bullist:before{content:"\f203"}i.mce-i-numlist:before{content:"\f204"}i.mce-i-blockquote:before{content:"\f205"}i.mce-i-alignleft:before{content:"\f206"}i.mce-i-aligncenter:before{content:"\f207"}i.mce-i-alignright:before{content:"\f208"}i.mce-i-link:before{content:"\f103"}i.mce-i-unlink:before{content:"\f225"}i.mce-i-wp_more:before{content:"\f209"}i.mce-i-strikethrough:before{content:"\f224"}i.mce-i-spellchecker:before{content:"\f210"}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:"\f211"}i.mce-i-wp_adv:before{content:"\f212"}i.mce-i-underline:before{content:"\f213"}i.mce-i-alignjustify:before{content:"\f214"}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:"\f215"}i.mce-i-pastetext:before{content:"\f217"}i.mce-i-removeformat:before{content:"\f218"}i.mce-i-charmap:before{content:"\f220"}i.mce-i-outdent:before{content:"\f221"}i.mce-i-indent:before{content:"\f222"}i.mce-i-undo:before{content:"\f171"}i.mce-i-redo:before{content:"\f172"}i.mce-i-help:before,i.mce-i-wp_help:before{content:"\f223"}i.mce-i-wp-media-library:before{content:"\f104"}i.mce-i-ltr:before{content:"\f320"}i.mce-i-wp_page:before{content:"\f105"}i.mce-i-hr:before{content:"\f460"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-wrap{position:relative}.wp-editor-tools{position:relative;z-index:1}.wp-editor-tools:after{clear:both;content:"";display:table}.wp-editor-container{clear:both;border:1px solid #dcdcde}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;box-shadow:none}.wp-editor-tabs{float:left}.wp-switch-editor{float:right;box-sizing:content-box;position:relative;top:1px;background:#f0f0f1;color:#646970;cursor:pointer;font-size:13px;line-height:1.46153846;height:20px;margin:5px 5px 0 0;padding:3px 8px 4px;border:1px solid #dcdcde}.wp-switch-editor:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:0;color:#1d2327}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{box-shadow:none}.wp-switch-editor:active{background-color:#f6f7f7;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f6f7f7;color:#50575e;border-bottom-color:#f6f7f7}.wp-media-buttons{float:right}.wp-media-buttons .button{margin-left:5px;margin-bottom:4px;padding-right:7px;padding-left:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-right:5px}.wp-media-buttons a{text-decoration:none;color:#3c434a;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:20px;height:20px;line-height:1;vertical-align:middle;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:normal 18px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{content:"\f104"}.mce-content-body dl.wp-caption{max-width:100%}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #dcdcde;background:#f6f7f7;min-height:30px}.has-dfw .quicktags-toolbar{padding-left:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.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:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;left:0}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:7px 0 0 7px}.qt-dfw{margin:5px 0 0 5px}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 0 0 4px}.mce-toolbar .mce-colorbutton .mce-preview{right:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;min-height:26px;line-height:2}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{background-color:#f0f0f1;margin:2px;padding:2px;border:1px solid #8c8f94;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#50575e;background-color:#c3c4c7}#wp-link-wrap{display:none;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-right:-250px;margin-top:-125px;position:fixed;top:50%;right:50%;z-index:100105;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap{height:600px;margin-top:-300px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fff;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0;padding:0 16px 0 36px}#wp-link-close{color:#646970;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#135e96}#wp-link-close:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}#wp-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:calc(2.15384615em + 16px);right:0;left:0;bottom:calc(2.15384615em + 19px);display:flex;flex-direction:column;overflow:auto}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:120px;text-align:left;padding-left:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block}#wp-link .query-results{position:absolute;width:calc(100% - 32px)}#wp-link .link-search-wrapper .spinner{float:none;margin:-3px 4px 0 0}#wp-link .link-target{padding:3px 0 0}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px #dcdcde solid;margin:0 0 12px;background:#fff;overflow:auto;max-height:290px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f0f0f1;color:#2c3338;padding:4px 10px 4px 6px;cursor:pointer;position:relative}#wp-link .query-notice{padding:0;border-bottom:1px solid #dcdcde;background-color:#fff;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-right:4px solid #72aee6}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dcdcde;background-color:#f6f7f7}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-right:4px solid #d63638}#wp-link .query-results em{font-style:normal}#wp-link li:hover{background:#f0f6fc;color:#101517}#wp-link li.unselectable{border-bottom:1px solid #dcdcde}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#2c3338}#wp-link li.selected{background:#dcdcde;color:#2c3338}#wp-link li.selected .item-title{font-weight:600}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#646970;font-size:11px;position:absolute;left:5px;top:5px}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fff;border-top:1px solid #dcdcde;position:absolute;bottom:0;right:0;left:0}#wp-link-cancel{line-height:1.92307692;float:right}#wp-link-update{line-height:1.76923076;float:left}#wp-link-submit{float:left}@media screen and (max-width:782px){#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:calc(2.71428571em + 23px)}#wp-link-cancel{line-height:2.46153846}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-right:0;right:10px;left:10px;max-width:500px}}@media screen and (max-height:620px){#wp-link-wrap{transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:calc(100% - 92px);padding-bottom:2px}}div.wp-link-preview{float:right;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#2271b1;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out;cursor:pointer}div.wp-link-preview a.wplink-url-error{color:#d63638}div.wp-link-input{float:right;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;box-sizing:border-box;line-height:1.28571429;min-height:26px}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-left:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #4f94d4;box-shadow:0 1px 2px rgba(79,148,212,.8);background-color:#fff}.ui-autocomplete.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:right}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:left}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#dcdcde;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 5px 8px 0}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file +.mce-tinymce{box-shadow:none}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}.mce-container .mce-monospace,.mce-widget .mce-monospace{font-family:Consolas,Monaco,monospace;font-size:13px;line-height:150%}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);transition:none;background:#000}.mce-window{border-radius:0;box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #ddd;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;left:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:normal 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#00a0d2}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-window-head .mce-dragh{width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #ddd}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;border-radius:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 20px 0 10px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(even),.mce-window .wp-editor-help table.fixed th:nth-child(even){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);border-radius:0;box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px;padding:6px 12px 6px 15px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #ddd}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #ddd;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.15);box-sizing:border-box;margin-bottom:8px;position:absolute;-moz-user-select:none;-webkit-user-select:none;user-select:none;max-width:98%;z-index:100100}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;right:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{right:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-full{left:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#fafafa;border-color:#555d66;color:#23282d;box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#ebebeb;border-color:#555d66;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-btn.mce-active,.mce-btn.mce-active button,.mce-btn.mce-active i,.mce-btn.mce-active:hover button,.mce-btn.mce-active:hover i{color:inherit}.mce-toolbar .mce-btn-group .mce-btn.mce-active:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#23282d}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;box-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#555d66}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-right:6px;padding-left:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-left:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;right:3px;height:3px;width:20px;background:#555d66}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{box-shadow:0 0 1px 1px #33b3db}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{border-radius:0;direction:rtl;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #555d66;margin-right:2px;margin-left:2px}.mce-listbox i.mce-caret{left:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#23282d}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #23282d;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-left-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa;color:#fff}.mce-menu-item.mce-active .mce-menu-shortcut,.mce-menu-item.mce-disabled:hover .mce-ico,.mce-menu-item.mce-disabled:hover .mce-text,.mce-menu-item:focus .mce-ico,.mce-menu-item:focus .mce-menu-shortcut,.mce-menu-item:focus .mce-text,.mce-menu-item:hover .mce-ico,.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item:hover .mce-text{color:inherit}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}div.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #ddd;height:0;margin:5px 0}.mce-menubtn span{margin-left:0;padding-right:3px}.mce-menu-has-icons i.mce-ico:before{margin-right:-2px}.mce-menu.mce-menu-align .mce-menu-item-normal{position:relative}.mce-menu.mce-menu-align .mce-menu-shortcut{bottom:.6em;font-size:.9em}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-shadow:0 1px 0 #ccc}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}.mce-window .mce-btn.mce-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-window .mce-btn.mce-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.mce-window .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-menubtn.mce-fixed-width span{overflow-x:hidden;text-overflow:ellipsis;width:82px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#ddd;cursor:pointer}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-tooltip{margin-top:2px}.rtl .mce-tooltip.wp-hide-mce-tooltip{display:none!important}.mce-tooltip-inner{border-radius:3px;box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#555d66;line-height:20px;width:20px;height:20px;text-align:center;text-shadow:none;margin:0;padding:0}.qt-dfw{color:#555d66;line-height:20px;width:28px;height:26px;text-align:center;text-shadow:none}.mce-toolbar .mce-btn .mce-open{line-height:20px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-right-color:#23282d}div.mce-notification{right:10%!important;left:10%}.mce-notification button.mce-close{left:6px;top:3px;font-weight:400;color:#555d66}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:normal 20px/1 dashicons;padding:0;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:-2px;padding-left:2px}.qt-dfw{font:normal 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:"\f200"}i.mce-i-italic:before{content:"\f201"}i.mce-i-bullist:before{content:"\f203"}i.mce-i-numlist:before{content:"\f204"}i.mce-i-blockquote:before{content:"\f205"}i.mce-i-alignleft:before{content:"\f206"}i.mce-i-aligncenter:before{content:"\f207"}i.mce-i-alignright:before{content:"\f208"}i.mce-i-link:before{content:"\f103"}i.mce-i-unlink:before{content:"\f225"}i.mce-i-wp_more:before{content:"\f209"}i.mce-i-strikethrough:before{content:"\f224"}i.mce-i-spellchecker:before{content:"\f210"}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:"\f211"}i.mce-i-wp_adv:before{content:"\f212"}i.mce-i-underline:before{content:"\f213"}i.mce-i-alignjustify:before{content:"\f214"}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:"\f215"}i.mce-i-pastetext:before{content:"\f217"}i.mce-i-removeformat:before{content:"\f218"}i.mce-i-charmap:before{content:"\f220"}i.mce-i-outdent:before{content:"\f221"}i.mce-i-indent:before{content:"\f222"}i.mce-i-undo:before{content:"\f171"}i.mce-i-redo:before{content:"\f172"}i.mce-i-help:before,i.mce-i-wp_help:before{content:"\f223"}i.mce-i-wp-media-library:before{content:"\f104"}i.mce-i-ltr:before{content:"\f320"}i.mce-i-wp_page:before{content:"\f105"}i.mce-i-hr:before{content:"\f460"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-wrap{position:relative}.wp-editor-tools{position:relative;z-index:1}.wp-editor-tools:after{clear:both;content:"";display:table}.wp-editor-container{clear:both;border:1px solid #e5e5e5}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;box-shadow:none}.wp-editor-tabs{float:left}.wp-switch-editor{float:right;box-sizing:content-box;position:relative;top:1px;background:#ebebeb;color:#666;cursor:pointer;font-size:13px;line-height:19px;height:20px;margin:5px 5px 0 0;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#23282d}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f5f5f5;color:#555;border-bottom-color:#f5f5f5}.wp-media-buttons{float:right}.wp-media-buttons .button{margin-left:5px;margin-bottom:4px;padding-right:7px;padding-left:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-right:5px}.wp-media-buttons a{text-decoration:none;color:#444;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:normal 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{content:"\f104"}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #ddd;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-left:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.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:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;left:0;margin:5px 0 0 5px}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 0 0 4px}.mce-toolbar .mce-colorbutton .mce-preview{right:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#555;background-color:#ccc}#wp-link-wrap{display:none;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-right:-250px;margin-top:-125px;position:fixed;top:50%;right:50%;z-index:100105;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap{height:500px;margin-top:-250px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}#wp-link-close{color:#666;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#wp-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:37px;right:0;left:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:80px;text-align:left;padding-left:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{float:right;width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:right;margin-top:4px}#wp-link .link-search-wrapper .spinner{margin-top:5px}#wp-link .link-target{padding:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 0 12px;background:#fff;overflow:auto;position:absolute;right:16px;left:16px;bottom:0;top:166px}.has-text-field #wp-link .query-results{top:200px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 10px 4px 6px;cursor:pointer;position:relative}#wp-link .query-notice{padding:0;border-bottom:1px solid #dfdfdf;background-color:#f7fcfe;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-right:4px solid #00a0d2}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dfdfdf;background-color:#fef7f1}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-right:4px solid #d54e21}#wp-link .query-results em{font-style:normal}#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:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:600}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;left:5px;top:5px}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;right:0;left:0}#wp-link-cancel{line-height:25px;float:right}#wp-link-update{line-height:23px;float:left}#wp-link-submit{float:left}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap .query-results{top:195px}#wp-link-wrap.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-right:0;right:10px;left:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}#search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:calc(100% - 92px);padding-bottom:2px}#search-panel .query-results{position:static}}div.wp-link-preview{float:right;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#0073aa;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out;cursor:pointer}div.wp-link-preview a.wplink-url-error{color:#dc3232}div.wp-link-input{float:right;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;box-sizing:border-box}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-left:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #5b9dd9;box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:right}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:left}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 5px 8px 0}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file diff --git a/wp-includes/css/editor.css b/wp-includes/css/editor.css index db139ca..3acdf6d 100644 --- a/wp-includes/css/editor.css +++ b/wp-includes/css/editor.css @@ -34,7 +34,7 @@ .mce-window { border-radius: 0; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); -webkit-font-smoothing: subpixel-antialiased; transition: none; } @@ -44,14 +44,14 @@ } .mce-window .mce-window-head { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #ddd; padding: 0; min-height: 36px; } .mce-window .mce-window-head .mce-title { - color: #3c434a; + color: #444; font-size: 18px; font-weight: 600; line-height: 36px; @@ -74,7 +74,7 @@ .mce-window-head .mce-close .mce-i-remove:before { font: normal 20px/36px dashicons; text-align: center; - color: #646970; + color: #666; width: 36px; height: 36px; display: block; @@ -82,13 +82,13 @@ .mce-window-head .mce-close:hover .mce-i-remove:before, .mce-window-head .mce-close:focus .mce-i-remove:before { - color: #135e96; + color: #00a0d2; } .mce-window-head .mce-close:focus .mce-i-remove, div.mce-tab:focus { - box-shadow: 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } .mce-window .mce-window-head .mce-dragh { @@ -96,15 +96,15 @@ div.mce-tab:focus { } .mce-window .mce-foot { - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .mce-textbox, .mce-checkbox i.mce-i-checkbox, #wp-link .query-results { - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-radius: 0; - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.07); + box-shadow: inset 0 1px 2px rgba(0,0,0,0.07); transition: .05s all ease-in-out; } @@ -112,8 +112,8 @@ div.mce-tab:focus { .mce-textbox.mce-focus, .mce-checkbox:focus i.mce-i-checkbox, #wp-link .query-results:focus { - border-color: #4f94d4; - box-shadow: 0 0 2px rgba(79, 148, 212, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 2px rgba(30,140,190,0.8); } .mce-window .mce-wp-help { @@ -188,21 +188,21 @@ div.mce-tab:focus { padding: 2px 7px 3px; font-weight: 600; margin: 0; - background: #f0f0f1; - background: rgba(0, 0, 0, 0.08); + background: #eaeaea; + background: rgba(0,0,0,0.08); } .mce-window .wp-help-th-center td:nth-child(odd), .mce-window .wp-help-th-center th:nth-child(odd) { - text-align: center; + text-align: center; } /* TinyMCE menus */ .mce-menu, .mce-floatpanel.mce-popover { - border-color: rgba(0, 0, 0, 0.15); + border-color: rgba(0,0,0,0.15); border-radius: 0; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); } .mce-menu, @@ -235,7 +235,7 @@ div.mce-panel { } .mce-panel.mce-menu { - border: 1px solid #dcdcde; + border: 1px solid #ddd; } div.mce-tab { @@ -244,21 +244,21 @@ div.mce-tab { /* TinyMCE toolbars */ div.mce-toolbar-grp { - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f5f5f5; padding: 0; position: relative; } div.mce-inline-toolbar-grp { - border: 1px solid #a7aaad; + border: 1px solid #a0a5aa; border-radius: 2px; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 1px 3px rgba( 0, 0, 0, 0.15 ); box-sizing: border-box; margin-bottom: 8px; position: absolute; - -webkit-user-select: none; -moz-user-select: none; + -webkit-user-select: none; user-select: none; max-width: 98%; z-index: 100100; /* Same as the other TinyMCE "panels" */ @@ -287,28 +287,28 @@ div.mce-inline-toolbar-grp:after { div.mce-inline-toolbar-grp.mce-arrow-up:before { top: -9px; - border-bottom-color: #a7aaad; + border-bottom-color: #a0a5aa; border-width: 0 9px 9px; margin-left: -9px; } div.mce-inline-toolbar-grp.mce-arrow-down:before { bottom: -9px; - border-top-color: #a7aaad; + border-top-color: #a0a5aa; border-width: 9px 9px 0; margin-left: -9px; } div.mce-inline-toolbar-grp.mce-arrow-up:after { top: -8px; - border-bottom-color: #f6f7f7; + border-bottom-color: #f5f5f5; border-width: 0 8px 8px; margin-left: -8px; } div.mce-inline-toolbar-grp.mce-arrow-down:after { bottom: -8px; - border-top-color: #f6f7f7; + border-top-color: #f5f5f5; border-width: 8px 8px 0; margin-left: -8px; } @@ -360,17 +360,8 @@ div.mce-toolbar-grp > div { margin: 0; } -/* Classic block hide/show toolbars */ -.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child) { - display: none; -} - -.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar { - display: block; -} - div.mce-statusbar { - border-top: 1px solid #dcdcde; + border-top: 1px solid #e5e5e5; } div.mce-path { @@ -409,19 +400,19 @@ div.mce-path { .mce-toolbar .mce-btn-group .mce-btn:focus, .qt-dfw:hover, .qt-dfw:focus { - background: #f6f7f7; - border-color: #50575e; - color: #1d2327; - box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0, 0, 0, 0.08); + background: #fafafa; + border-color: #555d66; + color: #23282d; + box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 ); outline: none; } .mce-toolbar .mce-btn-group .mce-btn.mce-active, .mce-toolbar .mce-btn-group .mce-btn:active, .qt-dfw.active { - background: #f0f0f1; - border-color: #50575e; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.3); + background: #ebebeb; + border-color: #555d66; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.3 ); } .mce-btn.mce-active, @@ -434,20 +425,20 @@ div.mce-path { .mce-toolbar .mce-btn-group .mce-btn.mce-active:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-active:focus { - border-color: #1d2327; + border-color: #23282d; } .mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus { - color: #a7aaad; + color: #a0a5aa; background: none; - border-color: #dcdcde; + border-color: #ddd; text-shadow: 0 1px 0 #fff; box-shadow: none; } .mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus { - border-color: #50575e; + border-color: #555d66; } .mce-toolbar .mce-btn-group .mce-first, @@ -463,7 +454,7 @@ div.mce-path { .mce-toolbar .mce-listbox button { font-size: 13px; - line-height: 1.53846153; + line-height: 20px; padding-left: 6px; padding-right: 20px; } @@ -488,14 +479,14 @@ div.mce-path { left: 3px; height: 3px; width: 20px; - background: #50575e; + background: #555d66; } .mce-toolbar .mce-btn-group .mce-btn.mce-primary { min-width: 0; - background: #3582c4; - border-color: #2271b1 #135e96 #135e96; - box-shadow: 0 1px 0 #135e96; + background: #0085ba; + border-color: #0073aa #006799 #006799; + box-shadow: 0 1px 0 #006799; color: #fff; text-decoration: none; text-shadow: none; @@ -512,37 +503,37 @@ div.mce-path { .mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus { - background: #4f94d4; - border-color: #135e96; + background: #008ec2; + border-color: #006799; color: #fff; } .mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus { - box-shadow: 0 0 1px 1px #72aee6; + box-shadow: 0 0 1px 1px #33b3db; } .mce-toolbar .mce-btn-group .mce-btn.mce-primary:active { - background: #2271b1; - border-color: #135e96; - box-shadow: inset 0 2px 0 #135e96; + background: #0073aa; + border-color: #006799; + box-shadow: inset 0 2px 0 #006799; } /* mce listbox */ .mce-toolbar .mce-btn-group .mce-btn.mce-listbox { - border-radius: 0; - direction: ltr; - background: #fff; - border: 1px solid #dcdcde; - box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, 0.2); + border-radius: 0; + direction: ltr; + background: #fff; + border: 1px solid #ddd; + box-shadow: inset 0 1px 1px -1px rgba(0, 0, 0, .2); } .mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover, .mce-toolbar .mce-btn-group .mce-btn.mce-listbox:focus { - border-color: #c3c4c7; + border-color: #b4b9be; } .mce-panel .mce-btn i.mce-caret { - border-top: 6px solid #50575e; + border-top: 6px solid #555d66; margin-left: 2px; margin-right: 2px; } @@ -553,12 +544,12 @@ div.mce-path { .mce-panel .mce-btn:hover i.mce-caret, .mce-panel .mce-btn:focus i.mce-caret { - border-top-color: #1d2327; + border-top-color: #23282d; } .mce-panel .mce-active i.mce-caret { border-top: 0; - border-bottom: 6px solid #1d2327; + border-bottom: 6px solid #23282d; margin-top: 7px; } @@ -578,37 +569,21 @@ div.mce-path { .mce-menu .mce-menu-item:hover, .mce-menu .mce-menu-item.mce-selected, .mce-menu .mce-menu-item:focus, -.mce-menu .mce-menu-item.mce-active.mce-menu-item-normal, -.mce-menu .mce-menu-item.mce-active.mce-menu-item-preview { - background: #2271b1; /* See color scheme. */ +.mce-menu .mce-menu-item-normal.mce-active, +.mce-menu .mce-menu-item-preview.mce-active { + background: #0073aa; /* See color scheme. */ color: #fff; } -.mce-menu .mce-menu-item:hover .mce-caret, -.mce-menu .mce-menu-item:focus .mce-caret, -.mce-menu .mce-menu-item.mce-selected .mce-caret { - border-left-color: #fff; -} - -/* rtl:ignore */ -.rtl .mce-menu .mce-menu-item:hover .mce-caret, -.rtl .mce-menu .mce-menu-item:focus .mce-caret, -.rtl .mce-menu .mce-menu-item.mce-selected .mce-caret { - border-left-color: inherit; - border-right-color: #fff; -} - -.mce-menu .mce-menu-item:hover .mce-text, -.mce-menu .mce-menu-item:focus .mce-text, -.mce-menu .mce-menu-item:hover .mce-ico, -.mce-menu .mce-menu-item:focus .mce-ico, -.mce-menu .mce-menu-item.mce-selected .mce-text, -.mce-menu .mce-menu-item.mce-selected .mce-ico, -.mce-menu .mce-menu-item:hover .mce-menu-shortcut, -.mce-menu .mce-menu-item:focus .mce-menu-shortcut, -.mce-menu .mce-menu-item.mce-active .mce-menu-shortcut, -.mce-menu .mce-menu-item.mce-disabled:hover .mce-text, -.mce-menu .mce-menu-item.mce-disabled:hover .mce-ico { +.mce-menu-item:hover .mce-text, +.mce-menu-item:focus .mce-text, +.mce-menu-item:hover .mce-ico, +.mce-menu-item:focus .mce-ico, +.mce-menu-item:hover .mce-menu-shortcut, +.mce-menu-item:focus .mce-menu-shortcut, +.mce-menu-item.mce-active .mce-menu-shortcut, +.mce-menu-item.mce-disabled:hover .mce-text, +.mce-menu-item.mce-disabled:hover .mce-ico { color: inherit; } @@ -617,14 +592,14 @@ div.mce-path { } .mce-menu .mce-menu-item.mce-disabled:hover { - background: #c3c4c7; + background: #ccc; } /* Menubar */ div.mce-menubar { - border-color: #dcdcde; + border-color: #e5e5e5; background: #fff; - border-width: 0 0 1px; + border-width: 0px 0px 1px; } .mce-menubar .mce-menubtn:hover, @@ -635,16 +610,16 @@ div.mce-menubar { } .mce-menubar .mce-menubtn:focus { - color: #043959; + color: #124964; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } div.mce-menu .mce-menu-item-sep, .mce-menu-item-sep:hover { - border-bottom: 1px solid #dcdcde; - height: 0; + border-bottom: 1px solid #ddd; + height: 0px; margin: 5px 0; } @@ -674,12 +649,12 @@ div.mce-menu .mce-menu-item-sep, color: #fff; text-shadow: none; padding: 0; - line-height: 1.85714285; + line-height: 26px; } .mce-window .mce-btn { - color: #50575e; - background: #f6f7f7; + color: #555; + background: #f7f7f7; text-decoration: none; font-size: 13px; line-height: 26px; @@ -687,11 +662,11 @@ div.mce-menu .mce-menu-item-sep, margin: 0; padding: 0; cursor: pointer; - border: 1px solid #c3c4c7; + border: 1px solid #cccccc; -webkit-appearance: none; border-radius: 3px; white-space: nowrap; - box-shadow: 0 1px 0 #c3c4c7; + box-shadow: 0 1px 0 #cccccc; } /* Remove the dotted border on :focus and the extra padding in Firefox */ @@ -703,27 +678,27 @@ div.mce-menu .mce-menu-item-sep, .mce-window .mce-btn:hover, .mce-window .mce-btn:focus { - background: #f6f7f7; - border-color: #8c8f94; - color: #1d2327; + background: #fafafa; + border-color: #999; + color: #23282d; } .mce-window .mce-btn:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .mce-window .mce-btn:active { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); transform: translateY(1px); } .mce-window .mce-btn.mce-disabled { - color: #a7aaad !important; - border-color: #dcdcde !important; - background: #f6f7f7 !important; + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; box-shadow: none !important; text-shadow: 0 1px 0 #fff !important; cursor: default; @@ -731,42 +706,42 @@ div.mce-menu .mce-menu-item-sep, } .mce-window .mce-btn.mce-primary { - background: #3582c4; - border-color: #2271b1 #135e96 #135e96; - box-shadow: 0 1px 0 #135e96; + background: #0085ba; + border-color: #0073aa #006799 #006799; + box-shadow: 0 1px 0 #006799; color: #fff; text-decoration: none; - text-shadow: 0 -1px 1px #135e96, - 1px 0 1px #135e96, - 0 1px 1px #135e96, - -1px 0 1px #135e96; + text-shadow: 0 -1px 1px #006799, + 1px 0 1px #006799, + 0 1px 1px #006799, + -1px 0 1px #006799; } .mce-window .mce-btn.mce-primary:hover, .mce-window .mce-btn.mce-primary:focus { - background: #4f94d4; - border-color: #135e96; + background: #008ec2; + border-color: #006799; color: #fff; } .mce-window .mce-btn.mce-primary:focus { - box-shadow: 0 1px 0 #2271b1, - 0 0 2px 1px #72aee6; + box-shadow: 0 1px 0 #0073aa, + 0 0 2px 1px #33b3db; } .mce-window .mce-btn.mce-primary:active { - background: #2271b1; - border-color: #135e96; - box-shadow: inset 0 2px 0 #135e96; + background: #0073aa; + border-color: #006799; + box-shadow: inset 0 2px 0 #006799; vertical-align: top; } .mce-window .mce-btn.mce-primary.mce-disabled { - color: #9ec2e6 !important; - background: #4f94d4 !important; - border-color: #3582c4 !important; + color: #66c6e4 !important; + background: #008ec2 !important; + border-color: #007cb2 !important; box-shadow: none !important; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) !important; + text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important; cursor: default; } @@ -783,18 +758,18 @@ div.mce-menu .mce-menu-item-sep, .mce-charmap td { padding: 0; - border-color: #dcdcde; + border-color: #ddd; cursor: pointer; } .mce-charmap td:hover { - background: #f6f7f7; + background: #f3f3f3; } .mce-charmap td div { width: 18px; height: 22px; - line-height: 1.57142857; + line-height: 22px; } /* TinyMCE tooltips */ @@ -802,25 +777,30 @@ div.mce-menu .mce-menu-item-sep, margin-top: 2px; } +/* Don't show the tooltip. Used in Chrome RTL, see https://core.trac.wordpress.org/ticket/42018 */ +.rtl .mce-tooltip.wp-hide-mce-tooltip { + display: none !important; +} + .mce-tooltip-inner { border-radius: 3px; - box-shadow: 0 3px 5px rgba(0, 0, 0, 0.2); + box-shadow: 0 3px 5px rgba( 0, 0, 0, 0.2 ); color: #fff; font-size: 12px; } /* TinyMCE icons */ .mce-ico { - font-family: tinymce, Arial; + font-family: 'tinymce', Arial; } .mce-btn-small .mce-ico { - font-family: tinymce-small, Arial; + font-family: 'tinymce-small', Arial; } .mce-toolbar .mce-ico { - color: #50575e; - line-height: 1; + color: #555d66; + line-height: 20px; width: 20px; height: 20px; text-align: center; @@ -830,8 +810,8 @@ div.mce-menu .mce-menu-item-sep, } .qt-dfw { - color: #50575e; - line-height: 1; + color: #555d66; + line-height: 20px; width: 28px; height: 26px; text-align: center; @@ -845,7 +825,7 @@ div.mce-menu .mce-menu-item-sep, .mce-toolbar .mce-btn:hover .mce-open, .mce-toolbar .mce-btn:focus .mce-open, .mce-toolbar .mce-btn.mce-active .mce-open { - border-left-color: #1d2327; + border-left-color: #23282d; } div.mce-notification { @@ -857,7 +837,7 @@ div.mce-notification { right: 6px; top: 3px; font-weight: 400; - color: #50575e; + color: #555d66; } .mce-notification button.mce-close:hover, @@ -906,7 +886,7 @@ i.mce-i-remove { font: normal 20px/1 dashicons; padding: 0; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; margin-left: -2px; @@ -916,7 +896,7 @@ i.mce-i-remove { .qt-dfw { font: normal 20px/1 dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -1081,7 +1061,7 @@ i.mce-i-wp_code:before { .wp-editor-container { clear: both; - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; } .wp-editor-area { @@ -1120,23 +1100,23 @@ i.mce-i-wp_code:before { box-sizing: content-box; position: relative; top: 1px; - background: #f0f0f1; - color: #646970; + background: #ebebeb; + color: #666; cursor: pointer; font-size: 13px; - line-height: 1.46153846; + line-height: 19px; height: 20px; margin: 5px 0 0 5px; padding: 3px 8px 4px; - border: 1px solid #dcdcde; + border: 1px solid #e5e5e5; } .wp-switch-editor:focus { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); outline: none; - color: #1d2327; + color: #23282d; } .wp-switch-editor:active, @@ -1146,7 +1126,7 @@ i.mce-i-wp_code:before { } .wp-switch-editor:active { - background-color: #f6f7f7; + background-color: #f5f5f5; box-shadow: none; } @@ -1155,14 +1135,14 @@ i.mce-i-wp_code:before { } .tmce-active .quicktags-toolbar { - display: none; + display: none; } .tmce-active .switch-tmce, .html-active .switch-html { - background: #f6f7f7; - color: #50575e; - border-bottom-color: #f6f7f7; + background: #f5f5f5; + color: #555; + border-bottom-color: #f5f5f5; } .wp-media-buttons { @@ -1189,7 +1169,7 @@ i.mce-i-wp_code:before { .wp-media-buttons a { text-decoration: none; - color: #3c434a; + color: #444; font-size: 12px; } @@ -1200,10 +1180,9 @@ i.mce-i-wp_code:before { .wp-media-buttons span.wp-media-buttons-icon { display: inline-block; - width: 20px; - height: 20px; - line-height: 1; - vertical-align: middle; + width: 18px; + height: 18px; + vertical-align: text-top; margin: 0 2px; } @@ -1213,7 +1192,7 @@ i.mce-i-wp_code:before { .wp-media-buttons .add_media span.wp-media-buttons-icon:before { font: normal 18px/1 dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } @@ -1222,16 +1201,12 @@ i.mce-i-wp_code:before { content: "\f104"; } -.mce-content-body dl.wp-caption { - max-width: 100%; -} - /* Quicktags */ .quicktags-toolbar { padding: 3px; position: relative; - border-bottom: 1px solid #dcdcde; - background: #f6f7f7; + border-bottom: 1px solid #ddd; + background: #f5f5f5; min-height: 30px; } @@ -1264,13 +1239,6 @@ i.mce-i-wp_code:before { position: absolute; top: 0; right: 0; -} - -.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw { - margin: 7px 7px 0 0; -} - -.qt-dfw { margin: 5px 5px 0 0; } @@ -1279,7 +1247,7 @@ i.mce-i-wp_code:before { margin: 2px; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .mce-toolbar .mce-btn button, .qt-dfw { padding: 6px 7px; @@ -1318,12 +1286,12 @@ i.mce-i-wp_code:before { } } -@media screen and (min-width: 782px) { +@media screen and ( min-width: 782px ) { .wp-core-ui .quicktags-toolbar input.button.button-small { /* .button-small is normally 11px, but a bit too small for these buttons. */ font-size: 12px; - min-height: 26px; - line-height: 2; + height: 26px; + line-height: 24px; } } @@ -1339,10 +1307,12 @@ i.mce-i-wp_code:before { #wp_delimgbtn, #wp_editgallery, #wp_delgallery { - background-color: #f0f0f1; + border-color: #999; + background-color: #eee; margin: 2px; padding: 2px; - border: 1px solid #8c8f94; + border-width: 1px; + border-style: solid; border-radius: 3px; } @@ -1350,8 +1320,8 @@ i.mce-i-wp_code:before { #wp_delimgbtn:hover, #wp_editgallery:hover, #wp_delgallery:hover { - border-color: #50575e; - background-color: #c3c4c7; + border-color: #555; + background-color: #ccc; } /*------------------------------------------------------------------------------ @@ -1361,7 +1331,7 @@ i.mce-i-wp_code:before { #wp-link-wrap { display: none; background-color: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); width: 500px; overflow: hidden; margin-left: -250px; @@ -1393,8 +1363,8 @@ i.mce-i-wp_code:before { } #wp-link-wrap { - height: 600px; - margin-top: -300px; + height: 500px; + margin-top: -250px; } #wp-link-wrap .wp-link-text-field { @@ -1406,17 +1376,18 @@ i.mce-i-wp_code:before { } #link-modal-title { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #ddd; + height: 36px; font-size: 18px; font-weight: 600; - line-height: 2; + line-height: 36px; margin: 0; padding: 0 36px 0 16px; } #wp-link-close { - color: #646970; + color: #666; padding: 0; position: absolute; top: 0; @@ -1432,7 +1403,7 @@ i.mce-i-wp_code:before { #wp-link-close:before { font: normal 20px/36px dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; width: 36px; @@ -1442,30 +1413,24 @@ i.mce-i-wp_code:before { #wp-link-close:hover, #wp-link-close:focus { - color: #135e96; + color: #00a0d2; } #wp-link-close:focus { outline: none; box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); } #wp-link-wrap #link-selector { -webkit-overflow-scrolling: touch; padding: 0 16px; position: absolute; - top: calc(2.15384615em + 16px); + top: 37px; left: 0; right: 0; - bottom: calc(2.15384615em + 19px); - display: flex; - flex-direction: column; - overflow: auto; + bottom: 44px; } #wp-link ol, @@ -1500,7 +1465,7 @@ i.mce-i-wp_code:before { #wp-link #link-options label span, #wp-link #search-panel label span.search-label { display: inline-block; - width: 120px; + width: 80px; text-align: right; padding-right: 5px; max-width: 24%; @@ -1509,6 +1474,7 @@ i.mce-i-wp_code:before { } #wp-link .link-search-field { + float: left; width: 250px; max-width: 70%; } @@ -1516,20 +1482,23 @@ i.mce-i-wp_code:before { #wp-link .link-search-wrapper { margin: 5px 0 9px; display: block; + overflow: hidden; } -#wp-link .query-results { - position: absolute; - width: calc(100% - 32px); +#wp-link .link-search-wrapper span { + float: left; + margin-top: 4px; } #wp-link .link-search-wrapper .spinner { - float: none; - margin: -3px 0 0 4px; + margin-top: 5px; } #wp-link .link-target { padding: 3px 0 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } #wp-link .link-target label { @@ -1537,18 +1506,26 @@ i.mce-i-wp_code:before { } #wp-link .query-results { - border: 1px #dcdcde solid; + border: 1px #dfdfdf solid; margin: 0 0 12px; background: #fff; overflow: auto; - max-height: 290px; + position: absolute; + left: 16px; + right: 16px; + bottom: 0; + top: 166px; +} + +.has-text-field #wp-link .query-results { + top: 200px; } #wp-link li { clear: both; margin-bottom: 0; - border-bottom: 1px solid #f0f0f1; - color: #2c3338; + border-bottom: 1px solid #f1f1f1; + color: #32373c; padding: 4px 6px 4px 10px; cursor: pointer; position: relative; @@ -1556,8 +1533,8 @@ i.mce-i-wp_code:before { #wp-link .query-notice { padding: 0; - border-bottom: 1px solid #dcdcde; - background-color: #fff; + border-bottom: 1px solid #dfdfdf; + background-color: #f7fcfe; color: #000; } @@ -1565,19 +1542,19 @@ i.mce-i-wp_code:before { #wp-link .query-notice .query-notice-hint { display: block; padding: 6px; - border-left: 4px solid #72aee6; + border-left: 4px solid #00a0d2; } #wp-link .unselectable.no-matches-found { padding: 0; - border-bottom: 1px solid #dcdcde; - background-color: #f6f7f7; + border-bottom: 1px solid #dfdfdf; + background-color: #fef7f1; } #wp-link .no-matches-found .item-title { display: block; padding: 6px; - border-left: 4px solid #d63638; + border-left: 4px solid #d54e21; } #wp-link .query-results em { @@ -1585,23 +1562,23 @@ i.mce-i-wp_code:before { } #wp-link li:hover { - background: #f0f6fc; - color: #101517; + background: #eaf2fa; + color: #151515; } #wp-link li.unselectable { - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #dfdfdf; } #wp-link li.unselectable:hover { background: #fff; cursor: auto; - color: #2c3338; + color: #32373c; } #wp-link li.selected { - background: #dcdcde; - color: #2c3338; + background: #ddd; + color: #32373c; } #wp-link li.selected .item-title { @@ -1621,7 +1598,7 @@ i.mce-i-wp_code:before { #wp-link .item-info { text-transform: uppercase; - color: #646970; + color: #666; font-size: 11px; position: absolute; right: 5px; @@ -1635,8 +1612,8 @@ i.mce-i-wp_code:before { #wp-link .submitbox { padding: 8px 16px; - background: #fff; - border-top: 1px solid #dcdcde; + background: #fcfcfc; + border-top: 1px solid #ddd; position: absolute; bottom: 0; left: 0; @@ -1644,12 +1621,12 @@ i.mce-i-wp_code:before { } #wp-link-cancel { - line-height: 1.92307692; + line-height: 25px; float: left; } #wp-link-update { - line-height: 1.76923076; + line-height: 23px; float: right; } @@ -1657,17 +1634,29 @@ i.mce-i-wp_code:before { float: right; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { + #wp-link-wrap { + margin-top: -140px; + } + + #wp-link-wrap .query-results { + top: 195px; + } + + #wp-link-wrap.has-text-field .query-results { + top: 235px; + } + #link-selector { padding: 0 16px 60px; } #wp-link-wrap #link-selector { - bottom: calc(2.71428571em + 23px); + bottom: 52px; } #wp-link-cancel { - line-height: 2.46153846; + line-height: 32px; } #wp-link .link-target { @@ -1679,7 +1668,7 @@ i.mce-i-wp_code:before { } } -@media screen and (max-width: 520px) { +@media screen and ( max-width: 520px ) { #wp-link-wrap { width: auto; margin-left: 0; @@ -1689,7 +1678,7 @@ i.mce-i-wp_code:before { } } -@media screen and (max-height: 620px) { +@media screen and ( max-height: 520px ) { #wp-link-wrap { transition: none; height: auto; @@ -1701,9 +1690,13 @@ i.mce-i-wp_code:before { #link-selector { overflow: auto; } + + #search-panel .query-results { + position: static; + } } -@media screen and (max-height: 290px) { +@media screen and ( max-height: 290px ) { #wp-link-wrap { height: auto; margin-top: 0; @@ -1716,6 +1709,10 @@ i.mce-i-wp_code:before { height: calc(100% - 92px); padding-bottom: 2px; } + + #search-panel .query-results { + position: static; + } } div.wp-link-preview { @@ -1727,7 +1724,7 @@ div.wp-link-preview { } div.wp-link-preview a { - color: #2271b1; + color: #0073aa; text-decoration: underline; transition-property: border, background, color; transition-duration: .05s; @@ -1736,7 +1733,7 @@ div.wp-link-preview a { } div.wp-link-preview a.wplink-url-error { - color: #d63638; + color: #dc3232; } div.wp-link-input { @@ -1749,9 +1746,6 @@ div.wp-link-input input { width: 300px; padding: 3px; box-sizing: border-box; - line-height: 1.28571429; /* 18px */ - /* Override value inherited from default input fields. */ - min-height: 26px; } .mce-toolbar div.wp-link-preview ~ .mce-btn, @@ -1771,8 +1765,8 @@ div.wp-link-input input { margin: 0; list-style: none; position: absolute; - border: 1px solid #4f94d4; - box-shadow: 0 1px 2px rgba(79, 148, 212, 0.8); + border: 1px solid #5b9dd9; + box-shadow: 0 1px 2px rgba( 30, 140, 190, 0.8 ); background-color: #fff; } @@ -1789,11 +1783,11 @@ div.wp-link-input input { } .ui-autocomplete.wplink-autocomplete li.ui-state-focus { - background-color: #dcdcde; + background-color: #ddd; cursor: pointer; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { div.wp-link-preview, div.wp-link-input { max-width: 70%; @@ -1840,8 +1834,8 @@ div.wp-link-input input { } html:lang(he-il) .rtl .wp-switch-editor, -html:lang(he-il) .rtl .quicktags-toolbar input { - font-family: Arial, sans-serif; +html:lang(he-il) .rtl .quicktags-toolbar input { + font-family: Arial, sans-serif; } /* HiDPI */ diff --git a/wp-includes/css/editor.min.css b/wp-includes/css/editor.min.css index 10ac765..0a6687c 100644 --- a/wp-includes/css/editor.min.css +++ b/wp-includes/css/editor.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.mce-tinymce{box-shadow:none}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}.mce-container .mce-monospace,.mce-widget .mce-monospace{font-family:Consolas,Monaco,monospace;font-size:13px;line-height:150%}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);transition:none;background:#000}.mce-window{border-radius:0;box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fff;border-bottom:1px solid #dcdcde;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#3c434a;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;right:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:normal 20px/36px dashicons;text-align:center;color:#646970;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#135e96}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.mce-window .mce-window-head .mce-dragh{width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dcdcde}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #dcdcde;border-radius:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#4f94d4;box-shadow:0 0 2px rgba(79,148,212,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 10px 0 20px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(2n),.mce-window .wp-editor-help table.fixed th:nth-child(2n){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#f0f0f1;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);border-radius:0;box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px;padding:6px 15px 6px 12px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #dcdcde}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #dcdcde;background:#f6f7f7;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a7aaad;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.15);box-sizing:border-box;margin-bottom:8px;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;max-width:98%;z-index:100100}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a7aaad;border-width:0 9px 9px;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a7aaad;border-width:9px 9px 0;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f6f7f7;border-width:0 8px 8px;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f6f7f7;border-width:8px 8px 0;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{left:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-full{right:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:32px}.mce-toolbar .mce-btn-group{margin:0}.block-library-classic__toolbar .mce-toolbar-grp .mce-toolbar:not(:first-child){display:none}.block-library-classic__toolbar.has-advanced-toolbar .mce-toolbar-grp .mce-toolbar{display:block}div.mce-statusbar{border-top:1px solid #dcdcde}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#f6f7f7;border-color:#50575e;color:#1d2327;box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#f0f0f1;border-color:#50575e;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-btn.mce-active,.mce-btn.mce-active button,.mce-btn.mce-active i,.mce-btn.mce-active:hover button,.mce-btn.mce-active:hover i{color:inherit}.mce-toolbar .mce-btn-group .mce-btn.mce-active:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#1d2327}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a7aaad;background:0 0;border-color:#dcdcde;text-shadow:0 1px 0 #fff;box-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#50575e}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:1.53846153;padding-left:6px;padding-right:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-right:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;left:3px;height:3px;width:20px;background:#50575e}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#3582c4;border-color:#2271b1 #135e96 #135e96;box-shadow:0 1px 0 #135e96;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#4f94d4;border-color:#135e96;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{box-shadow:0 0 1px 1px #72aee6}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#2271b1;border-color:#135e96;box-shadow:inset 0 2px 0 #135e96}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{border-radius:0;direction:ltr;background:#fff;border:1px solid #dcdcde;box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#c3c4c7}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #50575e;margin-left:2px;margin-right:2px}.mce-listbox i.mce-caret{right:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#1d2327}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #1d2327;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-right-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item.mce-active.mce-menu-item-normal,.mce-menu .mce-menu-item.mce-active.mce-menu-item-preview,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#2271b1;color:#fff}.mce-menu .mce-menu-item.mce-selected .mce-caret,.mce-menu .mce-menu-item:focus .mce-caret,.mce-menu .mce-menu-item:hover .mce-caret{border-left-color:#fff}.rtl .mce-menu .mce-menu-item.mce-selected .mce-caret,.rtl .mce-menu .mce-menu-item:focus .mce-caret,.rtl .mce-menu .mce-menu-item:hover .mce-caret{border-left-color:inherit;border-right-color:#fff}.mce-menu .mce-menu-item.mce-active .mce-menu-shortcut,.mce-menu .mce-menu-item.mce-disabled:hover .mce-ico,.mce-menu .mce-menu-item.mce-disabled:hover .mce-text,.mce-menu .mce-menu-item.mce-selected .mce-ico,.mce-menu .mce-menu-item.mce-selected .mce-text,.mce-menu .mce-menu-item:focus .mce-ico,.mce-menu .mce-menu-item:focus .mce-menu-shortcut,.mce-menu .mce-menu-item:focus .mce-text,.mce-menu .mce-menu-item:hover .mce-ico,.mce-menu .mce-menu-item:hover .mce-menu-shortcut,.mce-menu .mce-menu-item:hover .mce-text{color:inherit}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#c3c4c7}div.mce-menubar{border-color:#dcdcde;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#043959;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #dcdcde;height:0;margin:5px 0}.mce-menubtn span{margin-right:0;padding-left:3px}.mce-menu-has-icons i.mce-ico:before{margin-left:-2px}.mce-menu.mce-menu-align .mce-menu-item-normal{position:relative}.mce-menu.mce-menu-align .mce-menu-shortcut{bottom:.6em;font-size:.9em}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:1.85714285}.mce-window .mce-btn{color:#50575e;background:#f6f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #c3c4c7;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-shadow:0 1px 0 #c3c4c7}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.mce-window .mce-btn:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.mce-window .mce-btn:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.mce-window .mce-btn.mce-disabled{color:#a7aaad!important;border-color:#dcdcde!important;background:#f6f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}.mce-window .mce-btn.mce-primary{background:#3582c4;border-color:#2271b1 #135e96 #135e96;box-shadow:0 1px 0 #135e96;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #135e96,1px 0 1px #135e96,0 1px 1px #135e96,-1px 0 1px #135e96}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#4f94d4;border-color:#135e96;color:#fff}.mce-window .mce-btn.mce-primary:focus{box-shadow:0 1px 0 #2271b1,0 0 2px 1px #72aee6}.mce-window .mce-btn.mce-primary:active{background:#2271b1;border-color:#135e96;box-shadow:inset 0 2px 0 #135e96;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#9ec2e6!important;background:#4f94d4!important;border-color:#3582c4!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-menubtn.mce-fixed-width span{overflow-x:hidden;text-overflow:ellipsis;width:82px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dcdcde;cursor:pointer}.mce-charmap td:hover{background:#f6f7f7}.mce-charmap td div{width:18px;height:22px;line-height:1.57142857}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{border-radius:3px;box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#50575e;line-height:1;width:20px;height:20px;text-align:center;text-shadow:none;margin:0;padding:0}.qt-dfw{color:#50575e;line-height:1;width:28px;height:26px;text-align:center;text-shadow:none}.mce-toolbar .mce-btn .mce-open{line-height:20px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-left-color:#1d2327}div.mce-notification{left:10%!important;right:10%}.mce-notification button.mce-close{right:6px;top:3px;font-weight:400;color:#50575e}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:normal 20px/1 dashicons;padding:0;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:-2px;padding-right:2px}.qt-dfw{font:normal 20px/1 dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:"\f200"}i.mce-i-italic:before{content:"\f201"}i.mce-i-bullist:before{content:"\f203"}i.mce-i-numlist:before{content:"\f204"}i.mce-i-blockquote:before{content:"\f205"}i.mce-i-alignleft:before{content:"\f206"}i.mce-i-aligncenter:before{content:"\f207"}i.mce-i-alignright:before{content:"\f208"}i.mce-i-link:before{content:"\f103"}i.mce-i-unlink:before{content:"\f225"}i.mce-i-wp_more:before{content:"\f209"}i.mce-i-strikethrough:before{content:"\f224"}i.mce-i-spellchecker:before{content:"\f210"}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:"\f211"}i.mce-i-wp_adv:before{content:"\f212"}i.mce-i-underline:before{content:"\f213"}i.mce-i-alignjustify:before{content:"\f214"}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:"\f215"}i.mce-i-pastetext:before{content:"\f217"}i.mce-i-removeformat:before{content:"\f218"}i.mce-i-charmap:before{content:"\f220"}i.mce-i-outdent:before{content:"\f221"}i.mce-i-indent:before{content:"\f222"}i.mce-i-undo:before{content:"\f171"}i.mce-i-redo:before{content:"\f172"}i.mce-i-help:before,i.mce-i-wp_help:before{content:"\f223"}i.mce-i-wp-media-library:before{content:"\f104"}i.mce-i-ltr:before{content:"\f320"}i.mce-i-wp_page:before{content:"\f105"}i.mce-i-hr:before{content:"\f460"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-wrap{position:relative}.wp-editor-tools{position:relative;z-index:1}.wp-editor-tools:after{clear:both;content:"";display:table}.wp-editor-container{clear:both;border:1px solid #dcdcde}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;box-shadow:none}.wp-editor-tabs{float:right}.wp-switch-editor{float:left;box-sizing:content-box;position:relative;top:1px;background:#f0f0f1;color:#646970;cursor:pointer;font-size:13px;line-height:1.46153846;height:20px;margin:5px 0 0 5px;padding:3px 8px 4px;border:1px solid #dcdcde}.wp-switch-editor:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:0;color:#1d2327}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{box-shadow:none}.wp-switch-editor:active{background-color:#f6f7f7;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f6f7f7;color:#50575e;border-bottom-color:#f6f7f7}.wp-media-buttons{float:left}.wp-media-buttons .button{margin-right:5px;margin-bottom:4px;padding-left:7px;padding-right:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-left:5px}.wp-media-buttons a{text-decoration:none;color:#3c434a;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:20px;height:20px;line-height:1;vertical-align:middle;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:normal 18px/1 dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{content:"\f104"}.mce-content-body dl.wp-caption{max-width:100%}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #dcdcde;background:#f6f7f7;min-height:30px}.has-dfw .quicktags-toolbar{padding-right:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.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:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;right:0}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:7px 7px 0 0}.qt-dfw{margin:5px 5px 0 0}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 4px 0 0}.mce-toolbar .mce-colorbutton .mce-preview{left:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;min-height:26px;line-height:2}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{background-color:#f0f0f1;margin:2px;padding:2px;border:1px solid #8c8f94;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#50575e;background-color:#c3c4c7}#wp-link-wrap{display:none;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-left:-250px;margin-top:-125px;position:fixed;top:50%;left:50%;z-index:100105;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap{height:600px;margin-top:-300px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fff;border-bottom:1px solid #dcdcde;font-size:18px;font-weight:600;line-height:2;margin:0;padding:0 36px 0 16px}#wp-link-close{color:#646970;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#135e96}#wp-link-close:focus{outline:0;box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}#wp-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:calc(2.15384615em + 16px);left:0;right:0;bottom:calc(2.15384615em + 19px);display:flex;flex-direction:column;overflow:auto}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:120px;text-align:right;padding-right:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block}#wp-link .query-results{position:absolute;width:calc(100% - 32px)}#wp-link .link-search-wrapper .spinner{float:none;margin:-3px 0 0 4px}#wp-link .link-target{padding:3px 0 0}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px #dcdcde solid;margin:0 0 12px;background:#fff;overflow:auto;max-height:290px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f0f0f1;color:#2c3338;padding:4px 6px 4px 10px;cursor:pointer;position:relative}#wp-link .query-notice{padding:0;border-bottom:1px solid #dcdcde;background-color:#fff;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-left:4px solid #72aee6}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dcdcde;background-color:#f6f7f7}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-left:4px solid #d63638}#wp-link .query-results em{font-style:normal}#wp-link li:hover{background:#f0f6fc;color:#101517}#wp-link li.unselectable{border-bottom:1px solid #dcdcde}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#2c3338}#wp-link li.selected{background:#dcdcde;color:#2c3338}#wp-link li.selected .item-title{font-weight:600}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#646970;font-size:11px;position:absolute;right:5px;top:5px}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fff;border-top:1px solid #dcdcde;position:absolute;bottom:0;left:0;right:0}#wp-link-cancel{line-height:1.92307692;float:left}#wp-link-update{line-height:1.76923076;float:right}#wp-link-submit{float:right}@media screen and (max-width:782px){#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:calc(2.71428571em + 23px)}#wp-link-cancel{line-height:2.46153846}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-left:0;left:10px;right:10px;max-width:500px}}@media screen and (max-height:620px){#wp-link-wrap{transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:calc(100% - 92px);padding-bottom:2px}}div.wp-link-preview{float:left;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#2271b1;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out;cursor:pointer}div.wp-link-preview a.wplink-url-error{color:#d63638}div.wp-link-input{float:left;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;box-sizing:border-box;line-height:1.28571429;min-height:26px}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-right:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #4f94d4;box-shadow:0 1px 2px rgba(79,148,212,.8);background-color:#fff}.ui-autocomplete.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:left}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:right}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#dcdcde;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 0 8px 5px}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file +.mce-tinymce{box-shadow:none}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}.mce-container .mce-monospace,.mce-widget .mce-monospace{font-family:Consolas,Monaco,monospace;font-size:13px;line-height:150%}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);transition:none;background:#000}.mce-window{border-radius:0;box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #ddd;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.mce-window .mce-window-head .mce-close,.mce-window-head .mce-close .mce-i-remove{color:transparent;top:0;right:0;width:36px;height:36px;padding:0;line-height:36px;text-align:center}.mce-window-head .mce-close .mce-i-remove:before{font:normal 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window-head .mce-close:focus .mce-i-remove:before,.mce-window-head .mce-close:hover .mce-i-remove:before{color:#00a0d2}.mce-window-head .mce-close:focus .mce-i-remove,div.mce-tab:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-window-head .mce-dragh{width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #ddd}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;border-radius:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 10px 0 20px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help table.wp-help-single{margin:0 8px 20px}.mce-window .wp-editor-help table.fixed{table-layout:fixed}.mce-window .wp-editor-help table.fixed td:nth-child(odd),.mce-window .wp-editor-help table.fixed th:nth-child(odd){width:12%}.mce-window .wp-editor-help table.fixed td:nth-child(even),.mce-window .wp-editor-help table.fixed th:nth-child(even){width:38%}.mce-window .wp-editor-help table.fixed th:nth-child(odd){padding:5px 0 0}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:600;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:600;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);border-radius:0;box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px;padding:6px 15px 6px 12px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #ddd}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #ddd;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.15);box-sizing:border-box;margin-bottom:8px;position:absolute;-moz-user-select:none;-webkit-user-select:none;user-select:none;max-width:98%;z-index:100100}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{left:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-full{right:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;box-shadow:none;text-shadow:none;cursor:pointer}.mce-btn .mce-txt{direction:inherit;text-align:inherit}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#fafafa;border-color:#555d66;color:#23282d;box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#ebebeb;border-color:#555d66;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-btn.mce-active,.mce-btn.mce-active button,.mce-btn.mce-active i,.mce-btn.mce-active:hover button,.mce-btn.mce-active:hover i{color:inherit}.mce-toolbar .mce-btn-group .mce-btn.mce-active:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#23282d}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;box-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus{border-color:#555d66}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-left:6px;padding-right:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-right:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;left:3px;height:3px;width:20px;background:#555d66}.mce-toolbar .mce-btn-group .mce-btn.mce-primary{min-width:0;background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:none}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:2px 3px 1px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary .mce-ico{color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:focus{box-shadow:0 0 1px 1px #33b3db}.mce-toolbar .mce-btn-group .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{border-radius:0;direction:ltr;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #555d66;margin-left:2px;margin-right:2px}.mce-listbox i.mce-caret{right:4px}.mce-panel .mce-btn:focus i.mce-caret,.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#23282d}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #23282d;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-right-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa;color:#fff}.mce-menu-item.mce-active .mce-menu-shortcut,.mce-menu-item.mce-disabled:hover .mce-ico,.mce-menu-item.mce-disabled:hover .mce-text,.mce-menu-item:focus .mce-ico,.mce-menu-item:focus .mce-menu-shortcut,.mce-menu-item:focus .mce-text,.mce-menu-item:hover .mce-ico,.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item:hover .mce-text{color:inherit}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}div.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#124964;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #ddd;height:0;margin:5px 0}.mce-menubtn span{margin-right:0;padding-left:3px}.mce-menu-has-icons i.mce-ico:before{margin-left:-2px}.mce-menu.mce-menu-align .mce-menu-item-normal{position:relative}.mce-menu.mce-menu-align .mce-menu-shortcut{bottom:.6em;font-size:.9em}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-shadow:0 1px 0 #ccc}.mce-window .mce-btn::-moz-focus-inner{border-width:0;border-style:none;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}.mce-window .mce-btn.mce-primary{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.mce-window .mce-btn.mce-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.mce-window .mce-btn.mce-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.mce-menubtn.mce-fixed-width span{overflow-x:hidden;text-overflow:ellipsis;width:82px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#ddd;cursor:pointer}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-tooltip{margin-top:2px}.rtl .mce-tooltip.wp-hide-mce-tooltip{display:none!important}.mce-tooltip-inner{border-radius:3px;box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#555d66;line-height:20px;width:20px;height:20px;text-align:center;text-shadow:none;margin:0;padding:0}.qt-dfw{color:#555d66;line-height:20px;width:28px;height:26px;text-align:center;text-shadow:none}.mce-toolbar .mce-btn .mce-open{line-height:20px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-left-color:#23282d}div.mce-notification{left:10%!important;right:10%}.mce-notification button.mce-close{right:6px;top:3px;font-weight:400;color:#555d66}.mce-notification button.mce-close:focus,.mce-notification button.mce-close:hover{color:#000}i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-remove,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:normal 20px/1 dashicons;padding:0;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:-2px;padding-right:2px}.qt-dfw{font:normal 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:"\f200"}i.mce-i-italic:before{content:"\f201"}i.mce-i-bullist:before{content:"\f203"}i.mce-i-numlist:before{content:"\f204"}i.mce-i-blockquote:before{content:"\f205"}i.mce-i-alignleft:before{content:"\f206"}i.mce-i-aligncenter:before{content:"\f207"}i.mce-i-alignright:before{content:"\f208"}i.mce-i-link:before{content:"\f103"}i.mce-i-unlink:before{content:"\f225"}i.mce-i-wp_more:before{content:"\f209"}i.mce-i-strikethrough:before{content:"\f224"}i.mce-i-spellchecker:before{content:"\f210"}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:"\f211"}i.mce-i-wp_adv:before{content:"\f212"}i.mce-i-underline:before{content:"\f213"}i.mce-i-alignjustify:before{content:"\f214"}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:"\f215"}i.mce-i-pastetext:before{content:"\f217"}i.mce-i-removeformat:before{content:"\f218"}i.mce-i-charmap:before{content:"\f220"}i.mce-i-outdent:before{content:"\f221"}i.mce-i-indent:before{content:"\f222"}i.mce-i-undo:before{content:"\f171"}i.mce-i-redo:before{content:"\f172"}i.mce-i-help:before,i.mce-i-wp_help:before{content:"\f223"}i.mce-i-wp-media-library:before{content:"\f104"}i.mce-i-ltr:before{content:"\f320"}i.mce-i-wp_page:before{content:"\f105"}i.mce-i-hr:before{content:"\f460"}i.mce-i-remove:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-wrap{position:relative}.wp-editor-tools{position:relative;z-index:1}.wp-editor-tools:after{clear:both;content:"";display:table}.wp-editor-container{clear:both;border:1px solid #e5e5e5}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;box-shadow:none}.wp-editor-tabs{float:right}.wp-switch-editor{float:left;box-sizing:content-box;position:relative;top:1px;background:#ebebeb;color:#666;cursor:pointer;font-size:13px;line-height:19px;height:20px;margin:5px 0 0 5px;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#23282d}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f5f5f5;color:#555;border-bottom-color:#f5f5f5}.wp-media-buttons{float:left}.wp-media-buttons .button{margin-right:5px;margin-bottom:4px;padding-left:7px;padding-right:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-left:5px}.wp-media-buttons a{text-decoration:none;color:#444;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:normal 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{content:"\f104"}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #ddd;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-right:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.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:600}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;right:0;margin:5px 5px 0 0}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn.mce-primary button{padding:6px 7px 5px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 4px 0 0}.mce-toolbar .mce-colorbutton .mce-preview{left:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#555;background-color:#ccc}#wp-link-wrap{display:none;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-left:-250px;margin-top:-125px;position:fixed;top:50%;left:50%;z-index:100105;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap{height:500px;margin-top:-250px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #ddd;height:36px;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}#wp-link-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none;cursor:pointer}#wp-link-close:before{font:normal 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#wp-link-wrap #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:37px;left:0;right:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link input[type=text]{box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:80px;text-align:right;padding-right:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{float:left;width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:4px}#wp-link .link-search-wrapper .spinner{margin-top:5px}#wp-link .link-target{padding:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px #dfdfdf solid;margin:0 0 12px;background:#fff;overflow:auto;position:absolute;left:16px;right:16px;bottom:0;top:166px}.has-text-field #wp-link .query-results{top:200px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 6px 4px 10px;cursor:pointer;position:relative}#wp-link .query-notice{padding:0;border-bottom:1px solid #dfdfdf;background-color:#f7fcfe;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-left:4px solid #00a0d2}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dfdfdf;background-color:#fef7f1}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-left:4px solid #d54e21}#wp-link .query-results em{font-style:normal}#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:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:600}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:5px}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #ddd;position:absolute;bottom:0;left:0;right:0}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}#wp-link-submit{float:right}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap .query-results{top:195px}#wp-link-wrap.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}#wp-link .link-target{padding-top:10px}#wp-link .submitbox .button{margin-bottom:0}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-left:0;left:10px;right:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{transition:none;height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto}#search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:calc(100% - 92px);padding-bottom:2px}#search-panel .query-results{position:static}}div.wp-link-preview{float:left;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#0073aa;text-decoration:underline;transition-property:border,background,color;transition-duration:.05s;transition-timing-function:ease-in-out;cursor:pointer}div.wp-link-preview a.wplink-url-error{color:#dc3232}div.wp-link-input{float:left;margin:2px;max-width:694px}div.wp-link-input input{width:300px;padding:3px;box-sizing:border-box}.mce-toolbar div.wp-link-input~.mce-btn,.mce-toolbar div.wp-link-preview~.mce-btn{margin:2px 1px}.mce-inline-toolbar-grp .mce-btn-group .mce-btn:last-child{margin-right:2px}.ui-autocomplete.wplink-autocomplete{z-index:100110;max-height:200px;overflow-y:auto;padding:0;margin:0;list-style:none;position:absolute;border:1px solid #5b9dd9;box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete.wplink-autocomplete li{margin-bottom:0;padding:4px 10px;clear:both;white-space:normal;text-align:left}.ui-autocomplete.wplink-autocomplete li .wp-editor-float-right{float:right}.ui-autocomplete.wplink-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}@media screen and (max-width:782px){div.wp-link-input,div.wp-link-preview{max-width:70%;max-width:calc(100% - 86px)}div.wp-link-preview{margin:8px 0 8px 5px}div.wp-link-input{width:300px}div.wp-link-input input{width:100%;font-size:16px;padding:5px}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}} \ No newline at end of file diff --git a/wp-includes/css/jquery-ui-dialog-rtl.css b/wp-includes/css/jquery-ui-dialog-rtl.css index 8c92538..f6a2f3e 100644 --- a/wp-includes/css/jquery-ui-dialog-rtl.css +++ b/wp-includes/css/jquery-ui-dialog-rtl.css @@ -182,7 +182,7 @@ display: inline-block; text-decoration: none; font-size: 13px; - line-height: 2; + line-height: 26px; height: 28px; margin: 0; padding: 0 10px 1px; @@ -193,11 +193,11 @@ border-radius: 3px; white-space: nowrap; box-sizing: border-box; - color: #50575e; - border-color: #c3c4c7; - background: #f6f7f7; - box-shadow: 0 1px 0 #c3c4c7; - vertical-align: top; + color: #555; + border-color: #cccccc; + background: #f7f7f7; + box-shadow: 0 1px 0 #cccccc; + vertical-align: top; } .ui-button:active, @@ -214,34 +214,35 @@ .ui-button:hover, .ui-button:focus { - background: #f6f7f7; - border-color: #8c8f94; - color: #1d2327; + background: #fafafa; + border-color: #999; + color: #23282d; } .ui-button:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .ui-button:active { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } .ui-button[disabled], .ui-button:disabled { - color: #a7aaad !important; - border-color: #dcdcde !important; - background: #f6f7f7 !important; + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; box-shadow: none !important; text-shadow: 0 1px 0 #fff !important; cursor: default; transform: none !important; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .ui-button { padding: 6px 14px; @@ -262,17 +263,16 @@ right: 0; z-index: 100102; background-color: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); - overflow: hidden; + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); } .ui-dialog-titlebar { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #dfdfdf; height: 36px; font-size: 18px; font-weight: 600; - line-height: 2; + line-height: 36px; padding: 0 16px 0 36px; } @@ -280,7 +280,7 @@ background: none; border: none; box-shadow: none; - color: #646970; + color: #666; cursor: pointer; display: block; padding: 0; @@ -290,34 +290,26 @@ width: 36px; height: 36px; text-align: center; - border-radius: 0; - overflow: hidden; } .ui-dialog-titlebar-close:before { font: normal 20px/1 dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - line-height: 1.8; + line-height: 36px; width: 36px; height: 36px; - content: "\f158"; + content: '\f158'; } -.ui-button.ui-dialog-titlebar-close:hover, -.ui-button.ui-dialog-titlebar-close:focus { - color: #135e96; +.ui-button.ui-dialog-titlebar-close:hover { + color: #00a0d2; } -.ui-button.ui-dialog-titlebar-close:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; +.ui-dialog-titlebar-close .ui-button-text { + display: none; } .ui-dialog-content { @@ -326,8 +318,8 @@ } .ui-dialog-buttonpane { - background: #fff; - border-top: 1px solid #dcdcde; + background: #fcfcfc; + border-top: 1px solid #dfdfdf; padding: 16px; } diff --git a/wp-includes/css/jquery-ui-dialog-rtl.min.css b/wp-includes/css/jquery-ui-dialog-rtl.min.css index aaffc07..aa325ef 100644 --- a/wp-includes/css/jquery-ui-dialog-rtl.min.css +++ b/wp-includes/css/jquery-ui-dialog-rtl.min.css @@ -15,4 +15,4 @@ * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - */.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;right:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;right: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}.ui-button{display:inline-block;text-decoration:none;font-size:13px;line-height:2;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;color:#50575e;border-color:#c3c4c7;background:#f6f7f7;box-shadow:0 1px 0 #c3c4c7;vertical-align:top}.ui-button:active,.ui-button:focus{outline:0}.ui-button::-moz-focus-inner{border-width:0;border-style:none;padding:0}.ui-button:focus,.ui-button:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.ui-button:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.ui-button:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.ui-button:disabled,.ui-button[disabled]{color:#a7aaad!important;border-color:#dcdcde!important;background:#f6f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}@media screen and (max-width:782px){.ui-button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.ui-dialog{position:absolute;top:0;right:0;z-index:100102;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);overflow:hidden}.ui-dialog-titlebar{background:#fff;border-bottom:1px solid #dcdcde;height:36px;font-size:18px;font-weight:600;line-height:2;padding:0 16px 0 36px}.ui-button.ui-dialog-titlebar-close{background:0 0;border:none;box-shadow:none;color:#646970;cursor:pointer;display:block;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center;border-radius:0;overflow:hidden}.ui-dialog-titlebar-close:before{font:normal 20px/1 dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.8;width:36px;height:36px;content:"\f158"}.ui-button.ui-dialog-titlebar-close:focus,.ui-button.ui-dialog-titlebar-close:hover{color:#135e96}.ui-button.ui-dialog-titlebar-close:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}.ui-dialog-content{padding:16px;overflow:auto}.ui-dialog-buttonpane{background:#fff;border-top:1px solid #dcdcde;padding:16px}.ui-dialog-buttonpane .ui-button{margin-right:16px}.ui-dialog-buttonpane .ui-dialog-buttonset{float:left}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-widget-overlay{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100101} \ No newline at end of file + */.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;right:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;right: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}.ui-button{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}.ui-button:active,.ui-button:focus{outline:0}.ui-button::-moz-focus-inner{border-width:0;border-style:none;padding:0}.ui-button:focus,.ui-button:hover{background:#fafafa;border-color:#999;color:#23282d}.ui-button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.ui-button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.ui-button:disabled,.ui-button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}@media screen and (max-width:782px){.ui-button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.ui-dialog{position:absolute;top:0;right:0;z-index:100102;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3)}.ui-dialog-titlebar{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px}.ui-button.ui-dialog-titlebar-close{background:0 0;border:none;box-shadow:none;color:#666;cursor:pointer;display:block;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center}.ui-dialog-titlebar-close:before{font:normal 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:36px;width:36px;height:36px;content:'\f158'}.ui-button.ui-dialog-titlebar-close:hover{color:#00a0d2}.ui-dialog-titlebar-close .ui-button-text{display:none}.ui-dialog-content{padding:16px;overflow:auto}.ui-dialog-buttonpane{background:#fcfcfc;border-top:1px solid #dfdfdf;padding:16px}.ui-dialog-buttonpane .ui-button{margin-right:16px}.ui-dialog-buttonpane .ui-dialog-buttonset{float:left}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-widget-overlay{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100101} \ No newline at end of file diff --git a/wp-includes/css/jquery-ui-dialog.css b/wp-includes/css/jquery-ui-dialog.css index e457b38..5f67232 100644 --- a/wp-includes/css/jquery-ui-dialog.css +++ b/wp-includes/css/jquery-ui-dialog.css @@ -182,7 +182,7 @@ display: inline-block; text-decoration: none; font-size: 13px; - line-height: 2; + line-height: 26px; height: 28px; margin: 0; padding: 0 10px 1px; @@ -193,11 +193,11 @@ border-radius: 3px; white-space: nowrap; box-sizing: border-box; - color: #50575e; - border-color: #c3c4c7; - background: #f6f7f7; - box-shadow: 0 1px 0 #c3c4c7; - vertical-align: top; + color: #555; + border-color: #cccccc; + background: #f7f7f7; + box-shadow: 0 1px 0 #cccccc; + vertical-align: top; } .ui-button:active, @@ -214,34 +214,35 @@ .ui-button:hover, .ui-button:focus { - background: #f6f7f7; - border-color: #8c8f94; - color: #1d2327; + background: #fafafa; + border-color: #999; + color: #23282d; } .ui-button:focus { - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .ui-button:active { - background: #f0f0f1; - border-color: #8c8f94; - box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5); + background: #eee; + border-color: #999; + box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ); + transform: translateY(1px); } .ui-button[disabled], .ui-button:disabled { - color: #a7aaad !important; - border-color: #dcdcde !important; - background: #f6f7f7 !important; + color: #a0a5aa !important; + border-color: #ddd !important; + background: #f7f7f7 !important; box-shadow: none !important; text-shadow: 0 1px 0 #fff !important; cursor: default; transform: none !important; } -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .ui-button { padding: 6px 14px; @@ -262,17 +263,16 @@ left: 0; z-index: 100102; background-color: #fff; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); - overflow: hidden; + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); } .ui-dialog-titlebar { - background: #fff; - border-bottom: 1px solid #dcdcde; + background: #fcfcfc; + border-bottom: 1px solid #dfdfdf; height: 36px; font-size: 18px; font-weight: 600; - line-height: 2; + line-height: 36px; padding: 0 36px 0 16px; } @@ -280,7 +280,7 @@ background: none; border: none; box-shadow: none; - color: #646970; + color: #666; cursor: pointer; display: block; padding: 0; @@ -290,34 +290,26 @@ width: 36px; height: 36px; text-align: center; - border-radius: 0; - overflow: hidden; } .ui-dialog-titlebar-close:before { font: normal 20px/1 dashicons; vertical-align: top; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - line-height: 1.8; + line-height: 36px; width: 36px; height: 36px; - content: "\f158"; + content: '\f158'; } -.ui-button.ui-dialog-titlebar-close:hover, -.ui-button.ui-dialog-titlebar-close:focus { - color: #135e96; +.ui-button.ui-dialog-titlebar-close:hover { + color: #00a0d2; } -.ui-button.ui-dialog-titlebar-close:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -2px; +.ui-dialog-titlebar-close .ui-button-text { + display: none; } .ui-dialog-content { @@ -326,8 +318,8 @@ } .ui-dialog-buttonpane { - background: #fff; - border-top: 1px solid #dcdcde; + background: #fcfcfc; + border-top: 1px solid #dfdfdf; padding: 16px; } diff --git a/wp-includes/css/jquery-ui-dialog.min.css b/wp-includes/css/jquery-ui-dialog.min.css index 05ebf61..b9c8a92 100644 --- a/wp-includes/css/jquery-ui-dialog.min.css +++ b/wp-includes/css/jquery-ui-dialog.min.css @@ -15,4 +15,4 @@ * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - */.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .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}.ui-button{display:inline-block;text-decoration:none;font-size:13px;line-height:2;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;color:#50575e;border-color:#c3c4c7;background:#f6f7f7;box-shadow:0 1px 0 #c3c4c7;vertical-align:top}.ui-button:active,.ui-button:focus{outline:0}.ui-button::-moz-focus-inner{border-width:0;border-style:none;padding:0}.ui-button:focus,.ui-button:hover{background:#f6f7f7;border-color:#8c8f94;color:#1d2327}.ui-button:focus{border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.ui-button:active{background:#f0f0f1;border-color:#8c8f94;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.ui-button:disabled,.ui-button[disabled]{color:#a7aaad!important;border-color:#dcdcde!important;background:#f6f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}@media screen and (max-width:782px){.ui-button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.ui-dialog{position:absolute;top:0;left:0;z-index:100102;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);overflow:hidden}.ui-dialog-titlebar{background:#fff;border-bottom:1px solid #dcdcde;height:36px;font-size:18px;font-weight:600;line-height:2;padding:0 36px 0 16px}.ui-button.ui-dialog-titlebar-close{background:0 0;border:none;box-shadow:none;color:#646970;cursor:pointer;display:block;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;border-radius:0;overflow:hidden}.ui-dialog-titlebar-close:before{font:normal 20px/1 dashicons;vertical-align:top;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.8;width:36px;height:36px;content:"\f158"}.ui-button.ui-dialog-titlebar-close:focus,.ui-button.ui-dialog-titlebar-close:hover{color:#135e96}.ui-button.ui-dialog-titlebar-close:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);outline:2px solid transparent;outline-offset:-2px}.ui-dialog-content{padding:16px;overflow:auto}.ui-dialog-buttonpane{background:#fff;border-top:1px solid #dcdcde;padding:16px}.ui-dialog-buttonpane .ui-button{margin-left:16px}.ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-widget-overlay{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100101} \ No newline at end of file + */.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .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}.ui-button{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;border-radius:3px;white-space:nowrap;box-sizing:border-box;color:#555;border-color:#ccc;background:#f7f7f7;box-shadow:0 1px 0 #ccc;vertical-align:top}.ui-button:active,.ui-button:focus{outline:0}.ui-button::-moz-focus-inner{border-width:0;border-style:none;padding:0}.ui-button:focus,.ui-button:hover{background:#fafafa;border-color:#999;color:#23282d}.ui-button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.ui-button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.ui-button:disabled,.ui-button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;transform:none!important}@media screen and (max-width:782px){.ui-button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}}.ui-dialog{position:absolute;top:0;left:0;z-index:100102;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3)}.ui-dialog-titlebar{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px}.ui-button.ui-dialog-titlebar-close{background:0 0;border:none;box-shadow:none;color:#666;cursor:pointer;display:block;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center}.ui-dialog-titlebar-close:before{font:normal 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:36px;width:36px;height:36px;content:'\f158'}.ui-button.ui-dialog-titlebar-close:hover{color:#00a0d2}.ui-dialog-titlebar-close .ui-button-text{display:none}.ui-dialog-content{padding:16px;overflow:auto}.ui-dialog-buttonpane{background:#fcfcfc;border-top:1px solid #dfdfdf;padding:16px}.ui-dialog-buttonpane .ui-button{margin-left:16px}.ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-widget-overlay{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100101} \ No newline at end of file diff --git a/wp-includes/css/media-views-rtl.css b/wp-includes/css/media-views-rtl.css index 5886847..1d2d78f 100644 --- a/wp-includes/css/media-views-rtl.css +++ b/wp-includes/css/media-views-rtl.css @@ -18,47 +18,46 @@ -webkit-overflow-scrolling: touch; } -.media-modal legend { - padding: 0; +.media-modal legend, +.media-modal label { font-size: 13px; } -.media-modal label { - font-size: 13px; +.media-frame input, +.media-frame textarea { + padding: 6px 8px; } -.media-modal .legend-inline { - position: absolute; - transform: translate(100%, 50%); - margin-right: -1%; - line-height: 1.2; +.media-frame select, +.wp-admin .media-frame select { + line-height: 28px; + margin-top: 3px; } .media-frame a { border-bottom: none; - color: #2271b1; + color: #0073aa; } .media-frame a:hover, .media-frame a:active { - color: #135e96; + color: #00a0d2; } .media-frame a:focus { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - color: #043959; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + outline: none; + color: #124964; } .media-frame a.button { - color: #2c3338; + color: #32373c; } .media-frame a.button:hover { - color: #1d2327; + color: #23282d; } .media-frame a.button-primary, @@ -66,65 +65,19 @@ color: #fff; } -.media-frame input, -.media-frame textarea { - padding: 6px 8px; -} - -.media-frame select, -.wp-admin .media-frame select { - min-height: 30px; - vertical-align: middle; -} - .media-frame input[type="text"], .media-frame input[type="password"], -.media-frame input[type="color"], -.media-frame input[type="date"], -.media-frame input[type="datetime"], -.media-frame input[type="datetime-local"], -.media-frame input[type="email"], -.media-frame input[type="month"], .media-frame input[type="number"], .media-frame input[type="search"], -.media-frame input[type="tel"], -.media-frame input[type="time"], +.media-frame input[type="email"], .media-frame input[type="url"], -.media-frame input[type="week"], .media-frame textarea, .media-frame select { - box-shadow: 0 0 0 transparent; - border-radius: 4px; - border: 1px solid #8c8f94; - background-color: #fff; - color: #2c3338; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - font-size: 13px; - line-height: 1.38461538; -} - -.media-frame input[type="text"], -.media-frame input[type="password"], -.media-frame input[type="date"], -.media-frame input[type="datetime"], -.media-frame input[type="datetime-local"], -.media-frame input[type="email"], -.media-frame input[type="month"], -.media-frame input[type="number"], -.media-frame input[type="search"], -.media-frame input[type="tel"], -.media-frame input[type="time"], -.media-frame input[type="url"], -.media-frame input[type="week"] { - padding: 0 8px; - /* inherits font size 13px */ - line-height: 2.15384615; /* 28px */ -} - -/* Search field in the Media Library toolbar */ -.media-frame.mode-grid .wp-filter input[type="search"] { - font-size: 14px; - line-height: 2; + font-size: 12px; + border-width: 1px; + border-style: solid; + border-color: #ddd; } .media-frame input[type="text"]:focus, @@ -135,16 +88,19 @@ .media-frame input[type="url"]:focus, .media-frame textarea:focus, .media-frame select:focus { - border-color: #3582c4; - box-shadow: 0 0 0 1px #3582c4; - outline: 2px solid transparent; + border-color: #5b9dd9; +} + +.media-frame select { + height: 24px; + padding: 2px; } .media-frame input:disabled, .media-frame textarea:disabled, .media-frame input[readonly], .media-frame textarea[readonly] { - background-color: #f0f0f1; + background-color: #eee; } .media-frame input[type="search"] { @@ -152,24 +108,19 @@ } .media-frame ::-webkit-input-placeholder { - color: #646970; + color: #72777c; } .media-frame ::-moz-placeholder { - color: #646970; + color: #72777c; opacity: 1; } .media-frame :-ms-input-placeholder { - color: #646970; + color: #72777c; } -/* - * In some cases there's the need of higher specificity, - * for example higher than `.media-embed .setting`. - */ -.media-frame .hidden, -.media-frame .setting.hidden { +.media-frame .hidden { display: none; } @@ -228,7 +179,7 @@ padding: 0; border: 1px solid transparent; background: none; - color: #646970; + color: #666; z-index: 1000; cursor: pointer; outline: none; @@ -237,15 +188,13 @@ .media-modal-close:hover, .media-modal-close:active { - color: #135e96; + color: #00a0d2; } .media-modal-close:focus { - color: #135e96; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + color: #00a0d2; + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .media-modal-close span.media-modal-icon { @@ -255,7 +204,7 @@ .media-modal-close .media-modal-icon:before { content: "\f158"; font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: middle; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -269,18 +218,22 @@ bottom: 0; overflow: auto; min-height: 300px; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.7); - background: #fff; + box-shadow: 0 5px 15px rgba(0,0,0,0.7); + background: #fcfcfc; -webkit-font-smoothing: subpixel-antialiased; } .media-modal-content .media-frame select.attachment-filters { - margin-top: 32px; + margin-top: 11px; margin-left: 2%; width: 42%; width: calc(48% - 12px); } +.media-modal-content .media-toolbar-primary .media-button { + float: left; +} + .media-modal-content .attachments-browser .search { width: 100%; } @@ -302,22 +255,27 @@ z-index: 100; height: 60px; padding: 0 16px; - border: 0 solid #dcdcde; + border: 0 solid #ddd; overflow: hidden; } .media-frame-toolbar .media-toolbar { - top: auto; - bottom: -47px; + top: initial; + bottom: -45px; height: auto; - overflow: visible; - border-top: 1px solid #dcdcde; + overflow: initial; + border-top: 1px solid #ddd; +} + +@media screen and (max-width: 782px) { + .media-frame-toolbar .media-toolbar { + bottom: -48px; + } } .media-toolbar-primary { float: left; height: 100%; - position: relative; } .media-toolbar-secondary { @@ -347,36 +305,44 @@ left: 0; bottom: 0; width: 267px; - padding: 0 16px; + padding: 0 16px 24px; z-index: 75; - background: #f6f7f7; - border-right: 1px solid #dcdcde; + background: #f3f3f3; + border-right: 1px solid #ddd; overflow: auto; -webkit-overflow-scrolling: touch; } -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.media-sidebar::after { - content: ""; - display: flex; - clear: both; - height: 24px; -} - .hide-toolbar .media-sidebar { bottom: 0; } +.media-sidebar .sidebar-title { + font-size: 20px; + margin: 0; + padding: 12px 10px 10px; + line-height: 28px; +} + +.media-sidebar .sidebar-content { + padding: 0 10px; + margin-bottom: 130px; +} + +.media-sidebar .search { + display: block; + width: 100%; +} + +.media-sidebar h3, /* Back-compat for pre-4.4 */ +.image-details h3, /* Back-compat for pre-4.4 */ .media-sidebar h2, -.image-details h2:not(.media-attachments-filter-heading) { +.image-details h2 { position: relative; font-weight: 600; text-transform: uppercase; font-size: 12px; - color: #646970; + color: #666; margin: 24px 0 8px; } @@ -385,27 +351,21 @@ display: block; float: right; width: 100%; - margin: 0 0 10px; -} - -.media-sidebar .collection-settings .setting { margin: 1px 0; } -.media-sidebar .setting.has-description, -.attachment-details .setting.has-description { - margin-bottom: 5px; +.media-sidebar .setting label, +.attachment-details .setting label { + display: block; } -.media-sidebar .setting .link-to-custom { +.media-sidebar .setting .link-to-custom, +.attachment-details .setting .link-to-custom { margin: 3px 2px 0; } -.media-sidebar .setting span, /* Back-compat for pre-5.3 */ -.attachment-details .setting span, /* Back-compat for pre-5.3 */ -.media-sidebar .setting .name, -.media-sidebar .setting .value, -.attachment-details .setting .name { +.media-sidebar .setting span, +.attachment-details .setting span { min-width: 30%; margin-left: 4%; font-size: 12px; @@ -417,11 +377,8 @@ max-width: 80px; } -.media-sidebar .setting .value { - text-align: right; -} - -.media-sidebar .setting select { +.media-sidebar .setting select, +.attachment-details .setting select { max-width: 65%; } @@ -438,46 +395,15 @@ padding: 0; } -.media-sidebar .setting span, /* Back-compat for pre-5.3 */ -.attachment-details .setting span, /* Back-compat for pre-5.3 */ -.media-sidebar .setting .name, -.media-sidebar .setting .value, -.media-sidebar .checkbox-label-inline, -.attachment-details .setting .name, -.attachment-details .setting .value, +.media-sidebar .setting span, +.attachment-details .setting span, .compat-item label span { float: right; min-height: 22px; padding-top: 8px; - line-height: 1.33333333; + line-height: 16px; font-weight: 400; - color: #646970; -} - -.media-sidebar .checkbox-label-inline { - font-size: 12px; -} - -.media-sidebar .copy-to-clipboard-container, -.attachment-details .copy-to-clipboard-container { - flex-wrap: wrap; - margin-top: 10px; - margin-right: calc( 35% - 1px ); - padding-top: 10px; -} - -/* Needs high specificity. */ -.attachment-details .attachment-info .copy-to-clipboard-container { - float: none; -} - -.media-sidebar .copy-to-clipboard-container .success, -.attachment-details .copy-to-clipboard-container .success { - padding: 0; - min-height: 0; - line-height: 2.18181818; - text-align: right; - color: #008a20; + color: #666; } .compat-item label span { @@ -517,10 +443,9 @@ } .attachment-details .setting + .description { - clear: both; font-size: 12px; font-style: normal; - margin-bottom: 10px; + margin-bottom: 0.5em; } .media-sidebar .setting textarea, @@ -530,11 +455,9 @@ resize: vertical; } -.media-sidebar .alt-text textarea, -.attachment-details .alt-text textarea, -.compat-item .alt-text textarea, -.alt-text textarea { - height: 50px; +.media-sidebar select, +.attachment-details select { + margin-top: 3px; } .compat-item { @@ -611,62 +534,47 @@ left: 0; bottom: 0; margin: 0; - padding: 50px 0 10px; - background: #f6f7f7; + padding: 10px 0; + background: #f3f3f3; border-left-width: 1px; border-left-style: solid; - border-left-color: #c3c4c7; + border-left-color: #ccc; -webkit-user-select: none; -moz-user-select: none; user-select: none; } -.media-menu .media-menu-item { +.media-menu > a { display: block; - box-sizing: border-box; - width: 100%; position: relative; - border: 0; - margin: 0; padding: 8px 20px; + margin: 0; + line-height: 18px; font-size: 14px; - line-height: 1.28571428; - background: transparent; - color: #2271b1; - text-align: right; + color: #0073aa; text-decoration: none; - cursor: pointer; } -.media-menu .media-menu-item:hover { - background: rgba(0, 0, 0, 0.04); +.media-menu > a:hover { + color: #0073aa; + background: rgba( 0, 0, 0, 0.04 ); } -.media-menu .media-menu-item:active { - color: #2271b1; +.media-menu > a:active { outline: none; } .media-menu .active, .media-menu .active:hover { - color: #1d2327; + color: #23282d; font-weight: 600; } -.media-menu .media-menu-item:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - color: #043959; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; -} - .media-menu .separator { height: 0; margin: 12px 20px; padding: 0; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } /** @@ -677,51 +585,44 @@ padding: 0 6px; margin: 0; clear: both; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.media-router a { + transition: none; } -.media-router .media-menu-item { +.media-router > a { position: relative; float: right; - border: 0; - margin: 0; padding: 8px 10px 9px; + margin: 0; height: 18px; - line-height: 1.28571428; + line-height: 18px; font-size: 14px; text-decoration: none; - background: transparent; - cursor: pointer; - transition: none; } -.media-router .media-menu-item:last-child { +.media-router > a:last-child { border-left: 0; } -.media-router .media-menu-item:hover, -.media-router .media-menu-item:active { - color: #2271b1; +.media-router > a:active { + outline: none; } .media-router .active, .media-router .active:hover { - color: #1d2327; -} - -.media-router .media-menu-item:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - color: #043959; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + color: #32373c; } .media-router .active, -.media-router .media-menu-item.active:last-child { +.media-router > a.active:last-child { margin: -1px -1px 0; background: #fff; - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-bottom: none; } @@ -779,13 +680,15 @@ margin: 0; overflow: auto; background: #fff; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .media-frame-toolbar { position: absolute; right: 200px; left: 0; + bottom: 0; + height: 60px; z-index: 100; bottom: 60px; height: auto; @@ -807,47 +710,25 @@ } .media-frame.hide-menu .media-frame-menu, -.media-frame.hide-menu .media-frame-menu-heading, .media-frame.hide-router .media-frame-router, .media-frame.hide-toolbar .media-frame-toolbar { display: none; } -.media-frame-title h1 { - padding: 0 16px; - font-size: 22px; - line-height: 2.27272727; - margin: 0; -} - -.media-frame-menu-heading, -.media-attachments-filter-heading { - position: absolute; - right: 20px; - top: 22px; - margin: 0; - font-size: 13px; - line-height: 1; - /* Above the media-frame-menu. */ - z-index: 151; -} - -.media-attachments-filter-heading { - top: 10px; - right: 16px; -} - -.mode-grid .media-attachments-filter-heading { - top: 0; - right: -9999px; +.media-frame.hide-router .media-frame-title { + border-bottom: 1px solid #ddd; + box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 ); } -.mode-grid .media-frame-actions-heading { +.media-frame-title .dashicons { display: none; } -.wp-core-ui .button.media-frame-menu-toggle { - display: none; +.media-frame-title h1 { + padding: 0 16px; + font-size: 22px; + line-height: 50px; + margin: 0; } .media-frame-title .suggested-dimensions { @@ -871,7 +752,8 @@ max-height: 100%; } -.media-frame-content .crop-content .upload-errors { +.media-frame-content .crop-content .upload-errors +{ position: absolute; width: 300px; top: 50%; @@ -907,18 +789,16 @@ .media-frame select.attachment-filters:last-of-type { margin-left: 0; - width: auto; - max-width: 100%; } /** * Search */ .media-frame .search { - margin: 32px 0 0; + margin-top: 11px; padding: 4px; font-size: 13px; - color: #3c434a; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; -webkit-appearance: none; } @@ -927,14 +807,6 @@ max-width: 100%; } -.media-frame .media-search-input-label { - position: absolute; - right: 0; - top: 10px; - margin: 0; - line-height: 1; -} - /** * Attachments */ @@ -951,15 +823,13 @@ float: right; padding: 8px; margin: 0; - color: #3c434a; + color: #444; cursor: pointer; list-style: none; text-align: center; -webkit-user-select: none; -moz-user-select: none; user-select: none; - width: 25%; - box-sizing: border-box; } .wp-core-ui .attachment:focus, @@ -967,30 +837,28 @@ .wp-core-ui .attachment.details:focus { box-shadow: inset 0 0 2px 3px #fff, - inset 0 0 0 7px #4f94d4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -6px; + inset 0 0 0 7px #5b9dd9; + outline: none; } .wp-core-ui .selected.attachment { box-shadow: inset 0 0 0 5px #fff, - inset 0 0 0 7px #c3c4c7; + inset 0 0 0 7px #ccc; } .wp-core-ui .attachment.details { box-shadow: inset 0 0 0 3px #fff, - inset 0 0 0 7px #2271b1; + inset 0 0 0 7px #0073aa; } .wp-core-ui .attachment-preview { position: relative; box-shadow: - inset 0 0 15px rgba(0, 0, 0, 0.1), - inset 0 0 0 1px rgba(0, 0, 0, 0.05); - background: #f0f0f1; + inset 0 0 15px rgba( 0, 0, 0, 0.1 ), + inset 0 0 0 1px rgba( 0, 0, 0, 0.05 ); + background: #eee; cursor: pointer; } @@ -1032,7 +900,7 @@ right: 0; left: 0; bottom: 0; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 ); overflow: hidden; } @@ -1046,7 +914,7 @@ top: 0; right: 0; width: 100%; - height: 100%; + height: 100%; /* Fails with spaces?? Weird! */ transform: translate( -50%, 50% ); } @@ -1058,6 +926,11 @@ transform: translate( 50%, -70% ); } +.ie8 .wp-core-ui .attachment img.icon { + top: 20%; + position: relative; +} + .wp-core-ui .attachment .filename { position: absolute; right: 0; @@ -1068,8 +941,8 @@ word-wrap: break-word; text-align: center; font-weight: 600; - background: rgba(255, 255, 255, 0.8); - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15); + background: rgba( 255, 255, 255, 0.8 ); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 ); } .wp-core-ui .attachment .filename div { @@ -1091,7 +964,7 @@ background-color: #fff; background-position: -96px 4px; border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.3 ); transition: none; } @@ -1111,9 +984,9 @@ top: 0; left: 0; outline: none; - background: #f0f0f1; + background: #eee; cursor: pointer; - box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba( 0, 0, 0, 0.15 ); } .wp-core-ui .attachment .check .media-modal-icon { @@ -1135,15 +1008,10 @@ .wp-core-ui .attachment.details .check, .wp-core-ui .attachment.selected .check:focus, .wp-core-ui .media-frame.mode-grid .attachment.selected .check { - background-color: #2271b1; + background-color: #0073aa; box-shadow: 0 0 0 1px #fff, - 0 0 0 2px #2271b1; -} - -.wp-core-ui .attachment.selected .check:focus { - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + 0 0 0 2px #0073aa; } .wp-core-ui .attachment.details .check .media-modal-icon, @@ -1162,7 +1030,7 @@ display: block; width: 100%; margin: 0; - padding: 0 8px; + padding: 8px; font-size: 12px; border-radius: 0; } @@ -1179,8 +1047,7 @@ .attachments-browser .media-toolbar { left: 300px; - height: 72px; - background: #fff; + height: 50px; } .attachments-browser.hide-sidebar .media-toolbar { @@ -1191,18 +1058,17 @@ .attachments-browser .media-toolbar-primary > .media-button-group, .attachments-browser .media-toolbar-secondary > .media-button, .attachments-browser .media-toolbar-secondary > .media-button-group { - margin: 10px 0; + margin: 11px 0; } .attachments-browser .attachments { padding: 2px 8px 8px; } -.attachments-browser:not(.has-load-more) .attachments, -.attachments-browser.has-load-more .attachments-wrapper, +.attachments-browser .attachments, .attachments-browser .uploader-inline { position: absolute; - top: 72px; + top: 50px; right: 0; left: 300px; bottom: 0; @@ -1218,15 +1084,6 @@ max-width: 33%; } -.mode-grid .attachments-browser .media-toolbar-primary { - display: flex; - align-items: center; -} - -.mode-grid .attachments-browser .media-toolbar-mode-select .media-toolbar-primary { - display: none; -} - .attachments-browser .media-toolbar-secondary { max-width: 66%; } @@ -1248,7 +1105,7 @@ .uploader-inline .close:before { font: normal 30px/1 dashicons !important; - color: #50575e; + color: #555d66; display: inline-block; content: "\f335"; font-weight: 300; @@ -1256,8 +1113,8 @@ } .uploader-inline .close:focus { - outline: 1px solid #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + outline: 1px solid #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .attachments-browser.hide-sidebar .attachments, @@ -1269,105 +1126,16 @@ .attachments-browser .instructions { display: inline-block; margin-top: 16px; - line-height: 1.38461538; + line-height: 18px; font-size: 13px; - color: #646970; + color: #666; + margin-left: 0.5em; } .attachments-browser .no-media { padding: 2em 2em 0 0; } -.more-loaded .attachment:not(.found-media) { - background: #dcdcde; -} - -.load-more-wrapper { - clear: both; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: center; - padding: 1em 0; -} - -.load-more-wrapper .load-more-count { - min-width: 100%; - margin: 0 0 1em; - text-align: center; -} - -.load-more-wrapper .load-more { - margin: 0; -} - -/* Needs high specificity. */ -.media-frame .load-more-wrapper .load-more + .spinner { - float: none; - margin: 0 10px 0 -30px; -} - -/* Reset spinner margin when the button is hidden to avoid horizontal scrollbar. */ -.media-frame .load-more-wrapper .load-more.hidden + .spinner { - margin: 0; -} - -/* Force a new row within the flex container. */ -.load-more-wrapper::after { - content: ""; - min-width: 100%; - order: 1; -} - -.load-more-wrapper .load-more-jump { - margin: 0 12px 0 0; -} - -.attachment.new-media { - outline: 2px dotted #c3c4c7; -} - -.load-more-wrapper { - clear: both; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: center; - padding: 1em 0; -} - -.load-more-wrapper .load-more-count { - min-width: 100%; - margin: 0 0 1em; - text-align: center; -} - -.load-more-wrapper .load-more { - margin: 0; -} - -/* Needs high specificity. */ -.media-frame .load-more-wrapper .load-more + .spinner { - float: none; - margin: 0 10px 0 -30px; -} - -/* Reset spinner margin when the button is hidden to avoid horizontal scrollbar. */ -.media-frame .load-more-wrapper .load-more.hidden + .spinner { - margin: 0; -} - -/* Force a new row within the flex container. */ -.load-more-wrapper::after { - content: ""; - min-width: 100%; - order: 1; -} - -.load-more-wrapper .load-more-jump { - margin: 0 12px 0 0; -} - /** * Progress Bar */ @@ -1377,15 +1145,15 @@ width: 70%; margin: 10px auto; border-radius: 10px; - background: #dcdcde; - background: rgba(0, 0, 0, 0.1); + background: #ddd; + background: rgba( 0, 0, 0, 0.1 ); } .media-progress-bar div { height: 10px; min-width: 20px; width: 0; - background: #2271b1; + background: #0073aa; border-radius: 10px; transition: width 300ms; } @@ -1404,7 +1172,7 @@ top: 50%; right: 15%; width: 70%; - margin: -5px 0 0; + margin: -5px 0 0 0; } .media-uploader-status { @@ -1414,6 +1182,7 @@ max-width: 400px; } +.uploader-inline .media-uploader-status h3, /* Back-compat for pre-4.4 */ .uploader-inline .media-uploader-status h2 { display: none; } @@ -1421,7 +1190,7 @@ .media-uploader-status .upload-details { display: none; font-size: 12px; - color: #646970; + color: #666; } .uploading.media-uploader-status .upload-details { @@ -1433,7 +1202,7 @@ } .media-uploader-status .upload-count { - color: #3c434a; + color: #444; } .media-uploader-status .upload-dismiss-errors, @@ -1447,21 +1216,39 @@ } .media-uploader-status .upload-dismiss-errors { - transition: none; text-decoration: none; } +.media-sidebar .media-uploader-status .upload-dismiss-errors { + position: absolute; + top: -10px; + left: -10px; + padding: 10px; + transition: none; +} + +.media-sidebar .media-uploader-status .upload-dismiss-errors:before { + content: "\f153"; + display: block; + font: normal 16px/1 dashicons; + color: #72777c; +} + +.media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before, +.media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before { + color: #c00; +} + .upload-errors .upload-error { padding: 12px; margin-bottom: 12px; background: #fff; - border-right: 4px solid #d63638; + border-right: 4px solid #dc3232; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); } .uploader-inline .upload-errors .upload-error { - padding: 12px 30px; - background-color: #fcf0f1; + background-color: #fbeaea; box-shadow: none; } @@ -1475,39 +1262,21 @@ word-wrap: break-word; } -/** - * Window and Editor uploaders used to display "drop zones" - */ -.uploader-window, -.wp-editor-wrap .uploader-editor { +.uploader-window { + position: fixed; top: 0; right: 0; left: 0; bottom: 0; - text-align: center; - display: none; -} - -.uploader-window { - position: fixed; + background: rgba( 0, 86, 132, 0.9 ); z-index: 250000; - opacity: 0; /* Only the inline uploader is animated with JS, the editor one isn't */ + display: none; + text-align: center; + opacity: 0; transition: opacity 250ms; } -.wp-editor-wrap .uploader-editor { - position: absolute; - z-index: 99998; /* under the toolbar */ - background: rgba(140, 143, 148, 0.9); -} - -.uploader-window, -.wp-editor-wrap .uploader-editor.droppable { - background: rgba(10, 75, 120, 0.9); -} - -.uploader-window-content, -.wp-editor-wrap .uploader-editor-content { +.uploader-window-content { position: absolute; top: 10px; right: 10px; @@ -1516,29 +1285,17 @@ border: 1px dashed #fff; } -/* uploader drop-zone title */ -.uploader-window h1, /* Back-compat for pre-5.3 */ -.uploader-window .uploader-editor-title, -.wp-editor-wrap .uploader-editor .uploader-editor-title { +.uploader-window h3, /* Back-compat for pre-4.4 */ +.uploader-window h1 { + margin: -0.5em 0 0; position: absolute; top: 50%; right: 0; left: 0; - transform: translateY(-50%); - font-size: 3em; - line-height: 1.3; - font-weight: 600; + transform: translateY( -50% ); + font-size: 40px; color: #fff; - margin: 0; - padding: 0 10px; -} - -.wp-editor-wrap .uploader-editor .uploader-editor-title { - display: none; -} - -.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title { - display: block; + padding: 0; } .uploader-window .media-progress-bar { @@ -1582,16 +1339,17 @@ margin: 0 0 4em; } +.uploader-inline h3, /* Back-compat for pre-4.4 */ .uploader-inline h2 { font-size: 20px; - line-height: 1.4; + line-height: 28px; font-weight: 400; margin: 0; } .uploader-inline .has-upload-message .upload-instructions { font-size: 14px; - color: #3c434a; + color: #444; font-weight: 400; } @@ -1604,6 +1362,7 @@ } .uploader-inline p { + font-size: 12px; margin: 0.5em 0; } @@ -1654,7 +1413,7 @@ display: block; padding-top: 12px; font-size: 14px; - line-height: 1.42857142; + line-height: 20px; font-weight: 600; } @@ -1662,15 +1421,15 @@ float: right; padding: 1px 8px; margin: 1px -8px 1px 8px; - line-height: 1.4; - border-left: 1px solid #dcdcde; - color: #2271b1; + line-height: 16px; + border-left: 1px solid #ddd; + color: #0073aa; text-decoration: none; } .media-selection .button-link:hover, .media-selection .button-link:focus { - color: #135e96; + color: #00a0d2; } .media-selection .button-link:last-child { @@ -1679,12 +1438,12 @@ } .selection-info .clear-selection { - color: #d63638; + color: #bc0b0b; } .selection-info .clear-selection:hover, .selection-info .clear-selection:focus { - color: #d63638; + color: #dc3232; } .media-selection .selection-view { @@ -1728,9 +1487,7 @@ .wp-core-ui .media-selection .attachment.details:focus { box-shadow: 0 0 0 1px #fff, - 0 0 2px 3px #4f94d4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + 0 0 2px 3px #5b9dd9; } .wp-core-ui .media-selection .selected.attachment { @@ -1740,7 +1497,7 @@ .wp-core-ui .media-selection .attachment.details { box-shadow: 0 0 0 1px #fff, - 0 0 0 3px #2271b1; + 0 0 0 3px #0073aa; } .media-selection:after { @@ -1751,7 +1508,7 @@ left: 0; bottom: 0; width: 25px; - background-image: linear-gradient(to right,#fff,rgba(255, 255, 255, 0)); + background-image: linear-gradient(to right, rgba( 255, 255, 255, 1 ), rgba( 255, 255, 255, 0 )); } .media-selection .attachment .filename { @@ -1775,26 +1532,14 @@ vertical-align: middle; } -.media-frame.mode-grid .spinner { - margin: 0; - float: none; - vertical-align: middle; -} - -.media-modal .media-toolbar .spinner { - float: none; - vertical-align: bottom; - margin: 0 5px 5px 0; -} - -.media-frame .instructions + .spinner.is-active { - vertical-align: middle; -} - .media-frame .spinner.is-active { visibility: visible; } +.media-toolbar .spinner { + margin-top: 14px; +} + /** * Attachment Details */ @@ -1806,15 +1551,15 @@ .attachment-details .settings-save-status { float: left; text-transform: none; - font-weight: 400; + z-index: 10; } .attachment-details .settings-save-status .spinner { - float: none; margin-right: 5px; } .attachment-details .settings-save-status .saved { + float: left; display: none; } @@ -1823,30 +1568,22 @@ } .attachment-details.save-complete .settings-save-status .saved { - display: inline-block; + display: block; } .attachment-info { overflow: hidden; min-height: 60px; margin-bottom: 16px; - line-height: 1.5; - color: #646970; - border-bottom: 1px solid #dcdcde; + line-height: 18px; + color: #666; + border-bottom: 1px solid #ddd; padding-bottom: 11px; } -.attachment-info .wp-media-wrapper { - margin-bottom: 8px; -} - -.attachment-info .wp-media-wrapper.wp-audio { - margin-top: 13px; -} - .attachment-info .filename { font-weight: 600; - color: #3c434a; + color: #444; word-wrap: break-word; } @@ -1863,7 +1600,7 @@ .uploading .attachment-info .thumbnail { width: 120px; height: 80px; - box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 15px rgba( 0, 0, 0, 0.1 ); } .uploading .attachment-info .media-progress-bar { @@ -1878,7 +1615,7 @@ right: 0; left: 0; bottom: 0; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 ); overflow: hidden; } @@ -1917,7 +1654,7 @@ .media-modal .untrash-attachment { display: inline; padding: 0; - color: #d63638; + color: #bc0b0b; } .media-modal .delete-attachment:hover, @@ -1926,7 +1663,7 @@ .media-modal .trash-attachment:focus, .media-modal .untrash-attachment:hover, .media-modal .untrash-attachment:focus { - color: #d63638; + color: #dc3232; } /** @@ -1938,6 +1675,10 @@ overflow: hidden; } +.attachment-display-settings h4 { + margin: 1.4em 0 0.4em; +} + .collection-settings { overflow: hidden; } @@ -1947,8 +1688,7 @@ margin-left: 8px; } -.collection-settings .setting span, /* Back-compat for pre-5.3 */ -.collection-settings .setting .name { +.collection-settings .setting span { min-width: inherit; } @@ -1960,7 +1700,7 @@ } .media-modal .imgedit-wrap .imgedit-panel-content { - padding: 16px 16px 0; + padding: 16px; position: absolute; top: 0; left: 282px; @@ -1969,18 +1709,10 @@ overflow: auto; } -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.media-modal .imgedit-wrap .imgedit-submit { - margin-bottom: 16px; -} - .media-modal .imgedit-wrap .imgedit-settings { - background: #f6f7f7; - border-right: 1px solid #dcdcde; - padding: 20px 16px 0; + background: #f3f3f3; + border-right: 1px solid #ddd; + padding: 20px 16px 16px; position: absolute; top: 0; left: 0; @@ -1989,18 +1721,10 @@ overflow: auto; } -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.media-modal .imgedit-wrap .imgedit-save-target { - margin: 8px 0 24px; -} - .media-modal .imgedit-group { background: none; border: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; box-shadow: none; margin: 0; margin-bottom: 16px; @@ -2019,20 +1743,22 @@ margin: 0; } +.media-modal .imgedit-group-top h3, /* Back-compat for pre-4.4 */ .media-modal .imgedit-group-top h2, .media-modal .imgedit-group-top h2 .button-link { display: inline-block; text-transform: uppercase; font-size: 12px; - color: #646970; + color: #666; margin: 0; margin-top: 3px; } +.media-modal .imgedit-group-top h3 a, /* Back-compat for pre-4.4 */ .media-modal .imgedit-group-top h2 a, .media-modal .imgedit-group-top h2 .button-link { text-decoration: none; - color: #646970; + color: #666; } /* higher specificity than media.css */ @@ -2043,7 +1769,7 @@ margin: 0; padding: 0; background: transparent; - color: #2271b1; + color: #0074a2; font-size: 20px; line-height: 1; cursor: pointer; @@ -2052,11 +1778,10 @@ } .wp-core-ui.media-modal .image-editor .imgedit-help-toggle:focus { - color: #2271b1; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + color: #0074a2; + border-color: #5b9dd9; + outline: none; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .wp-core-ui.media-modal .imgedit-group-top .dashicons-arrow-down.imgedit-help-toggle { @@ -2079,12 +1804,12 @@ display: block; } -.media-modal .imgedit-wrap div.updated, /* Back-compat for pre-5.5 */ -.media-modal .imgedit-wrap .notice { +.media-modal .imgedit-wrap div.updated { margin: 0; margin-bottom: 16px; } + /** * Embed from URL and Image Details */ @@ -2100,15 +1825,10 @@ .media-frame .embed-url input { font-size: 18px; - line-height: 1.22222222; /* 22px */ - padding: 12px 14px 12px 40px; /* right padding to leave room for the spinner */ + padding: 12px 14px; width: 100%; min-width: 200px; - box-shadow: inset -2px 2px 4px -2px rgba(0, 0, 0, 0.1); -} - -.media-frame .embed-url input::-ms-clear { - display: none; /* the "x" in IE 11 conflicts with the spinner */ + box-shadow: inset -2px 2px 4px -2px rgba( 0, 0, 0, 0.1 ); } .media-frame .embed-url .spinner { @@ -2124,30 +1844,14 @@ .embed-link-settings, .embed-media-settings { position: absolute; - top: 82px; + top: 70px; right: 0; left: 0; bottom: 0; - padding: 0 16px; + padding: 16px 16px 32px; overflow: auto; } -.media-embed .embed-link-settings .link-text { - margin-top: 0; -} - -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.embed-link-settings::after, -.embed-media-settings::after { - content: ""; - display: flex; - clear: both; - height: 24px; -} - .media-embed .embed-link-settings { /* avoid Firefox to give focus to the embed preview container parent */ overflow: visible; @@ -2171,8 +1875,8 @@ } .mejs-container:focus { - outline: 1px solid #4f94d4; - box-shadow: 0 0 2px 1px rgba(79, 148, 212, 0.8); + outline: 1px solid #5b9dd9; + box-shadow: 0 0 2px 1px rgba(30, 140, 190, .8); } .image-details .media-modal { @@ -2192,18 +1896,14 @@ padding: 0; } -.image-details .embed-media-settings::after { - content: none; -} - .image-details .embed-media-settings, .image-details .embed-media-settings div { box-sizing: border-box; } .image-details .column-settings { - background: #f6f7f7; - border-left: 1px solid #dcdcde; + background: #f3f3f3; + border-left: 1px solid #ddd; min-height: 100%; width: 55%; position: absolute; @@ -2211,11 +1911,12 @@ right: 0; } +.image-details .column-settings h3, /* Back-compat for pre-4.4 */ .image-details .column-settings h2 { margin: 20px; padding-top: 20px; - border-top: 1px solid #dcdcde; - color: #1d2327; + border-top: 1px solid #ddd; + color: #23282d; } .image-details .column-image { @@ -2236,19 +1937,19 @@ .image-details .advanced-toggle { padding: 0; - color: #646970; + color: #666; text-transform: uppercase; text-decoration: none; } .image-details .advanced-toggle:hover, .image-details .advanced-toggle:active { - color: #646970; + color: #666; } .image-details .advanced-toggle:after { font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: top; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -2261,14 +1962,22 @@ content: "\f142"; } -.image-details .custom-size label, /* Back-compat for pre-5.3 */ -.image-details .custom-size .custom-size-setting { +.image-details .embed-media-settings .size { + margin-bottom: 4px; +} + +.image-details .custom-size span { + display: block; +} + +.image-details .custom-size label { display: block; float: right; } -.image-details .custom-size .custom-size-setting label { - float: none; +.image-details .custom-size span small { + color: #555d66; /* #f3f3f3 background */ + font-size: inherit; } .image-details .custom-size input { @@ -2277,11 +1986,13 @@ .image-details .custom-size .sep { float: right; - margin: 26px 6px 0; + margin: 26px 6px 0 6px; } -.image-details .custom-size .description { - margin-right: 0; +.image-details .custom-size:after { + content: ""; + display: table; + clear: both; } .media-embed .thumbnail { @@ -2304,12 +2015,11 @@ right: 0; left: 0; bottom: 0; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 ); overflow: hidden; } -.media-embed .setting, -.media-embed .setting-group { +.media-embed .setting { width: 100%; margin: 10px 0; float: right; @@ -2317,10 +2027,6 @@ clear: both; } -.media-embed .setting-group .setting:not(.checkbox-setting) { - margin: 0; -} - .media-embed .setting.has-description { margin-bottom: 5px; } @@ -2330,18 +2036,7 @@ font-style: normal; } -.media-embed .content-track + .description { - line-height: 1.4; - /* The !important needs to override a high specificity selector from wp-medialement.css */ - max-width: none !important; -} - -.media-embed .remove-track { - margin-bottom: 10px; -} - -.image-details .embed-media-settings .setting, -.image-details .embed-media-settings .setting-group { +.image-details .embed-media-settings .setting { float: none; width: auto; } @@ -2355,11 +2050,11 @@ } .media-embed .setting input[type="text"], -.media-embed .setting textarea, -.media-embed fieldset { +.media-embed .setting textarea { display: block; width: 100%; max-width: 400px; + margin: 1px 0; } .image-details .embed-media-settings .setting input[type="text"], @@ -2371,7 +2066,6 @@ .image-details .embed-media-settings .setting input.link-to-custom, .image-details .embed-media-settings .link-target, .image-details .embed-media-settings .custom-size, -.image-details .embed-media-settings .setting-group, .image-details .description { margin-right: 27%; width: 70%; @@ -2383,13 +2077,7 @@ } .image-details .embed-media-settings .link-target { - margin-top: 16px; -} - -.image-details .checkbox-label, -.audio-details .checkbox-label, -.video-details .checkbox-label { - vertical-align: baseline; + margin-top: 24px; } .media-embed .setting input.hidden, @@ -2397,33 +2085,24 @@ display: none; } -.media-embed .setting span, /* Back-compat for pre-5.3 */ -.media-embed .setting .name, -.media-embed .setting-group .name { - display: inline-block; - font-size: 13px; - line-height: 1.84615384; - color: #646970; -} - .media-embed .setting span { - display: block; /* Back-compat for pre-5.3 */ - width: 200px; /* Back-compat for pre-5.3 */ + display: block; + width: 200px; + font-size: 13px; + line-height: 24px; + color: #666; } -.image-details .embed-media-settings .setting span, /* Back-compat for pre-5.3 */ -.image-details .embed-media-settings .setting .name { +.image-details .embed-media-settings .setting span { float: right; width: 25%; text-align: left; - margin: 8px 1% 0; + margin: 8px 1% 0 1%; line-height: 1.1; } -/* Buttons group in IE 11. */ -.media-frame .setting-group .button-group, -.image-details .embed-media-settings .setting .button-group { - width: auto; +.media-embed .setting .button-group { + margin: 2px 0; } .media-embed-sidebar { @@ -2437,14 +2116,99 @@ margin-top: 10px; } +/* Drag & drop on the editor upload */ +.wp-editor-wrap .uploader-editor { + background: rgba( 150, 150, 150, 0.9 ); + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 99998; /* under the toolbar */ + display: none; + text-align: center; +} + +.wp-editor-wrap .uploader-editor-content { + border: 1px dashed #fff; + position: absolute; + top: 10px; + right: 10px; + left: 10px; + bottom: 10px; +} + +.wp-editor-wrap .uploader-editor .uploader-editor-title { + position: absolute; + top: 50%; + right: 0; + left: 0; + transform: translateY( -50% ); + font-size: 3em; + line-height: 1.3; + font-weight: 600; + color: #fff; + padding: 0; + margin: 0; + display: none; +} + +.wp-editor-wrap .uploader-editor.droppable { + background: rgba( 0, 86, 132, 0.9 ); +} + +.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title { + display: block; +} + /** - * Button groups fix: can be removed together with the Back-compat for pre-5.3 + * IE7 Fixes */ - .media-frame .setting .button-group { - display: flex; - margin: 0 !important; - max-width: none !important; - } +.ie7 .media-frame .attachments-browser { + position: static; +} + +.ie7 .media-frame .embed-url input { + margin-top: 4px; + width: 90%; +} + +.ie7 .compat-item { + width: 99%; +} + +.ie7 .attachment-display-settings { + width: auto; +} + +.ie7 .attachment-preview, +.ie7 .attachment-preview .thumbnail { + width: 120px; + height: 120px; +} + +.ie7 .media-frame .attachment .describe { + width: 102px; +} + +.ie7 .media-sidebar .setting select { + max-width: 55%; +} + +.ie7 .media-sidebar .setting input[type="text"], +.ie7 .media-sidebar .setting input[type="password"], +.ie7 .media-sidebar .setting input[type="email"], +.ie7 .media-sidebar .setting input[type="number"], +.ie7 .media-sidebar .setting input[type="search"], +.ie7 .media-sidebar .setting input[type="tel"], +.ie7 .media-sidebar .setting input[type="url"], +.ie7 .media-sidebar .setting textarea { + width: 55%; +} + +.ie7 .media-sidebar .setting .link-to-custom { + float: right; +} /** * Localization @@ -2482,69 +2246,35 @@ * Responsive layout */ @media only screen and (max-width: 900px) { - .media-modal .media-frame-title { - height: 40px; - } - - .media-modal .media-frame-title h1 { - line-height: 2.22222222; - font-size: 18px; - } - - .media-modal-close { - width: 42px; - height: 42px; - } /* Drop-down menu */ - .media-frame .media-frame-title { - position: static; - padding: 0 44px; - text-align: center; - } - + .media-frame:not(.hide-menu) .media-frame-title, .media-frame:not(.hide-menu) .media-frame-router, .media-frame:not(.hide-menu) .media-frame-content, .media-frame:not(.hide-menu) .media-frame-toolbar { right: 0; } - .media-frame:not(.hide-menu) .media-frame-router { - /* 40 title + (40 - 6) menu toggle button + 6 spacing */ - top: 80px; - } - - .media-frame:not(.hide-menu) .media-frame-content { - /* 80 + room for the tabs */ - top: 114px; - } - - .media-frame.hide-router .media-frame-content { - top: 80px; - } - .media-frame:not(.hide-menu) .media-frame-menu { position: static; width: 0; } .media-frame:not(.hide-menu) .media-menu { - display: none; width: auto; max-width: 80%; overflow: auto; z-index: 2000; - top: 75px; - right: 50%; - transform: translateX(50%); + top: 50px; + right: -300px; left: auto; bottom: auto; padding: 5px 0; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; } .media-frame:not(.hide-menu) .media-menu.visible { - display: block; + right: 0; } .media-frame:not(.hide-menu) .media-menu > a { @@ -2552,49 +2282,29 @@ font-size: 16px; } - .media-frame:not(.hide-menu) .media-menu .separator { - margin: 5px 10px; + .media-frame:not(.hide-menu) .media-menu > a.active { + display: none; } - /* Visually hide the menu heading keeping it available to assistive technologies. */ - .media-frame-menu-heading { - clip: rect(1px, 1px, 1px, 1px); - clip-path: inset(50%); - height: 1px; - overflow: hidden; - padding: 0; - width: 1px; - word-wrap: normal !important; + .media-frame:not(.hide-menu) .media-menu .separator { + margin: 5px 10px; } - /* Reveal the menu toggle button. */ - .wp-core-ui .media-frame:not(.hide-menu) .button.media-frame-menu-toggle { - display: inline-flex; - align-items: center; - position: absolute; - right: 50%; - transform: translateX(50%); - margin: -6px 0 0; - padding: 0 12px 0 2px; - font-size: 0.875rem; - font-weight: 600; - text-decoration: none; - background: transparent; - /* Only for IE11 to vertically align text within the inline-flex button */ - height: 0.1%; - /* Modern browsers */ - min-height: 40px; + .media-frame:not(.hide-menu) .media-frame-title { + right: 0; } - .wp-core-ui .button.media-frame-menu-toggle:hover, - .wp-core-ui .button.media-frame-menu-toggle:active { - background: transparent; - transform: none; + .media-frame:not(.hide-menu) .media-frame-title .dashicons { + display: inline-block; + line-height: 50px; } - .wp-core-ui .button.media-frame-menu-toggle:focus { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + .media-frame:not(.hide-menu) .media-frame-title h1 { + color: #0073aa; + line-height: 3; + font-size: 18px; + float: right; + cursor: pointer; } /* End drop-down menu */ @@ -2604,58 +2314,32 @@ .attachments-browser .attachments, .attachments-browser .uploader-inline, - .attachments-browser .media-toolbar, - .attachments-browser .attachments-wrapper, - .attachments-browser.has-load-more .attachments-wrapper { + .attachments-browser .media-toolbar { left: 262px; } .media-sidebar .setting, .attachment-details .setting { - margin: 6px 0; + margin: 6px 0px; } .media-sidebar .setting input, .media-sidebar .setting textarea, - .media-sidebar .setting .name, + .media-sidebar .setting span, .attachment-details .setting input, .attachment-details .setting textarea, - .attachment-details .setting .name, + .attachment-details .setting span, .compat-item label span { float: none; - display: inline-block; - } - - .media-sidebar .setting span, /* Back-compat for pre-5.3 */ - .attachment-details .setting span, /* Back-compat for pre-5.3 */ - .media-sidebar .checkbox-label-inline { - float: none; } - .media-sidebar .setting .select-label-inline { - display: inline; - } - - .media-sidebar .setting .name, - .media-sidebar .checkbox-label-inline, - .attachment-details .setting .name, + .media-sidebar .setting span, + .attachment-details .setting span, .compat-item label span { text-align: inherit; min-height: 16px; margin: 0; - padding: 8px 2px 2px; - } - - /* Needs high specificity. */ - .media-sidebar .setting .copy-to-clipboard-container, - .attachment-details .attachment-info .copy-to-clipboard-container { - margin-right: 0; - padding-top: 0; - } - - .media-sidebar .setting .copy-attachment-url, - .attachment-details .attachment-info .copy-attachment-url { - margin: 0 1px; + padding: 8px 2px 0; } .media-sidebar .setting .value, @@ -2689,10 +2373,6 @@ height: auto; } - .media-frame .media-toolbar input[type="search"] { - line-height: 2.25; /* 36px */ - } - .media-sidebar .setting select.columns, .attachment-details .setting select.columns { width: auto; @@ -2704,13 +2384,6 @@ padding: 3px 6px; } - .wp-admin .media-frame select { - min-height: 40px; - font-size: 16px; - line-height: 1.625; - padding: 5px 8px 5px 24px; - } - .image-details .column-image { width: 30%; right: 70%; @@ -2725,29 +2398,15 @@ left: 30px; } - .image-details .embed-media-settings .setting, - .image-details .embed-media-settings .setting-group { + .image-details .embed-media-settings .setting { margin: 20px; } - .image-details .embed-media-settings .setting span, /* Back-compat for pre-5.3 */ - .image-details .embed-media-settings .setting .name { + .image-details .embed-media-settings .setting span { float: none; text-align: right; width: 100%; margin-bottom: 4px; - margin-right: 0; - } - - .media-modal .legend-inline { - position: static; - transform: none; - margin-right: 0; - margin-bottom: 6px; - } - - .image-details .embed-media-settings .setting-group .setting { - margin-bottom: 0; } .image-details .embed-media-settings .setting input.link-to-custom, @@ -2771,7 +2430,6 @@ } .collection-settings .setting input[type="checkbox"] { - float: none; margin-top: 0; } @@ -2797,6 +2455,10 @@ height: auto; } + .media-modal .attachments-browser .media-toolbar .spinner { + margin: 14px 2px 0; + } + /* Text inputs need to be 16px, or they force zooming on iOS */ .media-frame input[type="text"], .media-frame input[type="password"], @@ -2807,40 +2469,6 @@ .media-frame textarea, .media-frame select { font-size: 16px; - line-height: 1.5; - } - - .media-frame .media-toolbar input[type="search"] { - line-height: 2.3755; /* 38px */ - } - - .media-modal .media-toolbar .spinner { - margin-bottom: 10px; - } -} - -@media screen and (max-width: 782px) { - .attachments-browser .media-toolbar { - height: 82px; - } - - .attachments-browser .attachments, - .attachments-browser .uploader-inline { - top: 82px; - } - - .media-frame-toolbar .media-toolbar { - bottom: -54px; - } - - .mode-grid .attachments-browser .media-toolbar-primary { - display: block; - } - - .media-sidebar .copy-to-clipboard-container .success, - .attachment-details .copy-to-clipboard-container .success { - font-size: 14px; - line-height: 2.71428571; } } @@ -2874,15 +2502,10 @@ .attachments-browser .attachments, .attachments-browser .uploader-inline, - .attachments-browser .media-toolbar, - .media-frame-content .attachments-browser .attachments-wrapper { + .attachments-browser .media-toolbar { left: 0; } - .attachments-browser .attachments-wrapper { - padding-top: 12px; - } - .image-details .media-frame-title { display: block; top: 0; @@ -2904,32 +2527,67 @@ .media-frame-content .media-toolbar .instructions { display: none; } +} - /* Change margin direction on load more button in responsive views. */ - .load-more-wrapper .load-more-jump { - margin: 12px 0 0; +/* Landscape specific header override */ +@media screen and (max-height: 400px) { + .media-menu { + padding: 0; } -} + .media-frame-router { + top: 44px; + } -@media only screen and (min-width: 901px) and (max-height: 400px) { - .media-menu, - .media-frame:not(.hide-menu) .media-menu { - top: 0; - padding-top: 44px; + .media-frame-content { + top: 78px; } - /* Change margin direction on load more button in responsive views. */ - .load-more-wrapper .load-more-jump { - margin: 12px 0 0; + .attachments-browser .attachments { + top: 40px; } + /* Prevent unnecessary scrolling on title input */ + .embed-link-settings { + overflow: visible; + } } @media only screen and (max-width: 480px) { + .media-modal-close { + top: -5px; + } + + .media-modal .media-frame-title { + height: 40px; + } + .wp-core-ui.wp-customizer .media-button { margin-top: 13px; } + + .media-modal .media-frame-title h1, + .media-frame:not(.hide-menu) .media-frame-title h1 { + font-size: 18px; + line-height: 40px; + } + + .media-frame:not(.hide-menu) .media-frame-title .dashicons { + line-height: 40px; + } + + .media-frame-router, + .media-frame:not(.hide-menu) .media-menu { + top: 40px; + } + + .media-frame-content { + top: 74px; + } + + .media-frame.hide-router .media-frame-content { + top: 40px; + } } /** diff --git a/wp-includes/css/media-views-rtl.min.css b/wp-includes/css/media-views-rtl.min.css index 93db6ef..e1fbd51 100644 --- a/wp-includes/css/media-views-rtl.min.css +++ b/wp-includes/css/media-views-rtl.min.css @@ -1,9 +1,9 @@ /*! This file is auto-generated */ -.media-modal *{box-sizing:content-box}.media-modal input,.media-modal select,.media-modal textarea{box-sizing:border-box}.media-frame,.media-modal{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-modal legend{padding:0;font-size:13px}.media-modal label{font-size:13px}.media-modal .legend-inline{position:absolute;transform:translate(100%,50%);margin-right:-1%;line-height:1.2}.media-frame a{border-bottom:none;color:#2271b1}.media-frame a:active,.media-frame a:hover{color:#135e96}.media-frame a:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);color:#043959;outline:1px solid transparent}.media-frame a.button{color:#2c3338}.media-frame a.button:hover{color:#1d2327}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{min-height:30px;vertical-align:middle}.media-frame input[type=color],.media-frame input[type=date],.media-frame input[type=datetime-local],.media-frame input[type=datetime],.media-frame input[type=email],.media-frame input[type=month],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=tel],.media-frame input[type=text],.media-frame input[type=time],.media-frame input[type=url],.media-frame input[type=week],.media-frame select,.media-frame textarea{box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #8c8f94;background-color:#fff;color:#2c3338;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.38461538}.media-frame input[type=date],.media-frame input[type=datetime-local],.media-frame input[type=datetime],.media-frame input[type=email],.media-frame input[type=month],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=tel],.media-frame input[type=text],.media-frame input[type=time],.media-frame input[type=url],.media-frame input[type=week]{padding:0 8px;line-height:2.15384615}.media-frame.mode-grid .wp-filter input[type=search]{font-size:14px;line-height:2}.media-frame input[type=email]:focus,.media-frame input[type=number]:focus,.media-frame input[type=password]:focus,.media-frame input[type=search]:focus,.media-frame input[type=text]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#f0f0f1}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame ::-webkit-input-placeholder{color:#646970}.media-frame ::-moz-placeholder{color:#646970;opacity:1}.media-frame :-ms-input-placeholder{color:#646970}.media-frame .hidden,.media-frame .setting.hidden{display:none}/*! +.media-modal *{box-sizing:content-box}.media-modal input,.media-modal select,.media-modal textarea{box-sizing:border-box}.media-frame,.media-modal{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-modal label,.media-modal legend{font-size:13px}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{line-height:28px;margin-top:3px}.media-frame a{border-bottom:none;color:#0073aa}.media-frame a:active,.media-frame a:hover{color:#00a0d2}.media-frame a:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#124964}.media-frame a.button{color:#32373c}.media-frame a.button:hover{color:#23282d}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input[type=email],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=text],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#ddd}.media-frame input[type=email]:focus,.media-frame input[type=number]:focus,.media-frame input[type=password]:focus,.media-frame input[type=search]:focus,.media-frame input[type=text]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#5b9dd9}.media-frame select{height:24px;padding:2px}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#eee}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame ::-webkit-input-placeholder{color:#72777c}.media-frame ::-moz-placeholder{color:#72777c;opacity:1}.media-frame :-ms-input-placeholder{color:#72777c}.media-frame .hidden{display:none}/*! * jQuery UI Draggable/Sortable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.media-modal{position:fixed;top:30px;right:30px;left:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;left:0;width:50px;height:50px;margin:0;padding:0;border:1px solid transparent;background:0 0;color:#646970;z-index:1000;cursor:pointer;outline:0;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active,.media-modal-close:hover{color:#135e96}.media-modal-close:focus{color:#135e96;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:"\f158";font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-modal-content{position:absolute;top:0;right:0;left:0;bottom:0;overflow:auto;min-height:300px;box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fff;-webkit-font-smoothing:subpixel-antialiased}.media-modal-content .media-frame select.attachment-filters{margin-top:32px;margin-left:2%;width:42%;width:calc(48% - 12px)}.media-modal-content .attachments-browser .search{width:100%}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-toolbar{position:absolute;top:0;right:0;left:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dcdcde;overflow:hidden}.media-frame-toolbar .media-toolbar{top:auto;bottom:-47px;height:auto;overflow:visible;border-top:1px solid #dcdcde}.media-toolbar-primary{float:left;height:100%;position:relative}.media-toolbar-secondary{float:right;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-right:10px;float:right;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-left:10px;margin-top:15px}.media-sidebar{position:absolute;top:0;left:0;bottom:0;width:267px;padding:0 16px;z-index:75;background:#f6f7f7;border-right:1px solid #dcdcde;overflow:auto;-webkit-overflow-scrolling:touch}.media-sidebar::after{content:"";display:flex;clear:both;height:24px}.hide-toolbar .media-sidebar{bottom:0}.image-details h2:not(.media-attachments-filter-heading),.media-sidebar h2{position:relative;font-weight:600;text-transform:uppercase;font-size:12px;color:#646970;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:right;width:100%;margin:0 0 10px}.media-sidebar .collection-settings .setting{margin:1px 0}.attachment-details .setting.has-description,.media-sidebar .setting.has-description{margin-bottom:5px}.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting .name,.attachment-details .setting span,.media-sidebar .setting .name,.media-sidebar .setting .value,.media-sidebar .setting span{min-width:30%;margin-left:4%;font-size:12px;text-align:left;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.media-sidebar .setting .value{text-align:right}.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=checkbox],.attachment-details .field input[type=radio],.attachment-details .setting input[type=checkbox],.attachment-details .setting input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .setting input[type=checkbox],.media-sidebar .setting input[type=radio]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting .name,.attachment-details .setting .value,.attachment-details .setting span,.compat-item label span,.media-sidebar .checkbox-label-inline,.media-sidebar .setting .name,.media-sidebar .setting .value,.media-sidebar .setting span{float:right;min-height:22px;padding-top:8px;line-height:1.33333333;font-weight:400;color:#646970}.media-sidebar .checkbox-label-inline{font-size:12px}.attachment-details .copy-to-clipboard-container,.media-sidebar .copy-to-clipboard-container{flex-wrap:wrap;margin-top:10px;margin-right:calc(35% - 1px);padding-top:10px}.attachment-details .attachment-info .copy-to-clipboard-container{float:none}.attachment-details .copy-to-clipboard-container .success,.media-sidebar .copy-to-clipboard-container .success{padding:0;min-height:0;line-height:2.18181818;text-align:right;color:#008a20}.compat-item label span{text-align:left}.attachment-details .setting .value,.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting .value,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{box-sizing:border-box;margin:1px;width:65%;float:left}.attachment-details .setting .value,.attachment-details .setting+.description,.media-sidebar .setting .value{margin:0 1px;text-align:right}.attachment-details .setting+.description{clear:both;font-size:12px;font-style:normal;margin-bottom:10px}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.alt-text textarea,.attachment-details .alt-text textarea,.compat-item .alt-text textarea,.media-sidebar .alt-text textarea{height:50px}.compat-item{float:right;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-left:4%;float:right;text-align:left}.compat-item .label span{display:block;width:100%}.compat-item .field{float:left;width:65%;margin:1px}.compat-item .field input[type=email],.compat-item .field input[type=number],.compat-item .field input[type=password],.compat-item .field input[type=search],.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;top:0;right:0;left:0;bottom:0;margin:0;padding:50px 0 10px;background:#f6f7f7;border-left-width:1px;border-left-style:solid;border-left-color:#c3c4c7;-webkit-user-select:none;-moz-user-select:none;user-select:none}.media-menu .media-menu-item{display:block;box-sizing:border-box;width:100%;position:relative;border:0;margin:0;padding:8px 20px;font-size:14px;line-height:1.28571428;background:0 0;color:#2271b1;text-align:right;text-decoration:none;cursor:pointer}.media-menu .media-menu-item:hover{background:rgba(0,0,0,.04)}.media-menu .media-menu-item:active{color:#2271b1;outline:0}.media-menu .active,.media-menu .active:hover{color:#1d2327;font-weight:600}.media-menu .media-menu-item:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);color:#043959;outline:1px solid transparent}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #dcdcde}.media-router{position:relative;padding:0 6px;margin:0;clear:both}.media-router .media-menu-item{position:relative;float:right;border:0;margin:0;padding:8px 10px 9px;height:18px;line-height:1.28571428;font-size:14px;text-decoration:none;background:0 0;cursor:pointer;transition:none}.media-router .media-menu-item:last-child{border-left:0}.media-router .media-menu-item:active,.media-router .media-menu-item:hover{color:#2271b1}.media-router .active,.media-router .active:hover{color:#1d2327}.media-router .media-menu-item:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);color:#043959;outline:1px solid transparent}.media-router .active,.media-router .media-menu-item.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #dcdcde;border-bottom:none}.media-router .active:after{display:none}.media-frame{overflow:hidden;position:absolute;top:0;right:0;left:0;bottom:0}.media-frame-menu{position:absolute;top:0;right:0;bottom:0;width:200px;z-index:150}.media-frame-title{position:absolute;top:0;right:200px;left:0;height:50px;z-index:200}.media-frame-router{position:absolute;top:50px;right:200px;left:0;height:36px;z-index:200}.media-frame-content{position:absolute;top:84px;right:200px;left:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #dcdcde}.media-frame-toolbar{position:absolute;right:200px;left:0;z-index:100;bottom:60px;height:auto}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{right:0}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-menu .media-frame-menu,.media-frame.hide-menu .media-frame-menu-heading,.media-frame.hide-router .media-frame-router,.media-frame.hide-toolbar .media-frame-toolbar{display:none}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:2.27272727;margin:0}.media-attachments-filter-heading,.media-frame-menu-heading{position:absolute;right:20px;top:22px;margin:0;font-size:13px;line-height:1;z-index:151}.media-attachments-filter-heading{top:10px;right:16px}.mode-grid .media-attachments-filter-heading{top:0;right:-9999px}.mode-grid .media-frame-actions-heading{display:none}.wp-core-ui .button.media-frame-menu-toggle{display:none}.media-frame-title .suggested-dimensions{font-size:14px;float:left;margin-left:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-left:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;right:50%;margin-right:-150px;margin-left:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-left:2%;max-width:42%;max-width:calc(48% - 12px)}.media-frame select.attachment-filters:last-of-type{margin-left:0;width:auto;max-width:100%}.media-frame .search{margin:32px 0 0;padding:4px;font-size:13px;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;-webkit-appearance:none}.media-toolbar-primary .search{max-width:100%}.media-frame .media-search-input-label{position:absolute;right:0;top:10px;margin:0;line-height:1}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:right;padding:8px;margin:0;color:#3c434a;cursor:pointer;list-style:none;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:25%;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #4f94d4;outline:2px solid transparent;outline-offset:-6px}.wp-core-ui .selected.attachment{box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #c3c4c7}.wp-core-ui .attachment.details{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #2271b1}.wp-core-ui .attachment-preview{position:relative;box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#f0f0f1;cursor:pointer}.wp-core-ui .attachment-preview:before{content:"";display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;left:0;bottom:0;right:0;opacity:1;transition:opacity .1s}.wp-core-ui .attachment .portrait img{max-width:100%}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;right:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;right:0;width:100%;height:100%;transform:translate(-50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{transform:translate(50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{transform:translate(50%,-70%)}.wp-core-ui .attachment .filename{position:absolute;right:0;left:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:600;background:rgba(255,255,255,.8);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;left:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.3);transition:none}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;border:0;position:absolute;z-index:10;top:0;left:0;outline:0;background:#f0f0f1;cursor:pointer;box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#2271b1;box-shadow:0 0 0 1px #fff,0 0 0 2px #2271b1}.wp-core-ui .attachment.selected .check:focus{outline:2px solid transparent}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:0 8px;font-size:12px;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{left:300px;height:72px;background:#fff}.attachments-browser.hide-sidebar .media-toolbar{left:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:10px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .uploader-inline,.attachments-browser.has-load-more .attachments-wrapper,.attachments-browser:not(.has-load-more) .attachments{position:absolute;top:72px;right:0;left:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.mode-grid .attachments-browser .media-toolbar-primary{display:flex;align-items:center}.mode-grid .attachments-browser .media-toolbar-mode-select .media-toolbar-primary{display:none}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;outline:0;padding:0;position:absolute;left:2px;text-align:center;top:2px;width:48px;z-index:1}.uploader-inline .close:before{font:normal 30px/1 dashicons!important;color:#50575e;display:inline-block;content:"\f335";font-weight:300;margin-top:1px}.uploader-inline .close:focus{outline:1px solid #4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{left:0;margin-left:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:1.38461538;font-size:13px;color:#646970}.attachments-browser .no-media{padding:2em 2em 0 0}.more-loaded .attachment:not(.found-media){background:#dcdcde}.load-more-wrapper{clear:both;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;padding:1em 0}.load-more-wrapper .load-more-count{min-width:100%;margin:0 0 1em;text-align:center}.load-more-wrapper .load-more{margin:0}.media-frame .load-more-wrapper .load-more+.spinner{float:none;margin:0 10px 0 -30px}.media-frame .load-more-wrapper .load-more.hidden+.spinner{margin:0}.load-more-wrapper::after{content:"";min-width:100%;order:1}.load-more-wrapper .load-more-jump{margin:0 12px 0 0}.attachment.new-media{outline:2px dotted #c3c4c7}.load-more-wrapper{clear:both;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;padding:1em 0}.load-more-wrapper .load-more-count{min-width:100%;margin:0 0 1em;text-align:center}.load-more-wrapper .load-more{margin:0}.media-frame .load-more-wrapper .load-more+.spinner{float:none;margin:0 10px 0 -30px}.media-frame .load-more-wrapper .load-more.hidden+.spinner{margin:0}.load-more-wrapper::after{content:"";min-width:100%;order:1}.load-more-wrapper .load-more-jump{margin:0 12px 0 0}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;border-radius:10px;background:#dcdcde;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#2271b1;border-radius:10px;transition:width .3s}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;right:15%;width:70%;margin:-5px 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h2{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#646970}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#3c434a}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{transition:none;text-decoration:none}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-right:4px solid #d63638;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.uploader-inline .upload-errors .upload-error{padding:12px 30px;background-color:#fcf0f1;box-shadow:none}.upload-errors .upload-error-filename{font-weight:600}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window,.wp-editor-wrap .uploader-editor{top:0;right:0;left:0;bottom:0;text-align:center;display:none}.uploader-window{position:fixed;z-index:250000;opacity:0;transition:opacity 250ms}.wp-editor-wrap .uploader-editor{position:absolute;z-index:99998;background:rgba(140,143,148,.9)}.uploader-window,.wp-editor-wrap .uploader-editor.droppable{background:rgba(10,75,120,.9)}.uploader-window-content,.wp-editor-wrap .uploader-editor-content{position:absolute;top:10px;right:10px;left:10px;bottom:10px;border:1px dashed #fff}.uploader-window .uploader-editor-title,.uploader-window h1,.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;right:0;left:0;transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:600;color:#fff;margin:0;padding:0 10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{display:none}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;right:0;left:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h2{font-size:20px;line-height:1.4;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#3c434a;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;right:0;left:350px;height:60px;padding:0 16px 0 0;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-left:10px;vertical-align:top}.media-selection.editing,.media-selection.empty{display:none}.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:1.42857142;font-weight:600}.media-selection .button-link{float:right;padding:1px 8px;margin:1px -8px 1px 8px;line-height:1.4;border-left:1px solid #dcdcde;color:#2271b1;text-decoration:none}.media-selection .button-link:focus,.media-selection .button-link:hover{color:#135e96}.media-selection .button-link:last-child{border-left:0;margin-left:0}.selection-info .clear-selection{color:#d63638}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{color:#d63638}.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .attachments{display:inline-block;height:48px;margin:6px;padding:0;overflow:hidden;vertical-align:top}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;left:0;bottom:0;right:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{box-shadow:0 0 0 1px #fff,0 0 2px 3px #4f94d4;outline:2px solid transparent}.wp-core-ui .media-selection .selected.attachment{box-shadow:none}.wp-core-ui .media-selection .attachment.details{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.media-selection:after{content:"";display:block;position:absolute;top:0;left:0;bottom:0;width:25px;background-image:linear-gradient(to right,#fff,rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;float:left;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.media-frame.mode-grid .spinner{margin:0;float:none;vertical-align:middle}.media-modal .media-toolbar .spinner{float:none;vertical-align:bottom;margin:0 5px 5px 0}.media-frame .instructions+.spinner.is-active{vertical-align:middle}.media-frame .spinner.is-active{visibility:visible}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:left;text-transform:none;font-weight:400}.attachment-details .settings-save-status .spinner{float:none;margin-right:5px}.attachment-details .settings-save-status .saved{display:none}.attachment-details.save-waiting .settings-save-status .spinner{visibility:visible}.attachment-details.save-complete .settings-save-status .saved{display:inline-block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:1.5;color:#646970;border-bottom:1px solid #dcdcde;padding-bottom:11px}.attachment-info .wp-media-wrapper{margin-bottom:8px}.attachment-info .wp-media-wrapper.wp-audio{margin-top:13px}.attachment-info .filename{font-weight:600;color:#3c434a;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:right;max-width:120px;max-height:120px;margin-top:5px;margin-left:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:right;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#d63638}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:#d63638}.attachment-display-settings{width:100%;float:right;overflow:hidden}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:right;margin-left:8px}.collection-settings .setting .name,.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px 16px 0;position:absolute;top:0;left:282px;bottom:0;right:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-submit{margin-bottom:16px}.media-modal .imgedit-wrap .imgedit-settings{background:#f6f7f7;border-right:1px solid #dcdcde;padding:20px 16px 0;position:absolute;top:0;left:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-wrap .imgedit-save-target{margin:8px 0 24px}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #dcdcde;box-shadow:none;margin:0;margin-bottom:16px;padding:0;padding-bottom:16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top{margin:0}.media-modal .imgedit-group-top h2,.media-modal .imgedit-group-top h2 .button-link{display:inline-block;text-transform:uppercase;font-size:12px;color:#646970;margin:0;margin-top:3px}.media-modal .imgedit-group-top h2 .button-link,.media-modal .imgedit-group-top h2 a{text-decoration:none;color:#646970}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:active,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:hover{border:1px solid transparent;margin:0;padding:0;background:0 0;color:#2271b1;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:focus{color:#2271b1;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.wp-core-ui.media-modal .imgedit-group-top .dashicons-arrow-down.imgedit-help-toggle{margin-top:-3px}.wp-core-ui.media-modal .image-editor h3 .imgedit-help-toggle{margin-top:-2px}.media-modal .imgedit-help-toggled span.dashicons:before{content:"\f142"}.media-modal .imgedit-thumbnail-preview{margin:10px 0 0 8px}.imgedit-thumbnail-preview-caption{display:block}.media-modal .imgedit-wrap .notice,.media-modal .imgedit-wrap div.updated{margin:0;margin-bottom:16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;line-height:1.22222222;padding:12px 14px 12px 40px;width:100%;min-width:200px;box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url input::-ms-clear{display:none}.media-frame .embed-url .spinner{position:absolute;top:32px;left:26px}.media-frame .embed-loading .embed-url .spinner{visibility:visible}.embed-link-settings,.embed-media-settings{position:absolute;top:82px;right:0;left:0;bottom:0;padding:0 16px;overflow:auto}.media-embed .embed-link-settings .link-text{margin-top:0}.embed-link-settings::after,.embed-media-settings::after{content:"";display:flex;clear:both;height:24px}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:1px solid #4f94d4;box-shadow:0 0 2px 1px rgba(79,148,212,.8)}.image-details .media-modal{right:140px;left:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{right:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings::after{content:none}.image-details .embed-media-settings,.image-details .embed-media-settings div{box-sizing:border-box}.image-details .column-settings{background:#f6f7f7;border-left:1px solid #dcdcde;min-height:100%;width:55%;position:absolute;top:0;right:0}.image-details .column-settings h2{margin:20px;padding-top:20px;border-top:1px solid #dcdcde;color:#1d2327}.image-details .column-image{width:45%;position:absolute;right:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#646970;text-transform:uppercase;text-decoration:none}.image-details .advanced-toggle:active,.image-details .advanced-toggle:hover{color:#646970}.image-details .advanced-toggle:after{font:normal 20px/1 dashicons;speak:never;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140";display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:"\f142"}.image-details .custom-size .custom-size-setting,.image-details .custom-size label{display:block;float:right}.image-details .custom-size .custom-size-setting label{float:none}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:right;margin:26px 6px 0}.image-details .custom-size .description{margin-right:0}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:right}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting,.media-embed .setting-group{width:100%;margin:10px 0;float:right;display:block;clear:both}.media-embed .setting-group .setting:not(.checkbox-setting){margin:0}.media-embed .setting.has-description{margin-bottom:5px}.media-embed .description{clear:both;font-style:normal}.media-embed .content-track+.description{line-height:1.4;max-width:none!important}.media-embed .remove-track{margin-bottom:10px}.image-details .embed-media-settings .setting,.image-details .embed-media-settings .setting-group{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea,.media-embed fieldset{display:block;width:100%;max-width:400px}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .description,.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting-group{margin-right:27%;width:70%}.image-details .description{font-style:normal;margin-top:0}.image-details .embed-media-settings .link-target{margin-top:16px}.audio-details .checkbox-label,.image-details .checkbox-label,.video-details .checkbox-label{vertical-align:baseline}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting .name,.media-embed .setting span,.media-embed .setting-group .name{display:inline-block;font-size:13px;line-height:1.84615384;color:#646970}.media-embed .setting span{display:block;width:200px}.image-details .embed-media-settings .setting .name,.image-details .embed-media-settings .setting span{float:right;width:25%;text-align:left;margin:8px 1% 0;line-height:1.1}.image-details .embed-media-settings .setting .button-group,.media-frame .setting-group .button-group{width:auto}.media-embed-sidebar{position:absolute;top:0;right:440px}.advanced-section,.link-settings{margin-top:10px}.media-frame .setting .button-group{display:flex;margin:0!important;max-width:none!important}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=email],.rtl .media-frame input[type=number],.rtl .media-frame input[type=password],.rtl .media-frame input[type=search],.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-modal .media-frame-title{height:40px}.media-modal .media-frame-title h1{line-height:2.22222222;font-size:18px}.media-modal-close{width:42px;height:42px}.media-frame .media-frame-title{position:static;padding:0 44px;text-align:center}.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-toolbar{right:0}.media-frame:not(.hide-menu) .media-frame-router{top:80px}.media-frame:not(.hide-menu) .media-frame-content{top:114px}.media-frame.hide-router .media-frame-content{top:80px}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{display:none;width:auto;max-width:80%;overflow:auto;z-index:2000;top:75px;right:50%;transform:translateX(50%);left:auto;bottom:auto;padding:5px 0;border:1px solid #c3c4c7}.media-frame:not(.hide-menu) .media-menu.visible{display:block}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame-menu-heading{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;width:1px;word-wrap:normal!important}.wp-core-ui .media-frame:not(.hide-menu) .button.media-frame-menu-toggle{display:inline-flex;align-items:center;position:absolute;right:50%;transform:translateX(50%);margin:-6px 0 0;padding:0 12px 0 2px;font-size:.875rem;font-weight:600;text-decoration:none;background:0 0;height:.1%;min-height:40px}.wp-core-ui .button.media-frame-menu-toggle:active,.wp-core-ui .button.media-frame-menu-toggle:hover{background:0 0;transform:none}.wp-core-ui .button.media-frame-menu-toggle:focus{outline:1px solid transparent}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .attachments-wrapper,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline,.attachments-browser.has-load-more .attachments-wrapper{left:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting .name,.attachment-details .setting input,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting .name,.media-sidebar .setting input,.media-sidebar .setting textarea{float:none;display:inline-block}.attachment-details .setting span,.media-sidebar .checkbox-label-inline,.media-sidebar .setting span{float:none}.media-sidebar .setting .select-label-inline{display:inline}.attachment-details .setting .name,.compat-item label span,.media-sidebar .checkbox-label-inline,.media-sidebar .setting .name{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 2px}.attachment-details .attachment-info .copy-to-clipboard-container,.media-sidebar .setting .copy-to-clipboard-container{margin-right:0;padding-top:0}.attachment-details .attachment-info .copy-attachment-url,.media-sidebar .setting .copy-attachment-url{margin:0 1px}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.media-frame .media-toolbar input[type=search]{line-height:2.25}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.wp-admin .media-frame select{min-height:40px;font-size:16px;line-height:1.625;padding:5px 8px 5px 24px}.image-details .column-image{width:30%;right:70%}.image-details .column-settings{width:70%}.image-details .media-modal{right:30px;left:30px}.image-details .embed-media-settings .setting,.image-details .embed-media-settings .setting-group{margin:20px}.image-details .embed-media-settings .setting .name,.image-details .embed-media-settings .setting span{float:none;text-align:right;width:100%;margin-bottom:4px;margin-right:0}.media-modal .legend-inline{position:static;transform:none;margin-right:0;margin-bottom:6px}.image-details .embed-media-settings .setting-group .setting{margin-bottom:0}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-right:0}.image-details .embed-media-settings .setting.has-description{margin-bottom:5px}.image-details .description{width:auto;margin:0 20px}.image-details .embed-media-settings .custom-size{margin-right:20px}.collection-settings .setting input[type=checkbox]{float:none;margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:left}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-frame input[type=email],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=text],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px;line-height:1.5}.media-frame .media-toolbar input[type=search]{line-height:2.3755}.media-modal .media-toolbar .spinner{margin-bottom:10px}}@media screen and (max-width:782px){.attachments-browser .media-toolbar{height:82px}.attachments-browser .attachments,.attachments-browser .uploader-inline{top:82px}.media-frame-toolbar .media-toolbar{bottom:-54px}.mode-grid .attachments-browser .media-toolbar-primary{display:block}.attachment-details .copy-to-clipboard-container .success,.media-sidebar .copy-to-clipboard-container .success{font-size:14px;line-height:2.71428571}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;right:0;left:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline,.media-frame-content .attachments-browser .attachments-wrapper{left:0}.attachments-browser .attachments-wrapper{padding-top:12px}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;right:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}.load-more-wrapper .load-more-jump{margin:12px 0 0}}@media only screen and (min-width:901px) and (max-height:400px){.media-frame:not(.hide-menu) .media-menu,.media-menu{top:0;padding-top:44px}.load-more-wrapper .load-more-jump{margin:12px 0 0}}@media only screen and (max-width:480px){.wp-core-ui.wp-customizer .media-button{margin-top:13px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons-2x.png);background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%} \ No newline at end of file + */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.media-modal{position:fixed;top:30px;right:30px;left:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;left:0;width:50px;height:50px;margin:0;padding:0;border:1px solid transparent;background:0 0;color:#666;z-index:1000;cursor:pointer;outline:0;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active,.media-modal-close:hover{color:#00a0d2}.media-modal-close:focus{color:#00a0d2;border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:"\f158";font:normal 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-modal-content{position:absolute;top:0;right:0;left:0;bottom:0;overflow:auto;min-height:300px;box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.media-modal-content .media-frame select.attachment-filters{margin-top:11px;margin-left:2%;width:42%;width:calc(48% - 12px)}.media-modal-content .media-toolbar-primary .media-button{float:left}.media-modal-content .attachments-browser .search{width:100%}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-toolbar{position:absolute;top:0;right:0;left:0;z-index:100;height:60px;padding:0 16px;border:0 solid #ddd;overflow:hidden}.media-frame-toolbar .media-toolbar{top:initial;bottom:-45px;height:auto;overflow:initial;border-top:1px solid #ddd}@media screen and (max-width:782px){.media-frame-toolbar .media-toolbar{bottom:-48px}}.media-toolbar-primary{float:left;height:100%}.media-toolbar-secondary{float:right;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-right:10px;float:right;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-left:10px;margin-top:15px}.media-sidebar{position:absolute;top:0;left:0;bottom:0;width:267px;padding:0 16px 24px;z-index:75;background:#f3f3f3;border-right:1px solid #ddd;overflow:auto;-webkit-overflow-scrolling:touch}.hide-toolbar .media-sidebar{bottom:0}.media-sidebar .sidebar-title{font-size:20px;margin:0;padding:12px 10px 10px;line-height:28px}.media-sidebar .sidebar-content{padding:0 10px;margin-bottom:130px}.media-sidebar .search{display:block;width:100%}.image-details h2,.image-details h3,.media-sidebar h2,.media-sidebar h3{position:relative;font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:right;width:100%;margin:1px 0}.attachment-details .setting label,.media-sidebar .setting label{display:block}.attachment-details .setting .link-to-custom,.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting span,.media-sidebar .setting span{min-width:30%;margin-left:4%;font-size:12px;text-align:left;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.attachment-details .setting select,.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=checkbox],.attachment-details .field input[type=radio],.attachment-details .setting input[type=checkbox],.attachment-details .setting input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .setting input[type=checkbox],.media-sidebar .setting input[type=radio]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{float:right;min-height:22px;padding-top:8px;line-height:16px;font-weight:400;color:#666}.compat-item label span{text-align:left}.attachment-details .setting .value,.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting .value,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{box-sizing:border-box;margin:1px;width:65%;float:left}.attachment-details .setting .value,.attachment-details .setting+.description,.media-sidebar .setting .value{margin:0 1px;text-align:right}.attachment-details .setting+.description{font-size:12px;font-style:normal;margin-bottom:.5em}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.attachment-details select,.media-sidebar select{margin-top:3px}.compat-item{float:right;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-left:4%;float:right;text-align:left}.compat-item .label span{display:block;width:100%}.compat-item .field{float:left;width:65%;margin:1px}.compat-item .field input[type=email],.compat-item .field input[type=number],.compat-item .field input[type=password],.compat-item .field input[type=search],.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;top:0;right:0;left:0;bottom:0;margin:0;padding:10px 0;background:#f3f3f3;border-left-width:1px;border-left-style:solid;border-left-color:#ccc;-webkit-user-select:none;-moz-user-select:none;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;line-height:18px;font-size:14px;color:#0073aa;text-decoration:none}.media-menu>a:hover{color:#0073aa;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:600}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.media-router{position:relative;padding:0 6px;margin:0;clear:both;-webkit-user-select:none;-moz-user-select:none;user-select:none}.media-router a{transition:none}.media-router>a{position:relative;float:right;padding:8px 10px 9px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none}.media-router>a:last-child{border-left:0}.media-router>a:active{outline:0}.media-router .active,.media-router .active:hover{color:#32373c}.media-router .active,.media-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.media-router .active:after{display:none}.media-frame{overflow:hidden;position:absolute;top:0;right:0;left:0;bottom:0}.media-frame-menu{position:absolute;top:0;right:0;bottom:0;width:200px;z-index:150}.media-frame-title{position:absolute;top:0;right:200px;left:0;height:50px;z-index:200}.media-frame-router{position:absolute;top:50px;right:200px;left:0;height:36px;z-index:200}.media-frame-content{position:absolute;top:84px;right:200px;left:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd}.media-frame-toolbar{position:absolute;right:200px;left:0;bottom:0;height:60px;z-index:100;bottom:60px;height:auto}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{right:0}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-menu .media-frame-menu,.media-frame.hide-router .media-frame-router,.media-frame.hide-toolbar .media-frame-toolbar{display:none}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #ddd;box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.media-frame-title .dashicons{display:none}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.media-frame-title .suggested-dimensions{font-size:14px;float:left;margin-left:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-left:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;right:50%;margin-right:-150px;margin-left:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-left:2%;max-width:42%;max-width:calc(48% - 12px)}.media-frame select.attachment-filters:last-of-type{margin-left:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;-webkit-appearance:none}.media-toolbar-primary .search{max-width:100%}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:right;padding:8px;margin:0;color:#444;cursor:pointer;list-style:none;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #0073aa}.wp-core-ui .attachment-preview{position:relative;box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#eee;cursor:pointer}.wp-core-ui .attachment-preview:before{content:"";display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;left:0;bottom:0;right:0;opacity:1;transition:opacity .1s}.wp-core-ui .attachment .portrait img{max-width:100%}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;right:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;right:0;width:100%;height:100%;transform:translate(-50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{transform:translate(50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{transform:translate(50%,-70%)}.ie8 .wp-core-ui .attachment img.icon{top:20%;position:relative}.wp-core-ui .attachment .filename{position:absolute;right:0;left:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:600;background:rgba(255,255,255,.8);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;left:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.3);transition:none}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;border:0;position:absolute;z-index:10;top:0;left:0;outline:0;background:#eee;cursor:pointer;box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#0073aa;box-shadow:0 0 0 1px #fff,0 0 0 2px #0073aa}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:8px;font-size:12px;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{left:300px;height:50px}.attachments-browser.hide-sidebar .media-toolbar{left:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:11px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .attachments,.attachments-browser .uploader-inline{position:absolute;top:50px;right:0;left:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;outline:0;padding:0;position:absolute;left:2px;text-align:center;top:2px;width:48px;z-index:1}.uploader-inline .close:before{font:normal 30px/1 dashicons!important;color:#555d66;display:inline-block;content:"\f335";font-weight:300;margin-top:1px}.uploader-inline .close:focus{outline:1px solid #5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{left:0;margin-left:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:18px;font-size:13px;color:#666;margin-left:.5em}.attachments-browser .no-media{padding:2em 2em 0 0}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;border-radius:10px;background:#ddd;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#0073aa;border-radius:10px;transition:width .3s}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;right:15%;width:70%;margin:-5px 0 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h2,.uploader-inline .media-uploader-status h3{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#666}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#444}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{text-decoration:none}.media-sidebar .media-uploader-status .upload-dismiss-errors{position:absolute;top:-10px;left:-10px;padding:10px;transition:none}.media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:normal 16px/1 dashicons;color:#72777c}.media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-right:4px solid #dc3232;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.uploader-inline .upload-errors .upload-error{background-color:#fbeaea;box-shadow:none}.upload-errors .upload-error-filename{font-weight:600}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window{position:fixed;top:0;right:0;left:0;bottom:0;background:rgba(0,86,132,.9);z-index:250000;display:none;text-align:center;opacity:0;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;right:10px;left:10px;bottom:10px;border:1px dashed #fff}.uploader-window h1,.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;right:0;left:0;transform:translateY(-50%);font-size:40px;color:#fff;padding:0}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;right:0;left:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h2,.uploader-inline h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#444;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{font-size:12px;margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;right:0;left:350px;height:60px;padding:0 16px 0 0;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-left:10px;vertical-align:top}.media-selection.editing,.media-selection.empty{display:none}.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:600}.media-selection .button-link{float:right;padding:1px 8px;margin:1px -8px 1px 8px;line-height:16px;border-left:1px solid #ddd;color:#0073aa;text-decoration:none}.media-selection .button-link:focus,.media-selection .button-link:hover{color:#00a0d2}.media-selection .button-link:last-child{border-left:0;margin-left:0}.selection-info .clear-selection{color:#bc0b0b}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{color:#dc3232}.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .attachments{display:inline-block;height:48px;margin:6px;padding:0;overflow:hidden;vertical-align:top}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;left:0;bottom:0;right:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{box-shadow:none}.wp-core-ui .media-selection .attachment.details{box-shadow:0 0 0 1px #fff,0 0 0 3px #0073aa}.media-selection:after{content:"";display:block;position:absolute;top:0;left:0;bottom:0;width:25px;background-image:linear-gradient(to right,#fff,rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;float:left;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.media-frame .spinner.is-active{visibility:visible}.media-toolbar .spinner{margin-top:14px}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:left;text-transform:none;z-index:10}.attachment-details .settings-save-status .spinner{margin-right:5px}.attachment-details .settings-save-status .saved{float:left;display:none}.attachment-details.save-waiting .settings-save-status .spinner{visibility:visible}.attachment-details.save-complete .settings-save-status .saved{display:block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:18px;color:#666;border-bottom:1px solid #ddd;padding-bottom:11px}.attachment-info .filename{font-weight:600;color:#444;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:right;max-width:120px;max-height:120px;margin-top:5px;margin-left:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:right;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#bc0b0b}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:#dc3232}.attachment-display-settings{width:100%;float:right;overflow:hidden}.attachment-display-settings h4{margin:1.4em 0 .4em}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:right;margin-left:8px}.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px;position:absolute;top:0;left:282px;bottom:0;right:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-settings{background:#f3f3f3;border-right:1px solid #ddd;padding:20px 16px 16px;position:absolute;top:0;left:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #ddd;box-shadow:none;margin:0;margin-bottom:16px;padding:0;padding-bottom:16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top{margin:0}.media-modal .imgedit-group-top h2,.media-modal .imgedit-group-top h2 .button-link,.media-modal .imgedit-group-top h3{display:inline-block;text-transform:uppercase;font-size:12px;color:#666;margin:0;margin-top:3px}.media-modal .imgedit-group-top h2 .button-link,.media-modal .imgedit-group-top h2 a,.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:active,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:hover{border:1px solid transparent;margin:0;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-core-ui.media-modal .imgedit-group-top .dashicons-arrow-down.imgedit-help-toggle{margin-top:-3px}.wp-core-ui.media-modal .image-editor h3 .imgedit-help-toggle{margin-top:-2px}.media-modal .imgedit-help-toggled span.dashicons:before{content:"\f142"}.media-modal .imgedit-thumbnail-preview{margin:10px 0 0 8px}.imgedit-thumbnail-preview-caption{display:block}.media-modal .imgedit-wrap div.updated{margin:0;margin-bottom:16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;padding:12px 14px;width:100%;min-width:200px;box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;left:26px}.media-frame .embed-loading .embed-url .spinner{visibility:visible}.embed-link-settings,.embed-media-settings{position:absolute;top:70px;right:0;left:0;bottom:0;padding:16px 16px 32px;overflow:auto}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:1px solid #5b9dd9;box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.image-details .media-modal{right:140px;left:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{right:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings,.image-details .embed-media-settings div{box-sizing:border-box}.image-details .column-settings{background:#f3f3f3;border-left:1px solid #ddd;min-height:100%;width:55%;position:absolute;top:0;right:0}.image-details .column-settings h2,.image-details .column-settings h3{margin:20px;padding-top:20px;border-top:1px solid #ddd;color:#23282d}.image-details .column-image{width:45%;position:absolute;right:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#666;text-transform:uppercase;text-decoration:none}.image-details .advanced-toggle:active,.image-details .advanced-toggle:hover{color:#666}.image-details .advanced-toggle:after{font:normal 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140";display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:"\f142"}.image-details .embed-media-settings .size{margin-bottom:4px}.image-details .custom-size span{display:block}.image-details .custom-size label{display:block;float:right}.image-details .custom-size span small{color:#555d66;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:right;margin:26px 6px 0 6px}.image-details .custom-size:after{content:"";display:table;clear:both}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:right}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting{width:100%;margin:10px 0;float:right;display:block;clear:both}.media-embed .setting.has-description{margin-bottom:5px}.media-embed .description{clear:both;font-style:normal}.image-details .embed-media-settings .setting{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea{display:block;width:100%;max-width:400px;margin:1px 0}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .description,.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom{margin-right:27%;width:70%}.image-details .description{font-style:normal;margin-top:0}.image-details .embed-media-settings .link-target{margin-top:24px}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting span{display:block;width:200px;font-size:13px;line-height:24px;color:#666}.image-details .embed-media-settings .setting span{float:right;width:25%;text-align:left;margin:8px 1% 0 1%;line-height:1.1}.media-embed .setting .button-group{margin:2px 0}.media-embed-sidebar{position:absolute;top:0;right:440px}.advanced-section,.link-settings{margin-top:10px}.wp-editor-wrap .uploader-editor{background:rgba(150,150,150,.9);position:absolute;top:0;right:0;width:100%;height:100%;z-index:99998;display:none;text-align:center}.wp-editor-wrap .uploader-editor-content{border:1px dashed #fff;position:absolute;top:10px;right:10px;left:10px;bottom:10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;right:0;left:0;transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:600;color:#fff;padding:0;margin:0;display:none}.wp-editor-wrap .uploader-editor.droppable{background:rgba(0,86,132,.9)}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.ie7 .media-frame .attachments-browser{position:static}.ie7 .media-frame .embed-url input{margin-top:4px;width:90%}.ie7 .compat-item{width:99%}.ie7 .attachment-display-settings{width:auto}.ie7 .attachment-preview,.ie7 .attachment-preview .thumbnail{width:120px;height:120px}.ie7 .media-frame .attachment .describe{width:102px}.ie7 .media-sidebar .setting select{max-width:55%}.ie7 .media-sidebar .setting input[type=email],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=url],.ie7 .media-sidebar .setting textarea{width:55%}.ie7 .media-sidebar .setting .link-to-custom{float:right}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=email],.rtl .media-frame input[type=number],.rtl .media-frame input[type=password],.rtl .media-frame input[type=search],.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-title,.media-frame:not(.hide-menu) .media-frame-toolbar{right:0}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;right:-300px;left:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.media-frame:not(.hide-menu) .media-menu.visible{right:0}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu>a.active{display:none}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame:not(.hide-menu) .media-frame-title{right:0}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{color:#0073aa;line-height:3;font-size:18px;float:right;cursor:pointer}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{left:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting input,.attachment-details .setting span,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting input,.media-sidebar .setting span,.media-sidebar .setting textarea{float:none}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 0}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.image-details .column-image{width:30%;right:70%}.image-details .column-settings{width:70%}.image-details .media-modal{right:30px;left:30px}.image-details .embed-media-settings .setting{margin:20px}.image-details .embed-media-settings .setting span{float:none;text-align:right;width:100%;margin-bottom:4px}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-right:0}.image-details .embed-media-settings .setting.has-description{margin-bottom:5px}.image-details .description{width:auto;margin:0 20px}.image-details .embed-media-settings .custom-size{margin-right:20px}.collection-settings .setting input[type=checkbox]{margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:left}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-modal .attachments-browser .media-toolbar .spinner{margin:14px 2px 0}.media-frame input[type=email],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=text],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;right:0;left:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{left:0}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;right:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}}@media screen and (max-height:400px){.media-menu{padding:0}.media-frame-router{top:44px}.media-frame-content{top:78px}.attachments-browser .attachments{top:40px}.embed-link-settings{overflow:visible}}@media only screen and (max-width:480px){.media-modal-close{top:-5px}.media-modal .media-frame-title{height:40px}.wp-core-ui.wp-customizer .media-button{margin-top:13px}.media-frame:not(.hide-menu) .media-frame-title h1,.media-modal .media-frame-title h1{font-size:18px;line-height:40px}.media-frame:not(.hide-menu) .media-frame-title .dashicons{line-height:40px}.media-frame-router,.media-frame:not(.hide-menu) .media-menu{top:40px}.media-frame-content{top:74px}.media-frame.hide-router .media-frame-content{top:40px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons-2x.png);background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%} \ No newline at end of file diff --git a/wp-includes/css/media-views.css b/wp-includes/css/media-views.css index eba6b7c..78345b6 100644 --- a/wp-includes/css/media-views.css +++ b/wp-includes/css/media-views.css @@ -18,47 +18,46 @@ -webkit-overflow-scrolling: touch; } -.media-modal legend { - padding: 0; +.media-modal legend, +.media-modal label { font-size: 13px; } -.media-modal label { - font-size: 13px; +.media-frame input, +.media-frame textarea { + padding: 6px 8px; } -.media-modal .legend-inline { - position: absolute; - transform: translate(-100%, 50%); - margin-left: -1%; - line-height: 1.2; +.media-frame select, +.wp-admin .media-frame select { + line-height: 28px; + margin-top: 3px; } .media-frame a { border-bottom: none; - color: #2271b1; + color: #0073aa; } .media-frame a:hover, .media-frame a:active { - color: #135e96; + color: #00a0d2; } .media-frame a:focus { box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - color: #043959; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + 0 0 0 1px #5b9dd9, + 0 0 2px 1px rgba(30, 140, 190, .8); + outline: none; + color: #124964; } .media-frame a.button { - color: #2c3338; + color: #32373c; } .media-frame a.button:hover { - color: #1d2327; + color: #23282d; } .media-frame a.button-primary, @@ -66,65 +65,19 @@ color: #fff; } -.media-frame input, -.media-frame textarea { - padding: 6px 8px; -} - -.media-frame select, -.wp-admin .media-frame select { - min-height: 30px; - vertical-align: middle; -} - .media-frame input[type="text"], .media-frame input[type="password"], -.media-frame input[type="color"], -.media-frame input[type="date"], -.media-frame input[type="datetime"], -.media-frame input[type="datetime-local"], -.media-frame input[type="email"], -.media-frame input[type="month"], .media-frame input[type="number"], .media-frame input[type="search"], -.media-frame input[type="tel"], -.media-frame input[type="time"], +.media-frame input[type="email"], .media-frame input[type="url"], -.media-frame input[type="week"], .media-frame textarea, .media-frame select { - box-shadow: 0 0 0 transparent; - border-radius: 4px; - border: 1px solid #8c8f94; - background-color: #fff; - color: #2c3338; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; - font-size: 13px; - line-height: 1.38461538; -} - -.media-frame input[type="text"], -.media-frame input[type="password"], -.media-frame input[type="date"], -.media-frame input[type="datetime"], -.media-frame input[type="datetime-local"], -.media-frame input[type="email"], -.media-frame input[type="month"], -.media-frame input[type="number"], -.media-frame input[type="search"], -.media-frame input[type="tel"], -.media-frame input[type="time"], -.media-frame input[type="url"], -.media-frame input[type="week"] { - padding: 0 8px; - /* inherits font size 13px */ - line-height: 2.15384615; /* 28px */ -} - -/* Search field in the Media Library toolbar */ -.media-frame.mode-grid .wp-filter input[type="search"] { - font-size: 14px; - line-height: 2; + font-size: 12px; + border-width: 1px; + border-style: solid; + border-color: #ddd; } .media-frame input[type="text"]:focus, @@ -135,16 +88,19 @@ .media-frame input[type="url"]:focus, .media-frame textarea:focus, .media-frame select:focus { - border-color: #3582c4; - box-shadow: 0 0 0 1px #3582c4; - outline: 2px solid transparent; + border-color: #5b9dd9; +} + +.media-frame select { + height: 24px; + padding: 2px; } .media-frame input:disabled, .media-frame textarea:disabled, .media-frame input[readonly], .media-frame textarea[readonly] { - background-color: #f0f0f1; + background-color: #eee; } .media-frame input[type="search"] { @@ -152,24 +108,19 @@ } .media-frame ::-webkit-input-placeholder { - color: #646970; + color: #72777c; } .media-frame ::-moz-placeholder { - color: #646970; + color: #72777c; opacity: 1; } .media-frame :-ms-input-placeholder { - color: #646970; + color: #72777c; } -/* - * In some cases there's the need of higher specificity, - * for example higher than `.media-embed .setting`. - */ -.media-frame .hidden, -.media-frame .setting.hidden { +.media-frame .hidden { display: none; } @@ -228,7 +179,7 @@ padding: 0; border: 1px solid transparent; background: none; - color: #646970; + color: #666; z-index: 1000; cursor: pointer; outline: none; @@ -237,15 +188,13 @@ .media-modal-close:hover, .media-modal-close:active { - color: #135e96; + color: #00a0d2; } .media-modal-close:focus { - color: #135e96; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + color: #00a0d2; + border-color: #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .media-modal-close span.media-modal-icon { @@ -255,7 +204,7 @@ .media-modal-close .media-modal-icon:before { content: "\f158"; font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: middle; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -269,18 +218,22 @@ bottom: 0; overflow: auto; min-height: 300px; - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.7); - background: #fff; + box-shadow: 0 5px 15px rgba(0,0,0,0.7); + background: #fcfcfc; -webkit-font-smoothing: subpixel-antialiased; } .media-modal-content .media-frame select.attachment-filters { - margin-top: 32px; + margin-top: 11px; margin-right: 2%; width: 42%; width: calc(48% - 12px); } +.media-modal-content .media-toolbar-primary .media-button { + float: right; +} + .media-modal-content .attachments-browser .search { width: 100%; } @@ -302,22 +255,27 @@ z-index: 100; height: 60px; padding: 0 16px; - border: 0 solid #dcdcde; + border: 0 solid #ddd; overflow: hidden; } .media-frame-toolbar .media-toolbar { - top: auto; - bottom: -47px; + top: initial; + bottom: -45px; height: auto; - overflow: visible; - border-top: 1px solid #dcdcde; + overflow: initial; + border-top: 1px solid #ddd; +} + +@media screen and (max-width: 782px) { + .media-frame-toolbar .media-toolbar { + bottom: -48px; + } } .media-toolbar-primary { float: right; height: 100%; - position: relative; } .media-toolbar-secondary { @@ -347,36 +305,44 @@ right: 0; bottom: 0; width: 267px; - padding: 0 16px; + padding: 0 16px 24px; z-index: 75; - background: #f6f7f7; - border-left: 1px solid #dcdcde; + background: #f3f3f3; + border-left: 1px solid #ddd; overflow: auto; -webkit-overflow-scrolling: touch; } -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.media-sidebar::after { - content: ""; - display: flex; - clear: both; - height: 24px; -} - .hide-toolbar .media-sidebar { bottom: 0; } +.media-sidebar .sidebar-title { + font-size: 20px; + margin: 0; + padding: 12px 10px 10px; + line-height: 28px; +} + +.media-sidebar .sidebar-content { + padding: 0 10px; + margin-bottom: 130px; +} + +.media-sidebar .search { + display: block; + width: 100%; +} + +.media-sidebar h3, /* Back-compat for pre-4.4 */ +.image-details h3, /* Back-compat for pre-4.4 */ .media-sidebar h2, -.image-details h2:not(.media-attachments-filter-heading) { +.image-details h2 { position: relative; font-weight: 600; text-transform: uppercase; font-size: 12px; - color: #646970; + color: #666; margin: 24px 0 8px; } @@ -385,27 +351,21 @@ display: block; float: left; width: 100%; - margin: 0 0 10px; -} - -.media-sidebar .collection-settings .setting { margin: 1px 0; } -.media-sidebar .setting.has-description, -.attachment-details .setting.has-description { - margin-bottom: 5px; +.media-sidebar .setting label, +.attachment-details .setting label { + display: block; } -.media-sidebar .setting .link-to-custom { +.media-sidebar .setting .link-to-custom, +.attachment-details .setting .link-to-custom { margin: 3px 2px 0; } -.media-sidebar .setting span, /* Back-compat for pre-5.3 */ -.attachment-details .setting span, /* Back-compat for pre-5.3 */ -.media-sidebar .setting .name, -.media-sidebar .setting .value, -.attachment-details .setting .name { +.media-sidebar .setting span, +.attachment-details .setting span { min-width: 30%; margin-right: 4%; font-size: 12px; @@ -417,11 +377,8 @@ max-width: 80px; } -.media-sidebar .setting .value { - text-align: left; -} - -.media-sidebar .setting select { +.media-sidebar .setting select, +.attachment-details .setting select { max-width: 65%; } @@ -438,46 +395,15 @@ padding: 0; } -.media-sidebar .setting span, /* Back-compat for pre-5.3 */ -.attachment-details .setting span, /* Back-compat for pre-5.3 */ -.media-sidebar .setting .name, -.media-sidebar .setting .value, -.media-sidebar .checkbox-label-inline, -.attachment-details .setting .name, -.attachment-details .setting .value, +.media-sidebar .setting span, +.attachment-details .setting span, .compat-item label span { float: left; min-height: 22px; padding-top: 8px; - line-height: 1.33333333; + line-height: 16px; font-weight: 400; - color: #646970; -} - -.media-sidebar .checkbox-label-inline { - font-size: 12px; -} - -.media-sidebar .copy-to-clipboard-container, -.attachment-details .copy-to-clipboard-container { - flex-wrap: wrap; - margin-top: 10px; - margin-left: calc( 35% - 1px ); - padding-top: 10px; -} - -/* Needs high specificity. */ -.attachment-details .attachment-info .copy-to-clipboard-container { - float: none; -} - -.media-sidebar .copy-to-clipboard-container .success, -.attachment-details .copy-to-clipboard-container .success { - padding: 0; - min-height: 0; - line-height: 2.18181818; - text-align: left; - color: #008a20; + color: #666; } .compat-item label span { @@ -517,10 +443,9 @@ } .attachment-details .setting + .description { - clear: both; font-size: 12px; font-style: normal; - margin-bottom: 10px; + margin-bottom: 0.5em; } .media-sidebar .setting textarea, @@ -530,11 +455,9 @@ resize: vertical; } -.media-sidebar .alt-text textarea, -.attachment-details .alt-text textarea, -.compat-item .alt-text textarea, -.alt-text textarea { - height: 50px; +.media-sidebar select, +.attachment-details select { + margin-top: 3px; } .compat-item { @@ -611,62 +534,47 @@ right: 0; bottom: 0; margin: 0; - padding: 50px 0 10px; - background: #f6f7f7; + padding: 10px 0; + background: #f3f3f3; border-right-width: 1px; border-right-style: solid; - border-right-color: #c3c4c7; + border-right-color: #ccc; -webkit-user-select: none; -moz-user-select: none; user-select: none; } -.media-menu .media-menu-item { +.media-menu > a { display: block; - box-sizing: border-box; - width: 100%; position: relative; - border: 0; - margin: 0; padding: 8px 20px; + margin: 0; + line-height: 18px; font-size: 14px; - line-height: 1.28571428; - background: transparent; - color: #2271b1; - text-align: left; + color: #0073aa; text-decoration: none; - cursor: pointer; } -.media-menu .media-menu-item:hover { - background: rgba(0, 0, 0, 0.04); +.media-menu > a:hover { + color: #0073aa; + background: rgba( 0, 0, 0, 0.04 ); } -.media-menu .media-menu-item:active { - color: #2271b1; +.media-menu > a:active { outline: none; } .media-menu .active, .media-menu .active:hover { - color: #1d2327; + color: #23282d; font-weight: 600; } -.media-menu .media-menu-item:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - color: #043959; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; -} - .media-menu .separator { height: 0; margin: 12px 20px; padding: 0; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } /** @@ -677,51 +585,44 @@ padding: 0 6px; margin: 0; clear: both; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.media-router a { + transition: none; } -.media-router .media-menu-item { +.media-router > a { position: relative; float: left; - border: 0; - margin: 0; padding: 8px 10px 9px; + margin: 0; height: 18px; - line-height: 1.28571428; + line-height: 18px; font-size: 14px; text-decoration: none; - background: transparent; - cursor: pointer; - transition: none; } -.media-router .media-menu-item:last-child { +.media-router > a:last-child { border-right: 0; } -.media-router .media-menu-item:hover, -.media-router .media-menu-item:active { - color: #2271b1; +.media-router > a:active { + outline: none; } .media-router .active, .media-router .active:hover { - color: #1d2327; -} - -.media-router .media-menu-item:focus { - box-shadow: - 0 0 0 1px #4f94d4, - 0 0 2px 1px rgba(79, 148, 212, 0.8); - color: #043959; - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + color: #32373c; } .media-router .active, -.media-router .media-menu-item.active:last-child { +.media-router > a.active:last-child { margin: -1px -1px 0; background: #fff; - border: 1px solid #dcdcde; + border: 1px solid #ddd; border-bottom: none; } @@ -779,13 +680,15 @@ margin: 0; overflow: auto; background: #fff; - border-top: 1px solid #dcdcde; + border-top: 1px solid #ddd; } .media-frame-toolbar { position: absolute; left: 200px; right: 0; + bottom: 0; + height: 60px; z-index: 100; bottom: 60px; height: auto; @@ -807,47 +710,25 @@ } .media-frame.hide-menu .media-frame-menu, -.media-frame.hide-menu .media-frame-menu-heading, .media-frame.hide-router .media-frame-router, .media-frame.hide-toolbar .media-frame-toolbar { display: none; } -.media-frame-title h1 { - padding: 0 16px; - font-size: 22px; - line-height: 2.27272727; - margin: 0; -} - -.media-frame-menu-heading, -.media-attachments-filter-heading { - position: absolute; - left: 20px; - top: 22px; - margin: 0; - font-size: 13px; - line-height: 1; - /* Above the media-frame-menu. */ - z-index: 151; -} - -.media-attachments-filter-heading { - top: 10px; - left: 16px; -} - -.mode-grid .media-attachments-filter-heading { - top: 0; - left: -9999px; +.media-frame.hide-router .media-frame-title { + border-bottom: 1px solid #ddd; + box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 ); } -.mode-grid .media-frame-actions-heading { +.media-frame-title .dashicons { display: none; } -.wp-core-ui .button.media-frame-menu-toggle { - display: none; +.media-frame-title h1 { + padding: 0 16px; + font-size: 22px; + line-height: 50px; + margin: 0; } .media-frame-title .suggested-dimensions { @@ -871,7 +752,8 @@ max-height: 100%; } -.media-frame-content .crop-content .upload-errors { +.media-frame-content .crop-content .upload-errors +{ position: absolute; width: 300px; top: 50%; @@ -907,18 +789,16 @@ .media-frame select.attachment-filters:last-of-type { margin-right: 0; - width: auto; - max-width: 100%; } /** * Search */ .media-frame .search { - margin: 32px 0 0; + margin-top: 11px; padding: 4px; font-size: 13px; - color: #3c434a; + color: #444; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; -webkit-appearance: none; } @@ -927,14 +807,6 @@ max-width: 100%; } -.media-frame .media-search-input-label { - position: absolute; - left: 0; - top: 10px; - margin: 0; - line-height: 1; -} - /** * Attachments */ @@ -951,15 +823,13 @@ float: left; padding: 8px; margin: 0; - color: #3c434a; + color: #444; cursor: pointer; list-style: none; text-align: center; -webkit-user-select: none; -moz-user-select: none; user-select: none; - width: 25%; - box-sizing: border-box; } .wp-core-ui .attachment:focus, @@ -967,30 +837,28 @@ .wp-core-ui .attachment.details:focus { box-shadow: inset 0 0 2px 3px #fff, - inset 0 0 0 7px #4f94d4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; - outline-offset: -6px; + inset 0 0 0 7px #5b9dd9; + outline: none; } .wp-core-ui .selected.attachment { box-shadow: inset 0 0 0 5px #fff, - inset 0 0 0 7px #c3c4c7; + inset 0 0 0 7px #ccc; } .wp-core-ui .attachment.details { box-shadow: inset 0 0 0 3px #fff, - inset 0 0 0 7px #2271b1; + inset 0 0 0 7px #0073aa; } .wp-core-ui .attachment-preview { position: relative; box-shadow: - inset 0 0 15px rgba(0, 0, 0, 0.1), - inset 0 0 0 1px rgba(0, 0, 0, 0.05); - background: #f0f0f1; + inset 0 0 15px rgba( 0, 0, 0, 0.1 ), + inset 0 0 0 1px rgba( 0, 0, 0, 0.05 ); + background: #eee; cursor: pointer; } @@ -1032,7 +900,7 @@ left: 0; right: 0; bottom: 0; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 ); overflow: hidden; } @@ -1046,7 +914,7 @@ top: 0; left: 0; width: 100%; - height: 100%; + height: 100%; /* Fails with spaces?? Weird! */ transform: translate( 50%, 50% ); } @@ -1058,6 +926,11 @@ transform: translate( -50%, -70% ); } +.ie8 .wp-core-ui .attachment img.icon { + top: 20%; + position: relative; +} + .wp-core-ui .attachment .filename { position: absolute; left: 0; @@ -1068,8 +941,8 @@ word-wrap: break-word; text-align: center; font-weight: 600; - background: rgba(255, 255, 255, 0.8); - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15); + background: rgba( 255, 255, 255, 0.8 ); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 ); } .wp-core-ui .attachment .filename div { @@ -1091,7 +964,7 @@ background-color: #fff; background-position: -96px 4px; border-radius: 3px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 0 1px rgba( 0, 0, 0, 0.3 ); transition: none; } @@ -1111,9 +984,9 @@ top: 0; right: 0; outline: none; - background: #f0f0f1; + background: #eee; cursor: pointer; - box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 0 1px #fff, 0 0 0 2px rgba( 0, 0, 0, 0.15 ); } .wp-core-ui .attachment .check .media-modal-icon { @@ -1135,15 +1008,10 @@ .wp-core-ui .attachment.details .check, .wp-core-ui .attachment.selected .check:focus, .wp-core-ui .media-frame.mode-grid .attachment.selected .check { - background-color: #2271b1; + background-color: #0073aa; box-shadow: 0 0 0 1px #fff, - 0 0 0 2px #2271b1; -} - -.wp-core-ui .attachment.selected .check:focus { - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + 0 0 0 2px #0073aa; } .wp-core-ui .attachment.details .check .media-modal-icon, @@ -1162,7 +1030,7 @@ display: block; width: 100%; margin: 0; - padding: 0 8px; + padding: 8px; font-size: 12px; border-radius: 0; } @@ -1179,8 +1047,7 @@ .attachments-browser .media-toolbar { right: 300px; - height: 72px; - background: #fff; + height: 50px; } .attachments-browser.hide-sidebar .media-toolbar { @@ -1191,18 +1058,17 @@ .attachments-browser .media-toolbar-primary > .media-button-group, .attachments-browser .media-toolbar-secondary > .media-button, .attachments-browser .media-toolbar-secondary > .media-button-group { - margin: 10px 0; + margin: 11px 0; } .attachments-browser .attachments { padding: 2px 8px 8px; } -.attachments-browser:not(.has-load-more) .attachments, -.attachments-browser.has-load-more .attachments-wrapper, +.attachments-browser .attachments, .attachments-browser .uploader-inline { position: absolute; - top: 72px; + top: 50px; left: 0; right: 300px; bottom: 0; @@ -1218,15 +1084,6 @@ max-width: 33%; } -.mode-grid .attachments-browser .media-toolbar-primary { - display: flex; - align-items: center; -} - -.mode-grid .attachments-browser .media-toolbar-mode-select .media-toolbar-primary { - display: none; -} - .attachments-browser .media-toolbar-secondary { max-width: 66%; } @@ -1248,7 +1105,7 @@ .uploader-inline .close:before { font: normal 30px/1 dashicons !important; - color: #50575e; + color: #555d66; display: inline-block; content: "\f335"; font-weight: 300; @@ -1256,8 +1113,8 @@ } .uploader-inline .close:focus { - outline: 1px solid #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); + outline: 1px solid #5b9dd9; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .attachments-browser.hide-sidebar .attachments, @@ -1269,105 +1126,16 @@ .attachments-browser .instructions { display: inline-block; margin-top: 16px; - line-height: 1.38461538; + line-height: 18px; font-size: 13px; - color: #646970; + color: #666; + margin-right: 0.5em; } .attachments-browser .no-media { padding: 2em 0 0 2em; } -.more-loaded .attachment:not(.found-media) { - background: #dcdcde; -} - -.load-more-wrapper { - clear: both; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: center; - padding: 1em 0; -} - -.load-more-wrapper .load-more-count { - min-width: 100%; - margin: 0 0 1em; - text-align: center; -} - -.load-more-wrapper .load-more { - margin: 0; -} - -/* Needs high specificity. */ -.media-frame .load-more-wrapper .load-more + .spinner { - float: none; - margin: 0 -30px 0 10px; -} - -/* Reset spinner margin when the button is hidden to avoid horizontal scrollbar. */ -.media-frame .load-more-wrapper .load-more.hidden + .spinner { - margin: 0; -} - -/* Force a new row within the flex container. */ -.load-more-wrapper::after { - content: ""; - min-width: 100%; - order: 1; -} - -.load-more-wrapper .load-more-jump { - margin: 0 0 0 12px; -} - -.attachment.new-media { - outline: 2px dotted #c3c4c7; -} - -.load-more-wrapper { - clear: both; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: center; - padding: 1em 0; -} - -.load-more-wrapper .load-more-count { - min-width: 100%; - margin: 0 0 1em; - text-align: center; -} - -.load-more-wrapper .load-more { - margin: 0; -} - -/* Needs high specificity. */ -.media-frame .load-more-wrapper .load-more + .spinner { - float: none; - margin: 0 -30px 0 10px; -} - -/* Reset spinner margin when the button is hidden to avoid horizontal scrollbar. */ -.media-frame .load-more-wrapper .load-more.hidden + .spinner { - margin: 0; -} - -/* Force a new row within the flex container. */ -.load-more-wrapper::after { - content: ""; - min-width: 100%; - order: 1; -} - -.load-more-wrapper .load-more-jump { - margin: 0 0 0 12px; -} - /** * Progress Bar */ @@ -1377,15 +1145,15 @@ width: 70%; margin: 10px auto; border-radius: 10px; - background: #dcdcde; - background: rgba(0, 0, 0, 0.1); + background: #ddd; + background: rgba( 0, 0, 0, 0.1 ); } .media-progress-bar div { height: 10px; min-width: 20px; width: 0; - background: #2271b1; + background: #0073aa; border-radius: 10px; transition: width 300ms; } @@ -1404,7 +1172,7 @@ top: 50%; left: 15%; width: 70%; - margin: -5px 0 0; + margin: -5px 0 0 0; } .media-uploader-status { @@ -1414,6 +1182,7 @@ max-width: 400px; } +.uploader-inline .media-uploader-status h3, /* Back-compat for pre-4.4 */ .uploader-inline .media-uploader-status h2 { display: none; } @@ -1421,7 +1190,7 @@ .media-uploader-status .upload-details { display: none; font-size: 12px; - color: #646970; + color: #666; } .uploading.media-uploader-status .upload-details { @@ -1433,7 +1202,7 @@ } .media-uploader-status .upload-count { - color: #3c434a; + color: #444; } .media-uploader-status .upload-dismiss-errors, @@ -1447,21 +1216,39 @@ } .media-uploader-status .upload-dismiss-errors { - transition: none; text-decoration: none; } +.media-sidebar .media-uploader-status .upload-dismiss-errors { + position: absolute; + top: -10px; + right: -10px; + padding: 10px; + transition: none; +} + +.media-sidebar .media-uploader-status .upload-dismiss-errors:before { + content: "\f153"; + display: block; + font: normal 16px/1 dashicons; + color: #72777c; +} + +.media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before, +.media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before { + color: #c00; +} + .upload-errors .upload-error { padding: 12px; margin-bottom: 12px; background: #fff; - border-left: 4px solid #d63638; + border-left: 4px solid #dc3232; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); } .uploader-inline .upload-errors .upload-error { - padding: 12px 30px; - background-color: #fcf0f1; + background-color: #fbeaea; box-shadow: none; } @@ -1475,39 +1262,21 @@ word-wrap: break-word; } -/** - * Window and Editor uploaders used to display "drop zones" - */ -.uploader-window, -.wp-editor-wrap .uploader-editor { +.uploader-window { + position: fixed; top: 0; left: 0; right: 0; bottom: 0; - text-align: center; - display: none; -} - -.uploader-window { - position: fixed; + background: rgba( 0, 86, 132, 0.9 ); z-index: 250000; - opacity: 0; /* Only the inline uploader is animated with JS, the editor one isn't */ + display: none; + text-align: center; + opacity: 0; transition: opacity 250ms; } -.wp-editor-wrap .uploader-editor { - position: absolute; - z-index: 99998; /* under the toolbar */ - background: rgba(140, 143, 148, 0.9); -} - -.uploader-window, -.wp-editor-wrap .uploader-editor.droppable { - background: rgba(10, 75, 120, 0.9); -} - -.uploader-window-content, -.wp-editor-wrap .uploader-editor-content { +.uploader-window-content { position: absolute; top: 10px; left: 10px; @@ -1516,29 +1285,17 @@ border: 1px dashed #fff; } -/* uploader drop-zone title */ -.uploader-window h1, /* Back-compat for pre-5.3 */ -.uploader-window .uploader-editor-title, -.wp-editor-wrap .uploader-editor .uploader-editor-title { +.uploader-window h3, /* Back-compat for pre-4.4 */ +.uploader-window h1 { + margin: -0.5em 0 0; position: absolute; top: 50%; left: 0; right: 0; - transform: translateY(-50%); - font-size: 3em; - line-height: 1.3; - font-weight: 600; + transform: translateY( -50% ); + font-size: 40px; color: #fff; - margin: 0; - padding: 0 10px; -} - -.wp-editor-wrap .uploader-editor .uploader-editor-title { - display: none; -} - -.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title { - display: block; + padding: 0; } .uploader-window .media-progress-bar { @@ -1582,16 +1339,17 @@ margin: 0 0 4em; } +.uploader-inline h3, /* Back-compat for pre-4.4 */ .uploader-inline h2 { font-size: 20px; - line-height: 1.4; + line-height: 28px; font-weight: 400; margin: 0; } .uploader-inline .has-upload-message .upload-instructions { font-size: 14px; - color: #3c434a; + color: #444; font-weight: 400; } @@ -1604,6 +1362,7 @@ } .uploader-inline p { + font-size: 12px; margin: 0.5em 0; } @@ -1654,7 +1413,7 @@ display: block; padding-top: 12px; font-size: 14px; - line-height: 1.42857142; + line-height: 20px; font-weight: 600; } @@ -1662,15 +1421,15 @@ float: left; padding: 1px 8px; margin: 1px 8px 1px -8px; - line-height: 1.4; - border-right: 1px solid #dcdcde; - color: #2271b1; + line-height: 16px; + border-right: 1px solid #ddd; + color: #0073aa; text-decoration: none; } .media-selection .button-link:hover, .media-selection .button-link:focus { - color: #135e96; + color: #00a0d2; } .media-selection .button-link:last-child { @@ -1679,12 +1438,12 @@ } .selection-info .clear-selection { - color: #d63638; + color: #bc0b0b; } .selection-info .clear-selection:hover, .selection-info .clear-selection:focus { - color: #d63638; + color: #dc3232; } .media-selection .selection-view { @@ -1728,9 +1487,7 @@ .wp-core-ui .media-selection .attachment.details:focus { box-shadow: 0 0 0 1px #fff, - 0 0 2px 3px #4f94d4; - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + 0 0 2px 3px #5b9dd9; } .wp-core-ui .media-selection .selected.attachment { @@ -1740,7 +1497,7 @@ .wp-core-ui .media-selection .attachment.details { box-shadow: 0 0 0 1px #fff, - 0 0 0 3px #2271b1; + 0 0 0 3px #0073aa; } .media-selection:after { @@ -1751,7 +1508,7 @@ right: 0; bottom: 0; width: 25px; - background-image: linear-gradient(to left,#fff,rgba(255, 255, 255, 0)); + background-image: linear-gradient(to left, rgba( 255, 255, 255, 1 ), rgba( 255, 255, 255, 0 )); } .media-selection .attachment .filename { @@ -1775,26 +1532,14 @@ vertical-align: middle; } -.media-frame.mode-grid .spinner { - margin: 0; - float: none; - vertical-align: middle; -} - -.media-modal .media-toolbar .spinner { - float: none; - vertical-align: bottom; - margin: 0 0 5px 5px; -} - -.media-frame .instructions + .spinner.is-active { - vertical-align: middle; -} - .media-frame .spinner.is-active { visibility: visible; } +.media-toolbar .spinner { + margin-top: 14px; +} + /** * Attachment Details */ @@ -1806,15 +1551,15 @@ .attachment-details .settings-save-status { float: right; text-transform: none; - font-weight: 400; + z-index: 10; } .attachment-details .settings-save-status .spinner { - float: none; margin-left: 5px; } .attachment-details .settings-save-status .saved { + float: right; display: none; } @@ -1823,30 +1568,22 @@ } .attachment-details.save-complete .settings-save-status .saved { - display: inline-block; + display: block; } .attachment-info { overflow: hidden; min-height: 60px; margin-bottom: 16px; - line-height: 1.5; - color: #646970; - border-bottom: 1px solid #dcdcde; + line-height: 18px; + color: #666; + border-bottom: 1px solid #ddd; padding-bottom: 11px; } -.attachment-info .wp-media-wrapper { - margin-bottom: 8px; -} - -.attachment-info .wp-media-wrapper.wp-audio { - margin-top: 13px; -} - .attachment-info .filename { font-weight: 600; - color: #3c434a; + color: #444; word-wrap: break-word; } @@ -1863,7 +1600,7 @@ .uploading .attachment-info .thumbnail { width: 120px; height: 80px; - box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 15px rgba( 0, 0, 0, 0.1 ); } .uploading .attachment-info .media-progress-bar { @@ -1878,7 +1615,7 @@ left: 0; right: 0; bottom: 0; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.15); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.15 ); overflow: hidden; } @@ -1917,7 +1654,7 @@ .media-modal .untrash-attachment { display: inline; padding: 0; - color: #d63638; + color: #bc0b0b; } .media-modal .delete-attachment:hover, @@ -1926,7 +1663,7 @@ .media-modal .trash-attachment:focus, .media-modal .untrash-attachment:hover, .media-modal .untrash-attachment:focus { - color: #d63638; + color: #dc3232; } /** @@ -1938,6 +1675,10 @@ overflow: hidden; } +.attachment-display-settings h4 { + margin: 1.4em 0 0.4em; +} + .collection-settings { overflow: hidden; } @@ -1947,8 +1688,7 @@ margin-right: 8px; } -.collection-settings .setting span, /* Back-compat for pre-5.3 */ -.collection-settings .setting .name { +.collection-settings .setting span { min-width: inherit; } @@ -1960,7 +1700,7 @@ } .media-modal .imgedit-wrap .imgedit-panel-content { - padding: 16px 16px 0; + padding: 16px; position: absolute; top: 0; right: 282px; @@ -1969,18 +1709,10 @@ overflow: auto; } -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.media-modal .imgedit-wrap .imgedit-submit { - margin-bottom: 16px; -} - .media-modal .imgedit-wrap .imgedit-settings { - background: #f6f7f7; - border-left: 1px solid #dcdcde; - padding: 20px 16px 0; + background: #f3f3f3; + border-left: 1px solid #ddd; + padding: 20px 16px 16px; position: absolute; top: 0; right: 0; @@ -1989,18 +1721,10 @@ overflow: auto; } -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.media-modal .imgedit-wrap .imgedit-save-target { - margin: 8px 0 24px; -} - .media-modal .imgedit-group { background: none; border: none; - border-bottom: 1px solid #dcdcde; + border-bottom: 1px solid #ddd; box-shadow: none; margin: 0; margin-bottom: 16px; @@ -2019,20 +1743,22 @@ margin: 0; } +.media-modal .imgedit-group-top h3, /* Back-compat for pre-4.4 */ .media-modal .imgedit-group-top h2, .media-modal .imgedit-group-top h2 .button-link { display: inline-block; text-transform: uppercase; font-size: 12px; - color: #646970; + color: #666; margin: 0; margin-top: 3px; } +.media-modal .imgedit-group-top h3 a, /* Back-compat for pre-4.4 */ .media-modal .imgedit-group-top h2 a, .media-modal .imgedit-group-top h2 .button-link { text-decoration: none; - color: #646970; + color: #666; } /* higher specificity than media.css */ @@ -2043,7 +1769,7 @@ margin: 0; padding: 0; background: transparent; - color: #2271b1; + color: #0074a2; font-size: 20px; line-height: 1; cursor: pointer; @@ -2052,11 +1778,10 @@ } .wp-core-ui.media-modal .image-editor .imgedit-help-toggle:focus { - color: #2271b1; - border-color: #4f94d4; - box-shadow: 0 0 3px rgba(34, 113, 177, 0.8); - /* Only visible in Windows High Contrast mode */ - outline: 2px solid transparent; + color: #0074a2; + border-color: #5b9dd9; + outline: none; + box-shadow: 0 0 3px rgba( 0, 115, 170, .8 ); } .wp-core-ui.media-modal .imgedit-group-top .dashicons-arrow-down.imgedit-help-toggle { @@ -2079,12 +1804,12 @@ display: block; } -.media-modal .imgedit-wrap div.updated, /* Back-compat for pre-5.5 */ -.media-modal .imgedit-wrap .notice { +.media-modal .imgedit-wrap div.updated { margin: 0; margin-bottom: 16px; } + /** * Embed from URL and Image Details */ @@ -2100,15 +1825,10 @@ .media-frame .embed-url input { font-size: 18px; - line-height: 1.22222222; /* 22px */ - padding: 12px 40px 12px 14px; /* right padding to leave room for the spinner */ + padding: 12px 14px; width: 100%; min-width: 200px; - box-shadow: inset 2px 2px 4px -2px rgba(0, 0, 0, 0.1); -} - -.media-frame .embed-url input::-ms-clear { - display: none; /* the "x" in IE 11 conflicts with the spinner */ + box-shadow: inset 2px 2px 4px -2px rgba( 0, 0, 0, 0.1 ); } .media-frame .embed-url .spinner { @@ -2124,30 +1844,14 @@ .embed-link-settings, .embed-media-settings { position: absolute; - top: 82px; + top: 70px; left: 0; right: 0; bottom: 0; - padding: 0 16px; + padding: 16px 16px 32px; overflow: auto; } -.media-embed .embed-link-settings .link-text { - margin-top: 0; -} - -/* - * Implementation of bottom padding in overflow content differs across browsers. - * We need a different method. See https://github.com/w3c/csswg-drafts/issues/129 - */ -.embed-link-settings::after, -.embed-media-settings::after { - content: ""; - display: flex; - clear: both; - height: 24px; -} - .media-embed .embed-link-settings { /* avoid Firefox to give focus to the embed preview container parent */ overflow: visible; @@ -2171,8 +1875,8 @@ } .mejs-container:focus { - outline: 1px solid #4f94d4; - box-shadow: 0 0 2px 1px rgba(79, 148, 212, 0.8); + outline: 1px solid #5b9dd9; + box-shadow: 0 0 2px 1px rgba(30, 140, 190, .8); } .image-details .media-modal { @@ -2192,18 +1896,14 @@ padding: 0; } -.image-details .embed-media-settings::after { - content: none; -} - .image-details .embed-media-settings, .image-details .embed-media-settings div { box-sizing: border-box; } .image-details .column-settings { - background: #f6f7f7; - border-right: 1px solid #dcdcde; + background: #f3f3f3; + border-right: 1px solid #ddd; min-height: 100%; width: 55%; position: absolute; @@ -2211,11 +1911,12 @@ left: 0; } +.image-details .column-settings h3, /* Back-compat for pre-4.4 */ .image-details .column-settings h2 { margin: 20px; padding-top: 20px; - border-top: 1px solid #dcdcde; - color: #1d2327; + border-top: 1px solid #ddd; + color: #23282d; } .image-details .column-image { @@ -2236,19 +1937,19 @@ .image-details .advanced-toggle { padding: 0; - color: #646970; + color: #666; text-transform: uppercase; text-decoration: none; } .image-details .advanced-toggle:hover, .image-details .advanced-toggle:active { - color: #646970; + color: #666; } .image-details .advanced-toggle:after { font: normal 20px/1 dashicons; - speak: never; + speak: none; vertical-align: top; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -2261,14 +1962,22 @@ content: "\f142"; } -.image-details .custom-size label, /* Back-compat for pre-5.3 */ -.image-details .custom-size .custom-size-setting { +.image-details .embed-media-settings .size { + margin-bottom: 4px; +} + +.image-details .custom-size span { + display: block; +} + +.image-details .custom-size label { display: block; float: left; } -.image-details .custom-size .custom-size-setting label { - float: none; +.image-details .custom-size span small { + color: #555d66; /* #f3f3f3 background */ + font-size: inherit; } .image-details .custom-size input { @@ -2277,11 +1986,13 @@ .image-details .custom-size .sep { float: left; - margin: 26px 6px 0; + margin: 26px 6px 0 6px; } -.image-details .custom-size .description { - margin-left: 0; +.image-details .custom-size:after { + content: ""; + display: table; + clear: both; } .media-embed .thumbnail { @@ -2304,12 +2015,11 @@ left: 0; right: 0; bottom: 0; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 0 0 1px rgba( 0, 0, 0, 0.1 ); overflow: hidden; } -.media-embed .setting, -.media-embed .setting-group { +.media-embed .setting { width: 100%; margin: 10px 0; float: left; @@ -2317,10 +2027,6 @@ clear: both; } -.media-embed .setting-group .setting:not(.checkbox-setting) { - margin: 0; -} - .media-embed .setting.has-description { margin-bottom: 5px; } @@ -2330,18 +2036,7 @@ font-style: normal; } -.media-embed .content-track + .description { - line-height: 1.4; - /* The !important needs to override a high specificity selector from wp-medialement.css */ - max-width: none !important; -} - -.media-embed .remove-track { - margin-bottom: 10px; -} - -.image-details .embed-media-settings .setting, -.image-details .embed-media-settings .setting-group { +.image-details .embed-media-settings .setting { float: none; width: auto; } @@ -2355,11 +2050,11 @@ } .media-embed .setting input[type="text"], -.media-embed .setting textarea, -.media-embed fieldset { +.media-embed .setting textarea { display: block; width: 100%; max-width: 400px; + margin: 1px 0; } .image-details .embed-media-settings .setting input[type="text"], @@ -2371,7 +2066,6 @@ .image-details .embed-media-settings .setting input.link-to-custom, .image-details .embed-media-settings .link-target, .image-details .embed-media-settings .custom-size, -.image-details .embed-media-settings .setting-group, .image-details .description { margin-left: 27%; width: 70%; @@ -2383,13 +2077,7 @@ } .image-details .embed-media-settings .link-target { - margin-top: 16px; -} - -.image-details .checkbox-label, -.audio-details .checkbox-label, -.video-details .checkbox-label { - vertical-align: baseline; + margin-top: 24px; } .media-embed .setting input.hidden, @@ -2397,33 +2085,24 @@ display: none; } -.media-embed .setting span, /* Back-compat for pre-5.3 */ -.media-embed .setting .name, -.media-embed .setting-group .name { - display: inline-block; - font-size: 13px; - line-height: 1.84615384; - color: #646970; -} - .media-embed .setting span { - display: block; /* Back-compat for pre-5.3 */ - width: 200px; /* Back-compat for pre-5.3 */ + display: block; + width: 200px; + font-size: 13px; + line-height: 24px; + color: #666; } -.image-details .embed-media-settings .setting span, /* Back-compat for pre-5.3 */ -.image-details .embed-media-settings .setting .name { +.image-details .embed-media-settings .setting span { float: left; width: 25%; text-align: right; - margin: 8px 1% 0; + margin: 8px 1% 0 1%; line-height: 1.1; } -/* Buttons group in IE 11. */ -.media-frame .setting-group .button-group, -.image-details .embed-media-settings .setting .button-group { - width: auto; +.media-embed .setting .button-group { + margin: 2px 0; } .media-embed-sidebar { @@ -2437,14 +2116,99 @@ margin-top: 10px; } +/* Drag & drop on the editor upload */ +.wp-editor-wrap .uploader-editor { + background: rgba( 150, 150, 150, 0.9 ); + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 99998; /* under the toolbar */ + display: none; + text-align: center; +} + +.wp-editor-wrap .uploader-editor-content { + border: 1px dashed #fff; + position: absolute; + top: 10px; + left: 10px; + right: 10px; + bottom: 10px; +} + +.wp-editor-wrap .uploader-editor .uploader-editor-title { + position: absolute; + top: 50%; + left: 0; + right: 0; + transform: translateY( -50% ); + font-size: 3em; + line-height: 1.3; + font-weight: 600; + color: #fff; + padding: 0; + margin: 0; + display: none; +} + +.wp-editor-wrap .uploader-editor.droppable { + background: rgba( 0, 86, 132, 0.9 ); +} + +.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title { + display: block; +} + /** - * Button groups fix: can be removed together with the Back-compat for pre-5.3 + * IE7 Fixes */ - .media-frame .setting .button-group { - display: flex; - margin: 0 !important; - max-width: none !important; - } +.ie7 .media-frame .attachments-browser { + position: static; +} + +.ie7 .media-frame .embed-url input { + margin-top: 4px; + width: 90%; +} + +.ie7 .compat-item { + width: 99%; +} + +.ie7 .attachment-display-settings { + width: auto; +} + +.ie7 .attachment-preview, +.ie7 .attachment-preview .thumbnail { + width: 120px; + height: 120px; +} + +.ie7 .media-frame .attachment .describe { + width: 102px; +} + +.ie7 .media-sidebar .setting select { + max-width: 55%; +} + +.ie7 .media-sidebar .setting input[type="text"], +.ie7 .media-sidebar .setting input[type="password"], +.ie7 .media-sidebar .setting input[type="email"], +.ie7 .media-sidebar .setting input[type="number"], +.ie7 .media-sidebar .setting input[type="search"], +.ie7 .media-sidebar .setting input[type="tel"], +.ie7 .media-sidebar .setting input[type="url"], +.ie7 .media-sidebar .setting textarea { + width: 55%; +} + +.ie7 .media-sidebar .setting .link-to-custom { + float: left; +} /** * Localization @@ -2482,69 +2246,35 @@ * Responsive layout */ @media only screen and (max-width: 900px) { - .media-modal .media-frame-title { - height: 40px; - } - - .media-modal .media-frame-title h1 { - line-height: 2.22222222; - font-size: 18px; - } - - .media-modal-close { - width: 42px; - height: 42px; - } /* Drop-down menu */ - .media-frame .media-frame-title { - position: static; - padding: 0 44px; - text-align: center; - } - + .media-frame:not(.hide-menu) .media-frame-title, .media-frame:not(.hide-menu) .media-frame-router, .media-frame:not(.hide-menu) .media-frame-content, .media-frame:not(.hide-menu) .media-frame-toolbar { left: 0; } - .media-frame:not(.hide-menu) .media-frame-router { - /* 40 title + (40 - 6) menu toggle button + 6 spacing */ - top: 80px; - } - - .media-frame:not(.hide-menu) .media-frame-content { - /* 80 + room for the tabs */ - top: 114px; - } - - .media-frame.hide-router .media-frame-content { - top: 80px; - } - .media-frame:not(.hide-menu) .media-frame-menu { position: static; width: 0; } .media-frame:not(.hide-menu) .media-menu { - display: none; width: auto; max-width: 80%; overflow: auto; z-index: 2000; - top: 75px; - left: 50%; - transform: translateX(-50%); + top: 50px; + left: -300px; right: auto; bottom: auto; padding: 5px 0; - border: 1px solid #c3c4c7; + border: 1px solid #ccc; } .media-frame:not(.hide-menu) .media-menu.visible { - display: block; + left: 0; } .media-frame:not(.hide-menu) .media-menu > a { @@ -2552,49 +2282,29 @@ font-size: 16px; } - .media-frame:not(.hide-menu) .media-menu .separator { - margin: 5px 10px; + .media-frame:not(.hide-menu) .media-menu > a.active { + display: none; } - /* Visually hide the menu heading keeping it available to assistive technologies. */ - .media-frame-menu-heading { - clip: rect(1px, 1px, 1px, 1px); - clip-path: inset(50%); - height: 1px; - overflow: hidden; - padding: 0; - width: 1px; - word-wrap: normal !important; + .media-frame:not(.hide-menu) .media-menu .separator { + margin: 5px 10px; } - /* Reveal the menu toggle button. */ - .wp-core-ui .media-frame:not(.hide-menu) .button.media-frame-menu-toggle { - display: inline-flex; - align-items: center; - position: absolute; - left: 50%; - transform: translateX(-50%); - margin: -6px 0 0; - padding: 0 2px 0 12px; - font-size: 0.875rem; - font-weight: 600; - text-decoration: none; - background: transparent; - /* Only for IE11 to vertically align text within the inline-flex button */ - height: 0.1%; - /* Modern browsers */ - min-height: 40px; + .media-frame:not(.hide-menu) .media-frame-title { + left: 0; } - .wp-core-ui .button.media-frame-menu-toggle:hover, - .wp-core-ui .button.media-frame-menu-toggle:active { - background: transparent; - transform: none; + .media-frame:not(.hide-menu) .media-frame-title .dashicons { + display: inline-block; + line-height: 50px; } - .wp-core-ui .button.media-frame-menu-toggle:focus { - /* Only visible in Windows High Contrast mode */ - outline: 1px solid transparent; + .media-frame:not(.hide-menu) .media-frame-title h1 { + color: #0073aa; + line-height: 3; + font-size: 18px; + float: left; + cursor: pointer; } /* End drop-down menu */ @@ -2604,58 +2314,32 @@ .attachments-browser .attachments, .attachments-browser .uploader-inline, - .attachments-browser .media-toolbar, - .attachments-browser .attachments-wrapper, - .attachments-browser.has-load-more .attachments-wrapper { + .attachments-browser .media-toolbar { right: 262px; } .media-sidebar .setting, .attachment-details .setting { - margin: 6px 0; + margin: 6px 0px; } .media-sidebar .setting input, .media-sidebar .setting textarea, - .media-sidebar .setting .name, + .media-sidebar .setting span, .attachment-details .setting input, .attachment-details .setting textarea, - .attachment-details .setting .name, + .attachment-details .setting span, .compat-item label span { float: none; - display: inline-block; - } - - .media-sidebar .setting span, /* Back-compat for pre-5.3 */ - .attachment-details .setting span, /* Back-compat for pre-5.3 */ - .media-sidebar .checkbox-label-inline { - float: none; } - .media-sidebar .setting .select-label-inline { - display: inline; - } - - .media-sidebar .setting .name, - .media-sidebar .checkbox-label-inline, - .attachment-details .setting .name, + .media-sidebar .setting span, + .attachment-details .setting span, .compat-item label span { text-align: inherit; min-height: 16px; margin: 0; - padding: 8px 2px 2px; - } - - /* Needs high specificity. */ - .media-sidebar .setting .copy-to-clipboard-container, - .attachment-details .attachment-info .copy-to-clipboard-container { - margin-left: 0; - padding-top: 0; - } - - .media-sidebar .setting .copy-attachment-url, - .attachment-details .attachment-info .copy-attachment-url { - margin: 0 1px; + padding: 8px 2px 0; } .media-sidebar .setting .value, @@ -2689,10 +2373,6 @@ height: auto; } - .media-frame .media-toolbar input[type="search"] { - line-height: 2.25; /* 36px */ - } - .media-sidebar .setting select.columns, .attachment-details .setting select.columns { width: auto; @@ -2704,13 +2384,6 @@ padding: 3px 6px; } - .wp-admin .media-frame select { - min-height: 40px; - font-size: 16px; - line-height: 1.625; - padding: 5px 24px 5px 8px; - } - .image-details .column-image { width: 30%; left: 70%; @@ -2725,29 +2398,15 @@ right: 30px; } - .image-details .embed-media-settings .setting, - .image-details .embed-media-settings .setting-group { + .image-details .embed-media-settings .setting { margin: 20px; } - .image-details .embed-media-settings .setting span, /* Back-compat for pre-5.3 */ - .image-details .embed-media-settings .setting .name { + .image-details .embed-media-settings .setting span { float: none; text-align: left; width: 100%; margin-bottom: 4px; - margin-left: 0; - } - - .media-modal .legend-inline { - position: static; - transform: none; - margin-left: 0; - margin-bottom: 6px; - } - - .image-details .embed-media-settings .setting-group .setting { - margin-bottom: 0; } .image-details .embed-media-settings .setting input.link-to-custom, @@ -2771,7 +2430,6 @@ } .collection-settings .setting input[type="checkbox"] { - float: none; margin-top: 0; } @@ -2797,6 +2455,10 @@ height: auto; } + .media-modal .attachments-browser .media-toolbar .spinner { + margin: 14px 2px 0; + } + /* Text inputs need to be 16px, or they force zooming on iOS */ .media-frame input[type="text"], .media-frame input[type="password"], @@ -2807,40 +2469,6 @@ .media-frame textarea, .media-frame select { font-size: 16px; - line-height: 1.5; - } - - .media-frame .media-toolbar input[type="search"] { - line-height: 2.3755; /* 38px */ - } - - .media-modal .media-toolbar .spinner { - margin-bottom: 10px; - } -} - -@media screen and (max-width: 782px) { - .attachments-browser .media-toolbar { - height: 82px; - } - - .attachments-browser .attachments, - .attachments-browser .uploader-inline { - top: 82px; - } - - .media-frame-toolbar .media-toolbar { - bottom: -54px; - } - - .mode-grid .attachments-browser .media-toolbar-primary { - display: block; - } - - .media-sidebar .copy-to-clipboard-container .success, - .attachment-details .copy-to-clipboard-container .success { - font-size: 14px; - line-height: 2.71428571; } } @@ -2874,15 +2502,10 @@ .attachments-browser .attachments, .attachments-browser .uploader-inline, - .attachments-browser .media-toolbar, - .media-frame-content .attachments-browser .attachments-wrapper { + .attachments-browser .media-toolbar { right: 0; } - .attachments-browser .attachments-wrapper { - padding-top: 12px; - } - .image-details .media-frame-title { display: block; top: 0; @@ -2904,32 +2527,67 @@ .media-frame-content .media-toolbar .instructions { display: none; } +} - /* Change margin direction on load more button in responsive views. */ - .load-more-wrapper .load-more-jump { - margin: 12px 0 0; +/* Landscape specific header override */ +@media screen and (max-height: 400px) { + .media-menu { + padding: 0; } -} + .media-frame-router { + top: 44px; + } -@media only screen and (min-width: 901px) and (max-height: 400px) { - .media-menu, - .media-frame:not(.hide-menu) .media-menu { - top: 0; - padding-top: 44px; + .media-frame-content { + top: 78px; } - /* Change margin direction on load more button in responsive views. */ - .load-more-wrapper .load-more-jump { - margin: 12px 0 0; + .attachments-browser .attachments { + top: 40px; } + /* Prevent unnecessary scrolling on title input */ + .embed-link-settings { + overflow: visible; + } } @media only screen and (max-width: 480px) { + .media-modal-close { + top: -5px; + } + + .media-modal .media-frame-title { + height: 40px; + } + .wp-core-ui.wp-customizer .media-button { margin-top: 13px; } + + .media-modal .media-frame-title h1, + .media-frame:not(.hide-menu) .media-frame-title h1 { + font-size: 18px; + line-height: 40px; + } + + .media-frame:not(.hide-menu) .media-frame-title .dashicons { + line-height: 40px; + } + + .media-frame-router, + .media-frame:not(.hide-menu) .media-menu { + top: 40px; + } + + .media-frame-content { + top: 74px; + } + + .media-frame.hide-router .media-frame-content { + top: 40px; + } } /** diff --git a/wp-includes/css/media-views.min.css b/wp-includes/css/media-views.min.css index b757929..bbe2c3a 100644 --- a/wp-includes/css/media-views.min.css +++ b/wp-includes/css/media-views.min.css @@ -1,9 +1,9 @@ /*! This file is auto-generated */ -.media-modal *{box-sizing:content-box}.media-modal input,.media-modal select,.media-modal textarea{box-sizing:border-box}.media-frame,.media-modal{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-modal legend{padding:0;font-size:13px}.media-modal label{font-size:13px}.media-modal .legend-inline{position:absolute;transform:translate(-100%,50%);margin-left:-1%;line-height:1.2}.media-frame a{border-bottom:none;color:#2271b1}.media-frame a:active,.media-frame a:hover{color:#135e96}.media-frame a:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);color:#043959;outline:1px solid transparent}.media-frame a.button{color:#2c3338}.media-frame a.button:hover{color:#1d2327}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{min-height:30px;vertical-align:middle}.media-frame input[type=color],.media-frame input[type=date],.media-frame input[type=datetime-local],.media-frame input[type=datetime],.media-frame input[type=email],.media-frame input[type=month],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=tel],.media-frame input[type=text],.media-frame input[type=time],.media-frame input[type=url],.media-frame input[type=week],.media-frame select,.media-frame textarea{box-shadow:0 0 0 transparent;border-radius:4px;border:1px solid #8c8f94;background-color:#fff;color:#2c3338;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:13px;line-height:1.38461538}.media-frame input[type=date],.media-frame input[type=datetime-local],.media-frame input[type=datetime],.media-frame input[type=email],.media-frame input[type=month],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=tel],.media-frame input[type=text],.media-frame input[type=time],.media-frame input[type=url],.media-frame input[type=week]{padding:0 8px;line-height:2.15384615}.media-frame.mode-grid .wp-filter input[type=search]{font-size:14px;line-height:2}.media-frame input[type=email]:focus,.media-frame input[type=number]:focus,.media-frame input[type=password]:focus,.media-frame input[type=search]:focus,.media-frame input[type=text]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#3582c4;box-shadow:0 0 0 1px #3582c4;outline:2px solid transparent}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#f0f0f1}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame ::-webkit-input-placeholder{color:#646970}.media-frame ::-moz-placeholder{color:#646970;opacity:1}.media-frame :-ms-input-placeholder{color:#646970}.media-frame .hidden,.media-frame .setting.hidden{display:none}/*! +.media-modal *{box-sizing:content-box}.media-modal input,.media-modal select,.media-modal textarea{box-sizing:border-box}.media-frame,.media-modal{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-modal label,.media-modal legend{font-size:13px}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{line-height:28px;margin-top:3px}.media-frame a{border-bottom:none;color:#0073aa}.media-frame a:active,.media-frame a:hover{color:#00a0d2}.media-frame a:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#124964}.media-frame a.button{color:#32373c}.media-frame a.button:hover{color:#23282d}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input[type=email],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=text],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#ddd}.media-frame input[type=email]:focus,.media-frame input[type=number]:focus,.media-frame input[type=password]:focus,.media-frame input[type=search]:focus,.media-frame input[type=text]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#5b9dd9}.media-frame select{height:24px;padding:2px}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#eee}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame ::-webkit-input-placeholder{color:#72777c}.media-frame ::-moz-placeholder{color:#72777c;opacity:1}.media-frame :-ms-input-placeholder{color:#72777c}.media-frame .hidden{display:none}/*! * jQuery UI Draggable/Sortable 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license - */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.media-modal{position:fixed;top:30px;left:30px;right:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;right:0;width:50px;height:50px;margin:0;padding:0;border:1px solid transparent;background:0 0;color:#646970;z-index:1000;cursor:pointer;outline:0;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active,.media-modal-close:hover{color:#135e96}.media-modal-close:focus{color:#135e96;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:"\f158";font:normal 20px/1 dashicons;speak:never;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fff;-webkit-font-smoothing:subpixel-antialiased}.media-modal-content .media-frame select.attachment-filters{margin-top:32px;margin-right:2%;width:42%;width:calc(48% - 12px)}.media-modal-content .attachments-browser .search{width:100%}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-toolbar{position:absolute;top:0;left:0;right:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dcdcde;overflow:hidden}.media-frame-toolbar .media-toolbar{top:auto;bottom:-47px;height:auto;overflow:visible;border-top:1px solid #dcdcde}.media-toolbar-primary{float:right;height:100%;position:relative}.media-toolbar-secondary{float:left;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:10px;float:left;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:10px;margin-top:15px}.media-sidebar{position:absolute;top:0;right:0;bottom:0;width:267px;padding:0 16px;z-index:75;background:#f6f7f7;border-left:1px solid #dcdcde;overflow:auto;-webkit-overflow-scrolling:touch}.media-sidebar::after{content:"";display:flex;clear:both;height:24px}.hide-toolbar .media-sidebar{bottom:0}.image-details h2:not(.media-attachments-filter-heading),.media-sidebar h2{position:relative;font-weight:600;text-transform:uppercase;font-size:12px;color:#646970;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:left;width:100%;margin:0 0 10px}.media-sidebar .collection-settings .setting{margin:1px 0}.attachment-details .setting.has-description,.media-sidebar .setting.has-description{margin-bottom:5px}.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting .name,.attachment-details .setting span,.media-sidebar .setting .name,.media-sidebar .setting .value,.media-sidebar .setting span{min-width:30%;margin-right:4%;font-size:12px;text-align:right;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.media-sidebar .setting .value{text-align:left}.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=checkbox],.attachment-details .field input[type=radio],.attachment-details .setting input[type=checkbox],.attachment-details .setting input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .setting input[type=checkbox],.media-sidebar .setting input[type=radio]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting .name,.attachment-details .setting .value,.attachment-details .setting span,.compat-item label span,.media-sidebar .checkbox-label-inline,.media-sidebar .setting .name,.media-sidebar .setting .value,.media-sidebar .setting span{float:left;min-height:22px;padding-top:8px;line-height:1.33333333;font-weight:400;color:#646970}.media-sidebar .checkbox-label-inline{font-size:12px}.attachment-details .copy-to-clipboard-container,.media-sidebar .copy-to-clipboard-container{flex-wrap:wrap;margin-top:10px;margin-left:calc(35% - 1px);padding-top:10px}.attachment-details .attachment-info .copy-to-clipboard-container{float:none}.attachment-details .copy-to-clipboard-container .success,.media-sidebar .copy-to-clipboard-container .success{padding:0;min-height:0;line-height:2.18181818;text-align:left;color:#008a20}.compat-item label span{text-align:right}.attachment-details .setting .value,.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting .value,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{box-sizing:border-box;margin:1px;width:65%;float:right}.attachment-details .setting .value,.attachment-details .setting+.description,.media-sidebar .setting .value{margin:0 1px;text-align:left}.attachment-details .setting+.description{clear:both;font-size:12px;font-style:normal;margin-bottom:10px}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.alt-text textarea,.attachment-details .alt-text textarea,.compat-item .alt-text textarea,.media-sidebar .alt-text textarea{height:50px}.compat-item{float:left;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-right:4%;float:left;text-align:right}.compat-item .label span{display:block;width:100%}.compat-item .field{float:right;width:65%;margin:1px}.compat-item .field input[type=email],.compat-item .field input[type=number],.compat-item .field input[type=password],.compat-item .field input[type=search],.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:50px 0 10px;background:#f6f7f7;border-right-width:1px;border-right-style:solid;border-right-color:#c3c4c7;-webkit-user-select:none;-moz-user-select:none;user-select:none}.media-menu .media-menu-item{display:block;box-sizing:border-box;width:100%;position:relative;border:0;margin:0;padding:8px 20px;font-size:14px;line-height:1.28571428;background:0 0;color:#2271b1;text-align:left;text-decoration:none;cursor:pointer}.media-menu .media-menu-item:hover{background:rgba(0,0,0,.04)}.media-menu .media-menu-item:active{color:#2271b1;outline:0}.media-menu .active,.media-menu .active:hover{color:#1d2327;font-weight:600}.media-menu .media-menu-item:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);color:#043959;outline:1px solid transparent}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #dcdcde}.media-router{position:relative;padding:0 6px;margin:0;clear:both}.media-router .media-menu-item{position:relative;float:left;border:0;margin:0;padding:8px 10px 9px;height:18px;line-height:1.28571428;font-size:14px;text-decoration:none;background:0 0;cursor:pointer;transition:none}.media-router .media-menu-item:last-child{border-right:0}.media-router .media-menu-item:active,.media-router .media-menu-item:hover{color:#2271b1}.media-router .active,.media-router .active:hover{color:#1d2327}.media-router .media-menu-item:focus{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);color:#043959;outline:1px solid transparent}.media-router .active,.media-router .media-menu-item.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #dcdcde;border-bottom:none}.media-router .active:after{display:none}.media-frame{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.media-frame-menu{position:absolute;top:0;left:0;bottom:0;width:200px;z-index:150}.media-frame-title{position:absolute;top:0;left:200px;right:0;height:50px;z-index:200}.media-frame-router{position:absolute;top:50px;left:200px;right:0;height:36px;z-index:200}.media-frame-content{position:absolute;top:84px;left:200px;right:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #dcdcde}.media-frame-toolbar{position:absolute;left:200px;right:0;z-index:100;bottom:60px;height:auto}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{left:0}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-menu .media-frame-menu,.media-frame.hide-menu .media-frame-menu-heading,.media-frame.hide-router .media-frame-router,.media-frame.hide-toolbar .media-frame-toolbar{display:none}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:2.27272727;margin:0}.media-attachments-filter-heading,.media-frame-menu-heading{position:absolute;left:20px;top:22px;margin:0;font-size:13px;line-height:1;z-index:151}.media-attachments-filter-heading{top:10px;left:16px}.mode-grid .media-attachments-filter-heading{top:0;left:-9999px}.mode-grid .media-frame-actions-heading{display:none}.wp-core-ui .button.media-frame-menu-toggle{display:none}.media-frame-title .suggested-dimensions{font-size:14px;float:right;margin-right:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-right:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;left:50%;margin-left:-150px;margin-right:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-right:2%;max-width:42%;max-width:calc(48% - 12px)}.media-frame select.attachment-filters:last-of-type{margin-right:0;width:auto;max-width:100%}.media-frame .search{margin:32px 0 0;padding:4px;font-size:13px;color:#3c434a;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;-webkit-appearance:none}.media-toolbar-primary .search{max-width:100%}.media-frame .media-search-input-label{position:absolute;left:0;top:10px;margin:0;line-height:1}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:left;padding:8px;margin:0;color:#3c434a;cursor:pointer;list-style:none;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:25%;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #4f94d4;outline:2px solid transparent;outline-offset:-6px}.wp-core-ui .selected.attachment{box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #c3c4c7}.wp-core-ui .attachment.details{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #2271b1}.wp-core-ui .attachment-preview{position:relative;box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#f0f0f1;cursor:pointer}.wp-core-ui .attachment-preview:before{content:"";display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;opacity:1;transition:opacity .1s}.wp-core-ui .attachment .portrait img{max-width:100%}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;left:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;left:0;width:100%;height:100%;transform:translate(50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{transform:translate(-50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{transform:translate(-50%,-70%)}.wp-core-ui .attachment .filename{position:absolute;left:0;right:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:600;background:rgba(255,255,255,.8);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;right:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.3);transition:none}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;border:0;position:absolute;z-index:10;top:0;right:0;outline:0;background:#f0f0f1;cursor:pointer;box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#2271b1;box-shadow:0 0 0 1px #fff,0 0 0 2px #2271b1}.wp-core-ui .attachment.selected .check:focus{outline:2px solid transparent}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:0 8px;font-size:12px;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{right:300px;height:72px;background:#fff}.attachments-browser.hide-sidebar .media-toolbar{right:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:10px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .uploader-inline,.attachments-browser.has-load-more .attachments-wrapper,.attachments-browser:not(.has-load-more) .attachments{position:absolute;top:72px;left:0;right:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.mode-grid .attachments-browser .media-toolbar-primary{display:flex;align-items:center}.mode-grid .attachments-browser .media-toolbar-mode-select .media-toolbar-primary{display:none}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;outline:0;padding:0;position:absolute;right:2px;text-align:center;top:2px;width:48px;z-index:1}.uploader-inline .close:before{font:normal 30px/1 dashicons!important;color:#50575e;display:inline-block;content:"\f335";font-weight:300;margin-top:1px}.uploader-inline .close:focus{outline:1px solid #4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8)}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{right:0;margin-right:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:1.38461538;font-size:13px;color:#646970}.attachments-browser .no-media{padding:2em 0 0 2em}.more-loaded .attachment:not(.found-media){background:#dcdcde}.load-more-wrapper{clear:both;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;padding:1em 0}.load-more-wrapper .load-more-count{min-width:100%;margin:0 0 1em;text-align:center}.load-more-wrapper .load-more{margin:0}.media-frame .load-more-wrapper .load-more+.spinner{float:none;margin:0 -30px 0 10px}.media-frame .load-more-wrapper .load-more.hidden+.spinner{margin:0}.load-more-wrapper::after{content:"";min-width:100%;order:1}.load-more-wrapper .load-more-jump{margin:0 0 0 12px}.attachment.new-media{outline:2px dotted #c3c4c7}.load-more-wrapper{clear:both;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;padding:1em 0}.load-more-wrapper .load-more-count{min-width:100%;margin:0 0 1em;text-align:center}.load-more-wrapper .load-more{margin:0}.media-frame .load-more-wrapper .load-more+.spinner{float:none;margin:0 -30px 0 10px}.media-frame .load-more-wrapper .load-more.hidden+.spinner{margin:0}.load-more-wrapper::after{content:"";min-width:100%;order:1}.load-more-wrapper .load-more-jump{margin:0 0 0 12px}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;border-radius:10px;background:#dcdcde;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#2271b1;border-radius:10px;transition:width .3s}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;left:15%;width:70%;margin:-5px 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h2{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#646970}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#3c434a}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{transition:none;text-decoration:none}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-left:4px solid #d63638;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.uploader-inline .upload-errors .upload-error{padding:12px 30px;background-color:#fcf0f1;box-shadow:none}.upload-errors .upload-error-filename{font-weight:600}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window,.wp-editor-wrap .uploader-editor{top:0;left:0;right:0;bottom:0;text-align:center;display:none}.uploader-window{position:fixed;z-index:250000;opacity:0;transition:opacity 250ms}.wp-editor-wrap .uploader-editor{position:absolute;z-index:99998;background:rgba(140,143,148,.9)}.uploader-window,.wp-editor-wrap .uploader-editor.droppable{background:rgba(10,75,120,.9)}.uploader-window-content,.wp-editor-wrap .uploader-editor-content{position:absolute;top:10px;left:10px;right:10px;bottom:10px;border:1px dashed #fff}.uploader-window .uploader-editor-title,.uploader-window h1,.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:600;color:#fff;margin:0;padding:0 10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{display:none}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;left:0;right:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h2{font-size:20px;line-height:1.4;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#3c434a;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;left:0;right:350px;height:60px;padding:0 0 0 16px;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-right:10px;vertical-align:top}.media-selection.editing,.media-selection.empty{display:none}.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:1.42857142;font-weight:600}.media-selection .button-link{float:left;padding:1px 8px;margin:1px 8px 1px -8px;line-height:1.4;border-right:1px solid #dcdcde;color:#2271b1;text-decoration:none}.media-selection .button-link:focus,.media-selection .button-link:hover{color:#135e96}.media-selection .button-link:last-child{border-right:0;margin-right:0}.selection-info .clear-selection{color:#d63638}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{color:#d63638}.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .attachments{display:inline-block;height:48px;margin:6px;padding:0;overflow:hidden;vertical-align:top}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;right:0;bottom:0;left:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{box-shadow:0 0 0 1px #fff,0 0 2px 3px #4f94d4;outline:2px solid transparent}.wp-core-ui .media-selection .selected.attachment{box-shadow:none}.wp-core-ui .media-selection .attachment.details{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.media-selection:after{content:"";display:block;position:absolute;top:0;right:0;bottom:0;width:25px;background-image:linear-gradient(to left,#fff,rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;float:right;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.media-frame.mode-grid .spinner{margin:0;float:none;vertical-align:middle}.media-modal .media-toolbar .spinner{float:none;vertical-align:bottom;margin:0 0 5px 5px}.media-frame .instructions+.spinner.is-active{vertical-align:middle}.media-frame .spinner.is-active{visibility:visible}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:right;text-transform:none;font-weight:400}.attachment-details .settings-save-status .spinner{float:none;margin-left:5px}.attachment-details .settings-save-status .saved{display:none}.attachment-details.save-waiting .settings-save-status .spinner{visibility:visible}.attachment-details.save-complete .settings-save-status .saved{display:inline-block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:1.5;color:#646970;border-bottom:1px solid #dcdcde;padding-bottom:11px}.attachment-info .wp-media-wrapper{margin-bottom:8px}.attachment-info .wp-media-wrapper.wp-audio{margin-top:13px}.attachment-info .filename{font-weight:600;color:#3c434a;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:left;max-width:120px;max-height:120px;margin-top:5px;margin-right:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:left;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#d63638}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:#d63638}.attachment-display-settings{width:100%;float:left;overflow:hidden}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:left;margin-right:8px}.collection-settings .setting .name,.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px 16px 0;position:absolute;top:0;right:282px;bottom:0;left:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-submit{margin-bottom:16px}.media-modal .imgedit-wrap .imgedit-settings{background:#f6f7f7;border-left:1px solid #dcdcde;padding:20px 16px 0;position:absolute;top:0;right:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-wrap .imgedit-save-target{margin:8px 0 24px}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #dcdcde;box-shadow:none;margin:0;margin-bottom:16px;padding:0;padding-bottom:16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top{margin:0}.media-modal .imgedit-group-top h2,.media-modal .imgedit-group-top h2 .button-link{display:inline-block;text-transform:uppercase;font-size:12px;color:#646970;margin:0;margin-top:3px}.media-modal .imgedit-group-top h2 .button-link,.media-modal .imgedit-group-top h2 a{text-decoration:none;color:#646970}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:active,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:hover{border:1px solid transparent;margin:0;padding:0;background:0 0;color:#2271b1;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:focus{color:#2271b1;border-color:#4f94d4;box-shadow:0 0 3px rgba(34,113,177,.8);outline:2px solid transparent}.wp-core-ui.media-modal .imgedit-group-top .dashicons-arrow-down.imgedit-help-toggle{margin-top:-3px}.wp-core-ui.media-modal .image-editor h3 .imgedit-help-toggle{margin-top:-2px}.media-modal .imgedit-help-toggled span.dashicons:before{content:"\f142"}.media-modal .imgedit-thumbnail-preview{margin:10px 8px 0 0}.imgedit-thumbnail-preview-caption{display:block}.media-modal .imgedit-wrap .notice,.media-modal .imgedit-wrap div.updated{margin:0;margin-bottom:16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;line-height:1.22222222;padding:12px 40px 12px 14px;width:100%;min-width:200px;box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url input::-ms-clear{display:none}.media-frame .embed-url .spinner{position:absolute;top:32px;right:26px}.media-frame .embed-loading .embed-url .spinner{visibility:visible}.embed-link-settings,.embed-media-settings{position:absolute;top:82px;left:0;right:0;bottom:0;padding:0 16px;overflow:auto}.media-embed .embed-link-settings .link-text{margin-top:0}.embed-link-settings::after,.embed-media-settings::after{content:"";display:flex;clear:both;height:24px}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:1px solid #4f94d4;box-shadow:0 0 2px 1px rgba(79,148,212,.8)}.image-details .media-modal{left:140px;right:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{left:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings::after{content:none}.image-details .embed-media-settings,.image-details .embed-media-settings div{box-sizing:border-box}.image-details .column-settings{background:#f6f7f7;border-right:1px solid #dcdcde;min-height:100%;width:55%;position:absolute;top:0;left:0}.image-details .column-settings h2{margin:20px;padding-top:20px;border-top:1px solid #dcdcde;color:#1d2327}.image-details .column-image{width:45%;position:absolute;left:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#646970;text-transform:uppercase;text-decoration:none}.image-details .advanced-toggle:active,.image-details .advanced-toggle:hover{color:#646970}.image-details .advanced-toggle:after{font:normal 20px/1 dashicons;speak:never;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140";display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:"\f142"}.image-details .custom-size .custom-size-setting,.image-details .custom-size label{display:block;float:left}.image-details .custom-size .custom-size-setting label{float:none}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:left;margin:26px 6px 0}.image-details .custom-size .description{margin-left:0}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:left}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting,.media-embed .setting-group{width:100%;margin:10px 0;float:left;display:block;clear:both}.media-embed .setting-group .setting:not(.checkbox-setting){margin:0}.media-embed .setting.has-description{margin-bottom:5px}.media-embed .description{clear:both;font-style:normal}.media-embed .content-track+.description{line-height:1.4;max-width:none!important}.media-embed .remove-track{margin-bottom:10px}.image-details .embed-media-settings .setting,.image-details .embed-media-settings .setting-group{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea,.media-embed fieldset{display:block;width:100%;max-width:400px}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .description,.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting-group{margin-left:27%;width:70%}.image-details .description{font-style:normal;margin-top:0}.image-details .embed-media-settings .link-target{margin-top:16px}.audio-details .checkbox-label,.image-details .checkbox-label,.video-details .checkbox-label{vertical-align:baseline}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting .name,.media-embed .setting span,.media-embed .setting-group .name{display:inline-block;font-size:13px;line-height:1.84615384;color:#646970}.media-embed .setting span{display:block;width:200px}.image-details .embed-media-settings .setting .name,.image-details .embed-media-settings .setting span{float:left;width:25%;text-align:right;margin:8px 1% 0;line-height:1.1}.image-details .embed-media-settings .setting .button-group,.media-frame .setting-group .button-group{width:auto}.media-embed-sidebar{position:absolute;top:0;left:440px}.advanced-section,.link-settings{margin-top:10px}.media-frame .setting .button-group{display:flex;margin:0!important;max-width:none!important}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=email],.rtl .media-frame input[type=number],.rtl .media-frame input[type=password],.rtl .media-frame input[type=search],.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-modal .media-frame-title{height:40px}.media-modal .media-frame-title h1{line-height:2.22222222;font-size:18px}.media-modal-close{width:42px;height:42px}.media-frame .media-frame-title{position:static;padding:0 44px;text-align:center}.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-toolbar{left:0}.media-frame:not(.hide-menu) .media-frame-router{top:80px}.media-frame:not(.hide-menu) .media-frame-content{top:114px}.media-frame.hide-router .media-frame-content{top:80px}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{display:none;width:auto;max-width:80%;overflow:auto;z-index:2000;top:75px;left:50%;transform:translateX(-50%);right:auto;bottom:auto;padding:5px 0;border:1px solid #c3c4c7}.media-frame:not(.hide-menu) .media-menu.visible{display:block}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame-menu-heading{clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;width:1px;word-wrap:normal!important}.wp-core-ui .media-frame:not(.hide-menu) .button.media-frame-menu-toggle{display:inline-flex;align-items:center;position:absolute;left:50%;transform:translateX(-50%);margin:-6px 0 0;padding:0 2px 0 12px;font-size:.875rem;font-weight:600;text-decoration:none;background:0 0;height:.1%;min-height:40px}.wp-core-ui .button.media-frame-menu-toggle:active,.wp-core-ui .button.media-frame-menu-toggle:hover{background:0 0;transform:none}.wp-core-ui .button.media-frame-menu-toggle:focus{outline:1px solid transparent}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .attachments-wrapper,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline,.attachments-browser.has-load-more .attachments-wrapper{right:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting .name,.attachment-details .setting input,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting .name,.media-sidebar .setting input,.media-sidebar .setting textarea{float:none;display:inline-block}.attachment-details .setting span,.media-sidebar .checkbox-label-inline,.media-sidebar .setting span{float:none}.media-sidebar .setting .select-label-inline{display:inline}.attachment-details .setting .name,.compat-item label span,.media-sidebar .checkbox-label-inline,.media-sidebar .setting .name{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 2px}.attachment-details .attachment-info .copy-to-clipboard-container,.media-sidebar .setting .copy-to-clipboard-container{margin-left:0;padding-top:0}.attachment-details .attachment-info .copy-attachment-url,.media-sidebar .setting .copy-attachment-url{margin:0 1px}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.media-frame .media-toolbar input[type=search]{line-height:2.25}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.wp-admin .media-frame select{min-height:40px;font-size:16px;line-height:1.625;padding:5px 24px 5px 8px}.image-details .column-image{width:30%;left:70%}.image-details .column-settings{width:70%}.image-details .media-modal{left:30px;right:30px}.image-details .embed-media-settings .setting,.image-details .embed-media-settings .setting-group{margin:20px}.image-details .embed-media-settings .setting .name,.image-details .embed-media-settings .setting span{float:none;text-align:left;width:100%;margin-bottom:4px;margin-left:0}.media-modal .legend-inline{position:static;transform:none;margin-left:0;margin-bottom:6px}.image-details .embed-media-settings .setting-group .setting{margin-bottom:0}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-left:0}.image-details .embed-media-settings .setting.has-description{margin-bottom:5px}.image-details .description{width:auto;margin:0 20px}.image-details .embed-media-settings .custom-size{margin-left:20px}.collection-settings .setting input[type=checkbox]{float:none;margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:right}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-frame input[type=email],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=text],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px;line-height:1.5}.media-frame .media-toolbar input[type=search]{line-height:2.3755}.media-modal .media-toolbar .spinner{margin-bottom:10px}}@media screen and (max-width:782px){.attachments-browser .media-toolbar{height:82px}.attachments-browser .attachments,.attachments-browser .uploader-inline{top:82px}.media-frame-toolbar .media-toolbar{bottom:-54px}.mode-grid .attachments-browser .media-toolbar-primary{display:block}.attachment-details .copy-to-clipboard-container .success,.media-sidebar .copy-to-clipboard-container .success{font-size:14px;line-height:2.71428571}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;left:0;right:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline,.media-frame-content .attachments-browser .attachments-wrapper{right:0}.attachments-browser .attachments-wrapper{padding-top:12px}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;left:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}.load-more-wrapper .load-more-jump{margin:12px 0 0}}@media only screen and (min-width:901px) and (max-height:400px){.media-frame:not(.hide-menu) .media-menu,.media-menu{top:0;padding-top:44px}.load-more-wrapper .load-more-jump{margin:12px 0 0}}@media only screen and (max-width:480px){.wp-core-ui.wp-customizer .media-button{margin-top:13px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons-2x.png);background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%} \ No newline at end of file + */.ui-draggable-handle,.ui-sortable-handle{touch-action:none}.media-modal{position:fixed;top:30px;left:30px;right:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;right:0;width:50px;height:50px;margin:0;padding:0;border:1px solid transparent;background:0 0;color:#666;z-index:1000;cursor:pointer;outline:0;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active,.media-modal-close:hover{color:#00a0d2}.media-modal-close:focus{color:#00a0d2;border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:"\f158";font:normal 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.media-modal-content .media-frame select.attachment-filters{margin-top:11px;margin-right:2%;width:42%;width:calc(48% - 12px)}.media-modal-content .media-toolbar-primary .media-button{float:right}.media-modal-content .attachments-browser .search{width:100%}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-toolbar{position:absolute;top:0;left:0;right:0;z-index:100;height:60px;padding:0 16px;border:0 solid #ddd;overflow:hidden}.media-frame-toolbar .media-toolbar{top:initial;bottom:-45px;height:auto;overflow:initial;border-top:1px solid #ddd}@media screen and (max-width:782px){.media-frame-toolbar .media-toolbar{bottom:-48px}}.media-toolbar-primary{float:right;height:100%}.media-toolbar-secondary{float:left;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:10px;float:left;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:10px;margin-top:15px}.media-sidebar{position:absolute;top:0;right:0;bottom:0;width:267px;padding:0 16px 24px;z-index:75;background:#f3f3f3;border-left:1px solid #ddd;overflow:auto;-webkit-overflow-scrolling:touch}.hide-toolbar .media-sidebar{bottom:0}.media-sidebar .sidebar-title{font-size:20px;margin:0;padding:12px 10px 10px;line-height:28px}.media-sidebar .sidebar-content{padding:0 10px;margin-bottom:130px}.media-sidebar .search{display:block;width:100%}.image-details h2,.image-details h3,.media-sidebar h2,.media-sidebar h3{position:relative;font-weight:600;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:left;width:100%;margin:1px 0}.attachment-details .setting label,.media-sidebar .setting label{display:block}.attachment-details .setting .link-to-custom,.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting span,.media-sidebar .setting span{min-width:30%;margin-right:4%;font-size:12px;text-align:right;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.attachment-details .setting select,.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=checkbox],.attachment-details .field input[type=radio],.attachment-details .setting input[type=checkbox],.attachment-details .setting input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .setting input[type=checkbox],.media-sidebar .setting input[type=radio]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{float:left;min-height:22px;padding-top:8px;line-height:16px;font-weight:400;color:#666}.compat-item label span{text-align:right}.attachment-details .setting .value,.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting .value,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{box-sizing:border-box;margin:1px;width:65%;float:right}.attachment-details .setting .value,.attachment-details .setting+.description,.media-sidebar .setting .value{margin:0 1px;text-align:left}.attachment-details .setting+.description{font-size:12px;font-style:normal;margin-bottom:.5em}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.attachment-details select,.media-sidebar select{margin-top:3px}.compat-item{float:left;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-right:4%;float:left;text-align:right}.compat-item .label span{display:block;width:100%}.compat-item .field{float:right;width:65%;margin:1px}.compat-item .field input[type=email],.compat-item .field input[type=number],.compat-item .field input[type=password],.compat-item .field input[type=search],.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;padding:10px 0;background:#f3f3f3;border-right-width:1px;border-right-style:solid;border-right-color:#ccc;-webkit-user-select:none;-moz-user-select:none;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;line-height:18px;font-size:14px;color:#0073aa;text-decoration:none}.media-menu>a:hover{color:#0073aa;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:600}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.media-router{position:relative;padding:0 6px;margin:0;clear:both;-webkit-user-select:none;-moz-user-select:none;user-select:none}.media-router a{transition:none}.media-router>a{position:relative;float:left;padding:8px 10px 9px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none}.media-router>a:last-child{border-right:0}.media-router>a:active{outline:0}.media-router .active,.media-router .active:hover{color:#32373c}.media-router .active,.media-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.media-router .active:after{display:none}.media-frame{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.media-frame-menu{position:absolute;top:0;left:0;bottom:0;width:200px;z-index:150}.media-frame-title{position:absolute;top:0;left:200px;right:0;height:50px;z-index:200}.media-frame-router{position:absolute;top:50px;left:200px;right:0;height:36px;z-index:200}.media-frame-content{position:absolute;top:84px;left:200px;right:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd}.media-frame-toolbar{position:absolute;left:200px;right:0;bottom:0;height:60px;z-index:100;bottom:60px;height:auto}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{left:0}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-menu .media-frame-menu,.media-frame.hide-router .media-frame-router,.media-frame.hide-toolbar .media-frame-toolbar{display:none}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #ddd;box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.media-frame-title .dashicons{display:none}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.media-frame-title .suggested-dimensions{font-size:14px;float:right;margin-right:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-right:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;left:50%;margin-left:-150px;margin-right:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-right:2%;max-width:42%;max-width:calc(48% - 12px)}.media-frame select.attachment-filters:last-of-type{margin-right:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#444;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;-webkit-appearance:none}.media-toolbar-primary .search{max-width:100%}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:left;padding:8px;margin:0;color:#444;cursor:pointer;list-style:none;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #0073aa}.wp-core-ui .attachment-preview{position:relative;box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#eee;cursor:pointer}.wp-core-ui .attachment-preview:before{content:"";display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;opacity:1;transition:opacity .1s}.wp-core-ui .attachment .portrait img{max-width:100%}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;left:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;left:0;width:100%;height:100%;transform:translate(50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{transform:translate(-50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{transform:translate(-50%,-70%)}.ie8 .wp-core-ui .attachment img.icon{top:20%;position:relative}.wp-core-ui .attachment .filename{position:absolute;left:0;right:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:600;background:rgba(255,255,255,.8);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;right:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.3);transition:none}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;border:0;position:absolute;z-index:10;top:0;right:0;outline:0;background:#eee;cursor:pointer;box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#0073aa;box-shadow:0 0 0 1px #fff,0 0 0 2px #0073aa}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:8px;font-size:12px;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{right:300px;height:50px}.attachments-browser.hide-sidebar .media-toolbar{right:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:11px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .attachments,.attachments-browser .uploader-inline{position:absolute;top:50px;left:0;right:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;outline:0;padding:0;position:absolute;right:2px;text-align:center;top:2px;width:48px;z-index:1}.uploader-inline .close:before{font:normal 30px/1 dashicons!important;color:#555d66;display:inline-block;content:"\f335";font-weight:300;margin-top:1px}.uploader-inline .close:focus{outline:1px solid #5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{right:0;margin-right:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:18px;font-size:13px;color:#666;margin-right:.5em}.attachments-browser .no-media{padding:2em 0 0 2em}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;border-radius:10px;background:#ddd;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#0073aa;border-radius:10px;transition:width .3s}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;left:15%;width:70%;margin:-5px 0 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h2,.uploader-inline .media-uploader-status h3{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#666}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#444}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{text-decoration:none}.media-sidebar .media-uploader-status .upload-dismiss-errors{position:absolute;top:-10px;right:-10px;padding:10px;transition:none}.media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:normal 16px/1 dashicons;color:#72777c}.media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-left:4px solid #dc3232;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.uploader-inline .upload-errors .upload-error{background-color:#fbeaea;box-shadow:none}.upload-errors .upload-error-filename{font-weight:600}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,86,132,.9);z-index:250000;display:none;text-align:center;opacity:0;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;left:10px;right:10px;bottom:10px;border:1px dashed #fff}.uploader-window h1,.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);font-size:40px;color:#fff;padding:0}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;left:0;right:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h2,.uploader-inline h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#444;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{font-size:12px;margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;left:0;right:350px;height:60px;padding:0 0 0 16px;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-right:10px;vertical-align:top}.media-selection.editing,.media-selection.empty{display:none}.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:600}.media-selection .button-link{float:left;padding:1px 8px;margin:1px 8px 1px -8px;line-height:16px;border-right:1px solid #ddd;color:#0073aa;text-decoration:none}.media-selection .button-link:focus,.media-selection .button-link:hover{color:#00a0d2}.media-selection .button-link:last-child{border-right:0;margin-right:0}.selection-info .clear-selection{color:#bc0b0b}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{color:#dc3232}.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .attachments{display:inline-block;height:48px;margin:6px;padding:0;overflow:hidden;vertical-align:top}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;right:0;bottom:0;left:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{box-shadow:none}.wp-core-ui .media-selection .attachment.details{box-shadow:0 0 0 1px #fff,0 0 0 3px #0073aa}.media-selection:after{content:"";display:block;position:absolute;top:0;right:0;bottom:0;width:25px;background-image:linear-gradient(to left,#fff,rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;background-size:20px 20px;float:right;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.media-frame .spinner.is-active{visibility:visible}.media-toolbar .spinner{margin-top:14px}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:right;text-transform:none;z-index:10}.attachment-details .settings-save-status .spinner{margin-left:5px}.attachment-details .settings-save-status .saved{float:right;display:none}.attachment-details.save-waiting .settings-save-status .spinner{visibility:visible}.attachment-details.save-complete .settings-save-status .saved{display:block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:18px;color:#666;border-bottom:1px solid #ddd;padding-bottom:11px}.attachment-info .filename{font-weight:600;color:#444;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:left;max-width:120px;max-height:120px;margin-top:5px;margin-right:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:left;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#bc0b0b}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:#dc3232}.attachment-display-settings{width:100%;float:left;overflow:hidden}.attachment-display-settings h4{margin:1.4em 0 .4em}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:left;margin-right:8px}.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px;position:absolute;top:0;right:282px;bottom:0;left:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-settings{background:#f3f3f3;border-left:1px solid #ddd;padding:20px 16px 16px;position:absolute;top:0;right:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #ddd;box-shadow:none;margin:0;margin-bottom:16px;padding:0;padding-bottom:16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top{margin:0}.media-modal .imgedit-group-top h2,.media-modal .imgedit-group-top h2 .button-link,.media-modal .imgedit-group-top h3{display:inline-block;text-transform:uppercase;font-size:12px;color:#666;margin:0;margin-top:3px}.media-modal .imgedit-group-top h2 .button-link,.media-modal .imgedit-group-top h2 a,.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:active,.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:hover{border:1px solid transparent;margin:0;padding:0;background:0 0;color:#0074a2;font-size:20px;line-height:1;cursor:pointer;box-sizing:content-box;box-shadow:none}.wp-core-ui.media-modal .image-editor .imgedit-help-toggle:focus{color:#0074a2;border-color:#5b9dd9;outline:0;box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-core-ui.media-modal .imgedit-group-top .dashicons-arrow-down.imgedit-help-toggle{margin-top:-3px}.wp-core-ui.media-modal .image-editor h3 .imgedit-help-toggle{margin-top:-2px}.media-modal .imgedit-help-toggled span.dashicons:before{content:"\f142"}.media-modal .imgedit-thumbnail-preview{margin:10px 8px 0 0}.imgedit-thumbnail-preview-caption{display:block}.media-modal .imgedit-wrap div.updated{margin:0;margin-bottom:16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;padding:12px 14px;width:100%;min-width:200px;box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;right:26px}.media-frame .embed-loading .embed-url .spinner{visibility:visible}.embed-link-settings,.embed-media-settings{position:absolute;top:70px;left:0;right:0;bottom:0;padding:16px 16px 32px;overflow:auto}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:1px solid #5b9dd9;box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.image-details .media-modal{left:140px;right:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{left:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings,.image-details .embed-media-settings div{box-sizing:border-box}.image-details .column-settings{background:#f3f3f3;border-right:1px solid #ddd;min-height:100%;width:55%;position:absolute;top:0;left:0}.image-details .column-settings h2,.image-details .column-settings h3{margin:20px;padding-top:20px;border-top:1px solid #ddd;color:#23282d}.image-details .column-image{width:45%;position:absolute;left:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#666;text-transform:uppercase;text-decoration:none}.image-details .advanced-toggle:active,.image-details .advanced-toggle:hover{color:#666}.image-details .advanced-toggle:after{font:normal 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140";display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:"\f142"}.image-details .embed-media-settings .size{margin-bottom:4px}.image-details .custom-size span{display:block}.image-details .custom-size label{display:block;float:left}.image-details .custom-size span small{color:#555d66;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:left;margin:26px 6px 0 6px}.image-details .custom-size:after{content:"";display:table;clear:both}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:left}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting{width:100%;margin:10px 0;float:left;display:block;clear:both}.media-embed .setting.has-description{margin-bottom:5px}.media-embed .description{clear:both;font-style:normal}.image-details .embed-media-settings .setting{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea{display:block;width:100%;max-width:400px;margin:1px 0}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .description,.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom{margin-left:27%;width:70%}.image-details .description{font-style:normal;margin-top:0}.image-details .embed-media-settings .link-target{margin-top:24px}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting span{display:block;width:200px;font-size:13px;line-height:24px;color:#666}.image-details .embed-media-settings .setting span{float:left;width:25%;text-align:right;margin:8px 1% 0 1%;line-height:1.1}.media-embed .setting .button-group{margin:2px 0}.media-embed-sidebar{position:absolute;top:0;left:440px}.advanced-section,.link-settings{margin-top:10px}.wp-editor-wrap .uploader-editor{background:rgba(150,150,150,.9);position:absolute;top:0;left:0;width:100%;height:100%;z-index:99998;display:none;text-align:center}.wp-editor-wrap .uploader-editor-content{border:1px dashed #fff;position:absolute;top:10px;left:10px;right:10px;bottom:10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:600;color:#fff;padding:0;margin:0;display:none}.wp-editor-wrap .uploader-editor.droppable{background:rgba(0,86,132,.9)}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.ie7 .media-frame .attachments-browser{position:static}.ie7 .media-frame .embed-url input{margin-top:4px;width:90%}.ie7 .compat-item{width:99%}.ie7 .attachment-display-settings{width:auto}.ie7 .attachment-preview,.ie7 .attachment-preview .thumbnail{width:120px;height:120px}.ie7 .media-frame .attachment .describe{width:102px}.ie7 .media-sidebar .setting select{max-width:55%}.ie7 .media-sidebar .setting input[type=email],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=url],.ie7 .media-sidebar .setting textarea{width:55%}.ie7 .media-sidebar .setting .link-to-custom{float:left}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=email],.rtl .media-frame input[type=number],.rtl .media-frame input[type=password],.rtl .media-frame input[type=search],.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-title,.media-frame:not(.hide-menu) .media-frame-toolbar{left:0}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;left:-300px;right:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.media-frame:not(.hide-menu) .media-menu.visible{left:0}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu>a.active{display:none}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame:not(.hide-menu) .media-frame-title{left:0}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{color:#0073aa;line-height:3;font-size:18px;float:left;cursor:pointer}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{right:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting input,.attachment-details .setting span,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting input,.media-sidebar .setting span,.media-sidebar .setting textarea{float:none}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 0}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=email],.attachment-details .setting input[type=number],.attachment-details .setting input[type=password],.attachment-details .setting input[type=search],.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.attachment-details .setting+.description,.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.image-details .column-image{width:30%;left:70%}.image-details .column-settings{width:70%}.image-details .media-modal{left:30px;right:30px}.image-details .embed-media-settings .setting{margin:20px}.image-details .embed-media-settings .setting span{float:none;text-align:left;width:100%;margin-bottom:4px}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-left:0}.image-details .embed-media-settings .setting.has-description{margin-bottom:5px}.image-details .description{width:auto;margin:0 20px}.image-details .embed-media-settings .custom-size{margin-left:20px}.collection-settings .setting input[type=checkbox]{margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:right}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-modal .attachments-browser .media-toolbar .spinner{margin:14px 2px 0}.media-frame input[type=email],.media-frame input[type=number],.media-frame input[type=password],.media-frame input[type=search],.media-frame input[type=text],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;left:0;right:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{right:0}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;left:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}}@media screen and (max-height:400px){.media-menu{padding:0}.media-frame-router{top:44px}.media-frame-content{top:78px}.attachments-browser .attachments{top:40px}.embed-link-settings{overflow:visible}}@media only screen and (max-width:480px){.media-modal-close{top:-5px}.media-modal .media-frame-title{height:40px}.wp-core-ui.wp-customizer .media-button{margin-top:13px}.media-frame:not(.hide-menu) .media-frame-title h1,.media-modal .media-frame-title h1{font-size:18px;line-height:40px}.media-frame:not(.hide-menu) .media-frame-title .dashicons{line-height:40px}.media-frame-router,.media-frame:not(.hide-menu) .media-menu{top:40px}.media-frame-content{top:74px}.media-frame.hide-router .media-frame-content{top:40px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons-2x.png);background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%} \ No newline at end of file diff --git a/wp-includes/css/wp-auth-check-rtl.css b/wp-includes/css/wp-auth-check-rtl.css index ea49d6a..2d0da0a 100644 --- a/wp-includes/css/wp-auth-check-rtl.css +++ b/wp-includes/css/wp-auth-check-rtl.css @@ -28,12 +28,12 @@ width: 380px; margin: 0 -190px 0 0; padding: 30px 0 0; - background-color: #f0f0f1; + background-color: #f1f1f1; z-index: 1000011; /* needs to appear above #wp-auth-check-bg */ - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); } -@media screen and (max-width: 380px) { +@media screen and ( max-width: 380px ) { #wp-auth-check-wrap #wp-auth-check { right: 0; width: 100%; @@ -88,7 +88,7 @@ left: 5px; height: 22px; width: 22px; - color: #787c82; + color: #72777c; text-decoration: none; text-align: center; } @@ -96,14 +96,14 @@ #wp-auth-check-wrap .wp-auth-check-close:before { content: "\f158"; font: normal 20px/22px dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased !important; -moz-osx-font-smoothing: grayscale; } #wp-auth-check-wrap .wp-auth-check-close:hover, #wp-auth-check-wrap .wp-auth-check-close:focus { - color: #2271b1; + color: #0073aa; } #wp-auth-check-wrap .wp-auth-fallback-expired { @@ -112,7 +112,7 @@ #wp-auth-check-wrap .wp-auth-fallback { font-size: 14px; - line-height: 1.5; + line-height: 21px; padding: 0 25px; display: none; } diff --git a/wp-includes/css/wp-auth-check-rtl.min.css b/wp-includes/css/wp-auth-check-rtl.min.css index e986541..00757cf 100644 --- a/wp-includes/css/wp-auth-check-rtl.min.css +++ b/wp-includes/css/wp-auth-check-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;right:0;left:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;right:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 -190px 0 0;padding:30px 0 0;background-color:#f0f0f1;z-index:1000011;box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{right:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{height:100%;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-form.loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;margin:-10px -10px 0 0;background:url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wp-auth-check-form.loading:before{background-image:url(../images/spinner-2x.gif)}}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:5px;left:5px;height:22px;width:22px;color:#787c82;text-decoration:none;text-align:center}#wp-auth-check-wrap .wp-auth-check-close:before{content:"\f158";font:normal 20px/22px dashicons;speak:never;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:focus,#wp-auth-check-wrap .wp-auth-check-close:hover{color:#2271b1}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:1.5;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block} \ No newline at end of file +#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;right:0;left:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;right:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 -190px 0 0;padding:30px 0 0;background-color:#f1f1f1;z-index:1000011;box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{right:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{height:100%;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-form.loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;margin:-10px -10px 0 0;background:url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wp-auth-check-form.loading:before{background-image:url(../images/spinner-2x.gif)}}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:5px;left:5px;height:22px;width:22px;color:#72777c;text-decoration:none;text-align:center}#wp-auth-check-wrap .wp-auth-check-close:before{content:"\f158";font:normal 20px/22px dashicons;speak:none;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:focus,#wp-auth-check-wrap .wp-auth-check-close:hover{color:#0073aa}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:21px;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block} \ No newline at end of file diff --git a/wp-includes/css/wp-auth-check.css b/wp-includes/css/wp-auth-check.css index 8994f49..8214176 100644 --- a/wp-includes/css/wp-auth-check.css +++ b/wp-includes/css/wp-auth-check.css @@ -28,12 +28,12 @@ width: 380px; margin: 0 0 0 -190px; padding: 30px 0 0; - background-color: #f0f0f1; + background-color: #f1f1f1; z-index: 1000011; /* needs to appear above #wp-auth-check-bg */ - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 6px rgba( 0, 0, 0, 0.3 ); } -@media screen and (max-width: 380px) { +@media screen and ( max-width: 380px ) { #wp-auth-check-wrap #wp-auth-check { left: 0; width: 100%; @@ -88,7 +88,7 @@ right: 5px; height: 22px; width: 22px; - color: #787c82; + color: #72777c; text-decoration: none; text-align: center; } @@ -96,14 +96,14 @@ #wp-auth-check-wrap .wp-auth-check-close:before { content: "\f158"; font: normal 20px/22px dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased !important; -moz-osx-font-smoothing: grayscale; } #wp-auth-check-wrap .wp-auth-check-close:hover, #wp-auth-check-wrap .wp-auth-check-close:focus { - color: #2271b1; + color: #0073aa; } #wp-auth-check-wrap .wp-auth-fallback-expired { @@ -112,7 +112,7 @@ #wp-auth-check-wrap .wp-auth-fallback { font-size: 14px; - line-height: 1.5; + line-height: 21px; padding: 0 25px; display: none; } diff --git a/wp-includes/css/wp-auth-check.min.css b/wp-includes/css/wp-auth-check.min.css index 7641b83..459211f 100644 --- a/wp-includes/css/wp-auth-check.min.css +++ b/wp-includes/css/wp-auth-check.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;left:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 0 0 -190px;padding:30px 0 0;background-color:#f0f0f1;z-index:1000011;box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{left:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{height:100%;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-form.loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;background:url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wp-auth-check-form.loading:before{background-image:url(../images/spinner-2x.gif)}}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:5px;right:5px;height:22px;width:22px;color:#787c82;text-decoration:none;text-align:center}#wp-auth-check-wrap .wp-auth-check-close:before{content:"\f158";font:normal 20px/22px dashicons;speak:never;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:focus,#wp-auth-check-wrap .wp-auth-check-close:hover{color:#2271b1}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:1.5;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block} \ No newline at end of file +#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;left:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 0 0 -190px;padding:30px 0 0;background-color:#f1f1f1;z-index:1000011;box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{left:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{height:100%;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-form.loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;margin:-10px 0 0 -10px;background:url(../images/spinner.gif) no-repeat center;background-size:20px 20px;transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#wp-auth-check-form.loading:before{background-image:url(../images/spinner-2x.gif)}}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:5px;right:5px;height:22px;width:22px;color:#72777c;text-decoration:none;text-align:center}#wp-auth-check-wrap .wp-auth-check-close:before{content:"\f158";font:normal 20px/22px dashicons;speak:none;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:focus,#wp-auth-check-wrap .wp-auth-check-close:hover{color:#0073aa}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:21px;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block} \ No newline at end of file diff --git a/wp-includes/css/wp-embed-template.css b/wp-includes/css/wp-embed-template.css index af844cf..6ef8fb3 100644 --- a/wp-includes/css/wp-embed-template.css +++ b/wp-includes/css/wp-embed-template.css @@ -11,6 +11,7 @@ body { .screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); + -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; @@ -66,17 +67,17 @@ body { font-weight: 400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; line-height: 1.5; - color: #8c8f94; + color: #82878c; background: #fff; - border: 1px solid #dcdcde; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); /* Clearfix */ overflow: auto; zoom: 1; } .wp-embed a { - color: #8c8f94; + color: #82878c; text-decoration: none; } @@ -112,11 +113,11 @@ p.wp-embed-heading { } .wp-embed-heading a { - color: #2c3338; + color: #32373c; } .wp-embed .wp-embed-more { - color: #c3c4c7; + color: #b4b9be; } .wp-embed-footer { @@ -137,7 +138,7 @@ p.wp-embed-heading { .wp-embed-site-title { font-weight: 600; - line-height: 1.78571428; + line-height: 25px; } .wp-embed-site-title a { @@ -164,11 +165,11 @@ p.wp-embed-heading { .wp-embed-meta a:hover { text-decoration: none; - color: #2271b1; + color: #0073aa; } .wp-embed-comments a { - line-height: 1.78571428; + line-height: 25px; display: inline-block; } @@ -182,8 +183,8 @@ p.wp-embed-heading { left: 0; right: 0; bottom: 0; - background-color: #1d2327; - background-color: rgba(0, 0, 0, 0.9); + background-color: #222; + background-color: rgba(10, 10, 10, 0.9); color: #fff; opacity: 1; transition: opacity .25s ease-in-out; @@ -215,7 +216,7 @@ p.wp-embed-heading { .wp-embed-share-dialog-open:focus .dashicons, .wp-embed-share-dialog-close:focus .dashicons { - box-shadow: 0 0 0 1px #4f94d4, 0 0 2px 1px rgba(79, 148, 212, 0.8); + box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8); border-radius: 100%; } @@ -264,7 +265,7 @@ p.wp-embed-heading { background: transparent; font-size: 16px; line-height: 1.3; - color: #a7aaad; + color: #aaa; cursor: pointer; transition: color .1s ease-in; } @@ -280,7 +281,7 @@ p.wp-embed-heading { .wp-embed-share-tab-button + .wp-embed-share-tab-button { margin: 0 0 0 10px; padding: 0 0 0 11px; - border-left: 1px solid #a7aaad; + border-left: 1px solid #aaa; } .wp-embed-share-tab[aria-hidden="true"] { @@ -292,7 +293,7 @@ p.wp-embed-share-description { font-size: 14px; line-height: 1; font-style: italic; - color: #a7aaad; + color: #aaa; } .wp-embed-share-input { @@ -300,7 +301,7 @@ p.wp-embed-share-description { width: 100%; border: none; height: 28px; - margin: 0 0 10px; + margin: 0 0 10px 0; padding: 0 5px; font-size: 14px; font-weight: 400; @@ -354,5 +355,5 @@ html[dir="rtl"] .wp-embed-share-tab-button + .wp-embed-share-tab-button { margin: 0 10px 0 0; padding: 0 11px 0 0; border-left: none; - border-right: 1px solid #a7aaad; + border-right: 1px solid #aaa; } diff --git a/wp-includes/css/wp-embed-template.min.css b/wp-includes/css/wp-embed-template.min.css index 73cb2ca..cff20ec 100644 --- a/wp-includes/css/wp-embed-template.min.css +++ b/wp-includes/css/wp-embed-template.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -body,html{padding:0;margin:0}body{font-family:sans-serif}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.dashicons{display:inline-block;width:20px;height:20px;background-color:transparent;background-repeat:no-repeat;background-size:20px;background-position:center;transition:background .1s ease-in;position:relative;top:5px}.dashicons-no{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M15.55%2013.7l-2.19%202.06-3.42-3.65-3.64%203.43-2.06-2.18%203.64-3.43-3.42-3.64%202.18-2.06%203.43%203.64%203.64-3.42%202.05%202.18-3.64%203.43z%27%20fill%3D%27%23fff%27%2F%3E%3C%2Fsvg%3E")}.dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E")}.wp-embed-comments a:hover .dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E");display:none}.js .dashicons-share{display:inline-block}.wp-embed-share-dialog-open:hover .dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.wp-embed{padding:25px;font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.5;color:#8c8f94;background:#fff;border:1px solid #dcdcde;box-shadow:0 1px 1px rgba(0,0,0,.05);overflow:auto;zoom:1}.wp-embed a{color:#8c8f94;text-decoration:none}.wp-embed a:hover{text-decoration:underline}.wp-embed-featured-image{margin-bottom:20px}.wp-embed-featured-image img{width:100%;height:auto;border:none}.wp-embed-featured-image.square{float:left;max-width:160px;margin-right:20px}.wp-embed p{margin:0}p.wp-embed-heading{margin:0 0 15px;font-weight:600;font-size:22px;line-height:1.3}.wp-embed-heading a{color:#2c3338}.wp-embed .wp-embed-more{color:#c3c4c7}.wp-embed-footer{display:table;width:100%;margin-top:30px}.wp-embed-site-icon{position:absolute;top:50%;left:0;transform:translateY(-50%);height:25px;width:25px;border:0}.wp-embed-site-title{font-weight:600;line-height:1.78571428}.wp-embed-site-title a{position:relative;display:inline-block;padding-left:35px}.wp-embed-meta,.wp-embed-site-title{display:table-cell}.wp-embed-meta{text-align:right;white-space:nowrap;vertical-align:middle}.wp-embed-comments,.wp-embed-share{display:inline}.wp-embed-meta a:hover{text-decoration:none;color:#2271b1}.wp-embed-comments a{line-height:1.78571428;display:inline-block}.wp-embed-comments+.wp-embed-share{margin-left:10px}.wp-embed-share-dialog{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#1d2327;background-color:rgba(0,0,0,.9);color:#fff;opacity:1;transition:opacity .25s ease-in-out}.wp-embed-share-dialog.hidden{opacity:0;visibility:hidden}.wp-embed-share-dialog-close,.wp-embed-share-dialog-open{margin:-8px 0 0;padding:0;background:0 0;border:none;cursor:pointer;outline:0}.wp-embed-share-dialog-close .dashicons,.wp-embed-share-dialog-open .dashicons{padding:4px}.wp-embed-share-dialog-open .dashicons{top:8px}.wp-embed-share-dialog-close:focus .dashicons,.wp-embed-share-dialog-open:focus .dashicons{box-shadow:0 0 0 1px #4f94d4,0 0 2px 1px rgba(79,148,212,.8);border-radius:100%}.wp-embed-share-dialog-close{position:absolute;top:20px;right:20px;font-size:22px}.wp-embed-share-dialog-close:hover{text-decoration:none}.wp-embed-share-dialog-close .dashicons{height:24px;width:24px;background-size:24px}.wp-embed-share-dialog-content{height:100%;transform-style:preserve-3d;overflow:hidden}.wp-embed-share-dialog-text{margin-top:25px;padding:20px}.wp-embed-share-tabs{margin:0 0 20px;padding:0;list-style:none}.wp-embed-share-tab-button{display:inline-block}.wp-embed-share-tab-button button{margin:0;padding:0;border:none;background:0 0;font-size:16px;line-height:1.3;color:#a7aaad;cursor:pointer;transition:color .1s ease-in}.wp-embed-share-tab-button [aria-selected=true]{color:#fff}.wp-embed-share-tab-button button:hover{color:#fff}.wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 0 0 10px;padding:0 0 0 11px;border-left:1px solid #a7aaad}.wp-embed-share-tab[aria-hidden=true]{display:none}p.wp-embed-share-description{margin:0;font-size:14px;line-height:1;font-style:italic;color:#a7aaad}.wp-embed-share-input{box-sizing:border-box;width:100%;border:none;height:28px;margin:0 0 10px;padding:0 5px;font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.5;resize:none;cursor:text}textarea.wp-embed-share-input{height:72px}html[dir=rtl] .wp-embed-featured-image.square{float:right;margin-right:0;margin-left:20px}html[dir=rtl] .wp-embed-site-title a{padding-left:0;padding-right:35px}html[dir=rtl] .wp-embed-site-icon{margin-right:0;margin-left:10px;left:auto;right:0}html[dir=rtl] .wp-embed-meta{text-align:left}html[dir=rtl] .wp-embed-share{margin-left:0;margin-right:10px}html[dir=rtl] .wp-embed-share-dialog-close{right:auto;left:20px}html[dir=rtl] .wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 10px 0 0;padding:0 11px 0 0;border-left:none;border-right:1px solid #a7aaad} \ No newline at end of file +body,html{padding:0;margin:0}body{font-family:sans-serif}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.dashicons{display:inline-block;width:20px;height:20px;background-color:transparent;background-repeat:no-repeat;background-size:20px;background-position:center;transition:background .1s ease-in;position:relative;top:5px}.dashicons-no{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M15.55%2013.7l-2.19%202.06-3.42-3.65-3.64%203.43-2.06-2.18%203.64-3.43-3.42-3.64%202.18-2.06%203.43%203.64%203.64-3.42%202.05%202.18-3.64%203.43z%27%20fill%3D%27%23fff%27%2F%3E%3C%2Fsvg%3E")}.dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E")}.wp-embed-comments a:hover .dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E");display:none}.js .dashicons-share{display:inline-block}.wp-embed-share-dialog-open:hover .dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.wp-embed{padding:25px;font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.5;color:#82878c;background:#fff;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.05);overflow:auto;zoom:1}.wp-embed a{color:#82878c;text-decoration:none}.wp-embed a:hover{text-decoration:underline}.wp-embed-featured-image{margin-bottom:20px}.wp-embed-featured-image img{width:100%;height:auto;border:none}.wp-embed-featured-image.square{float:left;max-width:160px;margin-right:20px}.wp-embed p{margin:0}p.wp-embed-heading{margin:0 0 15px;font-weight:600;font-size:22px;line-height:1.3}.wp-embed-heading a{color:#32373c}.wp-embed .wp-embed-more{color:#b4b9be}.wp-embed-footer{display:table;width:100%;margin-top:30px}.wp-embed-site-icon{position:absolute;top:50%;left:0;transform:translateY(-50%);height:25px;width:25px;border:0}.wp-embed-site-title{font-weight:600;line-height:25px}.wp-embed-site-title a{position:relative;display:inline-block;padding-left:35px}.wp-embed-meta,.wp-embed-site-title{display:table-cell}.wp-embed-meta{text-align:right;white-space:nowrap;vertical-align:middle}.wp-embed-comments,.wp-embed-share{display:inline}.wp-embed-meta a:hover{text-decoration:none;color:#0073aa}.wp-embed-comments a{line-height:25px;display:inline-block}.wp-embed-comments+.wp-embed-share{margin-left:10px}.wp-embed-share-dialog{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#222;background-color:rgba(10,10,10,.9);color:#fff;opacity:1;transition:opacity .25s ease-in-out}.wp-embed-share-dialog.hidden{opacity:0;visibility:hidden}.wp-embed-share-dialog-close,.wp-embed-share-dialog-open{margin:-8px 0 0;padding:0;background:0 0;border:none;cursor:pointer;outline:0}.wp-embed-share-dialog-close .dashicons,.wp-embed-share-dialog-open .dashicons{padding:4px}.wp-embed-share-dialog-open .dashicons{top:8px}.wp-embed-share-dialog-close:focus .dashicons,.wp-embed-share-dialog-open:focus .dashicons{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);border-radius:100%}.wp-embed-share-dialog-close{position:absolute;top:20px;right:20px;font-size:22px}.wp-embed-share-dialog-close:hover{text-decoration:none}.wp-embed-share-dialog-close .dashicons{height:24px;width:24px;background-size:24px}.wp-embed-share-dialog-content{height:100%;transform-style:preserve-3d;overflow:hidden}.wp-embed-share-dialog-text{margin-top:25px;padding:20px}.wp-embed-share-tabs{margin:0 0 20px;padding:0;list-style:none}.wp-embed-share-tab-button{display:inline-block}.wp-embed-share-tab-button button{margin:0;padding:0;border:none;background:0 0;font-size:16px;line-height:1.3;color:#aaa;cursor:pointer;transition:color .1s ease-in}.wp-embed-share-tab-button [aria-selected=true]{color:#fff}.wp-embed-share-tab-button button:hover{color:#fff}.wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 0 0 10px;padding:0 0 0 11px;border-left:1px solid #aaa}.wp-embed-share-tab[aria-hidden=true]{display:none}p.wp-embed-share-description{margin:0;font-size:14px;line-height:1;font-style:italic;color:#aaa}.wp-embed-share-input{box-sizing:border-box;width:100%;border:none;height:28px;margin:0 0 10px 0;padding:0 5px;font-size:14px;font-weight:400;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;line-height:1.5;resize:none;cursor:text}textarea.wp-embed-share-input{height:72px}html[dir=rtl] .wp-embed-featured-image.square{float:right;margin-right:0;margin-left:20px}html[dir=rtl] .wp-embed-site-title a{padding-left:0;padding-right:35px}html[dir=rtl] .wp-embed-site-icon{margin-right:0;margin-left:10px;left:auto;right:0}html[dir=rtl] .wp-embed-meta{text-align:left}html[dir=rtl] .wp-embed-share{margin-left:0;margin-right:10px}html[dir=rtl] .wp-embed-share-dialog-close{right:auto;left:20px}html[dir=rtl] .wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 10px 0 0;padding:0 11px 0 0;border-left:none;border-right:1px solid #aaa} \ No newline at end of file diff --git a/wp-includes/css/wp-pointer-rtl.css b/wp-includes/css/wp-pointer-rtl.css index d8218b2..15c8a19 100644 --- a/wp-includes/css/wp-pointer-rtl.css +++ b/wp-includes/css/wp-pointer-rtl.css @@ -3,32 +3,32 @@ position: relative; font-size: 13px; background: #fff; - border: 1px solid #c3c4c7; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08); + border: 1px solid #ddd; + box-shadow: 0 3px 6px rgba(0,0,0,0.075); } .wp-pointer-content h3 { position: relative; margin: -1px -1px 5px; padding: 15px 60px 14px 18px; - border: 1px solid #2271b1; + border: 1px solid #3592b6; border-bottom: none; - line-height: 1.4; + line-height: 1.4em; font-size: 14px; color: #fff; - background: #2271b1; + background: #00a0d2; } .wp-pointer-content h3:before { background: #fff; border-radius: 50%; - color: #2271b1; + color: #00a0d2; content: "\f227"; font: normal 20px/1.6 dashicons; position: absolute; top: 8px; right: 15px; - speak: never; + speak: none; text-align: center; width: 32px; height: 32px; @@ -64,11 +64,11 @@ .wp-pointer-buttons a.close:before { background: none; - color: #787c82; + color: #72777c; content: "\f153"; display: block !important; font: normal 16px/1 dashicons; - speak: never; + speak: none; margin: 1px 0; text-align: center; -webkit-font-smoothing: antialiased !important; @@ -80,7 +80,7 @@ } .wp-pointer-buttons a.close:hover:before { - color: #d63638; + color: #c00; } /* The arrow base class must take up no space, even with transparent borders. */ @@ -140,8 +140,8 @@ .wp-pointer-top .wp-pointer-arrow, .wp-pointer-undefined .wp-pointer-arrow { top: 0; - border-width: 0 13px 13px; - border-bottom-color: #2271b1; + border-width: 0 13px 13px 13px; + border-bottom-color: #3592b6; } .wp-pointer-top .wp-pointer-arrow-inner, @@ -150,15 +150,15 @@ margin-right: -13px; margin-top: -13px; border: 13px solid transparent; - border-bottom-color: #2271b1; + border-bottom-color: #00a0d2; display: block; content: " "; } .wp-pointer-bottom .wp-pointer-arrow { bottom: 0; - border-width: 13px 13px 0; - border-top-color: #c3c4c7; + border-width: 13px 13px 0 13px; + border-top-color: #ccc; } .wp-pointer-bottom .wp-pointer-arrow-inner { @@ -175,7 +175,7 @@ .wp-pointer-left .wp-pointer-arrow { left: 0; border-width: 13px 13px 13px 0; - border-right-color: #c3c4c7; + border-right-color: #ccc; } /* rtl:ignore */ @@ -193,7 +193,7 @@ .wp-pointer-right .wp-pointer-arrow { right: 0; border-width: 13px 0 13px 13px; - border-left-color: #c3c4c7; + border-left-color: #ccc; } /* rtl:ignore */ @@ -217,7 +217,7 @@ } /* Disable pointers at responsive sizes */ -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-pointer { display: none; } diff --git a/wp-includes/css/wp-pointer-rtl.min.css b/wp-includes/css/wp-pointer-rtl.min.css index a8564c4..a6a6647 100644 --- a/wp-includes/css/wp-pointer-rtl.min.css +++ b/wp-includes/css/wp-pointer-rtl.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #c3c4c7;box-shadow:0 3px 6px rgba(0,0,0,.08)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 60px 14px 18px;border:1px solid #2271b1;border-bottom:none;line-height:1.4;font-size:14px;color:#fff;background:#2271b1}.wp-pointer-content h3:before{background:#fff;border-radius:50%;color:#2271b1;content:"\f227";font:normal 20px/1.6 dashicons;position:absolute;top:8px;right:15px;speak:never;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content h4{margin:1.33em 20px 1em;font-size:1.15em}.wp-pointer-content p{padding:0 20px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:left;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-right:3px;position:relative}.wp-pointer-buttons a.close:before{background:0 0;color:#787c82;content:"\f153";display:block!important;font:normal 16px/1 dashicons;speak:never;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;right:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#d63638}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{right:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px;border-bottom-color:#2271b1}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#2271b1;display:block;content:" "}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0;border-top-color:#c3c4c7}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-right:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:" "}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#c3c4c7}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:" "}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#c3c4c7}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:" "}.wp-pointer.arrow-bottom .wp-pointer-content{margin-bottom:-45px}.wp-pointer.arrow-bottom .wp-pointer-arrow{top:100%;margin-top:-30px}@media screen and (max-width:782px){.wp-pointer{display:none}} \ No newline at end of file +.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #ddd;box-shadow:0 3px 6px rgba(0,0,0,.075)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 60px 14px 18px;border:1px solid #3592b6;border-bottom:none;line-height:1.4em;font-size:14px;color:#fff;background:#00a0d2}.wp-pointer-content h3:before{background:#fff;border-radius:50%;color:#00a0d2;content:"\f227";font:normal 20px/1.6 dashicons;position:absolute;top:8px;right:15px;speak:none;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content h4{margin:1.33em 20px 1em;font-size:1.15em}.wp-pointer-content p{padding:0 20px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:left;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-right:3px;position:relative}.wp-pointer-buttons a.close:before{background:0 0;color:#72777c;content:"\f153";display:block!important;font:normal 16px/1 dashicons;speak:none;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;right:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#c00}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{right:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px 13px;border-bottom-color:#3592b6}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#00a0d2;display:block;content:" "}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0 13px;border-top-color:#ccc}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-right:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:" "}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#ccc}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:" "}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#ccc}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:" "}.wp-pointer.arrow-bottom .wp-pointer-content{margin-bottom:-45px}.wp-pointer.arrow-bottom .wp-pointer-arrow{top:100%;margin-top:-30px}@media screen and (max-width:782px){.wp-pointer{display:none}} \ No newline at end of file diff --git a/wp-includes/css/wp-pointer.css b/wp-includes/css/wp-pointer.css index a1c085c..f8d58be 100644 --- a/wp-includes/css/wp-pointer.css +++ b/wp-includes/css/wp-pointer.css @@ -3,32 +3,32 @@ position: relative; font-size: 13px; background: #fff; - border: 1px solid #c3c4c7; - box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08); + border: 1px solid #ddd; + box-shadow: 0 3px 6px rgba(0,0,0,0.075); } .wp-pointer-content h3 { position: relative; margin: -1px -1px 5px; padding: 15px 18px 14px 60px; - border: 1px solid #2271b1; + border: 1px solid #3592b6; border-bottom: none; - line-height: 1.4; + line-height: 1.4em; font-size: 14px; color: #fff; - background: #2271b1; + background: #00a0d2; } .wp-pointer-content h3:before { background: #fff; border-radius: 50%; - color: #2271b1; + color: #00a0d2; content: "\f227"; font: normal 20px/1.6 dashicons; position: absolute; top: 8px; left: 15px; - speak: never; + speak: none; text-align: center; width: 32px; height: 32px; @@ -64,11 +64,11 @@ .wp-pointer-buttons a.close:before { background: none; - color: #787c82; + color: #72777c; content: "\f153"; display: block !important; font: normal 16px/1 dashicons; - speak: never; + speak: none; margin: 1px 0; text-align: center; -webkit-font-smoothing: antialiased !important; @@ -80,7 +80,7 @@ } .wp-pointer-buttons a.close:hover:before { - color: #d63638; + color: #c00; } /* The arrow base class must take up no space, even with transparent borders. */ @@ -140,8 +140,8 @@ .wp-pointer-top .wp-pointer-arrow, .wp-pointer-undefined .wp-pointer-arrow { top: 0; - border-width: 0 13px 13px; - border-bottom-color: #2271b1; + border-width: 0 13px 13px 13px; + border-bottom-color: #3592b6; } .wp-pointer-top .wp-pointer-arrow-inner, @@ -150,15 +150,15 @@ margin-left: -13px; margin-top: -13px; border: 13px solid transparent; - border-bottom-color: #2271b1; + border-bottom-color: #00a0d2; display: block; content: " "; } .wp-pointer-bottom .wp-pointer-arrow { bottom: 0; - border-width: 13px 13px 0; - border-top-color: #c3c4c7; + border-width: 13px 13px 0 13px; + border-top-color: #ccc; } .wp-pointer-bottom .wp-pointer-arrow-inner { @@ -175,7 +175,7 @@ .wp-pointer-left .wp-pointer-arrow { left: 0; border-width: 13px 13px 13px 0; - border-right-color: #c3c4c7; + border-right-color: #ccc; } /* rtl:ignore */ @@ -193,7 +193,7 @@ .wp-pointer-right .wp-pointer-arrow { right: 0; border-width: 13px 0 13px 13px; - border-left-color: #c3c4c7; + border-left-color: #ccc; } /* rtl:ignore */ @@ -217,7 +217,7 @@ } /* Disable pointers at responsive sizes */ -@media screen and (max-width: 782px) { +@media screen and ( max-width: 782px ) { .wp-pointer { display: none; } diff --git a/wp-includes/css/wp-pointer.min.css b/wp-includes/css/wp-pointer.min.css index 2630da7..7871455 100644 --- a/wp-includes/css/wp-pointer.min.css +++ b/wp-includes/css/wp-pointer.min.css @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #c3c4c7;box-shadow:0 3px 6px rgba(0,0,0,.08)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 18px 14px 60px;border:1px solid #2271b1;border-bottom:none;line-height:1.4;font-size:14px;color:#fff;background:#2271b1}.wp-pointer-content h3:before{background:#fff;border-radius:50%;color:#2271b1;content:"\f227";font:normal 20px/1.6 dashicons;position:absolute;top:8px;left:15px;speak:never;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content h4{margin:1.33em 20px 1em;font-size:1.15em}.wp-pointer-content p{padding:0 20px}.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{background:0 0;color:#787c82;content:"\f153";display:block!important;font:normal 16px/1 dashicons;speak:never;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;left:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#d63638}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px;border-bottom-color:#2271b1}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#2271b1;display:block;content:" "}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0;border-top-color:#c3c4c7}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-left:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:" "}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#c3c4c7}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:" "}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#c3c4c7}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:" "}.wp-pointer.arrow-bottom .wp-pointer-content{margin-bottom:-45px}.wp-pointer.arrow-bottom .wp-pointer-arrow{top:100%;margin-top:-30px}@media screen and (max-width:782px){.wp-pointer{display:none}} \ No newline at end of file +.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #ddd;box-shadow:0 3px 6px rgba(0,0,0,.075)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 18px 14px 60px;border:1px solid #3592b6;border-bottom:none;line-height:1.4em;font-size:14px;color:#fff;background:#00a0d2}.wp-pointer-content h3:before{background:#fff;border-radius:50%;color:#00a0d2;content:"\f227";font:normal 20px/1.6 dashicons;position:absolute;top:8px;left:15px;speak:none;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content h4{margin:1.33em 20px 1em;font-size:1.15em}.wp-pointer-content p{padding:0 20px}.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{background:0 0;color:#72777c;content:"\f153";display:block!important;font:normal 16px/1 dashicons;speak:none;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;left:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#c00}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px 13px;border-bottom-color:#3592b6}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#00a0d2;display:block;content:" "}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0 13px;border-top-color:#ccc}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-left:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:" "}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#ccc}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:" "}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#ccc}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:" "}.wp-pointer.arrow-bottom .wp-pointer-content{margin-bottom:-45px}.wp-pointer.arrow-bottom .wp-pointer-arrow{top:100%;margin-top:-30px}@media screen and (max-width:782px){.wp-pointer{display:none}} \ No newline at end of file diff --git a/wp-includes/customize/class-wp-customize-background-image-control.php b/wp-includes/customize/class-wp-customize-background-image-control.php index c9c339e..7ac04d9 100644 --- a/wp-includes/customize/class-wp-customize-background-image-control.php +++ b/wp-includes/customize/class-wp-customize-background-image-control.php @@ -4,30 +4,23 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Background Image Control class. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Image_Control */ class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control { - - /** - * Customize control type. - * - * @since 4.1.0 - * @var string - */ public $type = 'background'; /** * Constructor. * - * @since 3.4.0 + * @since WP-3.4.0 * @uses WP_Customize_Image_Control::__construct() * * @param WP_Customize_Manager $manager Customizer bootstrap instance. @@ -46,7 +39,7 @@ public function __construct( $manager ) { /** * Enqueue control related scripts/styles. * - * @since 4.1.0 + * @since WP-4.1.0 */ public function enqueue() { parent::enqueue(); diff --git a/wp-includes/customize/class-wp-customize-background-image-setting.php b/wp-includes/customize/class-wp-customize-background-image-setting.php index 2b28112..1974621 100644 --- a/wp-includes/customize/class-wp-customize-background-image-setting.php +++ b/wp-includes/customize/class-wp-customize-background-image-setting.php @@ -4,30 +4,23 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customizer Background Image Setting class. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Setting */ final class WP_Customize_Background_Image_Setting extends WP_Customize_Setting { - - /** - * Unique string identifier for the setting. - * - * @since 3.4.0 - * @var string - */ public $id = 'background_image_thumb'; /** - * @since 3.4.0 + * @since WP-3.4.0 * - * @param mixed $value The value to update. Not used. + * @param $value */ public function update( $value ) { remove_theme_mod( 'background_image_thumb' ); diff --git a/wp-includes/customize/class-wp-customize-background-position-control.php b/wp-includes/customize/class-wp-customize-background-position-control.php index 07ad6d7..c144678 100644 --- a/wp-includes/customize/class-wp-customize-background-position-control.php +++ b/wp-includes/customize/class-wp-customize-background-position-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Customize Background Position Control class. * - * @since 4.7.0 + * @since WP-4.7.0 * * @see WP_Customize_Control */ @@ -19,7 +19,7 @@ class WP_Customize_Background_Position_Control extends WP_Customize_Control { /** * Type. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $type = 'background_position'; @@ -27,14 +27,14 @@ class WP_Customize_Background_Position_Control extends WP_Customize_Control { /** * Don't render the control content from PHP, as it's rendered via JS on load. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function render_content() {} /** * Render a JS template for the content of the position control. * - * @since 4.7.0 + * @since WP-4.7.0 */ public function content_template() { $options = array( @@ -90,18 +90,13 @@ public function content_template() { <# } #>
        - - - +
        $input ) : ?> diff --git a/wp-includes/customize/class-wp-customize-code-editor-control.php b/wp-includes/customize/class-wp-customize-code-editor-control.php index 4114248..8ece5d3 100644 --- a/wp-includes/customize/class-wp-customize-code-editor-control.php +++ b/wp-includes/customize/class-wp-customize-code-editor-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.9.0 + * @since WP-4.9.0 */ /** * Customize Code Editor Control class. * - * @since 4.9.0 + * @since WP-4.9.0 * * @see WP_Customize_Control */ @@ -19,7 +19,7 @@ class WP_Customize_Code_Editor_Control extends WP_Customize_Control { /** * Customize control type. * - * @since 4.9.0 + * @since WP-4.9.0 * @var string */ public $type = 'code_editor'; @@ -27,7 +27,7 @@ class WP_Customize_Code_Editor_Control extends WP_Customize_Control { /** * Type of code that is being edited. * - * @since 4.9.0 + * @since WP-4.9.0 * @var string */ public $code_type = ''; @@ -36,7 +36,7 @@ class WP_Customize_Code_Editor_Control extends WP_Customize_Control { * Code editor settings. * * @see wp_enqueue_code_editor() - * @since 4.9.0 + * @since WP-4.9.0 * @var array|false */ public $editor_settings = array(); @@ -44,7 +44,7 @@ class WP_Customize_Code_Editor_Control extends WP_Customize_Control { /** * Enqueue control related scripts/styles. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function enqueue() { $this->editor_settings = wp_enqueue_code_editor( @@ -64,8 +64,7 @@ public function enqueue() { /** * Refresh the parameters passed to the JavaScript via JSON. * - * @since 4.9.0 - * + * @since WP-4.9.0 * @see WP_Customize_Control::json() * * @return array Array of parameters passed to the JavaScript. @@ -80,14 +79,14 @@ public function json() { /** * Don't render the control content from PHP, as it's rendered via JS on load. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function render_content() {} /** * Render a JS template for control display. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function content_template() { ?> diff --git a/wp-includes/customize/class-wp-customize-color-control.php b/wp-includes/customize/class-wp-customize-color-control.php index 54173f5..287e6b9 100644 --- a/wp-includes/customize/class-wp-customize-color-control.php +++ b/wp-includes/customize/class-wp-customize-color-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Color Control class. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Control */ @@ -32,7 +32,7 @@ class WP_Customize_Color_Control extends WP_Customize_Control { /** * Mode. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $mode = 'full'; @@ -40,15 +40,12 @@ class WP_Customize_Color_Control extends WP_Customize_Control { /** * Constructor. * - * @since 3.4.0 - * - * @see WP_Customize_Control::__construct() + * @since WP-3.4.0 + * @uses WP_Customize_Control::__construct() * * @param WP_Customize_Manager $manager Customizer bootstrap instance. * @param string $id Control ID. * @param array $args Optional. Arguments to override class property defaults. - * See WP_Customize_Control::__construct() for information - * on accepted arguments. Default empty array. */ public function __construct( $manager, $id, $args = array() ) { $this->statuses = array( '' => __( 'Default' ) ); @@ -58,7 +55,7 @@ public function __construct( $manager, $id, $args = array() ) { /** * Enqueue scripts/styles for the color picker. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function enqueue() { wp_enqueue_script( 'wp-color-picker' ); @@ -68,7 +65,7 @@ public function enqueue() { /** * Refresh the parameters passed to the JavaScript via JSON. * - * @since 3.4.0 + * @since WP-3.4.0 * @uses WP_Customize_Control::to_json() */ public function to_json() { @@ -81,14 +78,14 @@ public function to_json() { /** * Don't render the control content from PHP, as it's rendered via JS on load. * - * @since 3.4.0 + * @since WP-3.4.0 */ public function render_content() {} /** * Render a JS template for the content of the color picker control. * - * @since 4.1.0 + * @since WP-4.1.0 */ public function content_template() { ?> @@ -111,10 +108,10 @@ public function content_template() {
        json['flex_width'] = absint( $this->flex_width ); $this->json['flex_height'] = absint( $this->flex_height ); } + } diff --git a/wp-includes/customize/class-wp-customize-custom-css-setting.php b/wp-includes/customize/class-wp-customize-custom-css-setting.php index 1c764cb..0bbad06 100644 --- a/wp-includes/customize/class-wp-customize-custom-css-setting.php +++ b/wp-includes/customize/class-wp-customize-custom-css-setting.php @@ -6,13 +6,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.7.0 + * @since WP-4.7.0 */ /** * Custom Setting to handle WP Custom CSS. * - * @since 4.7.0 + * @since WP-4.7.0 * * @see WP_Customize_Setting */ @@ -21,7 +21,7 @@ final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting { /** * The setting type. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $type = 'custom_css'; @@ -29,7 +29,7 @@ final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting { /** * Setting Transport * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $transport = 'postMessage'; @@ -37,7 +37,7 @@ final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting { /** * Capability required to edit this setting. * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $capability = 'edit_css'; @@ -45,7 +45,7 @@ final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting { /** * Stylesheet * - * @since 4.7.0 + * @since WP-4.7.0 * @var string */ public $stylesheet = ''; @@ -53,13 +53,13 @@ final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting { /** * WP_Customize_Custom_CSS_Setting constructor. * - * @since 4.7.0 + * @since WP-4.7.0 * * @throws Exception If the setting ID does not match the pattern `custom_css[$stylesheet]`. * - * @param WP_Customize_Manager $manager Customizer bootstrap instance. - * @param string $id A specific ID of the setting. - * Can be a theme mod or option name. + * @param WP_Customize_Manager $manager The Customize Manager class. + * @param string $id An specific ID of the setting. Can be a + * theme mod or option name. * @param array $args Setting arguments. */ public function __construct( $manager, $id, $args = array() ) { @@ -76,7 +76,7 @@ public function __construct( $manager, $id, $args = array() ) { /** * Add filter to preview post value. * - * @since 4.7.9 + * @since WP-4.7.9 * * @return bool False when preview short-circuits due no change needing to be previewed. */ @@ -90,12 +90,11 @@ public function preview() { } /** - * Filters `wp_get_custom_css` for applying the customized value. + * Filter `wp_get_custom_css` for applying the customized value. * * This is used in the preview when `wp_get_custom_css()` is called for rendering the styles. * - * @since 4.7.0 - * + * @since WP-4.7.0 * @see wp_get_custom_css() * * @param string $css Original CSS. @@ -115,8 +114,7 @@ public function filter_previewed_wp_get_custom_css( $css, $stylesheet ) { /** * Fetch the value of the setting. Will return the previewed value when `preview()` is called. * - * @since 4.7.0 - * + * @since WP-4.7.0 * @see WP_Customize_Setting::value() * * @return string @@ -145,29 +143,25 @@ public function value() { } /** - * Validate a received value for being valid CSS. + * Validate CSS. * * Checks for imbalanced braces, brackets, and comments. * Notifications are rendered when the customizer state is saved. * - * @since 4.7.0 - * @since 4.9.0 Checking for balanced characters has been moved client-side via linting in code editor. - * @since 5.9.0 Renamed `$css` to `$value` for PHP 8 named parameter support. + * @since WP-4.7.0 + * @since WP-4.9.0 Checking for balanced characters has been moved client-side via linting in code editor. * - * @param string $value CSS to validate. + * @param string $css The input string. * @return true|WP_Error True if the input was validated, otherwise WP_Error. */ - public function validate( $value ) { - // Restores the more descriptive, specific name for use within this method. - $css = $value; - + public function validate( $css ) { $validity = new WP_Error(); if ( preg_match( '#add( 'illegal_markup', __( 'Markup is not allowed in CSS.' ) ); } - if ( ! $validity->has_errors() ) { + if ( empty( $validity->errors ) ) { $validity = parent::validate( $css ); } return $validity; @@ -176,16 +170,12 @@ public function validate( $value ) { /** * Store the CSS setting value in the custom_css custom post type for the stylesheet. * - * @since 4.7.0 - * @since 5.9.0 Renamed `$css` to `$value` for PHP 8 named parameter support. + * @since WP-4.7.0 * - * @param string $value CSS to update. + * @param string $css The input value. * @return int|false The post ID or false if the value could not be saved. */ - public function update( $value ) { - // Restores the more descriptive, specific name for use within this method. - $css = $value; - + public function update( $css ) { if ( empty( $css ) ) { $css = ''; } diff --git a/wp-includes/customize/class-wp-customize-date-time-control.php b/wp-includes/customize/class-wp-customize-date-time-control.php index 3773487..e95425d 100644 --- a/wp-includes/customize/class-wp-customize-date-time-control.php +++ b/wp-includes/customize/class-wp-customize-date-time-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.9.0 + * @since WP-4.9.0 */ /** * Customize Date Time Control class. * - * @since 4.9.0 + * @since WP-4.9.0 * * @see WP_Customize_Control */ @@ -19,7 +19,7 @@ class WP_Customize_Date_Time_Control extends WP_Customize_Control { /** * Customize control type. * - * @since 4.9.0 + * @since WP-4.9.0 * @var string */ public $type = 'date_time'; @@ -27,32 +27,32 @@ class WP_Customize_Date_Time_Control extends WP_Customize_Control { /** * Minimum Year. * - * @since 4.9.0 - * @var int + * @since WP-4.9.0 + * @var integer */ public $min_year = 1000; /** * Maximum Year. * - * @since 4.9.0 - * @var int + * @since WP-4.9.0 + * @var integer */ public $max_year = 9999; /** * Allow past date, if set to false user can only select future date. * - * @since 4.9.0 - * @var bool + * @since WP-4.9.0 + * @var boolean */ public $allow_past_date = true; /** * Whether hours, minutes, and meridian should be shown. * - * @since 4.9.0 - * @var bool + * @since WP-4.9.0 + * @var boolean */ public $include_time = true; @@ -60,29 +60,29 @@ class WP_Customize_Date_Time_Control extends WP_Customize_Control { * If set to false the control will appear in 24 hour format, * the value will still be saved in Y-m-d H:i:s format. * - * @since 4.9.0 - * @var bool + * @since WP-4.9.0 + * @var boolean */ public $twelve_hour_format = true; /** * Don't render the control's content - it's rendered with a JS template. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function render_content() {} /** * Export data to JS. * - * @since 4.9.0 + * @since WP-4.9.0 * @return array */ public function json() { $data = parent::json(); - $data['maxYear'] = (int) $this->max_year; - $data['minYear'] = (int) $this->min_year; + $data['maxYear'] = intval( $this->max_year ); + $data['minYear'] = intval( $this->min_year ); $data['allowPastDate'] = (bool) $this->allow_past_date; $data['twelveHourFormat'] = (bool) $this->twelve_hour_format; $data['includeTime'] = (bool) $this->include_time; @@ -93,7 +93,7 @@ public function json() { /** * Renders a JS template for the content of date time control. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function content_template() { $data = array_merge( $this->json(), $this->get_month_choices() ); @@ -144,7 +144,7 @@ public function content_template() { - + @@ -173,7 +173,7 @@ public function content_template() { <# } #> -

        +
        <# } #> @@ -186,12 +186,9 @@ public function content_template() { * * Based on touch_time(). * - * @since 4.9.0 - * + * @since WP-4.9.0 * @see touch_time() * - * @global WP_Locale $wp_locale WordPress date and time locale object. - * * @return array */ public function get_month_choices() { @@ -200,7 +197,7 @@ public function get_month_choices() { for ( $i = 1; $i < 13; $i++ ) { $month_text = $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ); - /* translators: 1: Month number (01, 02, etc.), 2: Month abbreviation. */ + /* translators: 1: month number (01, 02, etc.), 2: month abbreviation */ $months[ $i ]['text'] = sprintf( __( '%1$s-%2$s' ), $i, $month_text ); $months[ $i ]['value'] = $i; } @@ -212,14 +209,9 @@ public function get_month_choices() { /** * Get timezone info. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @return array { - * Timezone info. All properties are optional. - * - * @type string $abbr Timezone abbreviation. Examples: PST or CEST. - * @type string $description Human-readable timezone description as HTML. - * } + * @return array abbr and description. */ public function get_timezone_info() { $tz_string = get_option( 'timezone_string' ); @@ -227,37 +219,28 @@ public function get_timezone_info() { if ( $tz_string ) { try { - $tz = new DateTimeZone( $tz_string ); + $tz = new DateTimezone( $tz_string ); } catch ( Exception $e ) { $tz = ''; } if ( $tz ) { $now = new DateTime( 'now', $tz ); - $formatted_gmt_offset = $this->format_gmt_offset( $tz->getOffset( $now ) / 3600 ); + $formatted_gmt_offset = sprintf( 'UTC%s', $this->format_gmt_offset( $tz->getOffset( $now ) / 3600 ) ); $tz_name = str_replace( '_', ' ', $tz->getName() ); $timezone_info['abbr'] = $now->format( 'T' ); - $timezone_info['description'] = sprintf( - /* translators: 1: Timezone name, 2: Timezone abbreviation, 3: UTC abbreviation and offset, 4: UTC offset. */ - __( 'Your timezone is set to %1$s (%2$s), currently %3$s (Coordinated Universal Time %4$s).' ), - $tz_name, - '' . $timezone_info['abbr'] . '', - 'UTC' . $formatted_gmt_offset, - $formatted_gmt_offset - ); + /* translators: 1: timezone name, 2: timezone abbreviation, 3: gmt offset */ + $timezone_info['description'] = sprintf( __( 'Timezone is %1$s (%2$s), currently %3$s.' ), $tz_name, $timezone_info['abbr'], $formatted_gmt_offset ); } else { $timezone_info['description'] = ''; } } else { - $formatted_gmt_offset = $this->format_gmt_offset( (int) get_option( 'gmt_offset', 0 ) ); + $formatted_gmt_offset = $this->format_gmt_offset( intval( get_option( 'gmt_offset', 0 ) ) ); + $timezone_info['abbr'] = sprintf( 'UTC%s', $formatted_gmt_offset ); - $timezone_info['description'] = sprintf( - /* translators: 1: UTC abbreviation and offset, 2: UTC offset. */ - __( 'Your timezone is set to %1$s (Coordinated Universal Time %2$s).' ), - 'UTC' . $formatted_gmt_offset, - $formatted_gmt_offset - ); + /* translators: %s: UTC offset */ + $timezone_info['description'] = sprintf( __( 'Timezone is %s.' ), $timezone_info['abbr'] ); } return $timezone_info; @@ -266,8 +249,7 @@ public function get_timezone_info() { /** * Format GMT Offset. * - * @since 4.9.0 - * + * @since WP-4.9.0 * @see wp_timezone_choice() * * @param float $offset Offset in hours. diff --git a/wp-includes/customize/class-wp-customize-filter-setting.php b/wp-includes/customize/class-wp-customize-filter-setting.php index d54632b..ae8b80f 100644 --- a/wp-includes/customize/class-wp-customize-filter-setting.php +++ b/wp-includes/customize/class-wp-customize-filter-setting.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,7 +12,7 @@ * * Results should be properly handled using another setting or callback. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Setting */ @@ -21,7 +21,7 @@ class WP_Customize_Filter_Setting extends WP_Customize_Setting { /** * Saves the value of the setting, using the related API. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param mixed $value The value to update. */ diff --git a/wp-includes/customize/class-wp-customize-header-image-control.php b/wp-includes/customize/class-wp-customize-header-image-control.php index 193ecd6..3603398 100644 --- a/wp-includes/customize/class-wp-customize-header-image-control.php +++ b/wp-includes/customize/class-wp-customize-header-image-control.php @@ -4,46 +4,25 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Header Image Control class. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Image_Control */ class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control { - - /** - * Customize control type. - * - * @since 4.2.0 - * @var string - */ public $type = 'header'; - - /** - * Uploaded header images. - * - * @since 3.9.0 - * @var string - */ public $uploaded_headers; - - /** - * Default header images. - * - * @since 3.9.0 - * @var string - */ public $default_headers; /** * Constructor. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param WP_Customize_Manager $manager Customizer bootstrap instance. */ @@ -62,6 +41,7 @@ public function __construct( $manager ) { 'get_url' => 'get_header_image', ) ); + } /** @@ -96,6 +76,7 @@ public function enqueue() { } /** + * * @global Custom_Image_Header $custom_image_header */ public function prepare_control() { @@ -132,24 +113,12 @@ public function print_header_image_template() { <# if ( data.type === 'uploaded' ) { #> - + <# } #> <# } #> @@ -170,7 +139,7 @@ public function print_header_image_template() { <# } else { #> - {{data.header.alt_text || data.header.description}} + {{{data.header.alt_text || data.header.description}}} <# } #> <# } else { #> @@ -214,20 +183,20 @@ public function render_content() { if ( current_theme_supports( 'custom-header', 'video' ) ) { _e( 'Click “Add new image” to upload an image file from your computer. Your theme works best with an image that matches the size of your video — you’ll be able to crop your image once you upload it for a perfect fit.' ); } elseif ( $width && $height ) { + /* translators: %s: header size in pixels */ printf( - /* translators: %s: Header size in pixels. */ __( 'Click “Add new image” to upload an image file from your computer. Your theme works best with an image with a header size of %s pixels — you’ll be able to crop your image once you upload it for a perfect fit.' ), sprintf( '%s × %s', $width, $height ) ); } elseif ( $width ) { + /* translators: %s: header width in pixels */ printf( - /* translators: %s: Header width in pixels. */ __( 'Click “Add new image” to upload an image file from your computer. Your theme works best with an image with a header width of %s pixels — you’ll be able to crop your image once you upload it for a perfect fit.' ), sprintf( '%s', $width ) ); } else { + /* translators: %s: header height in pixels */ printf( - /* translators: %s: Header height in pixels. */ __( 'Click “Add new image” to upload an image file from your computer. Your theme works best with an image with a header height of %s pixels — you’ll be able to crop your image once you upload it for a perfect fit.' ), sprintf( '%s', $height ) ); diff --git a/wp-includes/customize/class-wp-customize-header-image-setting.php b/wp-includes/customize/class-wp-customize-header-image-setting.php index 2501c73..dd105b9 100644 --- a/wp-includes/customize/class-wp-customize-header-image-setting.php +++ b/wp-includes/customize/class-wp-customize-header-image-setting.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,26 +12,19 @@ * * Results should be properly handled using another setting or callback. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Setting */ final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting { - - /** - * Unique string identifier for the setting. - * - * @since 3.4.0 - * @var string - */ public $id = 'header_image_data'; /** - * @since 3.4.0 + * @since WP-3.4.0 * * @global Custom_Image_Header $custom_image_header * - * @param mixed $value The value to update. + * @param $value */ public function update( $value ) { global $custom_image_header; diff --git a/wp-includes/customize/class-wp-customize-image-control.php b/wp-includes/customize/class-wp-customize-image-control.php index eca58f9..0a52a5b 100644 --- a/wp-includes/customize/class-wp-customize-image-control.php +++ b/wp-includes/customize/class-wp-customize-image-control.php @@ -4,69 +4,56 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Image Control class. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Upload_Control */ class WP_Customize_Image_Control extends WP_Customize_Upload_Control { - /** - * Control type. - * - * @since 3.4.0 - * @var string - */ - public $type = 'image'; - - /** - * Media control mime type. - * - * @since 4.1.0 - * @var string - */ + public $type = 'image'; public $mime_type = 'image'; /** - * @since 3.4.2 - * @deprecated 4.1.0 + * @since WP-3.4.2 + * @deprecated WP-4.1.0 */ public function prepare_control() {} /** - * @since 3.4.0 - * @deprecated 4.1.0 + * @since WP-3.4.0 + * @deprecated WP-4.1.0 * * @param string $id * @param string $label - * @param mixed $callback + * @param mixed $callback */ public function add_tab( $id, $label, $callback ) { - _deprecated_function( __METHOD__, '4.1.0' ); + _deprecated_function( __METHOD__, 'WP-4.1.0' ); } /** - * @since 3.4.0 - * @deprecated 4.1.0 + * @since WP-3.4.0 + * @deprecated WP-4.1.0 * * @param string $id */ public function remove_tab( $id ) { - _deprecated_function( __METHOD__, '4.1.0' ); + _deprecated_function( __METHOD__, 'WP-4.1.0' ); } /** - * @since 3.4.0 - * @deprecated 4.1.0 + * @since WP-3.4.0 + * @deprecated WP-4.1.0 * * @param string $url * @param string $thumbnail_url */ public function print_tab_image( $url, $thumbnail_url = null ) { - _deprecated_function( __METHOD__, '4.1.0' ); + _deprecated_function( __METHOD__, 'WP-4.1.0' ); } } diff --git a/wp-includes/customize/class-wp-customize-media-control.php b/wp-includes/customize/class-wp-customize-media-control.php index 057c5f5..c868be9 100644 --- a/wp-includes/customize/class-wp-customize-media-control.php +++ b/wp-includes/customize/class-wp-customize-media-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Media Control class. * - * @since 4.2.0 + * @since WP-4.2.0 * * @see WP_Customize_Control */ @@ -18,7 +18,7 @@ class WP_Customize_Media_Control extends WP_Customize_Control { /** * Control type. * - * @since 4.2.0 + * @since WP-4.2.0 * @var string */ public $type = 'media'; @@ -26,7 +26,7 @@ class WP_Customize_Media_Control extends WP_Customize_Control { /** * Media control mime type. * - * @since 4.2.0 + * @since WP-4.2.0 * @var string */ public $mime_type = ''; @@ -34,7 +34,7 @@ class WP_Customize_Media_Control extends WP_Customize_Control { /** * Button labels. * - * @since 4.2.0 + * @since WP-4.2.0 * @var array */ public $button_labels = array(); @@ -42,16 +42,12 @@ class WP_Customize_Media_Control extends WP_Customize_Control { /** * Constructor. * - * @since 4.1.0 - * @since 4.2.0 Moved from WP_Customize_Upload_Control. - * - * @see WP_Customize_Control::__construct() + * @since WP-4.1.0 + * @since WP-4.2.0 Moved from WP_Customize_Upload_Control. * * @param WP_Customize_Manager $manager Customizer bootstrap instance. * @param string $id Control ID. * @param array $args Optional. Arguments to override class property defaults. - * See WP_Customize_Control::__construct() for information - * on accepted arguments. Default empty array. */ public function __construct( $manager, $id, $args = array() ) { parent::__construct( $manager, $id, $args ); @@ -62,8 +58,8 @@ public function __construct( $manager, $id, $args = array() ) { /** * Enqueue control related scripts/styles. * - * @since 3.4.0 - * @since 4.2.0 Moved from WP_Customize_Upload_Control. + * @since WP-3.4.0 + * @since WP-4.2.0 Moved from WP_Customize_Upload_Control. */ public function enqueue() { wp_enqueue_media(); @@ -72,8 +68,8 @@ public function enqueue() { /** * Refresh the parameters passed to the JavaScript via JSON. * - * @since 3.4.0 - * @since 4.2.0 Moved from WP_Customize_Upload_Control. + * @since WP-3.4.0 + * @since WP-4.2.0 Moved from WP_Customize_Upload_Control. * * @see WP_Customize_Control::to_json() */ @@ -91,7 +87,7 @@ public function to_json() { // Fake an attachment model - needs all fields used by template. // Note that the default value must be a URL, NOT an attachment ID. $ext = substr( $this->setting->default, -3 ); - $type = in_array( $ext, array( 'jpg', 'png', 'gif', 'bmp', 'webp' ), true ) ? 'image' : 'document'; + $type = in_array( $ext, array( 'jpg', 'png', 'gif', 'bmp' ), true ) ? 'image' : 'document'; $default_attachment = array( 'id' => 1, @@ -122,8 +118,8 @@ public function to_json() { /** * Don't render any content for this control from PHP. * - * @since 3.4.0 - * @since 4.2.0 Moved from WP_Customize_Upload_Control. + * @since WP-3.4.0 + * @since WP-4.2.0 Moved from WP_Customize_Upload_Control. * * @see WP_Customize_Media_Control::content_template() */ @@ -132,17 +128,18 @@ public function render_content() {} /** * Render a JS template for the content of the media control. * - * @since 4.1.0 - * @since 4.2.0 Moved from WP_Customize_Upload_Control. + * @since WP-4.1.0 + * @since WP-4.2.0 Moved from WP_Customize_Upload_Control. */ public function content_template() { ?> <# + var selectButtonId = _.uniqueId( 'customize-media-control-button-' ); var descriptionId = _.uniqueId( 'customize-media-control-description-' ); var describedByAttr = data.description ? ' aria-describedby="' + descriptionId + '" ' : ''; #> <# if ( data.label ) { #> - {{ data.label }} + <# } #>
        <# if ( data.description ) { #> @@ -153,14 +150,14 @@ public function content_template() {
        <# if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.medium ) { #> - + <# } else if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.full ) { #> - + <# } else if ( 'audio' === data.attachment.type ) { #> <# if ( data.attachment.image && data.attachment.image.src && data.attachment.image.src !== data.attachment.icon ) { #> - + <# } else { #> - + <# } #>

        “{{ data.attachment.title }}”

        <# if ( data.attachment.album || data.attachment.meta.album ) { #> @@ -170,36 +167,39 @@ public function content_template() {

        {{ data.attachment.artist || data.attachment.meta.artist }}

        <# } #> <# } else if ( 'video' === data.attachment.type ) { #>
        -
        <# } else { #> - +

        {{ data.attachment.title }}

        <# } #>
        <# if ( data.canUpload ) { #> - + <# } #>
        <# } else { #>
        - <# if ( data.canUpload ) { #> - - <# } #> +
        + {{ data.button_labels.placeholder }} +
        <# if ( data.defaultAttachment ) { #> <# } #> + <# if ( data.canUpload ) { #> + + <# } #>
        <# } #> @@ -211,9 +211,9 @@ public function content_template() { * * Provides an array of the default button labels based on the mime type of the current control. * - * @since 4.9.0 + * @since WP-4.9.0 * - * @return string[] An associative array of default button labels keyed by the button name. + * @return array An associative array of default button labels. */ public function get_default_button_labels() { // Get just the mime type and strip the mime subtype if present. @@ -243,7 +243,6 @@ public function get_default_button_labels() { case 'image': return array( 'select' => __( 'Select image' ), - 'site_icon' => __( 'Select site icon' ), 'change' => __( 'Change image' ), 'default' => __( 'Default' ), 'remove' => __( 'Remove' ), diff --git a/wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php b/wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php index 2c03af1..dc1b248 100644 --- a/wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php +++ b/wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize control to represent the auto_add field for a given menu. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Control */ @@ -19,7 +19,7 @@ class WP_Customize_Nav_Menu_Auto_Add_Control extends WP_Customize_Control { /** * Type of control, used by JS. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = 'nav_menu_auto_add'; @@ -27,21 +27,21 @@ class WP_Customize_Nav_Menu_Auto_Add_Control extends WP_Customize_Control { /** * No-op since we're using JS template. * - * @since 4.3.0 + * @since WP-4.3.0 */ protected function render_content() {} /** * Render the Underscore template for this control. * - * @since 4.3.0 + * @since WP-4.3.0 */ protected function content_template() { ?> <# var elementId = _.uniqueId( 'customize-nav-menu-auto-add-control-' ); #> - + diff --git a/wp-includes/customize/class-wp-customize-nav-menu-control.php b/wp-includes/customize/class-wp-customize-nav-menu-control.php index 5cf769b..118c272 100644 --- a/wp-includes/customize/class-wp-customize-nav-menu-control.php +++ b/wp-includes/customize/class-wp-customize-nav-menu-control.php @@ -4,22 +4,20 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Nav Menu Control Class. * - * @since 4.3.0 - * - * @see WP_Customize_Control + * @since WP-4.3.0 */ class WP_Customize_Nav_Menu_Control extends WP_Customize_Control { /** * Control type. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = 'nav_menu'; @@ -27,14 +25,14 @@ class WP_Customize_Nav_Menu_Control extends WP_Customize_Control { /** * Don't render the control's content - it uses a JS template instead. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function render_content() {} /** * JS/Underscore template for the control UI. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function content_template() { $add_items = __( 'Add Items' ); @@ -42,8 +40,8 @@ public function content_template() {

        @@ -57,19 +55,14 @@ public function content_template() {

        -

        - -

        +

        @@ -73,13 +69,13 @@ public function content_template() { @@ -91,65 +87,54 @@ public function content_template() { <# if ( 'custom' === data.item_type ) { #>

        <# } #>

        - - - - + +
        nav_menus ) ) { @@ -171,7 +171,7 @@ public function __construct( WP_Customize_Manager $manager, $id, array $args = a throw new Exception( "Illegal widget setting ID: $id" ); } - $this->post_id = (int) $matches['id']; + $this->post_id = intval( $matches['id'] ); add_action( 'wp_update_nav_menu_item', array( $this, 'flush_cached_value' ), 10, 2 ); parent::__construct( $manager, $id, $args ); @@ -183,12 +183,13 @@ public function __construct( WP_Customize_Manager $manager, $id, array $args = a throw new Exception( "Supplied nav_menu_item value missing property: $missing" ); } } + } /** * Clear the cached value when this nav menu item is updated. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param int $menu_id The term ID for the menu. * @param int $menu_item_id The post ID for the menu item. @@ -203,7 +204,7 @@ public function flush_cached_value( $menu_id, $menu_item_id ) { /** * Get the instance data for a given nav_menu_item setting. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_setup_nav_menu_item() * @@ -259,7 +260,7 @@ public function value() { /** * Get original title. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param object $item Nav menu item. * @return string The original title. @@ -273,7 +274,7 @@ protected function get_original_title( $item ) { $original_title = apply_filters( 'the_title', $original_object->post_title, $original_object->ID ); if ( '' === $original_title ) { - /* translators: %d: ID of a post. */ + /* translators: %d: ID of a post */ $original_title = sprintf( __( '#%d (no title)' ), $original_object->ID ); } } @@ -295,10 +296,10 @@ protected function get_original_title( $item ) { /** * Get type label. * - * @since 4.7.0 + * @since WP-4.7.0 * * @param object $item Nav menu item. - * @return string The type label. + * @returns string The type label. */ protected function get_type_label( $item ) { if ( 'post_type' === $item->type ) { @@ -328,7 +329,7 @@ protected function get_type_label( $item ) { * * Translates some properties added by wp_setup_nav_menu_item() and removes others. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Nav_Menu_Item_Setting::value() */ @@ -367,7 +368,7 @@ protected function populate_value() { foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) { if ( ! is_int( $this->value[ $key ] ) ) { - $this->value[ $key ] = (int) $this->value[ $key ]; + $this->value[ $key ] = intval( $this->value[ $key ] ); } } foreach ( array( 'classes', 'xfn' ) as $key ) { @@ -426,8 +427,8 @@ protected function populate_value() { /** * Handle previewing the setting. * - * @since 4.3.0 - * @since 4.4.0 Added boolean return value. + * @since WP-4.3.0 + * @since WP-4.4.0 Added boolean return value. * * @see WP_Customize_Manager::post_value() * @@ -465,14 +466,14 @@ public function preview() { /** * Filters the wp_get_nav_menu_items() result to supply the previewed menu items. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_get_nav_menu_items() * - * @param WP_Post[] $items An array of menu item post objects. - * @param WP_Term $menu The menu object. - * @param array $args An array of arguments used to retrieve menu item objects. - * @return WP_Post[] Array of menu item objects. + * @param array $items An array of menu item post objects. + * @param object $menu The menu object. + * @param array $args An array of arguments used to retrieve menu item objects. + * @return array Array of menu items, */ public function filter_wp_get_nav_menu_items( $items, $menu, $args ) { $this_item = $this->value(); @@ -541,14 +542,15 @@ public function filter_wp_get_nav_menu_items( $items, $menu, $args ) { /** * Re-apply the tail logic also applied on $items by wp_get_nav_menu_items(). * - * @since 4.3.0 + * @since WP-4.3.0 + * @static * * @see wp_get_nav_menu_items() * - * @param WP_Post[] $items An array of menu item post objects. - * @param WP_Term $menu The menu object. - * @param array $args An array of arguments used to retrieve menu item objects. - * @return WP_Post[] Array of menu item objects. + * @param array $items An array of menu item post objects. + * @param object $menu The menu object. + * @param array $args An array of arguments used to retrieve menu item objects. + * @return array Array of menu items, */ public static function sort_wp_get_nav_menu_items( $items, $menu, $args ) { // @todo We should probably re-apply some constraints imposed by $args. @@ -579,7 +581,7 @@ public static function sort_wp_get_nav_menu_items( $items, $menu, $args ) { /** * Get the value emulated into a WP_Post and set up as a nav_menu_item. * - * @since 4.3.0 + * @since WP-4.3.0 * * @return WP_Post With wp_setup_nav_menu_item() applied. */ @@ -604,11 +606,6 @@ public function value_as_wp_post_nav_menu_item() { $item->post_title = $item->title; } - // 'classes' should be an array, as in wp_setup_nav_menu_item(). - if ( isset( $item->classes ) && is_scalar( $item->classes ) ) { - $item->classes = explode( ' ', $item->classes ); - } - $item->ID = $this->post_id; $item->db_id = $this->post_id; $post = new WP_Post( (object) $item ); @@ -651,17 +648,13 @@ public function value_as_wp_post_nav_menu_item() { * Note that parent::sanitize() erroneously does wp_unslash() on $value, but * we remove that in this override. * - * @since 4.3.0 - * @since 5.9.0 Renamed `$menu_item_value` to `$value` for PHP 8 named parameter support. + * @since WP-4.3.0 * - * @param array $value The menu item value to sanitize. + * @param array $menu_item_value The value to sanitize. * @return array|false|null|WP_Error Null or WP_Error if an input isn't valid. False if it is marked for deletion. * Otherwise the sanitized value. */ - public function sanitize( $value ) { - // Restores the more descriptive, specific name for use within this method. - $menu_item_value = $value; - + public function sanitize( $menu_item_value ) { // Menu is marked for deletion. if ( false === $menu_item_value ) { return $menu_item_value; @@ -692,11 +685,11 @@ public function sanitize( $value ) { ); $menu_item_value = array_merge( $default, $menu_item_value ); $menu_item_value = wp_array_slice_assoc( $menu_item_value, array_keys( $default ) ); - $menu_item_value['position'] = (int) $menu_item_value['position']; + $menu_item_value['position'] = intval( $menu_item_value['position'] ); foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) { // Note we need to allow negative-integer IDs for previewed objects not inserted yet. - $menu_item_value[ $key ] = (int) $menu_item_value[ $key ]; + $menu_item_value[ $key ] = intval( $menu_item_value[ $key ] ); } foreach ( array( 'type', 'object', 'target' ) as $key ) { @@ -725,7 +718,7 @@ public function sanitize( $value ) { $menu_item_value['description'] = wp_unslash( apply_filters( 'content_save_pre', wp_slash( $menu_item_value['description'] ) ) ); if ( '' !== $menu_item_value['url'] ) { - $menu_item_value['url'] = sanitize_url( $menu_item_value['url'] ); + $menu_item_value['url'] = esc_url_raw( $menu_item_value['url'] ); if ( '' === $menu_item_value['url'] ) { return new WP_Error( 'invalid_url', __( 'Invalid URL.' ) ); // Fail sanitization if URL is invalid. } @@ -749,7 +742,7 @@ public function sanitize( $value ) { * * To delete a menu, the client can send false as the value. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_update_nav_menu_item() * @@ -806,7 +799,7 @@ protected function update( $value ) { return; } - if ( (int) $value['nav_menu_term_id'] !== $nav_menu_setting->previous_term_id ) { + if ( intval( $value['nav_menu_term_id'] ) !== $nav_menu_setting->previous_term_id ) { $this->update_status = 'error'; $this->update_error = new WP_Error( 'unexpected_previous_term_id' ); return; @@ -832,7 +825,7 @@ protected function update( $value ) { return; } - if ( (int) $value['menu_item_parent'] !== $parent_nav_menu_item_setting->previous_post_id ) { + if ( intval( $value['menu_item_parent'] ) !== $parent_nav_menu_item_setting->previous_post_id ) { $this->update_status = 'error'; $this->update_error = new WP_Error( 'unexpected_previous_post_id' ); return; @@ -877,12 +870,13 @@ protected function update( $value ) { } } } + } /** * Export data for the JS client. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Nav_Menu_Item_Setting::update() * diff --git a/wp-includes/customize/class-wp-customize-nav-menu-location-control.php b/wp-includes/customize/class-wp-customize-nav-menu-location-control.php index 118a964..0f0f50e 100644 --- a/wp-includes/customize/class-wp-customize-nav-menu-location-control.php +++ b/wp-includes/customize/class-wp-customize-nav-menu-location-control.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,7 +12,7 @@ * * This custom control is only needed for JS. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Control */ @@ -21,7 +21,7 @@ class WP_Customize_Nav_Menu_Location_Control extends WP_Customize_Control { /** * Control type. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = 'nav_menu_location'; @@ -29,7 +29,7 @@ class WP_Customize_Nav_Menu_Location_Control extends WP_Customize_Control { /** * Location ID. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $location_id = ''; @@ -37,7 +37,7 @@ class WP_Customize_Nav_Menu_Location_Control extends WP_Customize_Control { /** * Refresh the parameters passed to JavaScript via JSON. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Control::to_json() */ @@ -49,8 +49,8 @@ public function to_json() { /** * Render content just like a normal select control. * - * @since 4.3.0 - * @since 4.9.0 Added a button to create menus. + * @since WP-4.3.0 + * @since WP-4.9.0 Added a button to create menus. */ public function render_content() { if ( empty( $this->choices ) ) { diff --git a/wp-includes/customize/class-wp-customize-nav-menu-locations-control.php b/wp-includes/customize/class-wp-customize-nav-menu-locations-control.php index 3d6f151..9547bca 100644 --- a/wp-includes/customize/class-wp-customize-nav-menu-locations-control.php +++ b/wp-includes/customize/class-wp-customize-nav-menu-locations-control.php @@ -4,22 +4,20 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.9.0 + * @since WP-4.9.0 */ /** * Customize Nav Menu Locations Control Class. * - * @since 4.9.0 - * - * @see WP_Customize_Control + * @since WP-4.9.0 */ class WP_Customize_Nav_Menu_Locations_Control extends WP_Customize_Control { /** * Control type. * - * @since 4.9.0 + * @since WP-4.9.0 * @var string */ public $type = 'nav_menu_locations'; @@ -27,14 +25,14 @@ class WP_Customize_Nav_Menu_Locations_Control extends WP_Customize_Control { /** * Don't render the control's content - it uses a JS template instead. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function render_content() {} /** * JS/Underscore template for the control UI. * - * @since 4.9.0 + * @since WP-4.9.0 */ public function content_template() { if ( current_theme_supports( 'menus' ) ) : @@ -46,22 +44,24 @@ public function content_template() { <# if ( data.isCreating ) { #>

        - widget%3$s, skip this step.)', 'menu locations' ), - __( 'https://wordpress.org/documentation/article/manage-wordpress-widgets/' ), - ' class="external-link" target="_blank"', - sprintf( - ' %s', - /* translators: Hidden accessibility text. */ - __( '(opens in a new tab)' ) - ) - ); - ?> + + widget%3$s, skip this step.)', 'menu locations' ), + __( 'https://codex.wordpress.org/WordPress_Widgets' ), + ' class="external-link" target="_blank"', + sprintf( + ' %s', + /* translators: accessibility text */ + __( '(opens in a new window)' ) + ) + ); + ?> +

        <# } else { #> -

        +

        <# } #>
      14. @@ -69,13 +69,13 @@ public function content_template() { <# elementId = _.uniqueId( 'customize-nav-menu-control-location-' ); #>
      15. - + <# if ( data.description ) { #>

        {{ data.description }}

        diff --git a/wp-includes/customize/class-wp-customize-nav-menu-section.php b/wp-includes/customize/class-wp-customize-nav-menu-section.php index ea90928..7d902ab 100644 --- a/wp-includes/customize/class-wp-customize-nav-menu-section.php +++ b/wp-includes/customize/class-wp-customize-nav-menu-section.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,7 +12,7 @@ * * Custom section only needed in JS. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Section */ @@ -21,7 +21,7 @@ class WP_Customize_Nav_Menu_Section extends WP_Customize_Section { /** * Control type. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = 'nav_menu'; @@ -29,12 +29,12 @@ class WP_Customize_Nav_Menu_Section extends WP_Customize_Section { /** * Get section parameters for JS. * - * @since 4.3.0 + * @since WP-4.3.0 * @return array Exported parameters. */ public function json() { $exported = parent::json(); - $exported['menu_id'] = (int) preg_replace( '/^nav_menu\[(-?\d+)\]/', '$1', $this->id ); + $exported['menu_id'] = intval( preg_replace( '/^nav_menu\[(-?\d+)\]/', '$1', $this->id ) ); return $exported; } diff --git a/wp-includes/customize/class-wp-customize-nav-menu-setting.php b/wp-includes/customize/class-wp-customize-nav-menu-setting.php index 9428050..a77b992 100644 --- a/wp-includes/customize/class-wp-customize-nav-menu-setting.php +++ b/wp-includes/customize/class-wp-customize-nav-menu-setting.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -13,7 +13,7 @@ * Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and * the IDs for the nav_menu_items associated with the nav menu. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_get_nav_menu_object() * @see WP_Customize_Setting @@ -29,7 +29,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { /** * Setting type. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = self::TYPE; @@ -37,7 +37,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { /** * Default setting value. * - * @since 4.3.0 + * @since WP-4.3.0 * @var array * * @see wp_get_nav_menu_object() @@ -52,7 +52,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { /** * Default transport. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $transport = 'postMessage'; @@ -62,7 +62,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { * * A negative value represents a placeholder ID for a new menu not yet saved. * - * @since 4.3.0 + * @since WP-4.3.0 * @var int */ public $term_id; @@ -75,7 +75,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { * term ID. This value is always negative to indicate it does not refer to * a real term. * - * @since 4.3.0 + * @since WP-4.3.0 * @var int * * @see WP_Customize_Nav_Menu_Setting::update() @@ -86,7 +86,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { /** * Whether or not update() was called. * - * @since 4.3.0 + * @since WP-4.3.0 * @var bool */ protected $is_updated = false; @@ -99,7 +99,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { * When status is inserted, the placeholder term ID is stored in `$previous_term_id`. * When status is error, the error is stored in `$update_error`. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string updated|inserted|deleted|error * * @see WP_Customize_Nav_Menu_Setting::update() @@ -110,7 +110,7 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { /** * Any error object returned by wp_update_nav_menu_object() when setting is updated. * - * @since 4.3.0 + * @since WP-4.3.0 * @var WP_Error * * @see WP_Customize_Nav_Menu_Setting::update() @@ -123,14 +123,14 @@ class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting { * * Any supplied $args override class property defaults. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @throws Exception If $id is not valid for this setting type. - * - * @param WP_Customize_Manager $manager Customizer bootstrap instance. - * @param string $id A specific ID of the setting. - * Can be a theme mod or option name. + * @param WP_Customize_Manager $manager Bootstrap Customizer instance. + * @param string $id An specific ID of the setting. Can be a + * theme mod or option name. * @param array $args Optional. Setting arguments. + * + * @throws Exception If $id is not valid for this setting type. */ public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) { if ( empty( $manager->nav_menus ) ) { @@ -141,7 +141,7 @@ public function __construct( WP_Customize_Manager $manager, $id, array $args = a throw new Exception( "Illegal widget setting ID: $id" ); } - $this->term_id = (int) $matches['id']; + $this->term_id = intval( $matches['id'] ); parent::__construct( $manager, $id, $args ); } @@ -149,7 +149,7 @@ public function __construct( WP_Customize_Manager $manager, $id, array $args = a /** * Get the instance data for a given widget setting. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_get_nav_menu_object() * @@ -195,8 +195,8 @@ public function value() { /** * Handle previewing the setting. * - * @since 4.3.0 - * @since 4.4.0 Added boolean return value + * @since WP-4.3.0 + * @since WP-4.4.0 Added boolean return value * * @see WP_Customize_Manager::post_value() * @@ -229,13 +229,13 @@ public function preview() { /** * Filters the wp_get_nav_menus() result to ensure the inserted menu object is included, and the deleted one is removed. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_get_nav_menus() * - * @param WP_Term[] $menus An array of menu objects. - * @param array $args An array of arguments used to retrieve menu objects. - * @return WP_Term[] Array of menu objects. + * @param array $menus An array of menu objects. + * @param array $args An array of arguments used to retrieve menu objects. + * @return array */ public function filter_wp_get_nav_menus( $menus, $args ) { if ( get_current_blog_id() !== $this->_previewed_blog_id ) { @@ -286,7 +286,7 @@ public function filter_wp_get_nav_menus( $menus, $args ) { ) ); } - // @todo Add support for $args['hide_empty'] === true. + // @todo add support for $args['hide_empty'] === true return $menus; } @@ -294,7 +294,7 @@ public function filter_wp_get_nav_menus( $menus, $args ) { /** * Temporary non-closure passing of orderby value to function. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string * * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus() @@ -307,8 +307,8 @@ public function filter_wp_get_nav_menus( $menus, $args ) { * * This is a workaround for a lack of closures. * - * @since 4.3.0 - * @deprecated 4.7.0 Use wp_list_sort() + * @since WP-4.3.0 + * @deprecated WP-4.7.0 Use wp_list_sort() * * @param object $menu1 * @param object $menu2 @@ -317,7 +317,7 @@ public function filter_wp_get_nav_menus( $menus, $args ) { * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus() */ protected function _sort_menus_by_orderby( $menu1, $menu2 ) { - _deprecated_function( __METHOD__, '4.7.0', 'wp_list_sort' ); + _deprecated_function( __METHOD__, 'WP-4.7.0', 'wp_list_sort' ); $key = $this->_current_menus_sort_orderby; return strcmp( $menu1->$key, $menu2->$key ); @@ -328,7 +328,7 @@ protected function _sort_menus_by_orderby( $menu1, $menu2 ) { * * Requesting a nav_menu object by anything but ID is not supported. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_get_nav_menu_object() * @@ -379,10 +379,10 @@ public function filter_wp_get_nav_menu_object( $menu_obj, $menu_id ) { /** * Filters the nav_menu_options option to include this menu's auto_add preference. * - * @since 4.3.0 + * @since WP-4.3.0 * * @param array $nav_menu_options Nav menu options including auto_add. - * @return array (Maybe) modified nav menu options. + * @return array (Kaybe) modified nav menu options. */ public function filter_nav_menu_options( $nav_menu_options ) { if ( get_current_blog_id() !== $this->_previewed_blog_id ) { @@ -405,9 +405,9 @@ public function filter_nav_menu_options( $nav_menu_options ) { * Note that parent::sanitize() erroneously does wp_unslash() on $value, but * we remove that in this override. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @param array $value The menu value to sanitize. + * @param array $value The value to sanitize. * @return array|false|null Null if an input isn't valid. False if it is marked for deletion. * Otherwise the sanitized value. */ @@ -433,7 +433,7 @@ public function sanitize( $value ) { $value['name'] = trim( esc_html( $value['name'] ) ); // This sanitization code is used in wp-admin/nav-menus.php. $value['description'] = sanitize_text_field( $value['description'] ); - $value['parent'] = max( 0, (int) $value['parent'] ); + $value['parent'] = max( 0, intval( $value['parent'] ) ); $value['auto_add'] = ! empty( $value['auto_add'] ); if ( '' === $value['name'] ) { @@ -449,7 +449,7 @@ public function sanitize( $value ) { * * See {@see 'customize_save_response'}. * - * @since 4.3.0 + * @since WP-4.3.0 * @var array * * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response() @@ -465,7 +465,7 @@ public function sanitize( $value ) { * * To delete a menu, the client can send false as the value. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see wp_update_nav_menu_object() * @@ -518,7 +518,7 @@ protected function update( $value ) { $name_conflict_suffix = 1; while ( is_wp_error( $r ) && 'menu_exists' === $r->get_error_code() ) { $name_conflict_suffix += 1; - /* translators: 1: Original menu name, 2: Duplicate count. */ + /* translators: 1: original menu name, 2: duplicate count */ $menu_data['menu-name'] = sprintf( __( '%1$s (%2$d)' ), $original_name, $name_conflict_suffix ); $r = wp_update_nav_menu_object( $menu_id, wp_slash( $menu_data ) ); } @@ -556,7 +556,7 @@ protected function update( $value ) { } $post_value = $setting->post_value( null ); - if ( ! is_null( $post_value ) && (int) $post_value === $this->previous_term_id ) { + if ( ! is_null( $post_value ) && intval( $post_value ) === $this->previous_term_id ) { $this->manager->set_post_value( $setting->id, $this->term_id ); $setting->save(); } @@ -570,7 +570,7 @@ protected function update( $value ) { } $widget_instance = $nav_menu_widget_setting->post_value(); // Note that this calls WP_Customize_Widgets::sanitize_widget_instance(). - if ( empty( $widget_instance['nav_menu'] ) || (int) $widget_instance['nav_menu'] !== $this->previous_term_id ) { + if ( empty( $widget_instance['nav_menu'] ) || intval( $widget_instance['nav_menu'] ) !== $this->previous_term_id ) { continue; } @@ -587,7 +587,7 @@ protected function update( $value ) { /** * Updates a nav_menu_options array. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Nav_Menu_Setting::filter_nav_menu_options() * @see WP_Customize_Nav_Menu_Setting::update() @@ -595,7 +595,7 @@ protected function update( $value ) { * @param array $nav_menu_options Array as returned by get_option( 'nav_menu_options' ). * @param int $menu_id The term ID for the given menu. * @param bool $auto_add Whether to auto-add or not. - * @return array (Maybe) modified nav_menu_options array. + * @return array (Maybe) modified nav_menu_otions array. */ protected function filter_nav_menu_options_value( $nav_menu_options, $menu_id, $auto_add ) { $nav_menu_options = (array) $nav_menu_options; @@ -617,7 +617,7 @@ protected function filter_nav_menu_options_value( $nav_menu_options, $menu_id, $ /** * Export data for the JS client. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Nav_Menu_Setting::update() * diff --git a/wp-includes/customize/class-wp-customize-nav-menus-panel.php b/wp-includes/customize/class-wp-customize-nav-menus-panel.php index 4e525a0..149b13b 100644 --- a/wp-includes/customize/class-wp-customize-nav-menus-panel.php +++ b/wp-includes/customize/class-wp-customize-nav-menus-panel.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,7 +12,7 @@ * * Needed to add screen options. * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Panel */ @@ -21,7 +21,7 @@ class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel { /** * Control type. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = 'nav_menus'; @@ -29,7 +29,7 @@ class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel { /** * Render screen options for Menus. * - * @since 4.3.0 + * @since WP-4.3.0 */ public function render_screen_options() { // Adds the screen options. @@ -46,11 +46,11 @@ public function render_screen_options() { * * Link title attribute added as it's a relatively advanced concept for new users. * - * @since 4.3.0 - * @deprecated 4.5.0 Deprecated in favor of wp_nav_menu_manage_columns(). + * @since WP-4.3.0 + * @deprecated WP-4.5.0 Deprecated in favor of wp_nav_menu_manage_columns(). */ public function wp_nav_menu_manage_columns() { - _deprecated_function( __METHOD__, '4.5.0', 'wp_nav_menu_manage_columns' ); + _deprecated_function( __METHOD__, 'WP-4.5.0', 'wp_nav_menu_manage_columns' ); require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; return wp_nav_menu_manage_columns(); } @@ -61,7 +61,7 @@ public function wp_nav_menu_manage_columns() { * Class variables for this panel class are available in the `data` JS object; * export custom variables by overriding WP_Customize_Panel::json(). * - * @since 4.3.0 + * @since WP-4.3.0 * * @see WP_Customize_Panel::print_template() */ @@ -69,35 +69,20 @@ protected function content_template() { ?>
      16. {{ data.title }}' ); ?>
        <# if ( data.description ) { #> diff --git a/wp-includes/customize/class-wp-customize-new-menu-control.php b/wp-includes/customize/class-wp-customize-new-menu-control.php index 2ecaa57..212cbb9 100644 --- a/wp-includes/customize/class-wp-customize-new-menu-control.php +++ b/wp-includes/customize/class-wp-customize-new-menu-control.php @@ -4,17 +4,15 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 - * @deprecated 4.9.0 This file is no longer used as of the menu creation UX introduced in #40104. + * @since WP-4.4.0 + * @deprecated WP-4.9.0 This file is no longer used as of the menu creation UX introduced in https://core.trac.wordpress.org/ticket/40104. */ -_deprecated_file( basename( __FILE__ ), '4.9.0' ); - /** * Customize control class for new menus. * - * @since 4.3.0 - * @deprecated 4.9.0 This class is no longer used as of the menu creation UX introduced in #40104. + * @since WP-4.3.0 + * @deprecated WP-4.9.0 This class is no longer used as of the menu creation UX introduced in https://core.trac.wordpress.org/ticket/40104. * * @see WP_Customize_Control */ @@ -23,7 +21,7 @@ class WP_Customize_New_Menu_Control extends WP_Customize_Control { /** * Control type. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = 'new_menu'; @@ -31,30 +29,23 @@ class WP_Customize_New_Menu_Control extends WP_Customize_Control { /** * Constructor. * - * @since 4.9.0 - * @deprecated 4.9.0 - * - * @see WP_Customize_Control::__construct() + * @since WP-4.9.0 * - * @param WP_Customize_Manager $manager Customizer bootstrap instance. - * @param string $id The control ID. - * @param array $args Optional. Arguments to override class property defaults. - * See WP_Customize_Control::__construct() for information - * on accepted arguments. Default empty array. + * @param WP_Customize_Manager $manager Manager. + * @param string $id ID. + * @param array $args Args. */ public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) { - _deprecated_function( __METHOD__, '4.9.0' ); + _deprecated_file( basename( __FILE__ ), 'WP-4.9.0' ); // @todo Move this outside of class in WP-5.0, and remove its require_once() from class-wp-customize-control.php. See https://core.trac.wordpress.org/ticket/42364. parent::__construct( $manager, $id, $args ); } /** * Render the control's content. * - * @since 4.3.0 - * @deprecated 4.9.0 + * @since WP-4.3.0 */ public function render_content() { - _deprecated_function( __METHOD__, '4.9.0' ); ?> diff --git a/wp-includes/customize/class-wp-customize-new-menu-section.php b/wp-includes/customize/class-wp-customize-new-menu-section.php index 869b221..da416b7 100644 --- a/wp-includes/customize/class-wp-customize-new-menu-section.php +++ b/wp-includes/customize/class-wp-customize-new-menu-section.php @@ -4,17 +4,15 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 - * @deprecated 4.9.0 This file is no longer used as of the menu creation UX introduced in #40104. + * @since WP-4.4.0 + * @deprecated WP-4.9.0 This file is no longer used as of the menu creation UX introduced in https://core.trac.wordpress.org/ticket/40104. */ -_deprecated_file( basename( __FILE__ ), '4.9.0' ); - /** * Customize Menu Section Class * - * @since 4.3.0 - * @deprecated 4.9.0 This class is no longer used as of the menu creation UX introduced in #40104. + * @since WP-4.3.0 + * @deprecated WP-4.9.0 This class is no longer used as of the menu creation UX introduced in https://core.trac.wordpress.org/ticket/40104. * * @see WP_Customize_Section */ @@ -23,7 +21,7 @@ class WP_Customize_New_Menu_Section extends WP_Customize_Section { /** * Control type. * - * @since 4.3.0 + * @since WP-4.3.0 * @var string */ public $type = 'new_menu'; @@ -33,26 +31,23 @@ class WP_Customize_New_Menu_Section extends WP_Customize_Section { * * Any supplied $args override class property defaults. * - * @since 4.9.0 - * @deprecated 4.9.0 + * @since WP-4.9.0 * * @param WP_Customize_Manager $manager Customizer bootstrap instance. - * @param string $id A specific ID of the section. + * @param string $id An specific ID of the section. * @param array $args Section arguments. */ public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) { - _deprecated_function( __METHOD__, '4.9.0' ); + _deprecated_file( basename( __FILE__ ), 'WP-4.9.0' ); // @todo Move this outside of class in WP-5.0, and remove its require_once() from class-wp-customize-section.php. See https://core.trac.wordpress.org/ticket/42364. parent::__construct( $manager, $id, $args ); } /** * Render the section, and the controls that have been added to it. * - * @since 4.3.0 - * @deprecated 4.9.0 + * @since WP-4.3.0 */ protected function render() { - _deprecated_function( __METHOD__, '4.9.0' ); ?>
      17. - + <# } #> <# } else { #>
        - <# if ( data.canUpload ) { #> - - <# } #> +
        + button_labels['placeholder']; ?> +
        <# if ( data.defaultAttachment ) { #> <# } #> + <# if ( data.canUpload ) { #> + + <# } #>
        <# } #> diff --git a/wp-includes/customize/class-wp-customize-theme-control.php b/wp-includes/customize/class-wp-customize-theme-control.php index e853fe2..7c57026 100644 --- a/wp-includes/customize/class-wp-customize-theme-control.php +++ b/wp-includes/customize/class-wp-customize-theme-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Theme Control class. * - * @since 4.2.0 + * @since WP-4.2.0 * * @see WP_Customize_Control */ @@ -19,7 +19,7 @@ class WP_Customize_Theme_Control extends WP_Customize_Control { /** * Customize control type. * - * @since 4.2.0 + * @since WP-4.2.0 * @var string */ public $type = 'theme'; @@ -27,7 +27,7 @@ class WP_Customize_Theme_Control extends WP_Customize_Control { /** * Theme object. * - * @since 4.2.0 + * @since WP-4.2.0 * @var WP_Theme */ public $theme; @@ -35,7 +35,7 @@ class WP_Customize_Theme_Control extends WP_Customize_Control { /** * Refresh the parameters passed to the JavaScript via JSON. * - * @since 4.2.0 + * @since WP-4.2.0 * * @see WP_Customize_Control::to_json() */ @@ -47,23 +47,23 @@ public function to_json() { /** * Don't render the control content from PHP, as it's rendered via JS on load. * - * @since 4.2.0 + * @since WP-4.2.0 */ public function render_content() {} /** * Render a JS template for theme display. * - * @since 4.2.0 + * @since WP-4.2.0 */ public function content_template() { - /* translators: %s: Theme name. */ + /* translators: %s: theme name */ $details_label = sprintf( __( 'Details for theme: %s' ), '{{ data.theme.name }}' ); - /* translators: %s: Theme name. */ + /* translators: %s: theme name */ $customize_label = sprintf( __( 'Customize theme: %s' ), '{{ data.theme.name }}' ); - /* translators: %s: Theme name. */ + /* translators: %s: theme name */ $preview_label = sprintf( __( 'Live preview theme: %s' ), '{{ data.theme.name }}' ); - /* translators: %s: Theme name. */ + /* translators: %s: theme name */ $install_label = sprintf( __( 'Install and preview theme: %s' ), '{{ data.theme.name }}' ); ?> <# if ( data.theme.active ) { #> @@ -74,7 +74,7 @@ public function content_template() { <# if ( data.theme.screenshot && data.theme.screenshot[0] ) { #>
        - +
        <# } else { #>
        @@ -84,7 +84,7 @@ public function content_template() {
        @@ -107,19 +107,15 @@ public function content_template() {

        <# } else { #> -
        +

        <# if ( ! data.theme.updateResponse.compatibleWP && ! data.theme.updateResponse.compatiblePHP ) { #> Please update ClassicPress, and then learn more about updating PHP.' ), + ' ' . __( 'Please update WordPress, and then learn more about updating PHP.' ), self_admin_url( 'update-core.php' ), esc_url( wp_get_update_php_url() ) ); @@ -127,7 +123,7 @@ public function content_template() { } elseif ( current_user_can( 'update_core' ) ) { printf( /* translators: %s: URL to WordPress Updates screen. */ - ' ' . __( 'Please update ClassicPress.' ), + ' ' . __( 'Please update WordPress.' ), self_admin_url( 'update-core.php' ) ); } elseif ( current_user_can( 'update_php' ) ) { @@ -141,26 +137,18 @@ public function content_template() { ?> <# } else if ( ! data.theme.updateResponse.compatibleWP ) { #> Please update ClassicPress.' ), + ' ' . __( 'Please update WordPress.' ), self_admin_url( 'update-core.php' ) ); } ?> <# } else if ( ! data.theme.updateResponse.compatiblePHP ) { #> <# } #> <# } #> - - <# if ( ! data.theme.compatibleWP || ! data.theme.compatiblePHP || data.theme.compatibleCP === false ) { #> -

        - <# if ( ! data.theme.compatibleWP && ! data.theme.compatiblePHP ) { #> - Please update ClassicPress, and then learn more about updating PHP.' ), - self_admin_url( 'update-core.php' ), - esc_url( wp_get_update_php_url() ) - ); - wp_update_php_annotation( '

        ', '' ); - } elseif ( current_user_can( 'update_core' ) ) { - printf( - /* translators: %s: URL to WordPress Updates screen. */ - ' ' . __( 'Please update ClassicPress.' ), - self_admin_url( 'update-core.php' ) - ); - } elseif ( current_user_can( 'update_php' ) ) { - printf( - /* translators: %s: URL to Update PHP page. */ - ' ' . __( 'Learn more about updating PHP.' ), - esc_url( wp_get_update_php_url() ) - ); - wp_update_php_annotation( '

        ', '' ); - } - ?> - <# } else if ( data.theme.compatibleCP === false ) { #> - - <# } else if ( ! data.theme.compatibleWP ) { #> - Please update ClassicPress.' ), - self_admin_url( 'update-core.php' ) - ); - } - ?> - <# } else if ( ! data.theme.compatiblePHP ) { #> + <# if ( data.theme.preferredChildName ) { #> +

        Learn more about updating PHP.' ), - esc_url( wp_get_update_php_url() ) - ); - wp_update_php_annotation( '

        ', '' ); - } + printf( + /* translators: %s: ClassicPress child theme name */ + __( 'Use the "%s" child theme instead!' ), + '{{ data.theme.preferredChildName }}' + ); ?> + + + +

        <# } #> -

        +
        <# } #> <# if ( data.theme.active ) { #>

        - {{ data.theme.name }} + Previewing: %s' ), '{{ data.theme.name }}' ); + ?>

        @@ -246,52 +197,22 @@ public function content_template() {

        <# } else if ( 'installed' === data.theme.type ) { #> - <# if ( data.theme.blockTheme ) { #> -
        -

        {{ data.theme.name }}

        -
        - <# if ( data.theme.actions.activate ) { #> - - - <# } #> -
        -
        -

        - - <# if ( data.theme.actions.activate ) { #> - activate this theme, and use the Site Editor to customize it.' ), - '{{{ data.theme.actions.activate }}}' - ); - ?> - <# } #> -

        - <# } else { #> -
        -

        {{ data.theme.name }}

        -
        - <# if ( data.theme.compatibleWP && data.theme.compatiblePHP && data.theme.compatibleCP !== false ) { #> - - <# } else { #> - - <# } #> -
        +
        +

        {{ data.theme.name }}

        +
        + <# if ( data.theme.compatibleWP && data.theme.compatiblePHP ) { #> + + <# } else { #> + + <# } #>
        -

        - <# } #> +
        +

        <# } else { #>

        {{ data.theme.name }}

        - <# if ( data.theme.compatibleWP && data.theme.compatiblePHP && data.theme.compatibleCP !== false ) { #> + <# if ( data.theme.compatibleWP && data.theme.compatiblePHP ) { #> <# } else { #> diff --git a/wp-includes/customize/class-wp-customize-themes-panel.php b/wp-includes/customize/class-wp-customize-themes-panel.php index 3f9bb6c..49ae87f 100644 --- a/wp-includes/customize/class-wp-customize-themes-panel.php +++ b/wp-includes/customize/class-wp-customize-themes-panel.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.9.0 + * @since WP-4.9.0 */ /** * Customize Themes Panel Class * - * @since 4.9.0 + * @since WP-4.9.0 * * @see WP_Customize_Panel */ @@ -19,7 +19,7 @@ class WP_Customize_Themes_Panel extends WP_Customize_Panel { /** * Panel type. * - * @since 4.9.0 + * @since WP-4.9.0 * @var string */ public $type = 'themes'; @@ -27,11 +27,11 @@ class WP_Customize_Themes_Panel extends WP_Customize_Panel { /** * An Underscore (JS) template for rendering this panel's container. * - * The themes panel renders a custom panel heading with the active theme and a switch themes button. + * The themes panel renders a custom panel heading with the current theme and a switch themes button. * * @see WP_Customize_Panel::print_template() * - * @since 4.9.0 + * @since WP-4.9.0 */ protected function render_template() { ?> @@ -60,37 +60,24 @@ protected function render_template() { * Class variables for this panel class are available in the `data` JS object; * export custom variables by overriding WP_Customize_Panel::json(). * - * @since 4.9.0 + * @since WP-4.9.0 * * @see WP_Customize_Panel::print_template() */ protected function content_template() { ?>
      18. - +
        ' . __( 'Themes' ) . '' - ); // Separate strings for consistency with other panels. + /* translators: %s: themes panel title in the Customizer */ + echo sprintf( __( 'You are browsing %s' ), '' . __( 'Themes' ) . '' ); // Separate strings for consistency with other panels. ?> <# if ( data.description ) { #> - + <# } #>
        diff --git a/wp-includes/customize/class-wp-customize-themes-section.php b/wp-includes/customize/class-wp-customize-themes-section.php index 0d3b3fc..1bf7657 100644 --- a/wp-includes/customize/class-wp-customize-themes-section.php +++ b/wp-includes/customize/class-wp-customize-themes-section.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,7 +12,7 @@ * * A UI container for theme controls, which are displayed within sections. * - * @since 4.2.0 + * @since WP-4.2.0 * * @see WP_Customize_Section */ @@ -21,7 +21,7 @@ class WP_Customize_Themes_Section extends WP_Customize_Section { /** * Section type. * - * @since 4.2.0 + * @since WP-4.2.0 * @var string */ public $type = 'themes'; @@ -31,7 +31,7 @@ class WP_Customize_Themes_Section extends WP_Customize_Section { * * Defines the type of themes to load (installed, wporg, etc.). * - * @since 4.9.0 + * @since WP-4.9.0 * @var string */ public $action = ''; @@ -42,7 +42,7 @@ class WP_Customize_Themes_Section extends WP_Customize_Section { * Determines whether filters are applied to loaded (local) themes or by initiating a new remote query (remote). * When filtering is local, the initial themes query is not paginated by default. * - * @since 4.9.0 + * @since WP-4.9.0 * @var string */ public $filter_type = 'local'; @@ -50,7 +50,7 @@ class WP_Customize_Themes_Section extends WP_Customize_Section { /** * Get section parameters for JS. * - * @since 4.9.0 + * @since WP-4.9.0 * @return array Exported parameters. */ public function json() { @@ -66,13 +66,13 @@ public function json() { * * The template is only rendered by PHP once, so all actions are prepared at once on the server side. * - * @since 4.9.0 + * @since WP-4.9.0 */ protected function render_template() { ?>
      19. - +
        @@ -81,24 +81,14 @@ protected function render_template() { filter_bar_content_template(); ?>
        filter_drawer_content_template(); ?> - +

        %s', __( 'Search WordPress.org themes' ) ) ); @@ -117,52 +107,32 @@ protected function render_template() { * The template is only rendered by PHP once, so all actions are prepared at once on the server side. * The filter bar container is rendered by @see `render_template()`. * - * @since 4.9.0 + * @since WP-4.9.0 */ protected function filter_bar_content_template() { ?> <# if ( 'wporg' === data.action ) { #>

        - + - - - +
        <# } else { #>
        - - + + - - - +
        <# } #>
        @@ -181,12 +151,10 @@ protected function filter_bar_content_template() { * * The filter bar container is rendered by @see `render_template()`. * - * @since 4.9.0 + * @since WP-4.9.0 */ protected function filter_drawer_content_template() { - // @todo Use the .org API instead of the local core feature list. - // The .org API is currently outdated and will be reconciled when the .org themes directory is next redesigned. - $feature_list = get_theme_feature_list( false ); + $feature_list = get_theme_feature_list( false ); // @todo: Use the .org API instead of the local core feature list. The .org API is currently outdated and will be reconciled when the .org themes directory is next redesigned. ?> <# if ( 'wporg' === data.action ) { #>
        @@ -195,7 +163,7 @@ protected function filter_drawer_content_template() {
        $feature_name ) : ?> - +
        diff --git a/wp-includes/customize/class-wp-customize-upload-control.php b/wp-includes/customize/class-wp-customize-upload-control.php index 61621c6..0b8d14b 100644 --- a/wp-includes/customize/class-wp-customize-upload-control.php +++ b/wp-includes/customize/class-wp-customize-upload-control.php @@ -4,49 +4,28 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-4.4.0 */ /** * Customize Upload Control Class. * - * @since 3.4.0 + * @since WP-3.4.0 * * @see WP_Customize_Media_Control */ class WP_Customize_Upload_Control extends WP_Customize_Media_Control { - /** - * Control type. - * - * @since 3.4.0 - * @var string - */ - public $type = 'upload'; - - /** - * Media control mime type. - * - * @since 4.1.0 - * @var string - */ - public $mime_type = ''; - - /** - * Button labels. - * - * @since 4.1.0 - * @var array - */ + public $type = 'upload'; + public $mime_type = ''; public $button_labels = array(); - - public $removed = ''; // Unused. - public $context; // Unused. - public $extensions = array(); // Unused. + public $removed = ''; // unused + public $context; // unused + public $extensions = array(); // unused /** * Refresh the parameters passed to the JavaScript via JSON. * - * @since 3.4.0 + * @since WP-3.4.0 * * @uses WP_Customize_Media_Control::to_json() */ diff --git a/wp-includes/customize/class-wp-widget-area-customize-control.php b/wp-includes/customize/class-wp-widget-area-customize-control.php index 8063ef2..bc2cc2b 100644 --- a/wp-includes/customize/class-wp-widget-area-customize-control.php +++ b/wp-includes/customize/class-wp-widget-area-customize-control.php @@ -4,13 +4,13 @@ * * @package ClassicPress * @subpackage Customize - * @since 4.4.0 + * @since WP-3.4.0 */ /** * Widget Area Customize Control class. * - * @since 3.9.0 + * @since WP-3.9.0 * * @see WP_Customize_Control */ @@ -19,7 +19,7 @@ class WP_Widget_Area_Customize_Control extends WP_Customize_Control { /** * Customize control type. * - * @since 3.9.0 + * @since WP-3.9.0 * @var string */ public $type = 'sidebar_widgets'; @@ -27,7 +27,7 @@ class WP_Widget_Area_Customize_Control extends WP_Customize_Control { /** * Sidebar ID. * - * @since 3.9.0 + * @since WP-3.9.0 * @var int|string */ public $sidebar_id; @@ -35,7 +35,7 @@ class WP_Widget_Area_Customize_Control extends WP_Customize_Control { /** * Refreshes the parameters passed to the JavaScript via JSON. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function to_json() { parent::to_json(); @@ -48,7 +48,7 @@ public function to_json() { /** * Renders the control's content. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function render_content() { $id = 'reorder-widgets-desc-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id ); @@ -60,12 +60,7 @@ public function render_content() { -

        - -

        +

        widget_id ]; if ( ! isset( $widget['params'][0] ) ) { @@ -123,14 +68,14 @@ public function to_json() { /** * Override render_content to be no-op since content is exported via to_json for deferred embedding. * - * @since 3.9.0 + * @since WP-3.9.0 */ public function render_content() {} /** * Whether the current widget is rendered on the page. * - * @since 4.0.0 + * @since WP-4.0.0 * * @return bool Whether the widget is rendered. */ diff --git a/wp-includes/date.php b/wp-includes/date.php index 8d034dd..c3f0c01 100644 --- a/wp-includes/date.php +++ b/wp-includes/date.php @@ -4,11 +4,11 @@ * * This file is deprecated, use 'wp-includes/class-wp-date-query.php' instead. * - * @deprecated 5.3.0 + * @deprecated WP-5.3.0 * @package ClassicPress */ -_deprecated_file( basename( __FILE__ ), '5.3.0', 'wp-includes/class-wp-date-query.php' ); +_deprecated_file( basename( __FILE__ ), 'WP-5.3.0', 'wp-includes/class-wp-date-query.php' ); /** WP_Date_Query class */ require_once ABSPATH . 'wp-includes/class-wp-date-query.php'; diff --git a/wp-includes/default-constants.php b/wp-includes/default-constants.php index fd629bf..33a85dc 100644 --- a/wp-includes/default-constants.php +++ b/wp-includes/default-constants.php @@ -10,28 +10,23 @@ * * @see wp_debug_mode() * - * @since 3.0.0 + * @since WP-3.0.0 * * @global int $blog_id The current site ID. * @global string $wp_version The WordPress version string. */ function wp_initial_constants() { - global $blog_id, $wp_version, $cp_version; + global $blog_id; /**#@+ * Constants for expressing human-readable data sizes in their respective number of bytes. * - * @since 4.4.0 - * @since 6.0.0 `PB_IN_BYTES`, `EB_IN_BYTES`, `ZB_IN_BYTES`, and `YB_IN_BYTES` were added. + * @since WP-4.4.0 */ define( 'KB_IN_BYTES', 1024 ); define( 'MB_IN_BYTES', 1024 * KB_IN_BYTES ); define( 'GB_IN_BYTES', 1024 * MB_IN_BYTES ); define( 'TB_IN_BYTES', 1024 * GB_IN_BYTES ); - define( 'PB_IN_BYTES', 1024 * TB_IN_BYTES ); - define( 'EB_IN_BYTES', 1024 * PB_IN_BYTES ); - define( 'ZB_IN_BYTES', 1024 * EB_IN_BYTES ); - define( 'YB_IN_BYTES', 1024 * ZB_IN_BYTES ); /**#@-*/ // Start of run timestamp. @@ -74,25 +69,21 @@ function wp_initial_constants() { } if ( ! defined( 'WP_CONTENT_DIR' ) ) { - define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // No trailing slash, full paths only - WP_CONTENT_URL is defined further down. + define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' ); // no trailing slash, full paths only - WP_CONTENT_URL is defined further down } - // Add define( 'WP_DEBUG', true ); to wp-config.php to enable display of notices during development. + // Add define('WP_DEBUG', true); to wp-config.php to enable display of notices during development. if ( ! defined( 'WP_DEBUG' ) ) { - if ( 'development' === wp_get_environment_type() ) { - define( 'WP_DEBUG', true ); - } else { - define( 'WP_DEBUG', false ); - } + define( 'WP_DEBUG', false ); } - // Add define( 'WP_DEBUG_DISPLAY', null ); to wp-config.php to use the globally configured setting - // for 'display_errors' and not force errors to be displayed. Use false to force 'display_errors' off. + // Add define('WP_DEBUG_DISPLAY', null); to wp-config.php use the globally configured setting for + // display_errors and not force errors to be displayed. Use false to force display_errors off. if ( ! defined( 'WP_DEBUG_DISPLAY' ) ) { define( 'WP_DEBUG_DISPLAY', true ); } - // Add define( 'WP_DEBUG_LOG', true ); to enable error logging to wp-content/debug.log. + // Add define('WP_DEBUG_LOG', true); to enable error logging to wp-content/debug.log. if ( ! defined( 'WP_DEBUG_LOG' ) ) { define( 'WP_DEBUG_LOG', false ); } @@ -101,12 +92,10 @@ function wp_initial_constants() { define( 'WP_CACHE', false ); } - // Add define( 'SCRIPT_DEBUG', true ); to wp-config.php to enable loading of non-minified, + // Add define('SCRIPT_DEBUG', true); to wp-config.php to enable loading of non-minified, // non-concatenated scripts and stylesheets. if ( ! defined( 'SCRIPT_DEBUG' ) ) { - // Include an unmodified $wp_version. - require ABSPATH . WPINC . '/version.php'; - if ( ! empty( $cp_version ) ) { + if ( ! empty( $GLOBALS['cp_version'] ) && function_exists( 'classicpress_is_dev_install' ) ) { $develop_src = classicpress_is_dev_install(); } else { $develop_src = false; @@ -126,7 +115,7 @@ function wp_initial_constants() { define( 'SHORTINIT', false ); } - // Constants for features added to WP that should short-circuit their plugin implementations. + // Constants for features added to WP that should short-circuit their plugin implementations define( 'WP_FEATURE_BETTER_PASSWORDS', true ); /**#@+ @@ -137,10 +126,10 @@ function wp_initial_constants() { * For example, MONTH_IN_SECONDS wrongly assumes every month has 30 days and * YEAR_IN_SECONDS does not take leap years into account. * - * If you need more accuracy please consider using the DateTime class (https://www.php.net/manual/en/class.datetime.php). + * If you need more accuracy please consider using the DateTime class (https://secure.php.net/manual/en/class.datetime.php). * - * @since 3.5.0 - * @since 4.4.0 Introduced `MONTH_IN_SECONDS`. + * @since WP-3.5.0 + * @since WP-4.4.0 Introduced `MONTH_IN_SECONDS`. */ define( 'MINUTE_IN_SECONDS', 60 ); define( 'HOUR_IN_SECONDS', 60 * MINUTE_IN_SECONDS ); @@ -152,39 +141,39 @@ function wp_initial_constants() { } /** - * Defines plugin directory ClassicPress constants. + * Defines plugin directory ClassicPress constants * * Defines must-use plugin directory constants, which may be overridden in the sunrise.php drop-in * - * @since 3.0.0 + * @since WP-3.0.0 */ function wp_plugin_directory_constants() { if ( ! defined( 'WP_CONTENT_URL' ) ) { - define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' ); // Full URL - WP_CONTENT_DIR is defined further up. + define( 'WP_CONTENT_URL', get_option( 'siteurl' ) . '/wp-content' ); // full url - WP_CONTENT_DIR is defined further up } /** * Allows for the plugins directory to be moved from the default location. * - * @since 2.6.0 + * @since WP-2.6.0 */ if ( ! defined( 'WP_PLUGIN_DIR' ) ) { - define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // Full path, no trailing slash. + define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); // full path, no trailing slash } /** * Allows for the plugins directory to be moved from the default location. * - * @since 2.6.0 + * @since WP-2.6.0 */ if ( ! defined( 'WP_PLUGIN_URL' ) ) { - define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // Full URL, no trailing slash. + define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/plugins' ); // full url, no trailing slash } /** * Allows for the plugins directory to be moved from the default location. * - * @since 2.1.0 + * @since WP-2.1.0 * @deprecated */ if ( ! defined( 'PLUGINDIR' ) ) { @@ -194,25 +183,25 @@ function wp_plugin_directory_constants() { /** * Allows for the mu-plugins directory to be moved from the default location. * - * @since 2.8.0 + * @since WP-2.8.0 */ if ( ! defined( 'WPMU_PLUGIN_DIR' ) ) { - define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // Full path, no trailing slash. + define( 'WPMU_PLUGIN_DIR', WP_CONTENT_DIR . '/mu-plugins' ); // full path, no trailing slash } /** * Allows for the mu-plugins directory to be moved from the default location. * - * @since 2.8.0 + * @since WP-2.8.0 */ if ( ! defined( 'WPMU_PLUGIN_URL' ) ) { - define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // Full URL, no trailing slash. + define( 'WPMU_PLUGIN_URL', WP_CONTENT_URL . '/mu-plugins' ); // full url, no trailing slash } /** * Allows for the mu-plugins directory to be moved from the default location. * - * @since 2.8.0 + * @since WP-2.8.0 * @deprecated */ if ( ! defined( 'MUPLUGINDIR' ) ) { @@ -221,17 +210,16 @@ function wp_plugin_directory_constants() { } /** - * Defines cookie-related ClassicPress constants + * Defines cookie related ClassicPress constants * * Defines constants after multisite is loaded. - * - * @since 3.0.0 + * @since WP-3.0.0 */ function wp_cookie_constants() { /** - * Used to guarantee unique hash cookies. + * Used to guarantee unique hash cookies * - * @since 1.5.0 + * @since WP-1.5.0 */ if ( ! defined( 'COOKIEHASH' ) ) { $siteurl = get_site_option( 'siteurl' ); @@ -243,98 +231,91 @@ function wp_cookie_constants() { } /** - * @since 2.0.0 + * @since WP-2.0.0 */ if ( ! defined( 'USER_COOKIE' ) ) { define( 'USER_COOKIE', 'wordpressuser_' . COOKIEHASH ); } /** - * @since 2.0.0 + * @since WP-2.0.0 */ if ( ! defined( 'PASS_COOKIE' ) ) { define( 'PASS_COOKIE', 'wordpresspass_' . COOKIEHASH ); } /** - * @since 2.5.0 + * @since WP-2.5.0 */ if ( ! defined( 'AUTH_COOKIE' ) ) { define( 'AUTH_COOKIE', 'wordpress_' . COOKIEHASH ); } /** - * @since 2.6.0 + * @since WP-2.6.0 */ if ( ! defined( 'SECURE_AUTH_COOKIE' ) ) { define( 'SECURE_AUTH_COOKIE', 'wordpress_sec_' . COOKIEHASH ); } /** - * @since 2.6.0 + * @since WP-2.6.0 */ if ( ! defined( 'LOGGED_IN_COOKIE' ) ) { define( 'LOGGED_IN_COOKIE', 'wordpress_logged_in_' . COOKIEHASH ); } /** - * @since 2.3.0 + * @since WP-2.3.0 */ if ( ! defined( 'TEST_COOKIE' ) ) { define( 'TEST_COOKIE', 'wordpress_test_cookie' ); } /** - * @since 1.2.0 + * @since WP-1.2.0 */ if ( ! defined( 'COOKIEPATH' ) ) { define( 'COOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'home' ) . '/' ) ); } /** - * @since 1.5.0 + * @since WP-1.5.0 */ if ( ! defined( 'SITECOOKIEPATH' ) ) { define( 'SITECOOKIEPATH', preg_replace( '|https?://[^/]+|i', '', get_option( 'siteurl' ) . '/' ) ); } /** - * @since 2.6.0 + * @since WP-2.6.0 */ if ( ! defined( 'ADMIN_COOKIE_PATH' ) ) { define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . 'wp-admin' ); } /** - * @since 2.6.0 + * @since WP-2.6.0 */ if ( ! defined( 'PLUGINS_COOKIE_PATH' ) ) { define( 'PLUGINS_COOKIE_PATH', preg_replace( '|https?://[^/]+|i', '', WP_PLUGIN_URL ) ); } /** - * @since 2.0.0 + * @since WP-2.0.0 */ if ( ! defined( 'COOKIE_DOMAIN' ) ) { define( 'COOKIE_DOMAIN', false ); } - - if ( ! defined( 'RECOVERY_MODE_COOKIE' ) ) { - /** - * @since 5.2.0 - */ - define( 'RECOVERY_MODE_COOKIE', 'wordpress_rec_' . COOKIEHASH ); - } } /** - * Defines SSL-related ClassicPress constants. + * Defines cookie related ClassicPress constants * - * @since 3.0.0 + * @since WP-3.0.0 */ function wp_ssl_constants() { /** - * @since 2.6.0 + * @since WP-2.6.0 */ if ( ! defined( 'FORCE_SSL_ADMIN' ) ) { if ( 'https' === parse_url( get_option( 'siteurl' ), PHP_URL_SCHEME ) ) { @@ -346,8 +327,8 @@ function wp_ssl_constants() { force_ssl_admin( FORCE_SSL_ADMIN ); /** - * @since 2.6.0 - * @deprecated 4.0.0 + * @since WP-2.6.0 + * @deprecated WP-4.0.0 */ if ( defined( 'FORCE_SSL_LOGIN' ) && FORCE_SSL_LOGIN ) { force_ssl_admin( true ); @@ -355,20 +336,20 @@ function wp_ssl_constants() { } /** - * Defines functionality-related ClassicPress constants + * Defines functionality related ClassicPress constants * - * @since 3.0.0 + * @since WP-3.0.0 */ function wp_functionality_constants() { /** - * @since 2.5.0 + * @since WP-2.5.0 */ if ( ! defined( 'AUTOSAVE_INTERVAL' ) ) { - define( 'AUTOSAVE_INTERVAL', MINUTE_IN_SECONDS ); + define( 'AUTOSAVE_INTERVAL', 60 ); } /** - * @since 2.9.0 + * @since WP-2.9.0 */ if ( ! defined( 'EMPTY_TRASH_DAYS' ) ) { define( 'EMPTY_TRASH_DAYS', 30 ); @@ -379,43 +360,41 @@ function wp_functionality_constants() { } /** - * @since 3.3.0 + * @since WP-3.3.0 */ if ( ! defined( 'WP_CRON_LOCK_TIMEOUT' ) ) { - define( 'WP_CRON_LOCK_TIMEOUT', MINUTE_IN_SECONDS ); + define( 'WP_CRON_LOCK_TIMEOUT', 60 ); // In seconds } } /** - * Defines templating-related ClassicPress constants. + * Defines templating related ClassicPress constants * - * @since 3.0.0 + * @since WP-3.0.0 */ function wp_templating_constants() { /** - * Filesystem path to the current active template directory. - * - * @since 1.5.0 + * Filesystem path to the current active template directory + * @since WP-1.5.0 */ define( 'TEMPLATEPATH', get_template_directory() ); /** - * Filesystem path to the current active template stylesheet directory. - * - * @since 2.1.0 + * Filesystem path to the current active template stylesheet directory + * @since WP-2.1.0 */ define( 'STYLESHEETPATH', get_stylesheet_directory() ); /** * Slug of the default theme for this installation. * Used as the default theme when installing new sites. - * It will be used as the fallback if the active theme doesn't exist. - * - * @since 3.0.0 + * It will be used as the fallback if the current theme doesn't exist. * + * @since WP-3.0.0 * @see WP_Theme::get_core_default_theme() */ if ( ! defined( 'WP_DEFAULT_THEME' ) ) { - define( 'WP_DEFAULT_THEME', 'twentytwentythree' ); + define( 'WP_DEFAULT_THEME', 'classicpress-twentyseventeen' ); } + } diff --git a/wp-includes/default-filters.php b/wp-includes/default-filters.php index 4099a84..dcbcaf4 100644 --- a/wp-includes/default-filters.php +++ b/wp-includes/default-filters.php @@ -4,27 +4,22 @@ * of the ClassicPress hooks. * * If you need to remove a default hook, this file will - * give you the priority to use for removing the hook. + * give you the priority for which to use to remove the + * hook. * - * Not all of the default hooks are found in this file. - * For instance, administration-related hooks are located in - * wp-admin/includes/admin-filters.php. - * - * If a hook should only be called from a specific context - * (admin area, multisite environment…), please move it - * to a more appropriate file instead. + * Not all of the default hooks are found in default-filters.php * * @package ClassicPress */ -// Strip, trim, kses, special chars for string saves. +// Strip, trim, kses, special chars for string saves foreach ( array( 'pre_term_name', 'pre_comment_author_name', 'pre_link_name', 'pre_link_target', 'pre_link_rel', 'pre_user_display_name', 'pre_user_first_name', 'pre_user_last_name', 'pre_user_nickname' ) as $filter ) { add_filter( $filter, 'sanitize_text_field' ); add_filter( $filter, 'wp_filter_kses' ); add_filter( $filter, '_wp_specialchars', 30 ); } -// Strip, kses, special chars for string display. +// Strip, kses, special chars for string display foreach ( array( 'term_name', 'comment_author_name', 'link_name', 'link_target', 'link_rel', 'user_display_name', 'user_first_name', 'user_last_name', 'user_nickname' ) as $filter ) { if ( is_admin() ) { // These are expensive. Run only on admin pages for defense in depth. @@ -34,12 +29,12 @@ add_filter( $filter, '_wp_specialchars', 30 ); } -// Kses only for textarea saves. +// Kses only for textarea saves foreach ( array( 'pre_term_description', 'pre_link_description', 'pre_link_notes', 'pre_user_description' ) as $filter ) { add_filter( $filter, 'wp_filter_kses' ); } -// Kses only for textarea admin displays. +// Kses only for textarea admin displays if ( is_admin() ) { foreach ( array( 'term_description', 'link_description', 'link_notes', 'user_description' ) as $filter ) { add_filter( $filter, 'wp_kses_data' ); @@ -47,14 +42,14 @@ add_filter( 'comment_text', 'wp_kses_post' ); } -// Email saves. +// Email saves foreach ( array( 'pre_comment_author_email', 'pre_user_email' ) as $filter ) { add_filter( $filter, 'trim' ); add_filter( $filter, 'sanitize_email' ); add_filter( $filter, 'wp_filter_kses' ); } -// Email admin display. +// Email admin display foreach ( array( 'comment_author_email', 'user_email' ) as $filter ) { add_filter( $filter, 'sanitize_email' ); if ( is_admin() ) { @@ -62,7 +57,7 @@ } } -// Save URL. +// Save URL foreach ( array( 'pre_comment_author_url', 'pre_user_url', @@ -72,11 +67,11 @@ 'pre_post_guid', ) as $filter ) { add_filter( $filter, 'wp_strip_all_tags' ); - add_filter( $filter, 'sanitize_url' ); + add_filter( $filter, 'esc_url_raw' ); add_filter( $filter, 'wp_filter_kses' ); } -// Display URL. +// Display URL foreach ( array( 'user_url', 'link_url', 'link_image', 'link_rss', 'comment_url', 'post_guid' ) as $filter ) { if ( is_admin() ) { add_filter( $filter, 'wp_strip_all_tags' ); @@ -87,84 +82,43 @@ } } -// Slugs. +// Slugs add_filter( 'pre_term_slug', 'sanitize_title' ); add_filter( 'wp_insert_post_data', '_wp_customize_changeset_filter_insert_post_data', 10, 2 ); -// Keys. +// Keys foreach ( array( 'pre_post_type', 'pre_post_status', 'pre_post_comment_status', 'pre_post_ping_status' ) as $filter ) { add_filter( $filter, 'sanitize_key' ); } -// Mime types. +// Mime types add_filter( 'pre_post_mime_type', 'sanitize_mime_type' ); add_filter( 'post_mime_type', 'sanitize_mime_type' ); -// Meta. -add_filter( 'register_meta_args', '_wp_register_meta_args_allowed_list', 10, 2 ); - -// Counts. -add_action( 'admin_init', 'wp_schedule_update_user_counts' ); -add_action( 'wp_update_user_counts', 'wp_schedule_update_user_counts', 10, 0 ); -foreach ( array( 'user_register', 'deleted_user' ) as $action ) { - add_action( $action, 'wp_maybe_update_user_counts', 10, 0 ); -} +// Meta +add_filter( 'register_meta_args', '_wp_register_meta_args_whitelist', 10, 2 ); -// Post meta. -add_action( 'added_post_meta', 'wp_cache_set_posts_last_changed' ); -add_action( 'updated_post_meta', 'wp_cache_set_posts_last_changed' ); -add_action( 'deleted_post_meta', 'wp_cache_set_posts_last_changed' ); - -// User meta. -add_action( 'added_user_meta', 'wp_cache_set_users_last_changed' ); -add_action( 'updated_user_meta', 'wp_cache_set_users_last_changed' ); -add_action( 'deleted_user_meta', 'wp_cache_set_users_last_changed' ); -add_action( 'add_user_role', 'wp_cache_set_users_last_changed' ); -add_action( 'set_user_role', 'wp_cache_set_users_last_changed' ); -add_action( 'remove_user_role', 'wp_cache_set_users_last_changed' ); - -// Term meta. -add_action( 'added_term_meta', 'wp_cache_set_terms_last_changed' ); -add_action( 'updated_term_meta', 'wp_cache_set_terms_last_changed' ); -add_action( 'deleted_term_meta', 'wp_cache_set_terms_last_changed' ); -add_filter( 'get_term_metadata', 'wp_check_term_meta_support_prefilter' ); -add_filter( 'add_term_metadata', 'wp_check_term_meta_support_prefilter' ); -add_filter( 'update_term_metadata', 'wp_check_term_meta_support_prefilter' ); -add_filter( 'delete_term_metadata', 'wp_check_term_meta_support_prefilter' ); -add_filter( 'get_term_metadata_by_mid', 'wp_check_term_meta_support_prefilter' ); -add_filter( 'update_term_metadata_by_mid', 'wp_check_term_meta_support_prefilter' ); -add_filter( 'delete_term_metadata_by_mid', 'wp_check_term_meta_support_prefilter' ); -add_filter( 'update_term_metadata_cache', 'wp_check_term_meta_support_prefilter' ); - -// Comment meta. -add_action( 'added_comment_meta', 'wp_cache_set_comments_last_changed' ); -add_action( 'updated_comment_meta', 'wp_cache_set_comments_last_changed' ); -add_action( 'deleted_comment_meta', 'wp_cache_set_comments_last_changed' ); - -// Places to balance tags on input. +// Places to balance tags on input foreach ( array( 'content_save_pre', 'excerpt_save_pre', 'comment_save_pre', 'pre_comment_content' ) as $filter ) { add_filter( $filter, 'convert_invalid_entities' ); add_filter( $filter, 'balanceTags', 50 ); } -// Add proper rel values for links with target. -add_action( 'init', 'wp_init_targeted_link_rel_filters' ); - // Format strings for display. -foreach ( array( 'comment_author', 'term_name', 'link_name', 'link_description', 'link_notes', 'bloginfo', 'wp_title', 'document_title', 'widget_title' ) as $filter ) { +foreach ( array( 'comment_author', 'term_name', 'link_name', 'link_description', 'link_notes', 'bloginfo', 'wp_title', 'widget_title' ) as $filter ) { add_filter( $filter, 'wptexturize' ); add_filter( $filter, 'convert_chars' ); add_filter( $filter, 'esc_html' ); } -// Format ClassicPress. -foreach ( array( 'the_content', 'the_title', 'wp_title', 'document_title' ) as $filter ) { +// Format ClassicPress +foreach ( array( 'the_content', 'the_title', 'wp_title' ) as $filter ) { add_filter( $filter, 'capital_P_dangit', 11 ); } add_filter( 'comment_text', 'capital_P_dangit', 31 ); -// Format titles. -foreach ( array( 'single_post_title', 'single_cat_title', 'single_tag_title', 'single_month_title', 'nav_menu_attr_title', 'nav_menu_description' ) as $filter ) { +// Format titles +foreach ( array( 'single_post_title', 'single_cat_title', 'single_tag_title', 'nav_menu_attr_title', 'nav_menu_description' ) as $filter ) { add_filter( $filter, 'wptexturize' ); add_filter( $filter, 'strip_tags' ); } @@ -177,14 +131,14 @@ add_filter( $filter, 'shortcode_unautop' ); } -// Format for RSS. +// Format for RSS add_filter( 'term_name_rss', 'convert_chars' ); -// Pre save hierarchy. +// Pre save hierarchy add_filter( 'wp_insert_post_parent', 'wp_check_post_hierarchy_for_loops', 10, 2 ); add_filter( 'wp_update_term_parent', 'wp_check_term_hierarchy_for_loops', 10, 3 ); -// Display filters. +// Display filters add_filter( 'the_title', 'wptexturize' ); add_filter( 'the_title', 'convert_chars' ); add_filter( 'the_title', 'trim' ); @@ -195,7 +149,6 @@ add_filter( 'the_content', 'shortcode_unautop' ); add_filter( 'the_content', 'prepend_attachment' ); add_filter( 'the_content', 'wp_filter_content_tags' ); -add_filter( 'the_content', 'wp_replace_insecure_home_url' ); add_filter( 'the_excerpt', 'wptexturize' ); add_filter( 'the_excerpt', 'convert_smilies' ); @@ -203,7 +156,6 @@ add_filter( 'the_excerpt', 'wpautop' ); add_filter( 'the_excerpt', 'shortcode_unautop' ); add_filter( 'the_excerpt', 'wp_filter_content_tags' ); -add_filter( 'the_excerpt', 'wp_replace_insecure_home_url' ); add_filter( 'get_the_excerpt', 'wp_trim_excerpt', 10, 2 ); add_filter( 'the_post_thumbnail_caption', 'wptexturize' ); @@ -230,12 +182,11 @@ add_filter( 'widget_text_content', 'wpautop' ); add_filter( 'widget_text_content', 'shortcode_unautop' ); add_filter( 'widget_text_content', 'wp_filter_content_tags' ); -add_filter( 'widget_text_content', 'wp_replace_insecure_home_url' ); add_filter( 'widget_text_content', 'do_shortcode', 11 ); // Runs after wpautop(); note that $post global will be null when shortcodes run. -add_filter( 'wp_get_custom_css', 'wp_replace_insecure_home_url' ); +add_filter( 'date_i18n', 'wp_maybe_decline_date' ); -// RSS filters. +// RSS filters add_filter( 'the_title_rss', 'strip_tags' ); add_filter( 'the_title_rss', 'ent2ncr', 8 ); add_filter( 'the_title_rss', 'esc_html' ); @@ -252,45 +203,27 @@ add_filter( 'the_author', 'ent2ncr', 8 ); add_filter( 'the_guid', 'esc_url' ); -// Email filters. +// Email filters add_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); -// Robots filters. -add_filter( 'wp_robots', 'wp_robots_noindex' ); -add_filter( 'wp_robots', 'wp_robots_noindex_embeds' ); -add_filter( 'wp_robots', 'wp_robots_noindex_search' ); -add_filter( 'wp_robots', 'wp_robots_max_image_preview_large' ); - -// Mark site as no longer fresh. -foreach ( - array( - 'publish_post', - 'publish_page', - 'wp_ajax_save-widget', - 'wp_ajax_widgets-order', - 'customize_save_after', - 'rest_after_save_widget', - 'rest_delete_widget', - 'rest_save_sidebar', - ) as $action -) { +// Mark site as no longer fresh +foreach ( array( 'publish_post', 'publish_page', 'wp_ajax_save-widget', 'wp_ajax_widgets-order', 'customize_save_after' ) as $action ) { add_action( $action, '_delete_option_fresh_site', 0 ); } -// Misc filters. +// Misc filters add_filter( 'option_ping_sites', 'privacy_ping_filter' ); -add_filter( 'option_blog_charset', '_wp_specialchars' ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop. +add_filter( 'option_blog_charset', '_wp_specialchars' ); // IMPORTANT: This must not be wp_specialchars() or esc_html() or it'll cause an infinite loop add_filter( 'option_blog_charset', '_canonical_charset' ); add_filter( 'option_home', '_config_wp_home' ); add_filter( 'option_siteurl', '_config_wp_siteurl' ); add_filter( 'tiny_mce_before_init', '_mce_set_direction' ); -add_filter( 'tiny_mce_before_init', '_mce_set_element_format' ); add_filter( 'teeny_mce_before_init', '_mce_set_direction' ); add_filter( 'pre_kses', 'wp_pre_kses_less_than' ); add_filter( 'sanitize_title', 'sanitize_title_with_dashes', 10, 3 ); add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 4 ); add_filter( 'comment_flood_filter', 'wp_throttle_comment_flood', 10, 3 ); -add_filter( 'pre_comment_content', 'wp_rel_ugc', 15 ); +add_filter( 'pre_comment_content', 'wp_rel_nofollow', 15 ); add_filter( 'comment_email', 'antispambot' ); add_filter( 'option_tag_base', '_wp_filter_taxonomy_base' ); add_filter( 'option_category_base', '_wp_filter_taxonomy_base' ); @@ -299,6 +232,7 @@ 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' ); add_filter( 'pingback_ping_source_uri', 'pingback_ping_source_uri' ); add_filter( 'xmlrpc_pingback_error', 'xmlrpc_pingback_error' ); add_filter( 'title_save_pre', 'trim' ); @@ -316,22 +250,20 @@ add_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' ); add_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' ); add_action( 'auth_cookie_valid', 'rest_cookie_collect_status' ); -add_action( 'application_password_failed_authentication', 'rest_application_password_collect_status' ); -add_action( 'application_password_did_authenticate', 'rest_application_password_collect_status', 10, 2 ); -add_filter( 'rest_authentication_errors', 'rest_application_password_check_errors', 90 ); add_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 ); -// Actions. +// Actions add_action( 'wp_head', '_wp_render_title_tag', 1 ); add_action( 'wp_head', 'wp_enqueue_scripts', 1 ); add_action( 'wp_head', 'wp_resource_hints', 2 ); -add_action( 'wp_head', 'wp_preload_resources', 1 ); add_action( 'wp_head', 'feed_links', 2 ); add_action( 'wp_head', 'feed_links_extra', 3 ); add_action( 'wp_head', 'rsd_link' ); +add_action( 'wp_head', 'wlwmanifest_link' ); +add_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); add_action( 'wp_head', 'locale_stylesheet' ); add_action( 'publish_future_post', 'check_and_publish_future_post', 10, 1 ); -add_action( 'wp_head', 'wp_robots', 1 ); +add_action( 'wp_head', 'noindex', 1 ); add_action( 'wp_head', 'print_emoji_detection_script', 7 ); add_action( 'wp_head', 'wp_print_styles', 8 ); add_action( 'wp_head', 'wp_print_head_scripts', 9 ); @@ -349,11 +281,10 @@ add_action( 'wp_print_styles', 'print_emoji_styles' ); if ( isset( $_GET['replytocom'] ) ) { - add_filter( 'wp_robots', 'wp_robots_no_robots' ); + add_action( 'wp_head', 'wp_no_robots' ); } -// Login actions. -add_action( 'login_head', 'wp_robots', 1 ); +// Login actions add_filter( 'login_head', 'wp_resource_hints', 8 ); add_action( 'login_head', 'wp_print_head_scripts', 9 ); add_action( 'login_head', 'print_admin_styles', 9 ); @@ -361,41 +292,28 @@ add_action( 'login_footer', 'wp_print_footer_scripts', 20 ); add_action( 'login_init', 'send_frame_options_header', 10, 0 ); -// Feed generator tags. +// Feed Generator Tags foreach ( array( 'rss2_head', 'commentsrss2_head', 'rss_head', 'rdf_header', 'atom_head', 'comments_atom_head', 'opml_head', 'app_head' ) as $action ) { add_action( $action, 'the_generator' ); } -// Feed Site Icon. +// Feed Site Icon add_action( 'atom_head', 'atom_site_icon' ); add_action( 'rss2_head', 'rss2_site_icon' ); -// WP Cron. +// WP Cron if ( ! defined( 'DOING_CRON' ) ) { add_action( 'init', 'wp_cron' ); } -// HTTPS detection. -add_action( 'init', 'wp_schedule_https_detection' ); -add_action( 'wp_https_detection', 'wp_update_https_detection_errors' ); -add_filter( 'cron_request', 'wp_cron_conditionally_prevent_sslverify', 9999 ); - -// HTTPS migration. -add_action( 'update_option_home', 'wp_update_https_migration_required', 10, 2 ); - -// 2 Actions 2 Furious. -add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 0 ); -add_action( 'do_feed_rss', 'do_feed_rss', 10, 0 ); +// 2 Actions 2 Furious +add_action( 'do_feed_rdf', 'do_feed_rdf', 10, 1 ); +add_action( 'do_feed_rss', 'do_feed_rss', 10, 1 ); add_action( 'do_feed_rss2', 'do_feed_rss2', 10, 1 ); add_action( 'do_feed_atom', 'do_feed_atom', 10, 1 ); -add_action( 'do_pings', 'do_all_pings', 10, 0 ); -add_action( 'do_all_pings', 'do_all_pingbacks', 10, 0 ); -add_action( 'do_all_pings', 'do_all_enclosures', 10, 0 ); -add_action( 'do_all_pings', 'do_all_trackbacks', 10, 0 ); -add_action( 'do_all_pings', 'generic_ping', 10, 0 ); +add_action( 'do_pings', 'do_all_pings', 10, 1 ); add_action( 'do_robots', 'do_robots' ); -add_action( 'do_favicon', 'do_favicon' ); add_action( 'set_comment_cookies', 'wp_set_comment_cookies', 10, 3 ); add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' ); add_action( 'admin_print_scripts', 'print_emoji_detection_script' ); @@ -413,8 +331,10 @@ add_action( 'transition_post_status', '_transition_post_status', 5, 3 ); 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( 'admin_init', 'send_frame_options_header', 10, 0 ); +add_action( 'welcome_panel', 'wp_welcome_panel' ); -// Privacy. +// Privacy add_action( 'user_request_action_confirmed', '_wp_privacy_account_request_confirmed' ); add_action( 'user_request_action_confirmed', '_wp_privacy_send_request_confirmation_notification', 12 ); // After request marked as completed. add_filter( 'wp_privacy_personal_data_exporters', 'wp_register_comment_personal_data_exporter' ); @@ -424,63 +344,65 @@ add_action( 'init', 'wp_schedule_delete_old_privacy_export_files' ); add_action( 'wp_privacy_delete_old_export_files', 'wp_privacy_delete_old_export_files' ); -// Cron tasks. +// Cron tasks add_action( 'wp_scheduled_delete', 'wp_scheduled_delete' ); add_action( 'wp_scheduled_auto_draft_delete', 'wp_delete_auto_drafts' ); add_action( 'importer_scheduled_cleanup', 'wp_delete_attachment' ); add_action( 'upgrader_scheduled_cleanup', 'wp_delete_attachment' ); add_action( 'delete_expired_transients', 'delete_expired_transients' ); -// Navigation menu actions. +// Navigation menu actions add_action( 'delete_post', '_wp_delete_post_menu_item' ); add_action( 'delete_term', '_wp_delete_tax_menu_item', 10, 3 ); add_action( 'transition_post_status', '_wp_auto_add_pages_to_menu', 10, 3 ); add_action( 'delete_post', '_wp_delete_customize_changeset_dependent_auto_drafts' ); -// Post Thumbnail CSS class filtering. +// Post Thumbnail CSS class filtering add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_add' ); add_action( 'end_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_remove' ); -// Redirect old slugs. +// Redirect Old Slugs add_action( 'template_redirect', 'wp_old_slug_redirect' ); add_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 ); add_action( 'attachment_updated', 'wp_check_for_changed_slugs', 12, 3 ); -// Redirect old dates. +// Redirect Old Dates add_action( 'post_updated', 'wp_check_for_changed_dates', 12, 3 ); add_action( 'attachment_updated', 'wp_check_for_changed_dates', 12, 3 ); -// Nonce check for post previews. +// Nonce check for Post Previews add_action( 'init', '_show_post_preview' ); -// Output JS to reset window.name for previews. +// Output JS to reset window.name for previews add_action( 'wp_head', 'wp_post_preview_js', 1 ); -// Timezone. +// Timezone add_filter( 'pre_option_gmt_offset', 'wp_timezone_override_offset' ); +// Admin Color Schemes +add_action( 'admin_init', 'register_admin_color_schemes', 1 ); +add_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' ); + // If the upgrade hasn't run yet, assume link manager is used. add_filter( 'default_option_link_manager_enabled', '__return_true' ); // This option no longer exists; tell plugins we always support auto-embedding. add_filter( 'pre_option_embed_autourls', '__return_true' ); -// Default settings for heartbeat. +// Default settings for heartbeat add_filter( 'heartbeat_settings', 'wp_heartbeat_settings' ); -// Check if the user is logged out. +// Check if the user is logged out add_action( 'admin_enqueue_scripts', 'wp_auth_check_load' ); add_filter( 'heartbeat_send', 'wp_auth_check' ); add_filter( 'heartbeat_nopriv_send', 'wp_auth_check' ); -// Default authentication filters. +// Default authentication filters add_filter( 'authenticate', 'wp_authenticate_username_password', 20, 3 ); add_filter( 'authenticate', 'wp_authenticate_email_password', 20, 3 ); -add_filter( 'authenticate', 'wp_authenticate_application_password', 20, 3 ); add_filter( 'authenticate', 'wp_authenticate_spam_check', 99 ); add_filter( 'determine_current_user', 'wp_validate_auth_cookie' ); add_filter( 'determine_current_user', 'wp_validate_logged_in_cookie', 20 ); -add_filter( 'determine_current_user', 'wp_validate_application_password', 20 ); // Split term updates. add_action( 'admin_init', '_wp_check_for_scheduled_split_terms' ); @@ -489,10 +411,6 @@ add_action( 'split_shared_term', '_wp_check_split_nav_menu_terms', 10, 4 ); add_action( 'wp_split_shared_term_batch', '_wp_batch_split_terms' ); -// Comment type updates. -add_action( 'admin_init', '_wp_check_for_scheduled_update_comment_type' ); -add_action( 'wp_update_comment_type_batch', '_wp_batch_update_comment_type' ); - // Email notifications. add_action( 'comment_post', 'wp_new_comment_notify_moderator' ); add_action( 'comment_post', 'wp_new_comment_notify_postauthor' ); @@ -507,14 +425,10 @@ add_action( 'rest_api_init', 'create_initial_rest_routes', 99 ); add_action( 'parse_request', 'rest_api_loaded' ); -// Sitemaps actions. -add_action( 'init', 'wp_sitemaps_get_server' ); - /** - * Filters formerly mixed into wp-includes. + * Filters formerly mixed into wp-includes */ -// Theme. -add_action( 'setup_theme', 'create_initial_theme_features', 0 ); +// Theme add_action( 'wp_loaded', '_custom_header_background_just_in_time' ); add_action( 'wp_head', '_custom_logo_header_styles' ); add_action( 'plugins_loaded', '_wp_customize_include' ); @@ -523,37 +437,35 @@ add_action( 'delete_attachment', '_delete_attachment_theme_mod' ); add_action( 'transition_post_status', '_wp_keep_alive_customize_changeset_dependent_auto_drafts', 20, 3 ); -// Calendar widget cache. +// Calendar widget cache add_action( 'save_post', 'delete_get_calendar_cache' ); add_action( 'delete_post', 'delete_get_calendar_cache' ); add_action( 'update_option_start_of_week', 'delete_get_calendar_cache' ); add_action( 'update_option_gmt_offset', 'delete_get_calendar_cache' ); -// Author. +// Author add_action( 'transition_post_status', '__clear_multi_author_cache' ); -// Post. -add_action( 'init', 'create_initial_post_types', 0 ); // Highest priority. +// Post +add_action( 'init', 'create_initial_post_types', 0 ); // highest priority add_action( 'admin_menu', '_add_post_type_submenus' ); add_action( 'before_delete_post', '_reset_front_page_settings_for_post' ); add_action( 'wp_trash_post', '_reset_front_page_settings_for_post' ); add_action( 'change_locale', 'create_initial_post_types' ); -// Post Formats. +// Post Formats add_filter( 'request', '_post_format_request' ); add_filter( 'term_link', '_post_format_link', 10, 3 ); add_filter( 'get_post_format', '_post_format_get_term' ); add_filter( 'get_terms', '_post_format_get_terms', 10, 3 ); add_filter( 'wp_get_object_terms', '_post_format_wp_get_object_terms' ); -// KSES. +// KSES add_action( 'init', 'kses_init' ); add_action( 'set_current_user', 'kses_init' ); -// Script Loader. +// Script Loader add_action( 'wp_default_scripts', 'wp_default_scripts' ); -add_action( 'wp_default_scripts', 'wp_default_packages' ); - add_action( 'wp_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 ); add_action( 'admin_enqueue_scripts', 'wp_localize_jquery_ui_datepicker', 1000 ); add_filter( 'wp_print_scripts', 'wp_just_in_time_script_localization' ); @@ -563,60 +475,55 @@ add_action( 'wp_default_styles', 'wp_default_styles' ); add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 ); -// Taxonomy. -add_action( 'init', 'create_initial_taxonomies', 0 ); // Highest priority. +// Taxonomy +add_action( 'init', 'create_initial_taxonomies', 0 ); // highest priority add_action( 'change_locale', 'create_initial_taxonomies' ); -// Canonical. +// Canonical add_action( 'template_redirect', 'redirect_canonical' ); add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 ); -// Shortcodes. -add_filter( 'the_content', 'do_shortcode', 11 ); // AFTER wpautop(). +// Shortcodes +add_filter( 'the_content', 'do_shortcode', 11 ); // AFTER wpautop() -// Media. +// Media add_action( 'wp_playlist_scripts', 'wp_playlist_scripts' ); add_action( 'customize_controls_enqueue_scripts', 'wp_plupload_default_settings' ); -add_action( 'plugins_loaded', '_wp_add_additional_image_sizes', 0 ); add_filter( 'plupload_default_settings', 'wp_show_heic_upload_error' ); -// Nav menu. +// Nav menu add_filter( 'nav_menu_item_id', '_nav_menu_item_id_use_once', 10, 2 ); -add_filter( 'nav_menu_css_class', 'wp_nav_menu_remove_menu_item_has_children_class', 10, 4 ); -// Widgets. +// Widgets add_action( 'init', 'wp_widgets_init', 1 ); -add_action( 'change_locale', array( 'WP_Widget_Media', 'reset_default_labels' ) ); -// Admin Bar. +// Admin Bar // Don't remove. Wrong way to disable. add_action( 'template_redirect', '_wp_admin_bar_init', 0 ); add_action( 'admin_init', '_wp_admin_bar_init' ); add_action( 'before_signup_header', '_wp_admin_bar_init' ); add_action( 'activate_header', '_wp_admin_bar_init' ); -add_action( 'wp_body_open', 'wp_admin_bar_render', 0 ); -add_action( 'wp_footer', 'wp_admin_bar_render', 1000 ); // Back-compat for themes not using `wp_body_open`. +add_action( 'wp_footer', 'wp_admin_bar_render', 1000 ); add_action( 'in_admin_header', 'wp_admin_bar_render', 0 ); -// Former admin filters that can also be hooked on the front end. +// Former admin filters that can also be hooked on the front end add_action( 'media_buttons', 'media_buttons' ); add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 ); add_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 ); -// Embeds. +// Embeds add_action( 'rest_api_init', 'wp_oembed_register_route' ); add_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 ); add_action( 'wp_head', 'wp_oembed_add_discovery_links' ); -add_action( 'wp_head', 'wp_oembed_add_host_js' ); // Back-compat for sites disabling oEmbed host JS by removing action. -add_filter( 'embed_oembed_html', 'wp_maybe_enqueue_oembed_host_js' ); +add_action( 'wp_head', 'wp_oembed_add_host_js' ); add_action( 'embed_head', 'enqueue_embed_scripts', 1 ); add_action( 'embed_head', 'print_emoji_detection_script' ); add_action( 'embed_head', 'print_embed_styles' ); add_action( 'embed_head', 'wp_print_head_scripts', 20 ); add_action( 'embed_head', 'wp_print_styles', 20 ); -add_action( 'embed_head', 'wp_robots' ); +add_action( 'embed_head', 'wp_no_robots' ); add_action( 'embed_head', 'rel_canonical' ); add_action( 'embed_head', 'locale_stylesheet', 30 ); @@ -634,14 +541,11 @@ add_filter( 'the_excerpt_embed', 'shortcode_unautop' ); add_filter( 'the_excerpt_embed', 'wp_embed_excerpt_attachment' ); -add_filter( 'oembed_dataparse', 'wp_filter_oembed_iframe_title_attribute', 5, 3 ); add_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10, 3 ); add_filter( 'oembed_response_data', 'get_oembed_response_data_rich', 10, 4 ); add_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10, 3 ); -// Capabilities. +// Capabilities add_filter( 'user_has_cap', 'wp_maybe_grant_install_languages_cap', 1 ); -add_filter( 'user_has_cap', 'wp_maybe_grant_resume_extensions_caps', 1 ); -add_filter( 'user_has_cap', 'wp_maybe_grant_site_health_caps', 1, 4 ); unset( $filter, $action ); diff --git a/wp-includes/default-widgets.php b/wp-includes/default-widgets.php index f8a5123..a605095 100644 --- a/wp-includes/default-widgets.php +++ b/wp-includes/default-widgets.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage Widgets - * @since 2.8.0 + * @since WP-2.8.0 */ /** WP_Widget_Pages class */ diff --git a/wp-includes/deprecated.php b/wp-includes/deprecated.php index 870e1e7..524f68f 100644 --- a/wp-includes/deprecated.php +++ b/wp-includes/deprecated.php @@ -15,15 +15,15 @@ /** * Retrieves all post data for a given post. * - * @since 0.71 - * @deprecated 1.5.1 Use get_post() + * @since WP-0.71 + * @deprecated WP-1.5.1 Use get_post() * @see get_post() * * @param int $postid Post ID. * @return array Post data. */ function get_postdata($postid) { - _deprecated_function( __FUNCTION__, '1.5.1', 'get_post()' ); + _deprecated_function( __FUNCTION__, 'WP-1.5.1', 'get_post()' ); $post = get_post($postid); @@ -49,19 +49,19 @@ function get_postdata($postid) { } /** - * Sets up the WordPress Loop. + * Sets up the ClassicPress Loop. * * Use The Loop instead. * - * @link https://developer.wordpress.org/themes/basics/the-loop/ + * @link https://codex.wordpress.org/The_Loop * - * @since 1.0.1 - * @deprecated 1.5.0 + * @since WP-1.0.1 + * @deprecated WP-1.5.0 */ function start_wp() { global $wp_query; - _deprecated_function( __FUNCTION__, '1.5.0', __('new ClassicPress Loop') ); + _deprecated_function( __FUNCTION__, 'WP-1.5.0', __('new WordPress Loop') ); // Since the old style loop is being used, advance the query iterator here. $wp_query->next_post(); @@ -72,21 +72,21 @@ function start_wp() { /** * Returns or prints a category ID. * - * @since 0.71 - * @deprecated 0.71 Use get_the_category() + * @since WP-0.71 + * @deprecated WP-0.71 Use get_the_category() * @see get_the_category() * - * @param bool $display Optional. Whether to display the output. Default true. + * @param bool $echo Optional. Whether to echo the output. Default true. * @return int Category ID. */ -function the_category_ID($display = true) { - _deprecated_function( __FUNCTION__, '0.71', 'get_the_category()' ); +function the_category_ID($echo = true) { + _deprecated_function( __FUNCTION__, 'WP-0.71', 'get_the_category()' ); // Grab the first cat in the list. $categories = get_the_category(); $cat = $categories[0]->term_id; - if ( $display ) + if ( $echo ) echo $cat; return $cat; @@ -95,8 +95,8 @@ function the_category_ID($display = true) { /** * Prints a category with optional text before and after. * - * @since 0.71 - * @deprecated 0.71 Use get_the_category_by_ID() + * @since WP-0.71 + * @deprecated WP-0.71 Use get_the_category_by_ID() * @see get_the_category_by_ID() * * @param string $before Optional. Text to display before the category. Default empty. @@ -105,7 +105,7 @@ function the_category_ID($display = true) { function the_category_head( $before = '', $after = '' ) { global $currentcat, $previouscat; - _deprecated_function( __FUNCTION__, '0.71', 'get_the_category_by_ID()' ); + _deprecated_function( __FUNCTION__, 'WP-0.71', 'get_the_category_by_ID()' ); // Grab the first cat in the list. $categories = get_the_category(); @@ -121,8 +121,8 @@ function the_category_head( $before = '', $after = '' ) { /** * Prints a link to the previous post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use previous_post_link() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use previous_post_link() * @see previous_post_link() * * @param string $format @@ -134,7 +134,7 @@ function the_category_head( $before = '', $after = '' ) { */ function previous_post($format='%', $previous='previous post: ', $title='yes', $in_same_cat='no', $limitprev=1, $excluded_categories='') { - _deprecated_function( __FUNCTION__, '2.0.0', 'previous_post_link()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'previous_post_link()' ); if ( empty($in_same_cat) || 'no' == $in_same_cat ) $in_same_cat = false; @@ -157,8 +157,8 @@ function previous_post($format='%', $previous='previous post: ', $title='yes', $ /** * Prints link to the next post. * - * @since 0.71 - * @deprecated 2.0.0 Use next_post_link() + * @since WP-0.71 + * @deprecated WP-2.0.0 Use next_post_link() * @see next_post_link() * * @param string $format @@ -169,7 +169,7 @@ function previous_post($format='%', $previous='previous post: ', $title='yes', $ * @param string $excluded_categories */ function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat='no', $limitnext=1, $excluded_categories='') { - _deprecated_function( __FUNCTION__, '2.0.0', 'next_post_link()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'next_post_link()' ); if ( empty($in_same_cat) || 'no' == $in_same_cat ) $in_same_cat = false; @@ -192,8 +192,8 @@ function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat= /** * Whether user can create a post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -202,7 +202,7 @@ function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat= * @return bool */ function user_can_create_post($user_id, $blog_id = 1, $category_id = 'None') { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); $author_data = get_userdata($user_id); return ($author_data->user_level > 1); @@ -211,8 +211,8 @@ function user_can_create_post($user_id, $blog_id = 1, $category_id = 'None') { /** * Whether user can create a post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -221,7 +221,7 @@ function user_can_create_post($user_id, $blog_id = 1, $category_id = 'None') { * @return bool */ function user_can_create_draft($user_id, $blog_id = 1, $category_id = 'None') { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); $author_data = get_userdata($user_id); return ($author_data->user_level >= 1); @@ -230,8 +230,8 @@ function user_can_create_draft($user_id, $blog_id = 1, $category_id = 'None') { /** * Whether user can edit a post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -240,15 +240,15 @@ function user_can_create_draft($user_id, $blog_id = 1, $category_id = 'None') { * @return bool */ function user_can_edit_post($user_id, $post_id, $blog_id = 1) { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); $author_data = get_userdata($user_id); $post = get_post($post_id); $post_author_data = get_userdata($post->post_author); if ( (($user_id == $post_author_data->ID) && !($post->post_status == 'publish' && $author_data->user_level < 2)) - || ($author_data->user_level > $post_author_data->user_level) - || ($author_data->user_level >= 10) ) { + || ($author_data->user_level > $post_author_data->user_level) + || ($author_data->user_level >= 10) ) { return true; } else { return false; @@ -258,8 +258,8 @@ function user_can_edit_post($user_id, $post_id, $blog_id = 1) { /** * Whether user can delete a post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -268,17 +268,17 @@ function user_can_edit_post($user_id, $post_id, $blog_id = 1) { * @return bool */ function user_can_delete_post($user_id, $post_id, $blog_id = 1) { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); - // Right now if one can edit, one can delete. + // right now if one can edit, one can delete return user_can_edit_post($user_id, $post_id, $blog_id); } /** * Whether user can set new posts' dates. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -287,7 +287,7 @@ function user_can_delete_post($user_id, $post_id, $blog_id = 1) { * @return bool */ function user_can_set_post_date($user_id, $blog_id = 1, $category_id = 'None') { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); $author_data = get_userdata($user_id); return (($author_data->user_level > 4) && user_can_create_post($user_id, $blog_id, $category_id)); @@ -296,8 +296,8 @@ function user_can_set_post_date($user_id, $blog_id = 1, $category_id = 'None') { /** * Whether user can delete a post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -306,7 +306,7 @@ function user_can_set_post_date($user_id, $blog_id = 1, $category_id = 'None') { * @return bool returns true if $user_id can edit $post_id's date */ function user_can_edit_post_date($user_id, $post_id, $blog_id = 1) { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); $author_data = get_userdata($user_id); return (($author_data->user_level > 4) && user_can_edit_post($user_id, $post_id, $blog_id)); @@ -315,8 +315,8 @@ function user_can_edit_post_date($user_id, $post_id, $blog_id = 1) { /** * Whether user can delete a post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -325,17 +325,17 @@ function user_can_edit_post_date($user_id, $post_id, $blog_id = 1) { * @return bool returns true if $user_id can edit $post_id's comments */ function user_can_edit_post_comments($user_id, $post_id, $blog_id = 1) { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); - // Right now if one can edit a post, one can edit comments made on it. + // right now if one can edit a post, one can edit comments made on it return user_can_edit_post($user_id, $post_id, $blog_id); } /** * Whether user can delete a post. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -344,17 +344,17 @@ function user_can_edit_post_comments($user_id, $post_id, $blog_id = 1) { * @return bool returns true if $user_id can delete $post_id's comments */ function user_can_delete_post_comments($user_id, $post_id, $blog_id = 1) { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); - // Right now if one can edit comments, one can delete comments. + // right now if one can edit comments, one can delete comments return user_can_edit_post_comments($user_id, $post_id, $blog_id); } /** * Can user can edit other user. * - * @since 1.5.0 - * @deprecated 2.0.0 Use current_user_can() + * @since WP-1.5.0 + * @deprecated WP-2.0.0 Use current_user_can() * @see current_user_can() * * @param int $user_id @@ -362,7 +362,7 @@ function user_can_delete_post_comments($user_id, $post_id, $blog_id = 1) { * @return bool */ function user_can_edit_user($user_id, $other_user) { - _deprecated_function( __FUNCTION__, '2.0.0', 'current_user_can()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'current_user_can()' ); $user = get_userdata($user_id); $other = get_userdata($other_user); @@ -375,32 +375,27 @@ function user_can_edit_user($user_id, $other_user) { /** * Gets the links associated with category $cat_name. * - * @since 0.71 - * @deprecated 2.1.0 Use get_bookmarks() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use get_bookmarks() * @see get_bookmarks() * - * @param string $cat_name Optional. The category name to use. If no match is found, uses all. - * Default 'noname'. - * @param string $before Optional. The HTML to output before the link. Default empty. - * @param string $after Optional. The HTML to output after the link. Default '
        '. - * @param string $between Optional. The HTML to output between the link/image and its description. - * Not used if no image or $show_images is true. Default ' '. - * @param bool $show_images Optional. Whether to show images (if defined). Default true. - * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', - * 'description', 'rating', or 'owner'. Default 'id'. - * If you start the name with an underscore, the order will be reversed. - * Specifying 'rand' as the order will return links in a random order. - * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined. - * Default true. - * @param bool $show_rating Optional. Show rating stars/chars. Default false. - * @param int $limit Optional. Limit to X entries. If not specified, all entries are shown. - * Default -1. - * @param int $show_updated Optional. Whether to show last updated timestamp. Default 0. - */ -function get_linksbyname($cat_name = "noname", $before = '', $after = '
        ', $between = " ", $show_images = true, $orderby = 'id', - $show_description = true, $show_rating = false, - $limit = -1, $show_updated = 0) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_bookmarks()' ); + * @param string $cat_name Optional. The category name to use. If no match is found uses all. + * @param string $before Optional. The html to output before the link. + * @param string $after Optional. The html to output after the link. + * @param string $between Optional. The html to output between the link/image and its description. Not used if no image or $show_images is true. + * @param bool $show_images Optional. Whether to show images (if defined). + * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', 'description' or 'rating'. Or maybe owner. + * If you start the name with an underscore the order will be reversed. You can also specify 'rand' as the order which will return links in a + * random order. + * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined. + * @param bool $show_rating Optional. Show rating stars/chars. + * @param int $limit Optional. Limit to X entries. If not specified, all entries are shown. + * @param int $show_updated Optional. Whether to show last updated timestamp + */ +function get_linksbyname($cat_name = "noname", $before = '', $after = '
        ', $between = " ", $show_images = true, $orderby = 'id', + $show_description = true, $show_rating = false, + $limit = -1, $show_updated = 0) { + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_bookmarks()' ); $cat_id = -1; $cat = get_term_by('name', $cat_name, 'link_category'); @@ -413,8 +408,8 @@ function get_linksbyname($cat_name = "noname", $before = '', $after = '
        ', $b /** * Gets the links associated with the named category. * - * @since 1.0.1 - * @deprecated 2.1.0 Use wp_list_bookmarks() + * @since WP-1.0.1 + * @deprecated WP-2.1.0 Use wp_list_bookmarks() * @see wp_list_bookmarks() * * @param string $category The category to use. @@ -422,10 +417,10 @@ function get_linksbyname($cat_name = "noname", $before = '', $after = '
        ', $b * @return string|null */ function wp_get_linksbyname($category, $args = '') { - _deprecated_function(__FUNCTION__, '2.1.0', 'wp_list_bookmarks()'); + _deprecated_function(__FUNCTION__, 'WP-2.1.0', 'wp_list_bookmarks()'); $defaults = array( - 'after' => '
        ', + 'after' => '
        ', 'before' => '', 'categorize' => 0, 'category_after' => '', @@ -448,22 +443,19 @@ function wp_get_linksbyname($category, $args = '') { * echo '
      20. ' . $link->link_name . '
      21. '; * } * - * @since 1.0.1 - * @deprecated 2.1.0 Use get_bookmarks() + * @since WP-1.0.1 + * @deprecated WP-2.1.0 Use get_bookmarks() * @see get_bookmarks() * - * @param string $cat_name Optional. The category name to use. If no match is found, uses all. - * Default 'noname'. - * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', - * 'description', 'rating', or 'owner'. Default 'name'. - * If you start the name with an underscore, the order will be reversed. - * Specifying 'rand' as the order will return links in a random order. - * @param int $limit Optional. Limit to X entries. If not specified, all entries are shown. - * Default -1. + * @param string $cat_name The category name to use. If no match is found uses all. + * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url', 'description', or 'rating'. + * Or maybe owner. If you start the name with an underscore the order will be reversed. You can also + * specify 'rand' as the order which will return links in a random order. + * @param int $limit Limit to X entries. If not specified, all entries are shown. * @return array */ function get_linkobjectsbyname($cat_name = "noname" , $orderby = 'name', $limit = -1) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_bookmarks()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_bookmarks()' ); $cat_id = -1; $cat = get_term_by('name', $cat_name, 'link_category'); @@ -481,7 +473,7 @@ function get_linkobjectsbyname($cat_name = "noname" , $orderby = 'name', $limit * $links = get_linkobjects(1); * if ($links) { * foreach ($links as $link) { - * echo '
      22. '.$link->link_name.'
        '.$link->link_description.'
      23. '; + * echo '
      24. '.$link->link_name.'
        '.$link->link_description.'
      25. '; * } * } * @@ -501,22 +493,20 @@ function get_linkobjectsbyname($cat_name = "noname" , $orderby = 'name', $limit * - link_rel * - link_notes * - * @since 1.0.1 - * @deprecated 2.1.0 Use get_bookmarks() + * @since WP-1.0.1 + * @deprecated WP-2.1.0 Use get_bookmarks() * @see get_bookmarks() * - * @param int $category Optional. The category to use. If no category supplied, uses all. - * Default 0. - * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', - * 'description', 'rating', or 'owner'. Default 'name'. - * If you start the name with an underscore, the order will be reversed. - * Specifying 'rand' as the order will return links in a random order. - * @param int $limit Optional. Limit to X entries. If not specified, all entries are shown. - * Default 0. + * @param int $category The category to use. If no category supplied uses all + * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', + * 'description', or 'rating'. Or maybe owner. If you start the name with an + * underscore the order will be reversed. You can also specify 'rand' as the + * order which will return links in a random order. + * @param int $limit Limit to X entries. If not specified, all entries are shown. * @return array */ function get_linkobjects($category = 0, $orderby = 'name', $limit = 0) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_bookmarks()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_bookmarks()' ); $links = get_bookmarks( array( 'category' => $category, 'orderby' => $orderby, 'limit' => $limit ) ) ; @@ -530,30 +520,26 @@ function get_linkobjects($category = 0, $orderby = 'name', $limit = 0) { /** * Gets the links associated with category 'cat_name' and display rating stars/chars. * - * @since 0.71 - * @deprecated 2.1.0 Use get_bookmarks() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use get_bookmarks() * @see get_bookmarks() * - * @param string $cat_name Optional. The category name to use. If no match is found, uses all. - * Default 'noname'. - * @param string $before Optional. The HTML to output before the link. Default empty. - * @param string $after Optional. The HTML to output after the link. Default '
        '. - * @param string $between Optional. The HTML to output between the link/image and its description. - * Not used if no image or $show_images is true. Default ' '. - * @param bool $show_images Optional. Whether to show images (if defined). Default true. - * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', - * 'description', 'rating', or 'owner'. Default 'id'. - * If you start the name with an underscore, the order will be reversed. - * Specifying 'rand' as the order will return links in a random order. - * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined. - * Default true. - * @param int $limit Optional. Limit to X entries. If not specified, all entries are shown. - * Default -1. - * @param int $show_updated Optional. Whether to show last updated timestamp. Default 0. - */ -function get_linksbyname_withrating($cat_name = "noname", $before = '', $after = '
        ', $between = " ", + * @param string $cat_name The category name to use. If no match is found uses all + * @param string $before The html to output before the link + * @param string $after The html to output after the link + * @param string $between The html to output between the link/image and its description. Not used if no image or show_images is true + * @param bool $show_images Whether to show images (if defined). + * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', + * 'description', or 'rating'. Or maybe owner. If you start the name with an + * underscore the order will be reversed. You can also specify 'rand' as the + * order which will return links in a random order. + * @param bool $show_description Whether to show the description if show_images=false/not defined + * @param int $limit Limit to X entries. If not specified, all entries are shown. + * @param int $show_updated Whether to show last updated timestamp + */ +function get_linksbyname_withrating($cat_name = "noname", $before = '', $after = '
        ', $between = " ", $show_images = true, $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_bookmarks()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_bookmarks()' ); get_linksbyname($cat_name, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); } @@ -561,30 +547,26 @@ function get_linksbyname_withrating($cat_name = "noname", $before = '', $after = /** * Gets the links associated with category n and display rating stars/chars. * - * @since 0.71 - * @deprecated 2.1.0 Use get_bookmarks() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use get_bookmarks() * @see get_bookmarks() * - * @param int $category Optional. The category to use. If no category supplied, uses all. - * Default 0. - * @param string $before Optional. The HTML to output before the link. Default empty. - * @param string $after Optional. The HTML to output after the link. Default '
        '. - * @param string $between Optional. The HTML to output between the link/image and its description. - * Not used if no image or $show_images is true. Default ' '. - * @param bool $show_images Optional. Whether to show images (if defined). Default true. - * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', - * 'description', 'rating', or 'owner'. Default 'id'. - * If you start the name with an underscore, the order will be reversed. - * Specifying 'rand' as the order will return links in a random order. - * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined. - * Default true. - * @param int $limit Optional. Limit to X entries. If not specified, all entries are shown. - * Default -1. - * @param int $show_updated Optional. Whether to show last updated timestamp. Default 0. - */ -function get_links_withrating($category = -1, $before = '', $after = '
        ', $between = " ", $show_images = true, - $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_bookmarks()' ); + * @param int $category The category to use. If no category supplied uses all + * @param string $before The html to output before the link + * @param string $after The html to output after the link + * @param string $between The html to output between the link/image and its description. Not used if no image or show_images == true + * @param bool $show_images Whether to show images (if defined). + * @param string $orderby The order to output the links. E.g. 'id', 'name', 'url', + * 'description', or 'rating'. Or maybe owner. If you start the name with an + * underscore the order will be reversed. You can also specify 'rand' as the + * order which will return links in a random order. + * @param bool $show_description Whether to show the description if show_images=false/not defined. + * @param int $limit Limit to X entries. If not specified, all entries are shown. + * @param int $show_updated Whether to show last updated timestamp + */ +function get_links_withrating($category = -1, $before = '', $after = '
        ', $between = " ", $show_images = true, + $orderby = 'id', $show_description = true, $limit = -1, $show_updated = 0) { + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_bookmarks()' ); get_links($category, $before, $after, $between, $show_images, $orderby, $show_description, true, $limit, $show_updated); } @@ -592,22 +574,22 @@ function get_links_withrating($category = -1, $before = '', $after = '
        ', $be /** * Gets the auto_toggle setting. * - * @since 0.71 - * @deprecated 2.1.0 + * @since WP-0.71 + * @deprecated WP-2.1.0 * * @param int $id The category to get. If no category supplied uses 0 * @return int Only returns 0. */ function get_autotoggle($id = 0) { - _deprecated_function( __FUNCTION__, '2.1.0' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0' ); return 0; } /** * Lists categories. * - * @since 0.71 - * @deprecated 2.1.0 Use wp_list_categories() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use wp_list_categories() * @see wp_list_categories() * * @param int $optionall @@ -628,12 +610,12 @@ function get_autotoggle($id = 0) { * @param string $feed_image * @param string $exclude * @param bool $hierarchical - * @return null|false + * @return false|null */ function list_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_order = 'asc', $file = '', $list = true, $optiondates = 0, - $optioncount = 0, $hide_empty = 1, $use_desc_for_title = 1, $children=false, $child_of=0, $categories=0, - $recurse=0, $feed = '', $feed_image = '', $exclude = '', $hierarchical=false) { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_list_categories()' ); + $optioncount = 0, $hide_empty = 1, $use_desc_for_title = 1, $children=false, $child_of=0, $categories=0, + $recurse=0, $feed = '', $feed_image = '', $exclude = '', $hierarchical=false) { + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_list_categories()' ); $query = compact('optionall', 'all', 'sort_column', 'sort_order', 'file', 'list', 'optiondates', 'optioncount', 'hide_empty', 'use_desc_for_title', 'children', 'child_of', 'categories', 'recurse', 'feed', 'feed_image', 'exclude', 'hierarchical'); @@ -643,15 +625,15 @@ function list_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_orde /** * Lists categories. * - * @since 1.2.0 - * @deprecated 2.1.0 Use wp_list_categories() + * @since WP-1.2.0 + * @deprecated WP-2.1.0 Use wp_list_categories() * @see wp_list_categories() * * @param string|array $args - * @return null|string|false + * @return false|null|string */ function wp_list_cats($args = '') { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_list_categories()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_list_categories()' ); $parsed_args = wp_parse_args( $args ); @@ -676,8 +658,8 @@ function wp_list_cats($args = '') { /** * Deprecated method for generating a drop-down of categories. * - * @since 0.71 - * @deprecated 2.1.0 Use wp_dropdown_categories() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use wp_dropdown_categories() * @see wp_dropdown_categories() * * @param int $optionall @@ -695,7 +677,7 @@ function wp_list_cats($args = '') { function dropdown_cats($optionall = 1, $all = 'All', $orderby = 'ID', $order = 'asc', $show_last_update = 0, $show_count = 0, $hide_empty = 1, $optionnone = false, $selected = 0, $exclude = 0) { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_dropdown_categories()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_dropdown_categories()' ); $show_option_all = ''; if ( $optionall ) @@ -714,8 +696,8 @@ function dropdown_cats($optionall = 1, $all = 'All', $orderby = 'ID', $order = ' /** * Lists authors. * - * @since 1.2.0 - * @deprecated 2.1.0 Use wp_list_authors() + * @since WP-1.2.0 + * @deprecated WP-2.1.0 Use wp_list_authors() * @see wp_list_authors() * * @param bool $optioncount @@ -727,7 +709,7 @@ function dropdown_cats($optionall = 1, $all = 'All', $orderby = 'ID', $order = ' * @return null|string */ function list_authors($optioncount = false, $exclude_admin = true, $show_fullname = false, $hide_empty = true, $feed = '', $feed_image = '') { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_list_authors()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_list_authors()' ); $args = compact('optioncount', 'exclude_admin', 'show_fullname', 'hide_empty', 'feed', 'feed_image'); return wp_list_authors($args); @@ -736,42 +718,42 @@ function list_authors($optioncount = false, $exclude_admin = true, $show_fullnam /** * Retrieves a list of post categories. * - * @since 1.0.1 - * @deprecated 2.1.0 Use wp_get_post_categories() + * @since WP-1.0.1 + * @deprecated WP-2.1.0 Use wp_get_post_categories() * @see wp_get_post_categories() * * @param int $blogid Not Used - * @param int $post_id + * @param int $post_ID * @return array */ -function wp_get_post_cats($blogid = '1', $post_id = 0) { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_get_post_categories()' ); - return wp_get_post_categories($post_id); +function wp_get_post_cats($blogid = '1', $post_ID = 0) { + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_get_post_categories()' ); + return wp_get_post_categories($post_ID); } /** - * Sets the categories that the post ID belongs to. + * Sets the categories that the post id belongs to. * - * @since 1.0.1 - * @deprecated 2.1.0 + * @since WP-1.0.1 + * @deprecated WP-2.1.0 * @deprecated Use wp_set_post_categories() * @see wp_set_post_categories() * * @param int $blogid Not used - * @param int $post_id + * @param int $post_ID * @param array $post_categories * @return bool|mixed */ -function wp_set_post_cats($blogid = '1', $post_id = 0, $post_categories = array()) { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_set_post_categories()' ); - return wp_set_post_categories($post_id, $post_categories); +function wp_set_post_cats($blogid = '1', $post_ID = 0, $post_categories = array()) { + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_set_post_categories()' ); + return wp_set_post_categories($post_ID, $post_categories); } /** * Retrieves a list of archives. * - * @since 0.71 - * @deprecated 2.1.0 Use wp_get_archives() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use wp_get_archives() * @see wp_get_archives() * * @param string $type @@ -783,7 +765,7 @@ function wp_set_post_cats($blogid = '1', $post_id = 0, $post_categories = array( * @return string|null */ function get_archives($type='', $limit='', $format='html', $before = '', $after = '', $show_post_count = false) { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_get_archives()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_get_archives()' ); $args = compact('type', 'limit', 'format', 'before', 'after', 'show_post_count'); return wp_get_archives($args); } @@ -791,21 +773,21 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after /** * Returns or Prints link to the author's posts. * - * @since 1.2.0 - * @deprecated 2.1.0 Use get_author_posts_url() + * @since WP-1.2.0 + * @deprecated WP-2.1.0 Use get_author_posts_url() * @see get_author_posts_url() * - * @param bool $display + * @param bool $echo * @param int $author_id * @param string $author_nicename Optional. * @return string|null */ -function get_author_link($display, $author_id, $author_nicename = '') { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_author_posts_url()' ); +function get_author_link($echo, $author_id, $author_nicename = '') { + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_author_posts_url()' ); $link = get_author_posts_url($author_id, $author_nicename); - if ( $display ) + if ( $echo ) echo $link; return $link; } @@ -813,8 +795,8 @@ function get_author_link($display, $author_id, $author_nicename = '') { /** * Print list of pages based on arguments. * - * @since 0.71 - * @deprecated 2.1.0 Use wp_link_pages() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use wp_link_pages() * @see wp_link_pages() * * @param string $before @@ -826,9 +808,9 @@ function get_author_link($display, $author_id, $author_nicename = '') { * @param string $more_file * @return string */ -function link_pages($before='
        ', $after='
        ', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page', +function link_pages($before='
        ', $after='
        ', $next_or_number='number', $nextpagelink='next page', $previouspagelink='previous page', $pagelink='%', $more_file='') { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_link_pages()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_link_pages()' ); $args = compact('before', 'after', 'next_or_number', 'nextpagelink', 'previouspagelink', 'pagelink', 'more_file'); return wp_link_pages($args); @@ -837,15 +819,15 @@ function link_pages($before='
        ', $after='
        ', $next_or_number='number', $ne /** * Get value based on option. * - * @since 0.71 - * @deprecated 2.1.0 Use get_option() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use get_option() * @see get_option() * * @param string $option * @return string */ function get_settings($option) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_option()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_option()' ); return get_option($option); } @@ -853,41 +835,41 @@ function get_settings($option) { /** * Print the permalink of the current post in the loop. * - * @since 0.71 - * @deprecated 1.2.0 Use the_permalink() + * @since WP-0.71 + * @deprecated WP-1.2.0 Use the_permalink() * @see the_permalink() */ function permalink_link() { - _deprecated_function( __FUNCTION__, '1.2.0', 'the_permalink()' ); + _deprecated_function( __FUNCTION__, 'WP-1.2.0', 'the_permalink()' ); the_permalink(); } /** * Print the permalink to the RSS feed. * - * @since 0.71 - * @deprecated 2.3.0 Use the_permalink_rss() + * @since WP-0.71 + * @deprecated WP-2.3.0 Use the_permalink_rss() * @see the_permalink_rss() * * @param string $deprecated */ function permalink_single_rss($deprecated = '') { - _deprecated_function( __FUNCTION__, '2.3.0', 'the_permalink_rss()' ); + _deprecated_function( __FUNCTION__, 'WP-2.3.0', 'the_permalink_rss()' ); the_permalink_rss(); } /** * Gets the links associated with category. * - * @since 1.0.1 - * @deprecated 2.1.0 Use wp_list_bookmarks() + * @since WP-1.0.1 + * @deprecated WP-2.1.0 Use wp_list_bookmarks() * @see wp_list_bookmarks() * * @param string $args a query string * @return null|string */ function wp_get_links($args = '') { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_list_bookmarks()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_list_bookmarks()' ); if ( strpos( $args, '=' ) === false ) { $cat_id = $args; @@ -895,7 +877,7 @@ function wp_get_links($args = '') { } $defaults = array( - 'after' => '
        ', + 'after' => '
        ', 'before' => '', 'between' => ' ', 'categorize' => 0, @@ -916,35 +898,32 @@ function wp_get_links($args = '') { } /** - * Gets the links associated with category by ID. + * Gets the links associated with category by id. * - * @since 0.71 - * @deprecated 2.1.0 Use get_bookmarks() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use get_bookmarks() * @see get_bookmarks() * - * @param int $category Optional. The category to use. If no category supplied uses all. - * Default 0. - * @param string $before Optional. The HTML to output before the link. Default empty. - * @param string $after Optional. The HTML to output after the link. Default '
        '. - * @param string $between Optional. The HTML to output between the link/image and its description. - * Not used if no image or $show_images is true. Default ' '. - * @param bool $show_images Optional. Whether to show images (if defined). Default true. - * @param string $orderby Optional. The order to output the links. E.g. 'id', 'name', 'url', - * 'description', 'rating', or 'owner'. Default 'name'. - * If you start the name with an underscore, the order will be reversed. - * Specifying 'rand' as the order will return links in a random order. - * @param bool $show_description Optional. Whether to show the description if show_images=false/not defined. - * Default true. - * @param bool $show_rating Optional. Show rating stars/chars. Default false. - * @param int $limit Optional. Limit to X entries. If not specified, all entries are shown. - * Default -1. - * @param int $show_updated Optional. Whether to show last updated timestamp. Default 1. - * @param bool $display Whether to display the results, or return them instead. + * @param int $category The category to use. If no category supplied uses all + * @param string $before the html to output before the link + * @param string $after the html to output after the link + * @param string $between the html to output between the link/image and its description. + * Not used if no image or show_images == true + * @param bool $show_images whether to show images (if defined). + * @param string $orderby the order to output the links. E.g. 'id', 'name', 'url', + * 'description', or 'rating'. Or maybe owner. If you start the name with an + * underscore the order will be reversed. You can also specify 'rand' as the order + * which will return links in a random order. + * @param bool $show_description whether to show the description if show_images=false/not defined. + * @param bool $show_rating show rating stars/chars + * @param int $limit Limit to X entries. If not specified, all entries are shown. + * @param int $show_updated whether to show last updated timestamp + * @param bool $echo whether to echo the results, or return them instead * @return null|string */ -function get_links($category = -1, $before = '', $after = '
        ', $between = ' ', $show_images = true, $orderby = 'name', - $show_description = true, $show_rating = false, $limit = -1, $show_updated = 1, $display = true) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_bookmarks()' ); +function get_links($category = -1, $before = '', $after = '
        ', $between = ' ', $show_images = true, $orderby = 'name', + $show_description = true, $show_rating = false, $limit = -1, $show_updated = 1, $echo = true) { + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_bookmarks()' ); $order = 'ASC'; if ( substr($orderby, 0, 1) == '_' ) { @@ -952,7 +931,7 @@ function get_links($category = -1, $before = '', $after = '
        ', $between = ' ' $orderby = substr($orderby, 1); } - if ( $category == -1 ) // get_bookmarks() uses '' to signify all categories. + if ( $category == -1 ) //get_bookmarks uses '' to signify all categories $category = ''; $results = get_bookmarks(array('category' => $category, 'orderby' => $orderby, 'order' => $order, 'show_updated' => $show_updated, 'limit' => $limit)); @@ -981,7 +960,7 @@ function get_links($category = -1, $before = '', $after = '
        ', $between = ' ' if ( $show_updated ) if (substr($row->link_updated_f, 0, 2) != '00') - $title .= ' ('.__('Last updated') . ' ' . gmdate(get_option('links_updated_date_format'), $row->link_updated_f + (get_option('gmt_offset') * HOUR_IN_SECONDS)) . ')'; + $title .= ' ('.__('Last updated') . ' ' . date(get_option('links_updated_date_format'), $row->link_updated_f + (get_option('gmt_offset') * HOUR_IN_SECONDS)) . ')'; if ( '' != $title ) $title = ' title="' . $title . '"'; @@ -996,9 +975,9 @@ function get_links($category = -1, $before = '', $after = '
        ', $between = ' ' if ( $row->link_image != null && $show_images ) { if ( strpos($row->link_image, 'http') !== false ) - $output .= "link_image\" $alt $title>"; - else // If it's a relative path. - $output .= "link_image\" $alt $title>"; + $output .= "link_image\" $alt $title />"; + else // If it's a relative path + $output .= "link_image\" $alt $title />"; } else { $output .= $name; } @@ -1016,9 +995,9 @@ function get_links($category = -1, $before = '', $after = '
        ', $between = ' ' } $output .= "$after\n"; - } // End while. + } // end while - if ( !$display ) + if ( !$echo ) return $output; echo $output; } @@ -1029,18 +1008,18 @@ function get_links($category = -1, $before = '', $after = '
        ', $between = ' ' * Output a list of all links, listed by category, using the settings in * $wpdb->linkcategories and output it as a nested HTML unordered list. * - * @since 1.0.1 - * @deprecated 2.1.0 Use wp_list_bookmarks() + * @since WP-1.0.1 + * @deprecated WP-2.1.0 Use wp_list_bookmarks() * @see wp_list_bookmarks() * * @param string $order Sort link categories by 'name' or 'id' */ function get_links_list($order = 'name') { - _deprecated_function( __FUNCTION__, '2.1.0', 'wp_list_bookmarks()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'wp_list_bookmarks()' ); $order = strtolower($order); - // Handle link category sorting. + // Handle link category sorting $direction = 'ASC'; if ( '_' == substr($order,0,1) ) { $direction = 'DESC'; @@ -1052,17 +1031,17 @@ function get_links_list($order = 'name') { $cats = get_categories(array('type' => 'link', 'orderby' => $order, 'order' => $direction, 'hierarchical' => 0)); - // Display each category. + // Display each category if ( $cats ) { foreach ( (array) $cats as $cat ) { // Handle each category. - // Display the category name. + // Display the category name echo '
      26. ' . apply_filters('link_category', $cat->name ) . "

        \n\t
          \n"; - // Call get_links() with all the appropriate params. + // Call get_links() with all the appropriate params get_links($cat->term_id, '
        • ', "
        • ", "\n", true, 'name', false); - // Close the last category. + // Close the last category echo "\n\t
        \n
      27. \n"; } } @@ -1071,8 +1050,8 @@ function get_links_list($order = 'name') { /** * Show the link to the links popup and the number of links. * - * @since 0.71 - * @deprecated 2.1.0 + * @since WP-0.71 + * @deprecated WP-2.1.0 * * @param string $text the text of the link * @param int $width the width of the popup window @@ -1081,36 +1060,36 @@ function get_links_list($order = 'name') { * @param bool $count the number of links in the db */ function links_popup_script($text = 'Links', $width=400, $height=400, $file='links.all.php', $count = true) { - _deprecated_function( __FUNCTION__, '2.1.0' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0' ); } /** * Legacy function that retrieved the value of a link's link_rating field. * - * @since 1.0.1 - * @deprecated 2.1.0 Use sanitize_bookmark_field() + * @since WP-1.0.1 + * @deprecated WP-2.1.0 Use sanitize_bookmark_field() * @see sanitize_bookmark_field() * * @param object $link Link object. * @return mixed Value of the 'link_rating' field, false otherwise. */ function get_linkrating( $link ) { - _deprecated_function( __FUNCTION__, '2.1.0', 'sanitize_bookmark_field()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'sanitize_bookmark_field()' ); return sanitize_bookmark_field('link_rating', $link->link_rating, $link->link_id, 'display'); } /** - * Gets the name of category by ID. + * Gets the name of category by id. * - * @since 0.71 - * @deprecated 2.1.0 Use get_category() + * @since WP-0.71 + * @deprecated WP-2.1.0 Use get_category() * @see get_category() * * @param int $id The category to get. If no category supplied uses 0 * @return string */ function get_linkcatname($id = 0) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_category()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_category()' ); $id = (int) $id; @@ -1131,34 +1110,34 @@ function get_linkcatname($id = 0) { /** * Print RSS comment feed link. * - * @since 1.0.1 - * @deprecated 2.5.0 Use post_comments_feed_link() + * @since WP-1.0.1 + * @deprecated WP-2.5.0 Use post_comments_feed_link() * @see post_comments_feed_link() * * @param string $link_text */ function comments_rss_link($link_text = 'Comments RSS') { - _deprecated_function( __FUNCTION__, '2.5.0', 'post_comments_feed_link()' ); + _deprecated_function( __FUNCTION__, 'WP-2.5.0', 'post_comments_feed_link()' ); post_comments_feed_link($link_text); } /** * Print/Return link to category RSS2 feed. * - * @since 1.2.0 - * @deprecated 2.5.0 Use get_category_feed_link() + * @since WP-1.2.0 + * @deprecated WP-2.5.0 Use get_category_feed_link() * @see get_category_feed_link() * - * @param bool $display - * @param int $cat_id + * @param bool $echo + * @param int $cat_ID * @return string */ -function get_category_rss_link($display = false, $cat_id = 1) { - _deprecated_function( __FUNCTION__, '2.5.0', 'get_category_feed_link()' ); +function get_category_rss_link($echo = false, $cat_ID = 1) { + _deprecated_function( __FUNCTION__, 'WP-2.5.0', 'get_category_feed_link()' ); - $link = get_category_feed_link($cat_id, 'rss2'); + $link = get_category_feed_link($cat_ID, 'rss2'); - if ( $display ) + if ( $echo ) echo $link; return $link; } @@ -1166,19 +1145,19 @@ function get_category_rss_link($display = false, $cat_id = 1) { /** * Print/Return link to author RSS feed. * - * @since 1.2.0 - * @deprecated 2.5.0 Use get_author_feed_link() + * @since WP-1.2.0 + * @deprecated WP-2.5.0 Use get_author_feed_link() * @see get_author_feed_link() * - * @param bool $display + * @param bool $echo * @param int $author_id * @return string */ -function get_author_rss_link($display = false, $author_id = 1) { - _deprecated_function( __FUNCTION__, '2.5.0', 'get_author_feed_link()' ); +function get_author_rss_link($echo = false, $author_id = 1) { + _deprecated_function( __FUNCTION__, 'WP-2.5.0', 'get_author_feed_link()' ); $link = get_author_feed_link($author_id); - if ( $display ) + if ( $echo ) echo $link; return $link; } @@ -1186,22 +1165,22 @@ function get_author_rss_link($display = false, $author_id = 1) { /** * Return link to the post RSS feed. * - * @since 1.5.0 - * @deprecated 2.2.0 Use get_post_comments_feed_link() + * @since WP-1.5.0 + * @deprecated WP-2.2.0 Use get_post_comments_feed_link() * @see get_post_comments_feed_link() * * @return string */ function comments_rss() { - _deprecated_function( __FUNCTION__, '2.2.0', 'get_post_comments_feed_link()' ); + _deprecated_function( __FUNCTION__, 'WP-2.2.0', 'get_post_comments_feed_link()' ); return esc_url( get_post_comments_feed_link() ); } /** * An alias of wp_create_user(). * - * @since 2.0.0 - * @deprecated 2.0.0 Use wp_create_user() + * @since WP-2.0.0 + * @deprecated WP-2.0.0 Use wp_create_user() * @see wp_create_user() * * @param string $username The user's username. @@ -1210,73 +1189,72 @@ function comments_rss() { * @return int The new user's ID. */ function create_user($username, $password, $email) { - _deprecated_function( __FUNCTION__, '2.0.0', 'wp_create_user()' ); + _deprecated_function( __FUNCTION__, 'WP-2.0.0', 'wp_create_user()' ); return wp_create_user($username, $password, $email); } /** * Unused function. * - * @deprecated 2.5.0 + * @deprecated WP-2.5.0 */ function gzip_compression() { - _deprecated_function( __FUNCTION__, '2.5.0' ); + _deprecated_function( __FUNCTION__, 'WP-2.5.0' ); return false; } /** - * Retrieve an array of comment data about comment $comment_id. + * Retrieve an array of comment data about comment $comment_ID. * - * @since 0.71 - * @deprecated 2.7.0 Use get_comment() + * @since WP-0.71 + * @deprecated WP-2.7.0 Use get_comment() * @see get_comment() * - * @param int $comment_id The ID of the comment + * @param int $comment_ID The ID of the comment * @param int $no_cache Whether to use the cache (cast to bool) * @param bool $include_unapproved Whether to include unapproved comments * @return array The comment data */ -function get_commentdata( $comment_id, $no_cache = 0, $include_unapproved = false ) { - _deprecated_function( __FUNCTION__, '2.7.0', 'get_comment()' ); - return get_comment($comment_id, ARRAY_A); +function get_commentdata( $comment_ID, $no_cache = 0, $include_unapproved = false ) { + _deprecated_function( __FUNCTION__, 'WP-2.7.0', 'get_comment()' ); + return get_comment($comment_ID, ARRAY_A); } /** * Retrieve the category name by the category ID. * - * @since 0.71 - * @deprecated 2.8.0 Use get_cat_name() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use get_cat_name() * @see get_cat_name() * - * @param int $cat_id Category ID + * @param int $cat_ID Category ID * @return string category name */ -function get_catname( $cat_id ) { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_cat_name()' ); - return get_cat_name( $cat_id ); +function get_catname( $cat_ID ) { + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_cat_name()' ); + return get_cat_name( $cat_ID ); } /** * Retrieve category children list separated before and after the term IDs. * - * @since 1.2.0 - * @deprecated 2.8.0 Use get_term_children() + * @since WP-1.2.0 + * @deprecated WP-2.8.0 Use get_term_children() * @see get_term_children() * - * @param int $id Category ID to retrieve children. - * @param string $before Optional. Prepend before category term ID. Default '/'. - * @param string $after Optional. Append after category term ID. Default empty string. - * @param array $visited Optional. Category Term IDs that have already been added. - * Default empty array. + * @param int $id Category ID to retrieve children. + * @param string $before Optional. Prepend before category term ID. + * @param string $after Optional, default is empty string. Append after category term ID. + * @param array $visited Optional. Category Term IDs that have already been added. * @return string */ function get_category_children( $id, $before = '/', $after = '', $visited = array() ) { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_term_children()' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_term_children()' ); if ( 0 == $id ) return ''; $chain = ''; - /** TODO: Consult hierarchy */ + /** TODO: consult hierarchy */ $cat_ids = get_all_category_ids(); foreach ( (array) $cat_ids as $cat_id ) { if ( $cat_id == $id ) @@ -1297,24 +1275,21 @@ function get_category_children( $id, $before = '/', $after = '', $visited = arra /** * Retrieves all category IDs. * - * @since 2.0.0 - * @deprecated 4.0.0 Use get_terms() + * @since WP-2.0.0 + * @deprecated WP-4.0.0 Use get_terms() * @see get_terms() * - * @link https://developer.wordpress.org/reference/functions/get_all_category_ids/ + * @link https://codex.wordpress.org/Function_Reference/get_all_category_ids * - * @return int[] List of all of the category IDs. + * @return object List of all of the category IDs. */ function get_all_category_ids() { - _deprecated_function( __FUNCTION__, '4.0.0', 'get_terms()' ); - - $cat_ids = get_terms( - array( - 'taxonomy' => 'category', - 'fields' => 'ids', - 'get' => 'all', - ) - ); + _deprecated_function( __FUNCTION__, 'WP-4.0.0', 'get_terms()' ); + + if ( ! $cat_ids = wp_cache_get( 'all_category_ids', 'category' ) ) { + $cat_ids = get_terms( 'category', array('fields' => 'ids', 'get' => 'all') ); + wp_cache_add( 'all_category_ids', $cat_ids, 'category' ); + } return $cat_ids; } @@ -1322,367 +1297,366 @@ function get_all_category_ids() { /** * Retrieve the description of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's description. */ function get_the_author_description() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'description\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'description\')' ); return get_the_author_meta('description'); } /** * Display the description of the author of the current post. * - * @since 1.0.0 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-1.0.0 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_description() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'description\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'description\')' ); the_author_meta('description'); } /** * Retrieve the login name of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's login name (username). */ function get_the_author_login() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'login\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'login\')' ); return get_the_author_meta('login'); } /** * Display the login name of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_login() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'login\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'login\')' ); the_author_meta('login'); } /** * Retrieve the first name of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's first name. */ function get_the_author_firstname() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'first_name\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'first_name\')' ); return get_the_author_meta('first_name'); } /** * Display the first name of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_firstname() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'first_name\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'first_name\')' ); the_author_meta('first_name'); } /** * Retrieve the last name of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's last name. */ function get_the_author_lastname() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'last_name\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'last_name\')' ); return get_the_author_meta('last_name'); } /** * Display the last name of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_lastname() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'last_name\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'last_name\')' ); the_author_meta('last_name'); } /** * Retrieve the nickname of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's nickname. */ function get_the_author_nickname() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'nickname\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'nickname\')' ); return get_the_author_meta('nickname'); } /** * Display the nickname of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_nickname() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'nickname\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'nickname\')' ); the_author_meta('nickname'); } /** * Retrieve the email of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's username. */ function get_the_author_email() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'email\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'email\')' ); return get_the_author_meta('email'); } /** * Display the email of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_email() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'email\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'email\')' ); the_author_meta('email'); } /** * Retrieve the ICQ number of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's ICQ number. */ function get_the_author_icq() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'icq\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'icq\')' ); return get_the_author_meta('icq'); } /** * Display the ICQ number of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_icq() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'icq\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'icq\')' ); the_author_meta('icq'); } /** * Retrieve the Yahoo! IM name of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's Yahoo! IM name. */ function get_the_author_yim() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'yim\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'yim\')' ); return get_the_author_meta('yim'); } /** * Display the Yahoo! IM name of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_yim() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'yim\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'yim\')' ); the_author_meta('yim'); } /** * Retrieve the MSN address of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's MSN address. */ function get_the_author_msn() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'msn\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'msn\')' ); return get_the_author_meta('msn'); } /** * Display the MSN address of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_msn() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'msn\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'msn\')' ); the_author_meta('msn'); } /** * Retrieve the AIM address of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The author's AIM address. */ function get_the_author_aim() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'aim\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'aim\')' ); return get_the_author_meta('aim'); } /** * Display the AIM address of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta('aim') + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta('aim') * @see the_author_meta() */ function the_author_aim() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'aim\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'aim\')' ); the_author_meta('aim'); } /** * Retrieve the specified author's preferred display name. * - * @since 1.0.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.0.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @param int $auth_id The ID of the author. * @return string The author's display name. */ function get_author_name( $auth_id = false ) { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'display_name\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'display_name\')' ); return get_the_author_meta('display_name', $auth_id); } /** * Retrieve the URL to the home page of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string The URL to the author's page. */ function get_the_author_url() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'url\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'url\')' ); return get_the_author_meta('url'); } /** * Display the URL to the home page of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_url() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'url\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'url\')' ); the_author_meta('url'); } /** * Retrieve the ID of the author of the current post. * - * @since 1.5.0 - * @deprecated 2.8.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-2.8.0 Use get_the_author_meta() * @see get_the_author_meta() * * @return string|int The author's ID. */ function get_the_author_ID() { - _deprecated_function( __FUNCTION__, '2.8.0', 'get_the_author_meta(\'ID\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'get_the_author_meta(\'ID\')' ); return get_the_author_meta('ID'); } /** * Display the ID of the author of the current post. * - * @since 0.71 - * @deprecated 2.8.0 Use the_author_meta() + * @since WP-0.71 + * @deprecated WP-2.8.0 Use the_author_meta() * @see the_author_meta() */ function the_author_ID() { - _deprecated_function( __FUNCTION__, '2.8.0', 'the_author_meta(\'ID\')' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'the_author_meta(\'ID\')' ); the_author_meta('ID'); } /** * Display the post content for the feed. * - * For encoding the HTML or the $encode_html parameter, there are three possible values: - * - '0' will make urls footnotes and use make_url_footnote(). - * - '1' will encode special characters and automatically display all of the content. - * - '2' will strip all HTML tags from the content. + * For encoding the html or the $encode_html parameter, there are three possible + * values. '0' will make urls footnotes and use make_url_footnote(). '1' will + * encode special characters and automatically display all of the content. The + * value of '2' will strip all HTML tags from the content. * - * Also note that you cannot set the amount of words and not set the HTML encoding. - * If that is the case, then the HTML encoding will default to 2, which will strip - * all HTML tags. + * Also note that you cannot set the amount of words and not set the html + * encoding. If that is the case, then the html encoding will default to 2, + * which will strip all HTML tags. * - * To restrict the amount of words of the content, you can use the cut parameter. - * If the content is less than the amount, then there won't be any dots added to the end. - * If there is content left over, then dots will be added and the rest of the content - * will be removed. + * To restrict the amount of words of the content, you can use the cut + * parameter. If the content is less than the amount, then there won't be any + * dots added to the end. If there is content left over, then dots will be added + * and the rest of the content will be removed. * - * @since 0.71 + * @since WP-0.71 * - * @deprecated 2.9.0 Use the_content_feed() + * @deprecated WP-2.9.0 Use the_content_feed() * @see the_content_feed() * - * @param string $more_link_text Optional. Text to display when more content is available - * but not displayed. Default '(more...)'. - * @param int $stripteaser Optional. Default 0. - * @param string $more_file Optional. - * @param int $cut Optional. Amount of words to keep for the content. - * @param int $encode_html Optional. How to encode the content. + * @param string $more_link_text Optional. Text to display when more content is available but not displayed. + * @param int $stripteaser Optional. Default is 0. + * @param string $more_file Optional. + * @param int $cut Optional. Amount of words to keep for the content. + * @param int $encode_html Optional. How to encode the content. */ function the_content_rss($more_link_text='(more...)', $stripteaser=0, $more_file='', $cut = 0, $encode_html = 0) { - _deprecated_function( __FUNCTION__, '2.9.0', 'the_content_feed()' ); + _deprecated_function( __FUNCTION__, 'WP-2.9.0', 'the_content_feed()' ); $content = get_the_content($more_link_text, $stripteaser); /** * Filters the post content in the context of an RSS feed. * - * @since 0.71 + * @since WP-0.71 * * @param string $content Content of the current post. */ @@ -1723,14 +1697,14 @@ function the_content_rss($more_link_text='(more...)', $stripteaser=0, $more_file * Searches for all of the links, strips them out of the content, and places * them at the bottom of the content with numbers. * - * @since 0.71 - * @deprecated 2.9.0 + * @since WP-0.71 + * @deprecated WP-2.9.0 * - * @param string $content Content to get links. + * @param string $content Content to get links * @return string HTML stripped out of content with links at the bottom. */ function make_url_footnote( $content ) { - _deprecated_function( __FUNCTION__, '2.9.0', '' ); + _deprecated_function( __FUNCTION__, 'WP-2.9.0', '' ); preg_match_all( '/(.+?)<\/a>/', $content, $matches ); $links_summary = "\n"; for ( $i = 0, $c = count( $matches[0] ); $i < $c; $i++ ) { @@ -1760,16 +1734,16 @@ function make_url_footnote( $content ) { * including the pipe character. If there is no pipe in the translated text then * everything is returned. * - * @since 2.2.0 - * @deprecated 2.9.0 Use _x() + * @since WP-2.2.0 + * @deprecated WP-2.9.0 Use _x() * @see _x() * - * @param string $text Text to translate. - * @param string $domain Optional. Domain to retrieve the translated text. - * @return string Translated context string without pipe. + * @param string $text Text to translate + * @param string $domain Optional. Domain to retrieve the translated text + * @return string Translated context string without pipe */ function _c( $text, $domain = 'default' ) { - _deprecated_function( __FUNCTION__, '2.9.0', '_x()' ); + _deprecated_function( __FUNCTION__, 'WP-2.9.0', '_x()' ); return before_last_bar( translate( $text, $domain ) ); } @@ -1777,16 +1751,16 @@ function _c( $text, $domain = 'default' ) { * Translates $text like translate(), but assumes that the text * contains a context after its last vertical bar. * - * @since 2.5.0 - * @deprecated 3.0.0 Use _x() + * @since WP-2.5.0 + * @deprecated WP-3.0.0 Use _x() * @see _x() * - * @param string $text Text to translate. - * @param string $domain Domain to retrieve the translated text. - * @return string Translated text. + * @param string $text Text to translate + * @param string $domain Domain to retrieve the translated text + * @return string Translated text */ function translate_with_context( $text, $domain = 'default' ) { - _deprecated_function( __FUNCTION__, '2.9.0', '_x()' ); + _deprecated_function( __FUNCTION__, 'WP-2.9.0', '_x()' ); return before_last_bar( translate( $text, $domain ) ); } @@ -1795,8 +1769,8 @@ function translate_with_context( $text, $domain = 'default' ) { * * Strips everything from the translation after the last bar. * - * @since 2.7.0 - * @deprecated 3.0.0 Use _nx() + * @since WP-2.7.0 + * @deprecated WP-3.0.0 Use _nx() * @see _nx() * * @param string $single The text to be used if the number is singular. @@ -1807,31 +1781,31 @@ function translate_with_context( $text, $domain = 'default' ) { * @return string The translated singular or plural form. */ function _nc( $single, $plural, $number, $domain = 'default' ) { - _deprecated_function( __FUNCTION__, '2.9.0', '_nx()' ); + _deprecated_function( __FUNCTION__, 'WP-2.9.0', '_nx()' ); return before_last_bar( _n( $single, $plural, $number, $domain ) ); } /** * Retrieve the plural or single form based on the amount. * - * @since 1.2.0 - * @deprecated 2.8.0 Use _n() + * @since WP-1.2.0 + * @deprecated WP-2.8.0 Use _n() * @see _n() */ function __ngettext( ...$args ) { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.ReservedFunctionNames.FunctionDoubleUnderscore - _deprecated_function( __FUNCTION__, '2.8.0', '_n()' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', '_n()' ); return _n( ...$args ); } /** * Register plural strings in POT file, but don't translate them. * - * @since 2.5.0 - * @deprecated 2.8.0 Use _n_noop() + * @since WP-2.5.0 + * @deprecated WP-2.8.0 Use _n_noop() * @see _n_noop() */ function __ngettext_noop( ...$args ) { // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.ReservedFunctionNames.FunctionDoubleUnderscore - _deprecated_function( __FUNCTION__, '2.8.0', '_n_noop()' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', '_n_noop()' ); return _n_noop( ...$args ); } @@ -1839,32 +1813,32 @@ function __ngettext_noop( ...$args ) { // phpcs:ignore PHPCompatibility.Function /** * Retrieve all autoload options, or all options if no autoloaded ones exist. * - * @since 1.0.0 - * @deprecated 3.0.0 Use wp_load_alloptions()) + * @since WP-1.0.0 + * @deprecated WP-3.0.0 Use wp_load_alloptions()) * @see wp_load_alloptions() * * @return array List of all options. */ function get_alloptions() { - _deprecated_function( __FUNCTION__, '3.0.0', 'wp_load_alloptions()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'wp_load_alloptions()' ); return wp_load_alloptions(); } /** * Retrieve HTML content of attachment image with link. * - * @since 2.0.0 - * @deprecated 2.5.0 Use wp_get_attachment_link() + * @since WP-2.0.0 + * @deprecated WP-2.5.0 Use wp_get_attachment_link() * @see wp_get_attachment_link() * - * @param int $id Optional. Post ID. - * @param bool $fullsize Optional. Whether to use full size image. Default false. + * @param int $id Optional. Post ID. + * @param bool $fullsize Optional, default is false. Whether to use full size image. * @param array $max_dims Optional. Max image dimensions. - * @param bool $permalink Optional. Whether to include permalink to image. Default false. + * @param bool $permalink Optional, default is false. Whether to include permalink to image. * @return string */ function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false, $permalink = false) { - _deprecated_function( __FUNCTION__, '2.5.0', 'wp_get_attachment_link()' ); + _deprecated_function( __FUNCTION__, 'WP-2.5.0', 'wp_get_attachment_link()' ); $id = (int) $id; $_post = get_post($id); @@ -1883,16 +1857,16 @@ function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false, /** * Retrieve icon URL and Path. * - * @since 2.1.0 - * @deprecated 2.5.0 Use wp_get_attachment_image_src() + * @since WP-2.1.0 + * @deprecated WP-2.5.0 Use wp_get_attachment_image_src() * @see wp_get_attachment_image_src() * - * @param int $id Optional. Post ID. - * @param bool $fullsize Optional. Whether to have full image. Default false. + * @param int $id Optional. Post ID. + * @param bool $fullsize Optional, default to false. Whether to have full image. * @return array Icon URL and full path to file, respectively. */ function get_attachment_icon_src( $id = 0, $fullsize = false ) { - _deprecated_function( __FUNCTION__, '2.5.0', 'wp_get_attachment_image_src()' ); + _deprecated_function( __FUNCTION__, 'WP-2.5.0', 'wp_get_attachment_image_src()' ); $id = (int) $id; if ( !$post = get_post($id) ) return false; @@ -1900,18 +1874,17 @@ function get_attachment_icon_src( $id = 0, $fullsize = false ) { $file = get_attached_file( $post->ID ); if ( !$fullsize && $src = wp_get_attachment_thumb_url( $post->ID ) ) { - // We have a thumbnail desired, specified and existing. + // We have a thumbnail desired, specified and existing $src_file = wp_basename($src); } elseif ( wp_attachment_is_image( $post->ID ) ) { - // We have an image without a thumbnail. + // We have an image without a thumbnail $src = wp_get_attachment_url( $post->ID ); $src_file = & $file; } elseif ( $src = wp_mime_type_icon( $post->ID ) ) { // No thumb, no image. We'll look for a mime-related icon instead. - /** This filter is documented in wp-includes/post.php */ $icon_dir = apply_filters( 'icon_dir', get_template_directory() . '/images' ); $src_file = $icon_dir . '/' . wp_basename($src); } @@ -1925,17 +1898,17 @@ function get_attachment_icon_src( $id = 0, $fullsize = false ) { /** * Retrieve HTML content of icon attachment image element. * - * @since 2.0.0 - * @deprecated 2.5.0 Use wp_get_attachment_image() + * @since WP-2.0.0 + * @deprecated WP-2.5.0 Use wp_get_attachment_image() * @see wp_get_attachment_image() * - * @param int $id Optional. Post ID. - * @param bool $fullsize Optional. Whether to have full size image. Default false. + * @param int $id Optional. Post ID. + * @param bool $fullsize Optional, default to false. Whether to have full size image. * @param array $max_dims Optional. Dimensions of image. - * @return string|false HTML content. + * @return false|string HTML content. */ function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) { - _deprecated_function( __FUNCTION__, '2.5.0', 'wp_get_attachment_image()' ); + _deprecated_function( __FUNCTION__, 'WP-2.5.0', 'wp_get_attachment_image()' ); $id = (int) $id; if ( !$post = get_post($id) ) return false; @@ -1948,7 +1921,7 @@ function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) { // Do we need to constrain the image? if ( ($max_dims = apply_filters('attachment_max_dims', $max_dims)) && file_exists($src_file) ) { - $imagesize = wp_getimagesize($src_file); + $imagesize = @getimagesize($src_file); if (($imagesize[0] > $max_dims[0]) || $imagesize[1] > $max_dims[1] ) { $actual_aspect = $imagesize[0] / $imagesize[1]; @@ -1973,7 +1946,7 @@ function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) { $post_title = esc_attr($post->post_title); - $icon = "$post_title"; + $icon = "$post_title"; return apply_filters( 'attachment_icon', $icon, $post->ID ); } @@ -1981,17 +1954,17 @@ function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) { /** * Retrieve HTML content of image element. * - * @since 2.0.0 - * @deprecated 2.5.0 Use wp_get_attachment_image() + * @since WP-2.0.0 + * @deprecated WP-2.5.0 Use wp_get_attachment_image() * @see wp_get_attachment_image() * - * @param int $id Optional. Post ID. - * @param bool $fullsize Optional. Whether to have full size image. Default false. + * @param int $id Optional. Post ID. + * @param bool $fullsize Optional, default to false. Whether to have full size image. * @param array $max_dims Optional. Dimensions of image. - * @return string|false + * @return false|string */ function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) { - _deprecated_function( __FUNCTION__, '2.5.0', 'wp_get_attachment_image()' ); + _deprecated_function( __FUNCTION__, 'WP-2.5.0', 'wp_get_attachment_image()' ); $id = (int) $id; if ( !$post = get_post($id) ) return false; @@ -2007,8 +1980,8 @@ function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) /** * Retrieves bookmark data based on ID. * - * @since 2.0.0 - * @deprecated 2.1.0 Use get_bookmark() + * @since WP-2.0.0 + * @deprecated WP-2.1.0 Use get_bookmark() * @see get_bookmark() * * @param int $bookmark_id ID of link @@ -2019,19 +1992,35 @@ function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false) * @return object|array Bookmark object or array, depending on the type specified by `$output`. */ function get_link( $bookmark_id, $output = OBJECT, $filter = 'raw' ) { - _deprecated_function( __FUNCTION__, '2.1.0', 'get_bookmark()' ); + _deprecated_function( __FUNCTION__, 'WP-2.1.0', 'get_bookmark()' ); return get_bookmark($bookmark_id, $output, $filter); } +/** + * Performs esc_url() for database or redirect usage. + * + * @since WP-2.3.1 + * @deprecated WP-2.8.0 Use esc_url_raw() + * @see esc_url_raw() + * + * @param string $url The URL to be cleaned. + * @param array $protocols An array of acceptable protocols. + * @return string The cleaned URL. + */ +function sanitize_url( $url, $protocols = null ) { + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'esc_url_raw()' ); + return esc_url_raw( $url, $protocols ); +} + /** * Checks and cleans a URL. * * A number of characters are removed from the URL. If the URL is for displaying - * (the default behavior) ampersands are also replaced. The 'clean_url' filter + * (the default behaviour) ampersands are also replaced. The 'clean_url' filter * is applied to the returned cleaned URL. * - * @since 1.2.0 - * @deprecated 3.0.0 Use esc_url() + * @since WP-1.2.0 + * @deprecated WP-3.0.0 Use esc_url() * @see esc_url() * * @param string $url The URL to be cleaned. @@ -2041,9 +2030,9 @@ function get_link( $bookmark_id, $output = OBJECT, $filter = 'raw' ) { */ function clean_url( $url, $protocols = null, $context = 'display' ) { if ( $context == 'db' ) - _deprecated_function( 'clean_url( $context = \'db\' )', '3.0.0', 'sanitize_url()' ); + _deprecated_function( 'clean_url( $context = \'db\' )', 'WP-3.0.0', 'esc_url_raw()' ); else - _deprecated_function( __FUNCTION__, '3.0.0', 'esc_url()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'esc_url()' ); return esc_url( $url, $protocols, $context ); } @@ -2052,51 +2041,51 @@ function clean_url( $url, $protocols = null, $context = 'display' ) { * * The filter {@see 'js_escape'} is also applied by esc_js(). * - * @since 2.0.4 - * @deprecated 2.8.0 Use esc_js() + * @since WP-2.0.4 + * @deprecated WP-2.8.0 Use esc_js() * @see esc_js() * * @param string $text The text to be escaped. * @return string Escaped text. */ function js_escape( $text ) { - _deprecated_function( __FUNCTION__, '2.8.0', 'esc_js()' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'esc_js()' ); return esc_js( $text ); } /** * Legacy escaping for HTML blocks. * - * @deprecated 2.8.0 Use esc_html() + * @deprecated WP-2.8.0 Use esc_html() * @see esc_html() * - * @param string $text Text to escape. + * @param string $string String to escape. * @param string $quote_style Unused. * @param false|string $charset Unused. * @param false $double_encode Whether to double encode. Unused. - * @return string Escaped `$text`. + * @return string Escaped `$string`. */ -function wp_specialchars( $text, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) { - _deprecated_function( __FUNCTION__, '2.8.0', 'esc_html()' ); +function wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) { + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'esc_html()' ); if ( func_num_args() > 1 ) { // Maintain back-compat for people passing additional arguments. - return _wp_specialchars( $text, $quote_style, $charset, $double_encode ); + return _wp_specialchars( $string, $quote_style, $charset, $double_encode ); } else { - return esc_html( $text ); + return esc_html( $string ); } } /** * Escaping for HTML attributes. * - * @since 2.0.6 - * @deprecated 2.8.0 Use esc_attr() + * @since WP-2.0.6 + * @deprecated WP-2.8.0 Use esc_attr() * @see esc_attr() * * @param string $text * @return string */ function attribute_escape( $text ) { - _deprecated_function( __FUNCTION__, '2.8.0', 'esc_attr()' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'esc_attr()' ); return esc_attr( $text ); } @@ -2110,24 +2099,24 @@ function attribute_escape( $text ) { * Passes to wp_register_sidebar_widget() after argument list and backward * compatibility is complete. * - * @since 2.2.0 - * @deprecated 2.8.0 Use wp_register_sidebar_widget() + * @since WP-2.2.0 + * @deprecated WP-2.8.0 Use wp_register_sidebar_widget() * @see wp_register_sidebar_widget() * * @param string|int $name Widget ID. * @param callable $output_callback Run when widget is called. * @param string $classname Optional. Classname widget option. Default empty. - * @param mixed ...$params Widget parameters. + * @param mixed $params ,... Widget parameters. */ function register_sidebar_widget($name, $output_callback, $classname = '', ...$params) { - _deprecated_function( __FUNCTION__, '2.8.0', 'wp_register_sidebar_widget()' ); - // Compat. + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'wp_register_sidebar_widget()' ); + // Compat if ( is_array( $name ) ) { if ( count( $name ) === 3 ) { $name = sprintf( $name[0], $name[2] ); } else { $name = $name[0]; - } + } } $id = sanitize_title( $name ); @@ -2142,14 +2131,14 @@ function register_sidebar_widget($name, $output_callback, $classname = '', ...$p /** * Serves as an alias of wp_unregister_sidebar_widget(). * - * @since 2.2.0 - * @deprecated 2.8.0 Use wp_unregister_sidebar_widget() + * @since WP-2.2.0 + * @deprecated WP-2.8.0 Use wp_unregister_sidebar_widget() * @see wp_unregister_sidebar_widget() * * @param int|string $id Widget ID. */ function unregister_sidebar_widget($id) { - _deprecated_function( __FUNCTION__, '2.8.0', 'wp_unregister_sidebar_widget()' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'wp_unregister_sidebar_widget()' ); return wp_unregister_sidebar_widget($id); } @@ -2163,25 +2152,25 @@ function unregister_sidebar_widget($id) { * Passes to wp_register_widget_control() after the argument list has * been compiled. * - * @since 2.2.0 - * @deprecated 2.8.0 Use wp_register_widget_control() + * @since WP-2.2.0 + * @deprecated WP-2.8.0 Use wp_register_widget_control() * @see wp_register_widget_control() * - * @param int|string $name Sidebar ID. - * @param callable $control_callback Widget control callback to display and process form. - * @param int $width Widget width. - * @param int $height Widget height. + * @param int|string $name Sidebar ID. + * @param callable $control_callback Widget control callback to display and process form. + * @param int $width Widget width. + * @param int $height Widget height. * @param mixed ...$params Widget parameters. */ function register_widget_control($name, $control_callback, $width = '', $height = '', ...$params) { - _deprecated_function( __FUNCTION__, '2.8.0', 'wp_register_widget_control()' ); - // Compat. + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'wp_register_widget_control()' ); + // Compat if ( is_array( $name ) ) { if ( count( $name ) === 3 ) { $name = sprintf( $name[0], $name[2] ); } else { $name = $name[0]; - } + } } $id = sanitize_title( $name ); @@ -2199,31 +2188,31 @@ function register_widget_control($name, $control_callback, $width = '', $height /** * Alias of wp_unregister_widget_control(). * - * @since 2.2.0 - * @deprecated 2.8.0 Use wp_unregister_widget_control() + * @since WP-2.2.0 + * @deprecated WP-2.8.0 Use wp_unregister_widget_control() * @see wp_unregister_widget_control() * * @param int|string $id Widget ID. */ function unregister_widget_control($id) { - _deprecated_function( __FUNCTION__, '2.8.0', 'wp_unregister_widget_control()' ); + _deprecated_function( __FUNCTION__, 'WP-2.8.0', 'wp_unregister_widget_control()' ); return wp_unregister_widget_control($id); } /** * Remove user meta data. * - * @since 2.0.0 - * @deprecated 3.0.0 Use delete_user_meta() + * @since WP-2.0.0 + * @deprecated WP-3.0.0 Use delete_user_meta() * @see delete_user_meta() * * @param int $user_id User ID. * @param string $meta_key Metadata key. - * @param mixed $meta_value Optional. Metadata value. Default empty. + * @param mixed $meta_value Metadata value. * @return bool True deletion completed and false if user_id is not a number. */ function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) { - _deprecated_function( __FUNCTION__, '3.0.0', 'delete_user_meta()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'delete_user_meta()' ); global $wpdb; if ( !is_numeric( $user_id ) ) return false; @@ -2260,16 +2249,16 @@ function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) { * one item to be returned, which be that single item type. If there is more * than one metadata value, then it will be list of metadata values. * - * @since 2.0.0 - * @deprecated 3.0.0 Use get_user_meta() + * @since WP-2.0.0 + * @deprecated WP-3.0.0 Use get_user_meta() * @see get_user_meta() * * @param int $user_id User ID - * @param string $meta_key Optional. Metadata key. Default empty. + * @param string $meta_key Optional. Metadata key. * @return mixed */ function get_usermeta( $user_id, $meta_key = '' ) { - _deprecated_function( __FUNCTION__, '3.0.0', 'get_user_meta()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'get_user_meta()' ); global $wpdb; $user_id = (int) $user_id; @@ -2279,7 +2268,7 @@ function get_usermeta( $user_id, $meta_key = '' ) { if ( !empty($meta_key) ) { $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); $user = wp_cache_get($user_id, 'users'); - // Check the cached user object. + // Check the cached user object if ( false !== $user && isset($user->$meta_key) ) $metas = array($user->$meta_key); else @@ -2312,8 +2301,8 @@ function get_usermeta( $user_id, $meta_key = '' ) { * * Will remove the metadata, if the meta value is empty. * - * @since 2.0.0 - * @deprecated 3.0.0 Use update_user_meta() + * @since WP-2.0.0 + * @deprecated WP-3.0.0 Use update_user_meta() * @see update_user_meta() * * @param int $user_id User ID @@ -2322,7 +2311,7 @@ function get_usermeta( $user_id, $meta_key = '' ) { * @return bool True on successful update, false on failure. */ function update_usermeta( $user_id, $meta_key, $meta_value ) { - _deprecated_function( __FUNCTION__, '3.0.0', 'update_user_meta()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'update_user_meta()' ); global $wpdb; if ( !is_numeric( $user_id ) ) return false; @@ -2366,17 +2355,17 @@ function update_usermeta( $user_id, $meta_key, $meta_value ) { * For setups that use the multisite feature. Can be used outside of the * multisite feature. * - * @since 2.2.0 - * @deprecated 3.1.0 Use get_users() + * @since WP-2.2.0 + * @deprecated WP-3.1.0 Use get_users() * @see get_users() * - * @global wpdb $wpdb WordPress database abstraction object. + * @global wpdb $wpdb ClassicPress database abstraction object. * * @param int $id Site ID. * @return array List of users that are part of that site ID */ function get_users_of_blog( $id = '' ) { - _deprecated_function( __FUNCTION__, '3.1.0', 'get_users()' ); + _deprecated_function( __FUNCTION__, 'WP-3.1.0', 'get_users()' ); global $wpdb; if ( empty( $id ) ) { @@ -2390,34 +2379,34 @@ function get_users_of_blog( $id = '' ) { /** * Enable/disable automatic general feed link outputting. * - * @since 2.8.0 - * @deprecated 3.0.0 Use add_theme_support() + * @since WP-2.8.0 + * @deprecated WP-3.0.0 Use add_theme_support() * @see add_theme_support() * - * @param bool $add Optional. Add or remove links. Default true. + * @param bool $add Optional, default is true. Add or remove links. Defaults to true. */ function automatic_feed_links( $add = true ) { - _deprecated_function( __FUNCTION__, '3.0.0', "add_theme_support( 'automatic-feed-links' )" ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', "add_theme_support( 'automatic-feed-links' )" ); if ( $add ) add_theme_support( 'automatic-feed-links' ); else - remove_action( 'wp_head', 'feed_links_extra', 3 ); // Just do this yourself in 3.0+. + remove_action( 'wp_head', 'feed_links_extra', 3 ); // Just do this yourself in WP-3.0+ } /** * Retrieve user data based on field. * - * @since 1.5.0 - * @deprecated 3.0.0 Use get_the_author_meta() + * @since WP-1.5.0 + * @deprecated WP-3.0.0 Use get_the_author_meta() * @see get_the_author_meta() * * @param string $field User meta field. - * @param false|int $user Optional. User ID to retrieve the field for. Default false (current user). + * @param false|int $user Optional. User ID to retrieve the field for. Default false (current user). * @return string The author's field from the current author's DB object. */ function get_profile( $field, $user = false ) { - _deprecated_function( __FUNCTION__, '3.0.0', 'get_the_author_meta()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'get_the_author_meta()' ); if ( $user ) { $user = get_user_by( 'login', $user ); $user = $user->ID; @@ -2428,24 +2417,24 @@ function get_profile( $field, $user = false ) { /** * Retrieves the number of posts a user has written. * - * @since 0.71 - * @deprecated 3.0.0 Use count_user_posts() + * @since WP-0.71 + * @deprecated WP-3.0.0 Use count_user_posts() * @see count_user_posts() * * @param int $userid User to count posts for. * @return int Number of posts the given user has written. */ function get_usernumposts( $userid ) { - _deprecated_function( __FUNCTION__, '3.0.0', 'count_user_posts()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'count_user_posts()' ); return count_user_posts( $userid ); } /** * Callback used to change %uXXXX to &#YYY; syntax * - * @since 2.8.0 + * @since WP-2.8.0 * @access private - * @deprecated 3.0.0 + * @deprecated WP-3.0.0 * * @param array $matches Single Match * @return string An HTML entity @@ -2459,8 +2448,8 @@ function funky_javascript_callback($matches) { * * Converts unicode characters to HTML numbered entities. * - * @since 1.5.0 - * @deprecated 3.0.0 + * @since WP-1.5.0 + * @deprecated WP-3.0.0 * * @global $is_macIE * @global $is_winIE @@ -2469,7 +2458,7 @@ function funky_javascript_callback($matches) { * @return string Fixed text. */ function funky_javascript_fix($text) { - _deprecated_function( __FUNCTION__, '3.0.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0' ); // Fixes for browsers' JavaScript bugs. global $is_macIE, $is_winIE; @@ -2484,53 +2473,49 @@ function funky_javascript_fix($text) { /** * Checks that the taxonomy name exists. * - * @since 2.3.0 - * @deprecated 3.0.0 Use taxonomy_exists() + * @since WP-2.3.0 + * @deprecated WP-3.0.0 Use taxonomy_exists() * @see taxonomy_exists() * * @param string $taxonomy Name of taxonomy object * @return bool Whether the taxonomy exists. */ function is_taxonomy( $taxonomy ) { - _deprecated_function( __FUNCTION__, '3.0.0', 'taxonomy_exists()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'taxonomy_exists()' ); return taxonomy_exists( $taxonomy ); } /** * Check if Term exists. * - * @since 2.3.0 - * @deprecated 3.0.0 Use term_exists() + * @since WP-2.3.0 + * @deprecated WP-3.0.0 Use term_exists() * @see term_exists() * * @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 Get the term id or Term Object, if exists. */ function is_term( $term, $taxonomy = '', $parent = 0 ) { - _deprecated_function( __FUNCTION__, '3.0.0', 'term_exists()' ); + _deprecated_function( __FUNCTION__, 'WP-3.0.0', 'term_exists()' ); return term_exists( $term, $taxonomy, $parent ); } /** - * Determines whether the current admin page is generated by a plugin. + * Is the current admin page generated by a plugin? * * Use global $plugin_page and/or get_plugin_page_hookname() hooks. * - * For more information on this and similar theme functions, check out - * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ - * Conditional Tags} article in the Theme Developer Handbook. - * - * @since 1.5.0 - * @deprecated 3.1.0 + * @since WP-1.5.0 + * @deprecated WP-3.1.0 * * @global $plugin_page * * @return bool */ function is_plugin_page() { - _deprecated_function( __FUNCTION__, '3.1.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.1.0' ); global $plugin_page; @@ -2547,13 +2532,13 @@ function is_plugin_page() { * needed. It might be a legacy function left over from when there was a need * for updating the category cache. * - * @since 1.5.0 - * @deprecated 3.1.0 + * @since WP-1.5.0 + * @deprecated WP-3.1.0 * * @return bool Always return True */ function update_category_cache() { - _deprecated_function( __FUNCTION__, '3.1.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.1.0' ); return true; } @@ -2561,13 +2546,13 @@ function update_category_cache() { /** * Check for PHP timezone support * - * @since 2.9.0 - * @deprecated 3.2.0 + * @since WP-2.9.0 + * @deprecated WP-3.2.0 * * @return bool */ function wp_timezone_supported() { - _deprecated_function( __FUNCTION__, '3.2.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.2.0' ); return true; } @@ -2575,8 +2560,8 @@ function wp_timezone_supported() { /** * Displays an editor: TinyMCE, HTML, or both. * - * @since 2.1.0 - * @deprecated 3.3.0 Use wp_editor() + * @since WP-2.1.0 + * @deprecated WP-3.3.0 Use wp_editor() * @see wp_editor() * * @param string $content Textarea content. @@ -2587,7 +2572,7 @@ function wp_timezone_supported() { * @param bool $extended Optional. Unused. */ function the_editor($content, $id = 'content', $prev_id = 'title', $media_buttons = true, $tab_index = 2, $extended = true) { - _deprecated_function( __FUNCTION__, '3.3.0', 'wp_editor()' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0', 'wp_editor()' ); wp_editor( $content, $id, array( 'media_buttons' => $media_buttons ) ); } @@ -2595,14 +2580,14 @@ 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 - * @deprecated 3.3.0 + * @since WP-3.0.0 + * @deprecated WP-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. */ function get_user_metavalues($ids) { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); $objects = array(); @@ -2628,15 +2613,15 @@ function get_user_metavalues($ids) { * * If the context is 'raw', then the user object or array will get minimal santization of the int fields. * - * @since 2.3.0 - * @deprecated 3.3.0 + * @since WP-2.3.0 + * @deprecated WP-3.3.0 * - * @param object|array $user The user object or array. - * @param string $context Optional. How to sanitize user fields. Default 'display'. - * @return object|array The now sanitized user object or array (will be the same type as $user). + * @param object|array $user The User Object or Array + * @param string $context Optional, default is 'display'. How to sanitize user fields. + * @return object|array The now sanitized User Object or Array (will be the same type as $user) */ function sanitize_user_object($user, $context = 'display') { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); if ( is_object($user) ) { if ( !isset($user->ID) ) @@ -2665,26 +2650,24 @@ function sanitize_user_object($user, $context = 'display') { * * Can either be start or end post relational link. * - * @since 2.8.0 - * @deprecated 3.3.0 + * @since WP-2.8.0 + * @deprecated WP-3.3.0 * - * @param string $title Optional. Link title format. Default '%title'. - * @param bool $in_same_cat Optional. Whether link should be in a same category. - * Default false. - * @param string $excluded_categories Optional. Excluded categories IDs. Default empty. - * @param bool $start Optional. Whether to display link to first or last post. - * Default true. + * @param string $title Optional. Link title format. + * @param bool $in_same_cat Optional. Whether link should be in a same category. + * @param string $excluded_categories Optional. Excluded categories IDs. + * @param bool $start Optional, default is true. Whether to display link to first or last post. * @return string */ function get_boundary_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '', $start = true) { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); $posts = get_boundary_post($in_same_cat, $excluded_categories, $start); - // If there is no post, stop. + // If there is no post stop. if ( empty($posts) ) return; - // Even though we limited get_posts() to return only 1 item it still returns an array of objects. + // Even though we limited get_posts to return only 1 item it still returns an array of objects. $post = $posts[0]; if ( empty($post->post_title) ) @@ -2698,7 +2681,7 @@ function get_boundary_post_rel_link($title = '%title', $in_same_cat = false, $ex $link = $start ? "\n"; + $link .= "' href='" . get_permalink($post) . "' />\n"; $boundary = $start ? 'start' : 'end'; return apply_filters( "{$boundary}_post_rel_link", $link ); @@ -2707,15 +2690,15 @@ function get_boundary_post_rel_link($title = '%title', $in_same_cat = false, $ex /** * Display relational link for the first post. * - * @since 2.8.0 - * @deprecated 3.3.0 + * @since WP-2.8.0 + * @deprecated WP-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 $excluded_categories Optional. Excluded categories IDs. */ function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_categories = '') { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); echo get_boundary_post_rel_link($title, $in_same_cat, $excluded_categories, true); } @@ -2723,26 +2706,26 @@ function start_post_rel_link($title = '%title', $in_same_cat = false, $excluded_ /** * Get site index relational link. * - * @since 2.8.0 - * @deprecated 3.3.0 + * @since WP-2.8.0 + * @deprecated WP-3.3.0 * * @return string */ function get_index_rel_link() { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); - $link = "\n"; + $link = "\n"; return apply_filters( "index_rel_link", $link ); } /** * Display relational link for the site index. * - * @since 2.8.0 - * @deprecated 3.3.0 + * @since WP-2.8.0 + * @deprecated WP-3.3.0 */ function index_rel_link() { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); echo get_index_rel_link(); } @@ -2750,14 +2733,14 @@ function index_rel_link() { /** * Get parent post relational link. * - * @since 2.8.0 - * @deprecated 3.3.0 + * @since WP-2.8.0 + * @deprecated WP-3.3.0 * * @param string $title Optional. Link title format. Default '%title'. * @return string */ function get_parent_post_rel_link( $title = '%title' ) { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); if ( ! empty( $GLOBALS['post'] ) && ! empty( $GLOBALS['post']->post_parent ) ) $post = get_post($GLOBALS['post']->post_parent); @@ -2773,7 +2756,7 @@ function get_parent_post_rel_link( $title = '%title' ) { $link = "\n"; + $link .= "' href='" . get_permalink($post) . "' />\n"; return apply_filters( "parent_post_rel_link", $link ); } @@ -2781,13 +2764,13 @@ function get_parent_post_rel_link( $title = '%title' ) { /** * Display relational link for parent item * - * @since 2.8.0 - * @deprecated 3.3.0 + * @since WP-2.8.0 + * @deprecated WP-3.3.0 * * @param string $title Optional. Link title format. Default '%title'. */ function parent_post_rel_link( $title = '%title' ) { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); echo get_parent_post_rel_link($title); } @@ -2795,13 +2778,13 @@ function parent_post_rel_link( $title = '%title' ) { /** * Add the "Dashboard"/"Visit Site" menu. * - * @since 3.2.0 - * @deprecated 3.3.0 + * @since WP-3.2.0 + * @deprecated WP-3.3.0 * * @param WP_Admin_Bar $wp_admin_bar WP_Admin_Bar instance. */ function wp_admin_bar_dashboard_view_site_menu( $wp_admin_bar ) { - _deprecated_function( __FUNCTION__, '3.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0' ); $user_id = get_current_user_id(); @@ -2818,15 +2801,15 @@ function wp_admin_bar_dashboard_view_site_menu( $wp_admin_bar ) { /** * Checks if the current user belong to a given site. * - * @since MU (3.0.0) - * @deprecated 3.3.0 Use is_user_member_of_blog() + * @since WP-MU (3.0.0) + * @deprecated WP-3.3.0 Use is_user_member_of_blog() * @see is_user_member_of_blog() * * @param int $blog_id Site ID * @return bool True if the current users belong to $blog_id, false if not. */ function is_blog_user( $blog_id = 0 ) { - _deprecated_function( __FUNCTION__, '3.3.0', 'is_user_member_of_blog()' ); + _deprecated_function( __FUNCTION__, 'WP-3.3.0', 'is_user_member_of_blog()' ); return is_user_member_of_blog( get_current_user_id(), $blog_id ); } @@ -2834,52 +2817,52 @@ function is_blog_user( $blog_id = 0 ) { /** * Open the file handle for debugging. * - * @since 0.71 - * @deprecated 3.4.0 Use error_log() + * @since WP-0.71 + * @deprecated WP-3.4.0 Use error_log() * @see error_log() * - * @link https://www.php.net/manual/en/function.error-log.php + * @link https://secure.php.net/manual/en/function.error-log.php * * @param string $filename File name. * @param string $mode Type of access you required to the stream. * @return false Always false. */ function debug_fopen( $filename, $mode ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'error_log()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'error_log()' ); return false; } /** * Write contents to the file used for debugging. * - * @since 0.71 - * @deprecated 3.4.0 Use error_log() + * @since WP-0.71 + * @deprecated WP-3.4.0 Use error_log() * @see error_log() * - * @link https://www.php.net/manual/en/function.error-log.php + * @link https://secure.php.net/manual/en/function.error-log.php * - * @param mixed $fp Unused. - * @param string $message Message to log. + * @param mixed $fp Unused. + * @param string $string Message to log. */ -function debug_fwrite( $fp, $message ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'error_log()' ); +function debug_fwrite( $fp, $string ) { + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'error_log()' ); if ( ! empty( $GLOBALS['debug'] ) ) - error_log( $message ); + error_log( $string ); } /** * Close the debugging file handle. * - * @since 0.71 - * @deprecated 3.4.0 Use error_log() + * @since WP-0.71 + * @deprecated WP-3.4.0 Use error_log() * @see error_log() * - * @link https://www.php.net/manual/en/function.error-log.php + * @link https://secure.php.net/manual/en/function.error-log.php * * @param mixed $fp Unused. */ function debug_fclose( $fp ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'error_log()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'error_log()' ); } /** @@ -2889,14 +2872,14 @@ function debug_fclose( $fp ) { * 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 Use wp_get_themes() + * @since WP-1.5.0 + * @deprecated WP-3.4.0 Use wp_get_themes() * @see wp_get_themes() * * @return array Theme list with theme data. */ function get_themes() { - _deprecated_function( __FUNCTION__, '3.4.0', 'wp_get_themes()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'wp_get_themes()' ); global $wp_themes; if ( isset( $wp_themes ) ) @@ -2919,15 +2902,15 @@ function get_themes() { /** * Retrieve theme data. * - * @since 1.5.0 - * @deprecated 3.4.0 Use wp_get_theme() + * @since WP-1.5.0 + * @deprecated WP-3.4.0 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.0', 'wp_get_theme( $stylesheet )' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'wp_get_theme( $stylesheet )' ); $themes = get_themes(); if ( is_array( $themes ) && array_key_exists( $theme, $themes ) ) @@ -2938,14 +2921,14 @@ function get_theme( $theme ) { /** * Retrieve current theme name. * - * @since 1.5.0 - * @deprecated 3.4.0 Use wp_get_theme() + * @since WP-1.5.0 + * @deprecated WP-3.4.0 Use wp_get_theme() * @see wp_get_theme() * * @return string */ function get_current_theme() { - _deprecated_function( __FUNCTION__, '3.4.0', 'wp_get_theme()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'wp_get_theme()' ); if ( $theme = get_option( 'current_theme' ) ) return $theme; @@ -2957,16 +2940,16 @@ function get_current_theme() { * Accepts matches array from preg_replace_callback in wpautop() or a string. * * Ensures that the contents of a `
        ...
        ` HTML block are not - * converted into paragraphs or line breaks. + * converted into paragraphs or line-breaks. * - * @since 1.2.0 - * @deprecated 3.4.0 + * @since WP-1.2.0 + * @deprecated WP-3.4.0 * * @param array|string $matches The array or string - * @return string The pre block without paragraph/line break conversion. + * @return string The pre block without paragraph/line-break conversion. */ function clean_pre($matches) { - _deprecated_function( __FUNCTION__, '3.4.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0' ); if ( is_array($matches) ) $text = $matches[1] . $matches[2] . ""; @@ -2984,8 +2967,8 @@ function clean_pre($matches) { /** * Add callbacks for image header display. * - * @since 2.1.0 - * @deprecated 3.4.0 Use add_theme_support() + * @since WP-2.1.0 + * @deprecated WP-3.4.0 Use add_theme_support() * @see add_theme_support() * * @param callable $wp_head_callback Call on the {@see 'wp_head'} action. @@ -2993,7 +2976,7 @@ function clean_pre($matches) { * @param callable $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.0', 'add_theme_support( \'custom-header\', $args )' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'add_theme_support( \'custom-header\', $args )' ); $args = array( 'wp-head-callback' => $wp_head_callback, 'admin-head-callback' => $admin_head_callback, @@ -3006,22 +2989,22 @@ function add_custom_image_header( $wp_head_callback, $admin_head_callback, $admi /** * Remove image header support. * - * @since 3.1.0 - * @deprecated 3.4.0 Use remove_theme_support() + * @since WP-3.1.0 + * @deprecated WP-3.4.0 Use remove_theme_support() * @see remove_theme_support() * * @return null|bool Whether support was removed. */ function remove_custom_image_header() { - _deprecated_function( __FUNCTION__, '3.4.0', 'remove_theme_support( \'custom-header\' )' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', '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 Use add_theme_support() + * @since WP-3.0.0 + * @deprecated WP-3.4.0 Use add_theme_support() * @see add_theme_support() * * @param callable $wp_head_callback Call on the {@see 'wp_head'} action. @@ -3029,7 +3012,7 @@ function remove_custom_image_header() { * @param callable $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.0', 'add_theme_support( \'custom-background\', $args )' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'add_theme_support( \'custom-background\', $args )' ); $args = array(); if ( $wp_head_callback ) $args['wp-head-callback'] = $wp_head_callback; @@ -3043,29 +3026,29 @@ function add_custom_background( $wp_head_callback = '', $admin_head_callback = ' /** * Remove custom background support. * - * @since 3.1.0 - * @deprecated 3.4.0 Use add_custom_background() + * @since WP-3.1.0 + * @deprecated WP-3.4.0 Use add_custom_background() * @see add_custom_background() * * @return null|bool Whether support was removed. */ function remove_custom_background() { - _deprecated_function( __FUNCTION__, '3.4.0', 'remove_theme_support( \'custom-background\' )' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', '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 Use wp_get_theme() + * @since WP-1.5.0 + * @deprecated WP-3.4.0 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.0', 'wp_get_theme()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'wp_get_theme()' ); $theme = new WP_Theme( wp_basename( dirname( $theme_file ) ), dirname( dirname( $theme_file ) ) ); $theme_data = array( @@ -3095,14 +3078,14 @@ function get_theme_data( $theme_file ) { * * @see update_post_cache() Posts and pages are the same, alias is intentional * - * @since 1.5.1 - * @deprecated 3.4.0 Use update_post_cache() + * @since WP-1.5.1 + * @deprecated WP-3.4.0 Use update_post_cache() * @see update_post_cache() * * @param array $pages list of page objects */ function update_page_cache( &$pages ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'update_post_cache()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'update_post_cache()' ); update_post_cache( $pages ); } @@ -3113,14 +3096,14 @@ function update_page_cache( &$pages ) { * 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 Use clean_post_cache + * @since WP-2.0.0 + * @deprecated WP-3.4.0 Use clean_post_cache * @see clean_post_cache() * * @param int $id Page ID to clean */ function clean_page_cache( $id ) { - _deprecated_function( __FUNCTION__, '3.4.0', 'clean_post_cache()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.0', 'clean_post_cache()' ); clean_post_cache( $id ); } @@ -3128,31 +3111,31 @@ function clean_page_cache( $id ) { /** * Retrieve nonce action "Are you sure" message. * - * Deprecated in 3.4.1 and 3.5.0. Backported to 3.3.3. + * Deprecated in WP-3.4.1 and WP-3.5.0. Backported to WP-3.3.3. * - * @since 2.0.4 - * @deprecated 3.4.1 Use wp_nonce_ays() + * @since WP-2.0.4 + * @deprecated WP-3.4.1 Use wp_nonce_ays() * @see wp_nonce_ays() * * @param string $action Nonce action. * @return string Are you sure message. */ function wp_explain_nonce( $action ) { - _deprecated_function( __FUNCTION__, '3.4.1', 'wp_nonce_ays()' ); + _deprecated_function( __FUNCTION__, 'WP-3.4.1', 'wp_nonce_ays()' ); return __( 'Are you sure you want to do this?' ); } /** * Display "sticky" CSS class, if a post is sticky. * - * @since 2.7.0 - * @deprecated 3.5.0 Use post_class() + * @since WP-2.7.0 + * @deprecated WP-3.5.0 Use post_class() * @see post_class() * * @param int $post_id An optional post ID. */ function sticky_class( $post_id = null ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'post_class()' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0', 'post_class()' ); if ( is_sticky( $post_id ) ) echo ' sticky'; } @@ -3163,21 +3146,21 @@ function sticky_class( $post_id = null ) { * This is no longer needed as WP_Post lazy-loads the ancestors * property with get_post_ancestors(). * - * @since 2.3.4 - * @deprecated 3.5.0 Use get_post_ancestors() + * @since WP-2.3.4 + * @deprecated WP-3.5.0 Use get_post_ancestors() * @see get_post_ancestors() * * @param WP_Post $post Post object, passed by reference (unused). */ function _get_post_ancestors( &$post ) { - _deprecated_function( __FUNCTION__, '3.5.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0' ); } /** * Load an image from a string, if PHP supports it. * - * @since 2.1.0 - * @deprecated 3.5.0 Use wp_get_image_editor() + * @since WP-2.1.0 + * @deprecated WP-3.5.0 Use wp_get_image_editor() * @see wp_get_image_editor() * * @param string $file Filename of the image to load. @@ -3185,14 +3168,14 @@ function _get_post_ancestors( &$post ) { * error string on failure. */ function wp_load_image( $file ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_get_image_editor()' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0', 'wp_get_image_editor()' ); if ( is_numeric( $file ) ) $file = get_attached_file( $file ); if ( ! is_file( $file ) ) { - /* translators: %s: File name. */ - return sprintf( __( 'File “%s” does not exist?' ), $file ); + /* translators: %s: file name */ + return sprintf( __( 'File “%s” doesn’t exist?' ), $file ); } if ( ! function_exists('imagecreatefromstring') ) @@ -3219,24 +3202,24 @@ function wp_load_image( $file ) { * be PNG. The only supported image types are PNG, GIF, and JPEG. * * Some functionality requires API to exist, so some PHP version may lose out - * support. This is not the fault of WordPress (where functionality is + * support. This is not the fault of ClassicPress (where functionality is * downgraded, not actual defects), but of your PHP version. * - * @since 2.5.0 - * @deprecated 3.5.0 Use wp_get_image_editor() + * @since WP-2.5.0 + * @deprecated WP-3.5.0 Use wp_get_image_editor() * @see wp_get_image_editor() * - * @param string $file Image file path. - * @param int $max_w Maximum width to resize to. - * @param int $max_h Maximum height to resize to. - * @param bool $crop Optional. Whether to crop image or resize. Default false. - * @param string $suffix Optional. File suffix. Default null. - * @param string $dest_path Optional. New image file path. Default null. - * @param int $jpeg_quality Optional. Image quality percentage. Default 90. + * @param string $file Image file path. + * @param int $max_w Maximum width to resize to. + * @param int $max_h Maximum height to resize to. + * @param bool $crop Optional. Whether to crop image or resize. + * @param string $suffix Optional. File suffix. + * @param string $dest_path Optional. New image file path. + * @param int $jpeg_quality Optional, default is 90. Image quality percentage. * @return mixed WP_Error on failure. String with new destination path. */ function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_get_image_editor()' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0', 'wp_get_image_editor()' ); $editor = wp_get_image_editor( $file ); if ( is_wp_error( $editor ) ) @@ -3262,8 +3245,8 @@ function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $de * Has categories in 'post_category' property or key. Has tags in 'tags_input' * property or key. * - * @since 1.0.0 - * @deprecated 3.5.0 Use get_post() + * @since WP-1.0.0 + * @deprecated WP-3.5.0 Use get_post() * @see get_post() * * @param int $postid Post ID. @@ -3271,15 +3254,15 @@ function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $de * @return WP_Post|null Post object or array holding post contents and information */ function wp_get_single_post( $postid = 0, $mode = OBJECT ) { - _deprecated_function( __FUNCTION__, '3.5.0', 'get_post()' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0', 'get_post()' ); return get_post( $postid, $mode ); } /** * Check that the user login name and password is correct. * - * @since 0.71 - * @deprecated 3.5.0 Use wp_authenticate() + * @since WP-0.71 + * @deprecated WP-3.5.0 Use wp_authenticate() * @see wp_authenticate() * * @param string $user_login User name. @@ -3287,7 +3270,7 @@ function wp_get_single_post( $postid = 0, $mode = OBJECT ) { * @return bool False if does not authenticate, true if username and password authenticates. */ function user_pass_ok($user_login, $user_pass) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_authenticate()' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0', 'wp_authenticate()' ); $user = wp_authenticate( $user_login, $user_pass ); if ( is_wp_error( $user ) ) return false; @@ -3298,23 +3281,23 @@ function user_pass_ok($user_login, $user_pass) { /** * Callback formerly fired on the save_post hook. No longer needed. * - * @since 2.3.0 - * @deprecated 3.5.0 + * @since WP-2.3.0 + * @deprecated WP-3.5.0 */ function _save_post_hook() {} /** * Check if the installed version of GD supports particular image type * - * @since 2.9.0 - * @deprecated 3.5.0 Use wp_image_editor_supports() + * @since WP-2.9.0 + * @deprecated WP-3.5.0 Use wp_image_editor_supports() * @see wp_image_editor_supports() * * @param string $mime_type * @return bool */ function gd_edit_image_support($mime_type) { - _deprecated_function( __FUNCTION__, '3.5.0', 'wp_image_editor_supports()' ); + _deprecated_function( __FUNCTION__, 'WP-3.5.0', 'wp_image_editor_supports()' ); if ( function_exists('imagetypes') ) { switch( $mime_type ) { @@ -3324,8 +3307,6 @@ function gd_edit_image_support($mime_type) { return (imagetypes() & IMG_PNG) != 0; case 'image/gif': return (imagetypes() & IMG_GIF) != 0; - case 'image/webp': - return (imagetypes() & IMG_WEBP) != 0; } } else { switch( $mime_type ) { @@ -3335,8 +3316,6 @@ function gd_edit_image_support($mime_type) { return function_exists('imagecreatefrompng'); case 'image/gif': return function_exists('imagecreatefromgif'); - case 'image/webp': - return function_exists('imagecreatefromwebp'); } } return false; @@ -3345,20 +3324,20 @@ function gd_edit_image_support($mime_type) { /** * Converts an integer byte value to a shorthand byte value. * - * @since 2.3.0 - * @deprecated 3.6.0 Use size_format() + * @since WP-2.3.0 + * @deprecated WP-3.6.0 Use size_format() * @see size_format() * * @param int $bytes An integer byte value. * @return string A shorthand byte value. */ function wp_convert_bytes_to_hr( $bytes ) { - _deprecated_function( __FUNCTION__, '3.6.0', 'size_format()' ); + _deprecated_function( __FUNCTION__, 'WP-3.6.0', 'size_format()' ); $units = array( 0 => 'B', 1 => 'KB', 2 => 'MB', 3 => 'GB', 4 => 'TB' ); $log = log( $bytes, KB_IN_BYTES ); $power = (int) $log; - $size = KB_IN_BYTES ** ( $log - $power ); + $size = pow( KB_IN_BYTES, $log - $power ); if ( ! is_nan( $size ) && array_key_exists( $power, $units ) ) { $unit = $units[ $power ]; @@ -3373,15 +3352,15 @@ function wp_convert_bytes_to_hr( $bytes ) { /** * Formerly used internally to tidy up the search terms. * - * @since 2.9.0 + * @since WP-2.9.0 * @access private - * @deprecated 3.7.0 + * @deprecated WP-3.7.0 * * @param string $t Search terms to "tidy", e.g. trim. * @return string Trimmed search terms. */ function _search_terms_tidy( $t ) { - _deprecated_function( __FUNCTION__, '3.7.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.7.0' ); return trim( $t, "\"'\n\r " ); } @@ -3389,16 +3368,16 @@ function _search_terms_tidy( $t ) { * Determine if TinyMCE is available. * * Checks to see if the user has deleted the tinymce files to slim down - * their WordPress installation. + * their ClassicPress installation. * - * @since 2.1.0 - * @deprecated 3.9.0 + * @since WP-2.1.0 + * @deprecated WP-3.9.0 * * @return bool Whether TinyMCE exists. */ function rich_edit_exists() { global $wp_rich_edit_exists; - _deprecated_function( __FUNCTION__, '3.9.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.9.0' ); if ( ! isset( $wp_rich_edit_exists ) ) $wp_rich_edit_exists = file_exists( ABSPATH . WPINC . '/js/tinymce/tinymce.js' ); @@ -3409,9 +3388,9 @@ function rich_edit_exists() { /** * Old callback for tag link tooltips. * - * @since 2.7.0 + * @since WP-2.7.0 * @access private - * @deprecated 3.9.0 + * @deprecated WP-3.9.0 * * @param int $count Number of topics. * @return int Number of topics. @@ -3425,46 +3404,46 @@ function default_topic_count_text( $count ) { * * Has not performed this function for many, many years. Use wpdb::prepare() instead. * - * @since 0.71 - * @deprecated 3.9.0 + * @since WP-0.71 + * @deprecated WP-3.9.0 * * @param string $content The text to format. * @return string The very same text. */ function format_to_post( $content ) { - _deprecated_function( __FUNCTION__, '3.9.0' ); + _deprecated_function( __FUNCTION__, 'WP-3.9.0' ); return $content; } /** * Formerly used to escape strings before searching the DB. It was poorly documented and never worked as described. * - * @since 2.5.0 - * @deprecated 4.0.0 Use wpdb::esc_like() + * @since WP-2.5.0 + * @deprecated WP-4.0.0 Use wpdb::esc_like() * @see wpdb::esc_like() * * @param string $text The text to be escaped. * @return string text, safe for inclusion in LIKE query. */ function like_escape($text) { - _deprecated_function( __FUNCTION__, '4.0.0', 'wpdb::esc_like()' ); + _deprecated_function( __FUNCTION__, 'WP-4.0.0', 'wpdb::esc_like()' ); return str_replace( array( "%", "_" ), array( "\\%", "\\_" ), $text ); } /** * Determines if the URL can be accessed over SSL. * - * Determines if the URL can be accessed over SSL by using the WordPress HTTP API to access + * Determines if the URL can be accessed over SSL by using the ClassicPress HTTP API to access * the URL using https as the scheme. * - * @since 2.5.0 - * @deprecated 4.0.0 + * @since WP-2.5.0 + * @deprecated WP-4.0.0 * * @param string $url The URL to test. * @return bool Whether SSL access is available. */ function url_is_accessable_via_ssl( $url ) { - _deprecated_function( __FUNCTION__, '4.0.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.0.0' ); $response = wp_remote_get( set_url_scheme( $url, 'https' ) ); @@ -3484,53 +3463,53 @@ function url_is_accessable_via_ssl( $url ) { * Will only perform task if the user has permissions and template and preview * query variables exist. * - * @since 2.6.0 - * @deprecated 4.3.0 + * @since WP-2.6.0 + * @deprecated WP-4.3.0 */ function preview_theme() { - _deprecated_function( __FUNCTION__, '4.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0' ); } /** * Private function to modify the current template when previewing a theme * - * @since 2.9.0 - * @deprecated 4.3.0 + * @since WP-2.9.0 + * @deprecated WP-4.3.0 * @access private * * @return string */ function _preview_theme_template_filter() { - _deprecated_function( __FUNCTION__, '4.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0' ); return ''; } /** * Private function to modify the current stylesheet when previewing a theme * - * @since 2.9.0 - * @deprecated 4.3.0 + * @since WP-2.9.0 + * @deprecated WP-4.3.0 * @access private * * @return string */ function _preview_theme_stylesheet_filter() { - _deprecated_function( __FUNCTION__, '4.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0' ); return ''; } /** * Callback function for ob_start() to capture all links in the theme. * - * @since 2.6.0 - * @deprecated 4.3.0 + * @since WP-2.6.0 + * @deprecated WP-4.3.0 * @access private * * @param string $content * @return string */ function preview_theme_ob_filter( $content ) { - _deprecated_function( __FUNCTION__, '4.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0' ); return $content; } @@ -3539,33 +3518,33 @@ function preview_theme_ob_filter( $content ) { * * Callback function for preg_replace_callback() to accept and filter matches. * - * @since 2.6.0 - * @deprecated 4.3.0 + * @since WP-2.6.0 + * @deprecated WP-4.3.0 * @access private * * @param array $matches * @return string */ function preview_theme_ob_filter_callback( $matches ) { - _deprecated_function( __FUNCTION__, '4.3.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0' ); return ''; } /** * Formats text for the rich text editor. * - * The {@see 'richedit_pre'} filter is applied here. If `$text` is empty the filter will + * The {@see 'richedit_pre'} filter is applied here. If $text is empty the filter will * be applied to an empty string. * - * @since 2.0.0 - * @deprecated 4.3.0 Use format_for_editor() + * @since WP-2.0.0 + * @deprecated WP-4.3.0 Use format_for_editor() * @see format_for_editor() * * @param string $text The text to be formatted. * @return string The formatted text after filter is applied. */ function wp_richedit_pre($text) { - _deprecated_function( __FUNCTION__, '4.3.0', 'format_for_editor()' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0', 'format_for_editor()' ); if ( empty( $text ) ) { /** @@ -3578,8 +3557,8 @@ function wp_richedit_pre($text) { * If a non-empty string is passed, the filter is evaluated on the wp_richedit_pre() * return after being formatted. * - * @since 2.0.0 - * @deprecated 4.3.0 + * @since WP-2.0.0 + * @deprecated WP-4.3.0 * * @param string $output Text for the rich text editor. */ @@ -3600,24 +3579,24 @@ function wp_richedit_pre($text) { * Unless $output is empty it will pass through htmlspecialchars before the * {@see 'htmledit_pre'} filter is applied. * - * @since 2.5.0 - * @deprecated 4.3.0 Use format_for_editor() + * @since WP-2.5.0 + * @deprecated WP-4.3.0 Use format_for_editor() * @see format_for_editor() * * @param string $output The text to be formatted. * @return string Formatted text after filter applied. */ function wp_htmledit_pre($output) { - _deprecated_function( __FUNCTION__, '4.3.0', 'format_for_editor()' ); + _deprecated_function( __FUNCTION__, 'WP-4.3.0', 'format_for_editor()' ); if ( !empty($output) ) - $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); // Convert only '< > &'. + $output = htmlspecialchars($output, ENT_NOQUOTES, get_option( 'blog_charset' ) ); // convert only < > & /** * Filters the text before it is formatted for the HTML editor. * - * @since 2.5.0 - * @deprecated 4.3.0 + * @since WP-2.5.0 + * @deprecated WP-4.3.0 * * @param string $output The HTML-formatted text. */ @@ -3627,17 +3606,17 @@ function wp_htmledit_pre($output) { /** * Retrieve permalink from post ID. * - * @since 1.0.0 - * @deprecated 4.4.0 Use get_permalink() + * @since WP-1.0.0 + * @deprecated WP-4.4.0 Use get_permalink() * @see get_permalink() * - * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post. + * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global $post. * @return string|false */ -function post_permalink( $post = 0 ) { - _deprecated_function( __FUNCTION__, '4.4.0', 'get_permalink()' ); +function post_permalink( $post_id = 0 ) { + _deprecated_function( __FUNCTION__, 'WP-4.4.0', 'get_permalink()' ); - return get_permalink( $post ); + return get_permalink( $post_id ); } /** @@ -3646,22 +3625,20 @@ function post_permalink( $post = 0 ) { * If $file_path is a writable filename, this will do a GET request and write * the file to that path. * - * @since 2.5.0 - * @deprecated 4.4.0 Use WP_Http + * @since WP-2.5.0 + * @deprecated WP-4.4.0 Use WP_Http * @see WP_Http * * @param string $url URL to fetch. * @param string|bool $file_path Optional. File path to write request to. Default false. * @param int $red Optional. The number of Redirects followed, Upon 5 being hit, * returns false. Default 1. - * @return \WpOrg\Requests\Utility\CaseInsensitiveDictionary|false Headers on success, false on failure. + * @return bool|string False on failure and string of headers if HEAD request. */ function wp_get_http( $url, $file_path = false, $red = 1 ) { - _deprecated_function( __FUNCTION__, '4.4.0', 'WP_Http' ); + _deprecated_function( __FUNCTION__, 'WP-4.4.0', 'WP_Http' ); - if ( function_exists( 'set_time_limit' ) ) { - @set_time_limit( 60 ); - } + @set_time_limit( 60 ); if ( $red > 5 ) return false; @@ -3690,7 +3667,7 @@ function wp_get_http( $url, $file_path = false, $red = 1 ) { if ( false == $file_path ) return $headers; - // GET request - write it to the supplied filename. + // GET request - write it to the supplied filename $out_fp = fopen($file_path, 'w'); if ( !$out_fp ) return $headers; @@ -3705,46 +3682,42 @@ function wp_get_http( $url, $file_path = false, $red = 1 ) { /** * Whether SSL login should be forced. * - * @since 2.6.0 - * @deprecated 4.4.0 Use force_ssl_admin() + * @since WP-2.6.0 + * @deprecated WP-4.4.0 Use force_ssl_admin() * @see force_ssl_admin() * * @param string|bool $force Optional Whether to force SSL login. Default null. * @return bool True if forced, false if not forced. */ function force_ssl_login( $force = null ) { - _deprecated_function( __FUNCTION__, '4.4.0', 'force_ssl_admin()' ); + _deprecated_function( __FUNCTION__, 'WP-4.4.0', 'force_ssl_admin()' ); return force_ssl_admin( $force ); } /** * Retrieve path of comment popup template in current or parent template. * - * @since 1.5.0 - * @deprecated 4.5.0 + * @since WP-1.5.0 + * @deprecated WP-4.5.0 * * @return string Full path to comments popup template file. */ function get_comments_popup_template() { - _deprecated_function( __FUNCTION__, '4.5.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.5.0' ); return ''; } /** - * Determines whether the current URL is within the comments popup window. + * Whether the current URL is within the comments popup window. * - * For more information on this and similar theme functions, check out - * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ - * Conditional Tags} article in the Theme Developer Handbook. + * @since WP-1.5.0 + * @deprecated WP-4.5.0 * - * @since 1.5.0 - * @deprecated 4.5.0 - * - * @return false Always returns false. + * @return bool */ function is_comments_popup() { - _deprecated_function( __FUNCTION__, '4.5.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.5.0' ); return false; } @@ -3752,24 +3725,24 @@ function is_comments_popup() { /** * Display the JS popup script to show a comment. * - * @since 0.71 - * @deprecated 4.5.0 + * @since WP-0.71 + * @deprecated WP-4.5.0 */ function comments_popup_script() { - _deprecated_function( __FUNCTION__, '4.5.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.5.0' ); } /** - * Adds element attributes to open links in new tabs. + * Adds element attributes to open links in new windows. * - * @since 0.71 - * @deprecated 4.5.0 + * @since WP-0.71 + * @deprecated WP-4.5.0 * - * @param string $text Content to replace links to open in a new tab. + * @param string $text Content to replace links to open in a new window. * @return string Content that has filtered links. */ function popuplinks( $text ) { - _deprecated_function( __FUNCTION__, '4.5.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.5.0' ); $text = preg_replace('//i', "", $text); return $text; } @@ -3780,13 +3753,13 @@ function popuplinks( $text ) { * Deprecated function that previously assisted in turning Google Video URLs * into embeds but that service has since been shut down. * - * @since 2.9.0 - * @deprecated 4.6.0 + * @since WP-2.9.0 + * @deprecated WP-4.6.0 * * @return string An empty string. */ function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) { - _deprecated_function( __FUNCTION__, '4.6.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.6.0' ); return ''; } @@ -3794,13 +3767,13 @@ function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) { /** * Retrieve path of paged template in current or parent template. * - * @since 1.5.0 - * @deprecated 4.7.0 The paged.php template is no longer part of the theme template hierarchy. + * @since WP-1.5.0 + * @deprecated WP-4.7.0 The paged.php template is no longer part of the theme template hierarchy. * * @return string Full path to paged template file. */ function get_paged_template() { - _deprecated_function( __FUNCTION__, '4.7.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.7.0' ); return get_query_template( 'paged' ); } @@ -3819,16 +3792,16 @@ function get_paged_template() { * energy demands it placed, now merely passing through its * input to the return. * - * @since 1.0.0 - * @deprecated 4.7.0 Officially dropped security support for Netscape 4. + * @since WP-1.0.0 + * @deprecated WP-4.7.0 Officially dropped security support for Netscape 4. * - * @param string $content + * @param string $string * @return string */ -function wp_kses_js_entities( $content ) { - _deprecated_function( __FUNCTION__, '4.7.0' ); +function wp_kses_js_entities( $string ) { + _deprecated_function( __FUNCTION__, 'WP-4.7.0' ); - return preg_replace( '%&\s*\{[^}]*(\}\s*;?|$)%', '', $content ); + return preg_replace( '%&\s*\{[^}]*(\}\s*;?|$)%', '', $string ); } /** @@ -3837,8 +3810,8 @@ function wp_kses_js_entities( $content ) { * Used by usort() as a callback, should not be used directly. Can actually be * used to sort any term object. * - * @since 2.3.0 - * @deprecated 4.7.0 Use wp_list_sort() + * @since WP-2.3.0 + * @deprecated WP-4.7.0 Use wp_list_sort() * @access private * * @param object $a @@ -3846,7 +3819,7 @@ function wp_kses_js_entities( $content ) { * @return int */ function _usort_terms_by_ID( $a, $b ) { - _deprecated_function( __FUNCTION__, '4.7.0', 'wp_list_sort()' ); + _deprecated_function( __FUNCTION__, 'WP-4.7.0', 'wp_list_sort()' ); if ( $a->term_id > $b->term_id ) return 1; @@ -3862,8 +3835,8 @@ function _usort_terms_by_ID( $a, $b ) { * Used by usort() as a callback, should not be used directly. Can actually be * used to sort any term object. * - * @since 2.3.0 - * @deprecated 4.7.0 Use wp_list_sort() + * @since WP-2.3.0 + * @deprecated WP-4.7.0 Use wp_list_sort() * @access private * * @param object $a @@ -3871,7 +3844,7 @@ function _usort_terms_by_ID( $a, $b ) { * @return int */ function _usort_terms_by_name( $a, $b ) { - _deprecated_function( __FUNCTION__, '4.7.0', 'wp_list_sort()' ); + _deprecated_function( __FUNCTION__, 'WP-4.7.0', 'wp_list_sort()' ); return strcmp( $a->name, $b->name ); } @@ -3879,8 +3852,8 @@ function _usort_terms_by_name( $a, $b ) { /** * Sort menu items by the desired key. * - * @since 3.0.0 - * @deprecated 4.7.0 Use wp_list_sort() + * @since WP-3.0.0 + * @deprecated WP-4.7.0 Use wp_list_sort() * @access private * * @global string $_menu_item_sort_prop @@ -3892,7 +3865,7 @@ function _usort_terms_by_name( $a, $b ) { function _sort_nav_menu_items( $a, $b ) { global $_menu_item_sort_prop; - _deprecated_function( __FUNCTION__, '4.7.0', 'wp_list_sort()' ); + _deprecated_function( __FUNCTION__, 'WP-4.7.0', 'wp_list_sort()' ); if ( empty( $_menu_item_sort_prop ) ) return 0; @@ -3914,20 +3887,20 @@ function _sort_nav_menu_items( $a, $b ) { /** * Retrieves the Press This bookmarklet link. * - * @since 2.6.0 - * @deprecated 4.9.0 + * @since WP-2.6.0 + * @deprecated WP-4.9.0 * */ function get_shortcut_link() { - _deprecated_function( __FUNCTION__, '4.9.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.9.0' ); $link = ''; /** * Filters the Press This bookmarklet link. * - * @since 2.6.0 - * @deprecated 4.9.0 + * @since WP-2.6.0 + * @deprecated WP-4.9.0 * * @param string $link The Press This bookmarklet link. */ @@ -3937,13 +3910,13 @@ function get_shortcut_link() { /** * Ajax handler for saving a post from Press This. * -* @since 4.2.0 -* @deprecated 4.9.0 +* @since WP-4.2.0 +* @deprecated WP-4.9.0 */ function wp_ajax_press_this_save_post() { - _deprecated_function( __FUNCTION__, '4.9.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.9.0' ); if ( is_plugin_active( 'press-this/press-this-plugin.php' ) ) { - include WP_PLUGIN_DIR . '/press-this/class-wp-press-this-plugin.php'; + include( WP_PLUGIN_DIR . '/press-this/class-wp-press-this-plugin.php' ); $wp_press_this = new WP_Press_This_Plugin(); $wp_press_this->save_post(); } else { @@ -3954,13 +3927,13 @@ function wp_ajax_press_this_save_post() { /** * Ajax handler for creating new category from Press This. * -* @since 4.2.0 -* @deprecated 4.9.0 +* @since WP-4.2.0 +* @deprecated WP-4.9.0 */ function wp_ajax_press_this_add_category() { - _deprecated_function( __FUNCTION__, '4.9.0' ); + _deprecated_function( __FUNCTION__, 'WP-4.9.0' ); if ( is_plugin_active( 'press-this/press-this-plugin.php' ) ) { - include WP_PLUGIN_DIR . '/press-this/class-wp-press-this-plugin.php'; + include( WP_PLUGIN_DIR . '/press-this/class-wp-press-this-plugin.php' ); $wp_press_this = new WP_Press_This_Plugin(); $wp_press_this->add_category(); } else { @@ -3968,26 +3941,11 @@ function wp_ajax_press_this_add_category() { } } -/** - * Return the user request object for the specified request ID. - * - * @since 4.9.6 - * @deprecated 5.4.0 Use wp_get_user_request() - * @see wp_get_user_request() - * - * @param int $request_id The ID of the user request. - * @return WP_User_Request|false - */ -function wp_get_user_request_data( $request_id ) { - _deprecated_function( __FUNCTION__, '5.4.0', 'wp_get_user_request()' ); - return wp_get_user_request( $request_id ); -} - /** * Filters 'img' elements in post content to add 'srcset' and 'sizes' attributes. * - * @since 4.4.0 - * @deprecated 5.5.0 + * @since WP-4.4.0 + * @deprecated WP-5.5.0 * * @see wp_image_add_srcset_and_sizes() * @@ -3995,380 +3953,62 @@ function wp_get_user_request_data( $request_id ) { * @return string Converted content with 'srcset' and 'sizes' attributes added to images. */ function wp_make_content_images_responsive( $content ) { - _deprecated_function( __FUNCTION__, '5.5.0', 'wp_filter_content_tags()' ); + _deprecated_function( __FUNCTION__, 'WP-5.5.0', 'wp_filter_content_tags()' ); // This will also add the `loading` attribute to `img` tags, if enabled. return wp_filter_content_tags( $content ); } /** - * Turn register globals off. - * - * @since 2.1.0 - * @access private - * @deprecated 5.5.0 - */ -function wp_unregister_GLOBALS() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid - // register_globals was deprecated in PHP 5.3 and removed entirely in PHP 5.4. - _deprecated_function( __FUNCTION__, '5.5.0' ); -} - -/** - * Does comment contain disallowed characters or words. - * - * @since 1.5.0 - * @deprecated 5.5.0 Use wp_check_comment_disallowed_list() instead. - * Please consider writing more inclusive code. - * - * @param string $author The author of the comment - * @param string $email The email of the comment - * @param string $url The url used in the comment - * @param string $comment The comment content - * @param string $user_ip The comment author's IP address - * @param string $user_agent The author's browser user agent - * @return bool True if comment contains disallowed content, false if comment does not - */ -function wp_blacklist_check( $author, $email, $url, $comment, $user_ip, $user_agent ) { - _deprecated_function( __FUNCTION__, '5.5.0', 'wp_check_comment_disallowed_list()' ); - - return wp_check_comment_disallowed_list( $author, $email, $url, $comment, $user_ip, $user_agent ); -} - -/** - * Filters out `register_meta()` args based on an allowed list. - * - * `register_meta()` args may change over time, so requiring the allowed list - * to be explicitly turned off is a warranty seal of sorts. - * - * @access private - * @since 4.6.0 - * @deprecated 5.5.0 Use _wp_register_meta_args_allowed_list() instead. - * Please consider writing more inclusive code. - * - * @param array $args Arguments from `register_meta()`. - * @param array $default_args Default arguments for `register_meta()`. - * @return array Filtered arguments. - */ -function _wp_register_meta_args_whitelist( $args, $default_args ) { - _deprecated_function( __FUNCTION__, '5.5.0', '_wp_register_meta_args_allowed_list()' ); - - return _wp_register_meta_args_allowed_list( $args, $default_args ); -} - -/** - * Adds an array of options to the list of allowed options. - * - * @since 2.7.0 - * @deprecated 5.5.0 Use add_allowed_options() instead. - * Please consider writing more inclusive code. - * - * @global array $allowed_options - * - * @param array $new_options - * @param string|array $options - * @return array - */ -function add_option_whitelist( $new_options, $options = '' ) { - _deprecated_function( __FUNCTION__, '5.5.0', 'add_allowed_options()' ); - - return add_allowed_options( $new_options, $options ); -} - -/** - * Removes a list of options from the allowed options list. - * - * @since 2.7.0 - * @deprecated 5.5.0 Use remove_allowed_options() instead. - * Please consider writing more inclusive code. - * - * @global array $allowed_options - * - * @param array $del_options - * @param string|array $options - * @return array - */ -function remove_option_whitelist( $del_options, $options = '' ) { - _deprecated_function( __FUNCTION__, '5.5.0', 'remove_allowed_options()' ); - - return remove_allowed_options( $del_options, $options ); -} - -/** - * Adds slashes to only string values in an array of values. - * - * This should be used when preparing data for core APIs that expect slashed data. - * This should not be used to escape data going directly into an SQL query. - * - * @since 5.3.0 - * @deprecated 5.6.0 Use wp_slash() - * - * @see wp_slash() - * - * @param mixed $value Scalar or array of scalars. - * @return mixed Slashes $value - */ -function wp_slash_strings_only( $value ) { - return map_deep( $value, 'addslashes_strings_only' ); -} - -/** - * Adds slashes only if the provided value is a string. - * - * @since 5.3.0 - * @deprecated 5.6.0 - * - * @see wp_slash() - * - * @param mixed $value - * @return mixed - */ -function addslashes_strings_only( $value ) { - return is_string( $value ) ? addslashes( $value ) : $value; -} - -/** - * Displays a `noindex` meta tag if required by the blog configuration. + * Display or retrieve page title for post archive based on date. * - * If a blog is marked as not being public then the `noindex` meta tag will be - * output to tell web robots not to index the page content. + * Useful for when the template only needs to display the month and year, + * if either are available. The prefix does not automatically place a space + * between the prefix, so if there should be a space, the parameter value + * will need to have it at the end. * - * Typical usage is as a {@see 'wp_head'} callback: + * @since WP-0.71 + * @deprecated CP-1.5.0 * - * add_action( 'wp_head', 'noindex' ); + * @global WP_Locale $wp_locale * - * @see wp_no_robots() - * - * @since 2.1.0 - * @deprecated 5.7.0 Use wp_robots_noindex() instead on 'wp_robots' filter. + * @param string $prefix Optional. What to display before the title. + * @param bool $display Optional, default is true. Whether to display or retrieve title. + * @return string|void Title when retrieving. */ -function noindex() { - _deprecated_function( __FUNCTION__, '5.7.0', 'wp_robots_noindex()' ); +function single_month_title( $prefix = '', $display = true ) { + _deprecated_function( __FUNCTION__, 'CP-1.5.0' ); + global $wp_locale; - // If the blog is not public, tell robots to go away. - if ( '0' == get_option( 'blog_public' ) ) { - wp_no_robots(); - } -} + $m = get_query_var( 'm' ); + $year = get_query_var( 'year' ); + $monthnum = get_query_var( 'monthnum' ); -/** - * Display a `noindex` meta tag. - * - * Outputs a `noindex` meta tag that tells web robots not to index the page content. - * - * Typical usage is as a {@see 'wp_head'} callback: - * - * add_action( 'wp_head', 'wp_no_robots' ); - * - * @since 3.3.0 - * @since 5.3.0 Echo `noindex,nofollow` if search engine visibility is discouraged. - * @deprecated 5.7.0 Use wp_robots_no_robots() instead on 'wp_robots' filter. - */ -function wp_no_robots() { - _deprecated_function( __FUNCTION__, '5.7.0', 'wp_robots_no_robots()' ); - - if ( get_option( 'blog_public' ) ) { - echo "\n"; - return; + if ( ! empty( $monthnum ) && ! empty( $year ) ) { + $my_year = $year; + $my_month = $wp_locale->get_month( $monthnum ); + } elseif ( ! empty( $m ) ) { + $my_year = substr( $m, 0, 4 ); + $my_month = $wp_locale->get_month( substr( $m, 4, 2 ) ); } - echo "\n"; -} - -/** - * Display a `noindex,noarchive` meta tag and referrer `strict-origin-when-cross-origin` meta tag. - * - * Outputs a `noindex,noarchive` meta tag that tells web robots not to index or cache the page content. - * Outputs a referrer `strict-origin-when-cross-origin` meta tag that tells the browser not to send - * the full URL as a referrer to other sites when cross-origin assets are loaded. - * - * Typical usage is as a {@see 'wp_head'} callback: - * - * add_action( 'wp_head', 'wp_sensitive_page_meta' ); - * - * @since 5.0.1 - * @deprecated 5.7.0 Use wp_robots_sensitive_page() instead on 'wp_robots' filter - * and wp_strict_cross_origin_referrer() on 'wp_head' action. - * - * @see wp_robots_sensitive_page() - */ -function wp_sensitive_page_meta() { - _deprecated_function( __FUNCTION__, '5.7.0', 'wp_robots_sensitive_page()' ); - - ?> - - ID rather than $post_id as get_post() may have used the global $post object. - $imagedata = wp_get_attachment_metadata( $post->ID ); - - if ( ! is_array( $imagedata ) ) { - return false; - } - - $file = get_attached_file( $post->ID ); - - if ( ! empty( $imagedata['thumb'] ) ) { - $thumbfile = str_replace( wp_basename( $file ), $imagedata['thumb'], $file ); - if ( file_exists( $thumbfile ) ) { - /** - * Filters the attachment thumbnail file path. - * - * @since 2.1.0 - * - * @param string $thumbfile File path to the attachment thumbnail. - * @param int $post_id Attachment ID. - */ - return apply_filters( 'wp_get_attachment_thumb_file', $thumbfile, $post->ID ); - } - } - - return false; -} - -/** - * Gets the path to a translation file for loading a textdomain just in time. - * - * Caches the retrieved results internally. - * - * @since 4.7.0 - * @deprecated 6.1.0 - * @access private - * - * @see _load_textdomain_just_in_time() - * - * @param string $domain Text domain. Unique identifier for retrieving translated strings. - * @param bool $reset Whether to reset the internal cache. Used by the switch to locale functionality. - * @return string|false The path to the translation file or false if no translation file was found. - */ -function _get_path_to_translation( $domain, $reset = false ) { - _deprecated_function( __FUNCTION__, '6.1.0', 'WP_Textdomain_Registry' ); - - static $available_translations = array(); + $result = $prefix . $my_month . $prefix . $my_year; - if ( true === $reset ) { - $available_translations = array(); + if ( ! $display ) { + return $result; } - - if ( ! isset( $available_translations[ $domain ] ) ) { - $available_translations[ $domain ] = _get_path_to_translation_from_lang_dir( $domain ); - } - - return $available_translations[ $domain ]; -} - -/** - * Gets the path to a translation file in the languages directory for the current locale. - * - * Holds a cached list of available .mo files to improve performance. - * - * @since 4.7.0 - * @deprecated 6.1.0 - * @access private - * - * @see _get_path_to_translation() - * - * @param string $domain Text domain. Unique identifier for retrieving translated strings. - * @return string|false The path to the translation file or false if no translation file was found. - */ -function _get_path_to_translation_from_lang_dir( $domain ) { - _deprecated_function( __FUNCTION__, '6.1.0', 'WP_Textdomain_Registry' ); - - static $cached_mofiles = null; - - if ( null === $cached_mofiles ) { - $cached_mofiles = array(); - - $locations = array( - WP_LANG_DIR . '/plugins', - WP_LANG_DIR . '/themes', - ); - - foreach ( $locations as $location ) { - $mofiles = glob( $location . '/*.mo' ); - if ( $mofiles ) { - $cached_mofiles = array_merge( $cached_mofiles, $mofiles ); - } - } - } - - $locale = determine_locale(); - $mofile = "{$domain}-{$locale}.mo"; - - $path = WP_LANG_DIR . '/plugins/' . $mofile; - if ( in_array( $path, $cached_mofiles, true ) ) { - return $path; - } - - $path = WP_LANG_DIR . '/themes/' . $mofile; - if ( in_array( $path, $cached_mofiles, true ) ) { - return $path; - } - - return false; -} - -/** - * Determines whether global terms are enabled. - * - * @since 3.0.0 - * @since 6.1.0 This function now always returns false. - * @deprecated 6.1.0 - * - * @return bool Always returns false. - */ -function global_terms_enabled() { - _deprecated_function( __FUNCTION__, '6.1.0' ); - - return false; + echo $result; } /** * Filter the SQL clauses of an attachment query to include filenames. * - * @since 4.7.0 - * @deprecated 6.0.3 + * @since WP-4.7.0 + * @deprecated WP-6.0.3 * @access private * * @param array $clauses An array including WHERE, GROUP BY, JOIN, ORDER BY, @@ -4376,103 +4016,19 @@ function global_terms_enabled() { * @return array The unmodified clauses. */ function _filter_query_attachment_filenames( $clauses ) { - _deprecated_function( __FUNCTION__, '6.0.3', 'add_filter( "wp_allow_query_attachment_by_filename", "__return_true" )' ); + _deprecated_function( __FUNCTION__, 'WP-6.0.3', 'add_filter( "wp_allow_query_attachment_by_filename", "__return_true" )'); remove_filter( 'posts_clauses', __FUNCTION__ ); return $clauses; } /** - * Retrieves a page given its title. - * - * If more than one post uses the same title, the post with the smallest ID will be returned. - * Be careful: in case of more than one post having the same title, it will check the oldest - * publication date, not the smallest ID. - * - * Because this function uses the MySQL '=' comparison, $page_title will usually be matched - * as case-insensitive with default collation. - * - * @since 2.1.0 - * @since 3.0.0 The `$post_type` parameter was added. - * @deprecated 6.2.0 Use WP_Query. - * - * @global wpdb $wpdb WordPress database abstraction object. - * - * @param string $page_title Page title. - * @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which - * correspond to a WP_Post object, an associative array, or a numeric array, - * respectively. Default OBJECT. - * @param string|array $post_type Optional. Post type or array of post types. Default 'page'. - * @return WP_Post|array|null WP_Post (or array) on success, or null on failure. - */ -function get_page_by_title( $page_title, $output = OBJECT, $post_type = 'page' ) { - _deprecated_function( __FUNCTION__, '6.2.0', 'WP_Query' ); - global $wpdb; - - if ( is_array( $post_type ) ) { - $post_type = esc_sql( $post_type ); - $post_type_in_string = "'" . implode( "','", $post_type ) . "'"; - $sql = $wpdb->prepare( - " - SELECT ID - FROM $wpdb->posts - WHERE post_title = %s - AND post_type IN ($post_type_in_string) - ", - $page_title - ); - } else { - $sql = $wpdb->prepare( - " - SELECT ID - FROM $wpdb->posts - WHERE post_title = %s - AND post_type = %s - ", - $page_title, - $post_type - ); - } - - $page = $wpdb->get_var( $sql ); - - if ( $page ) { - return get_post( $page, $output ); - } - - return null; -} - -/** - * Displays the link to the Windows Live Writer manifest file. - * - * @link https://msdn.microsoft.com/en-us/library/bb463265.aspx - * @since 2.3.1 - * @deprecated 6.3.0 WLW manifest is no longer in use and no longer included in core, - * so the output from this function is removed. - */ -function wlwmanifest_link() { - _deprecated_function( __FUNCTION__, '6.3.0' ); -} - -/** - * Queues comments for metadata lazy-loading. - * - * @since 4.5.0 - * @deprecated 6.3.0 Use wp_lazyload_comment_meta() instead. + * Turn register globals off. * - * @param WP_Comment[] $comments Array of comment objects. + * @since WP-2.1.0 + * @access private + * @deprecated WP-5.5.0 */ -function wp_queue_comments_for_comment_meta_lazyload( $comments ) { - _deprecated_function( __FUNCTION__, '6.3.0', 'wp_lazyload_comment_meta' ); - // Don't use `wp_list_pluck()` to avoid by-reference manipulation. - $comment_ids = array(); - if ( is_array( $comments ) ) { - foreach ( $comments as $comment ) { - if ( $comment instanceof WP_Comment ) { - $comment_ids[] = $comment->comment_ID; - } - } - } - - wp_lazyload_comment_meta( $comment_ids ); +function wp_unregister_GLOBALS() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid + // register_globals was deprecated in PHP 5.3 and removed entirely in PHP 5.4. + _deprecated_function( __FUNCTION__, 'WP-5.5.0' ); } diff --git a/wp-includes/embed-template.php b/wp-includes/embed-template.php index 2c16ab7..ea70389 100644 --- a/wp-includes/embed-template.php +++ b/wp-includes/embed-template.php @@ -4,10 +4,10 @@ * * @package ClassicPress * @subpackage oEmbed - * @since 4.4.0 - * @deprecated 4.5.0 Moved to wp-includes/theme-compat/embed.php + * @since WP-4.4.0 + * @deprecated WP-4.5.0 Moved to wp-includes/theme-compat/embed.php */ -_deprecated_file( basename( __FILE__ ), '4.5.0', 'wp-includes/theme-compat/embed.php' ); +_deprecated_file( basename( __FILE__ ), 'WP-4.5.0', 'wp-includes/theme-compat/embed.php' ); require ABSPATH . WPINC . '/theme-compat/embed.php'; diff --git a/wp-includes/embed.php b/wp-includes/embed.php index b94ec23..8216364 100644 --- a/wp-includes/embed.php +++ b/wp-includes/embed.php @@ -4,7 +4,7 @@ * * @package ClassicPress * @subpackage oEmbed - * @since 4.4.0 + * @since WP-4.4.0 */ /** @@ -12,7 +12,7 @@ * * Should probably only be used for sites that do not support oEmbed. * - * @since 2.9.0 + * @since WP-2.9.0 * * @global WP_Embed $wp_embed * @@ -30,7 +30,7 @@ function wp_embed_register_handler( $id, $regex, $callback, $priority = 10 ) { /** * Unregisters a previously-registered embed handler. * - * @since 2.9.0 + * @since WP-2.9.0 * * @global WP_Embed $wp_embed * @@ -52,17 +52,13 @@ function wp_embed_unregister_handler( $id, $priority = 10 ) { * * The {@see 'embed_defaults'} filter can be used to adjust either of these values. * - * @since 2.9.0 + * @since WP-2.9.0 * * @global int $content_width * * @param string $url Optional. The URL that should be embedded. Default empty. - * @return int[] { - * Indexed array of the embed width and height in pixels. * - * @type int $0 The embed width. - * @type int $1 The embed height. - * } + * @return array Default embed parameters. */ function wp_embed_defaults( $url = '' ) { if ( ! empty( $GLOBALS['content_width'] ) ) { @@ -78,14 +74,10 @@ function wp_embed_defaults( $url = '' ) { /** * Filters the default array of embed dimensions. * - * @since 2.9.0 + * @since WP-2.9.0 * - * @param int[] $size { - * Indexed array of the embed width and height in pixels. - * - * @type int $0 The embed width. - * @type int $1 The embed height. - * } + * @param array $size An array of embed width and height values + * in pixels (in that order). * @param string $url The URL that should be embedded. */ return apply_filters( 'embed_defaults', compact( 'width', 'height' ), $url ); @@ -94,21 +86,14 @@ function wp_embed_defaults( $url = '' ) { /** * Attempts to fetch the embed HTML for a provided URL using oEmbed. * - * @since 2.9.0 + * @since WP-2.9.0 * * @see WP_oEmbed * * @param string $url The URL that should be embedded. - * @param array|string $args { - * Optional. Additional arguments for retrieving embed HTML. Default empty. - * - * @type int|string $width Optional. The `maxwidth` value passed to the provider URL. - * @type int|string $height Optional. The `maxheight` value passed to the provider URL. - * @type bool $discover Optional. Determines whether to attempt to discover link tags - * at the given URL for an oEmbed provider when the provider URL - * is not found in the built-in providers list. Default true. - * } - * @return string|false The embed HTML on success, false on failure. + * @param array $args Optional. Additional arguments and parameters for retrieving embed HTML. + * Default empty. + * @return false|string False on failure or the embed HTML on success. */ function wp_oembed_get( $url, $args = '' ) { $oembed = _wp_oembed_get_object(); @@ -118,9 +103,11 @@ function wp_oembed_get( $url, $args = '' ) { /** * Returns the initialized WP_oEmbed object. * - * @since 2.9.0 + * @since WP-2.9.0 * @access private * + * @staticvar WP_oEmbed $wp_oembed + * * @return WP_oEmbed object. */ function _wp_oembed_get_object() { @@ -135,14 +122,14 @@ function _wp_oembed_get_object() { /** * Adds a URL format and oEmbed provider URL pair. * - * @since 2.9.0 + * @since WP-2.9.0 * * @see WP_oEmbed * - * @param string $format The format of URL that this provider can handle. You can use asterisks - * as wildcards. - * @param string $provider The URL to the oEmbed provider. - * @param bool $regex Optional. Whether the `$format` parameter is in a RegEx format. Default false. + * @param string $format The format of URL that this provider can handle. You can use asterisks + * as wildcards. + * @param string $provider The URL to the oEmbed provider. + * @param boolean $regex Optional. Whether the `$format` parameter is in a RegEx format. Default false. */ function wp_oembed_add_provider( $format, $provider, $regex = false ) { if ( did_action( 'plugins_loaded' ) ) { @@ -156,7 +143,7 @@ function wp_oembed_add_provider( $format, $provider, $regex = false ) { /** * Removes an oEmbed provider. * - * @since 3.5.0 + * @since WP-3.5.0 * * @see WP_oEmbed * @@ -184,7 +171,7 @@ function wp_oembed_remove_provider( $format ) { * Checks to make sure that the embeds library hasn't already been loaded. If * it hasn't, then it will load the embeds library. * - * @since 2.9.0 + * @since WP-2.9.0 * * @see wp_embed_register_handler() */ @@ -194,7 +181,7 @@ function wp_maybe_load_embeds() { * * Returning a falsey value will prevent loading the default embed handlers. * - * @since 2.9.0 + * @since WP-2.9.0 * * @param bool $maybe_load_embeds Whether to load the embeds library. Default true. */ @@ -207,20 +194,20 @@ function wp_maybe_load_embeds() { /** * Filters the audio embed handler callback. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param callable $handler Audio embed handler callback function. */ - wp_embed_register_handler( 'audio', '#^https?://.+?\.(' . implode( '|', wp_get_audio_extensions() ) . ')$#i', apply_filters( 'wp_audio_embed_handler', 'wp_embed_handler_audio' ), 9999 ); + wp_embed_register_handler( 'audio', '#^https?://.+?\.(' . join( '|', wp_get_audio_extensions() ) . ')$#i', apply_filters( 'wp_audio_embed_handler', 'wp_embed_handler_audio' ), 9999 ); /** * Filters the video embed handler callback. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param callable $handler Video embed handler callback function. */ - wp_embed_register_handler( 'video', '#^https?://.+?\.(' . implode( '|', wp_get_video_extensions() ) . ')$#i', apply_filters( 'wp_video_embed_handler', 'wp_embed_handler_video' ), 9999 ); + wp_embed_register_handler( 'video', '#^https?://.+?\.(' . join( '|', wp_get_video_extensions() ) . ')$#i', apply_filters( 'wp_video_embed_handler', 'wp_embed_handler_video' ), 9999 ); } /** @@ -228,7 +215,7 @@ function wp_maybe_load_embeds() { * * Catches YouTube iframe embed URLs that are not parsable by oEmbed but can be translated into a URL that is. * - * @since 4.0.0 + * @since WP-4.0.0 * * @global WP_Embed $wp_embed * @@ -246,7 +233,7 @@ function wp_embed_handler_youtube( $matches, $attr, $url, $rawattr ) { /** * Filters the YoutTube embed output. * - * @since 4.0.0 + * @since WP-4.0.0 * * @see wp_embed_handler_youtube() * @@ -261,7 +248,7 @@ function wp_embed_handler_youtube( $matches, $attr, $url, $rawattr ) { /** * Audio embed handler callback. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param array $matches The RegEx matches from the provided regex when calling wp_embed_register_handler(). * @param array $attr Embed attributes. @@ -275,7 +262,7 @@ function wp_embed_handler_audio( $matches, $attr, $url, $rawattr ) { /** * Filters the audio embed output. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param string $audio Audio embed output. * @param array $attr An array of embed attributes. @@ -288,7 +275,7 @@ function wp_embed_handler_audio( $matches, $attr, $url, $rawattr ) { /** * Video embed handler callback. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param array $matches The RegEx matches from the provided regex when calling wp_embed_register_handler(). * @param array $attr Embed attributes. @@ -307,7 +294,7 @@ function wp_embed_handler_video( $matches, $attr, $url, $rawattr ) { /** * Filters the video embed output. * - * @since 3.6.0 + * @since WP-3.6.0 * * @param string $video Video embed output. * @param array $attr An array of embed attributes. @@ -320,7 +307,7 @@ function wp_embed_handler_video( $matches, $attr, $url, $rawattr ) { /** * Registers the oEmbed REST API route. * - * @since 4.4.0 + * @since WP-4.4.0 */ function wp_oembed_register_route() { $controller = new WP_oEmbed_Controller(); @@ -328,25 +315,25 @@ function wp_oembed_register_route() { } /** - * Adds oEmbed discovery links in the head element of the website. + * Adds oEmbed discovery links in the website . * - * @since 4.4.0 + * @since WP-4.4.0 */ function wp_oembed_add_discovery_links() { $output = ''; if ( is_singular() ) { - $output .= '' . "\n"; + $output .= '' . "\n"; if ( class_exists( 'SimpleXMLElement' ) ) { - $output .= '' . "\n"; + $output .= '' . "\n"; } } /** * Filters the oEmbed discovery links HTML. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $output HTML of the discovery links. */ @@ -356,50 +343,16 @@ function wp_oembed_add_discovery_links() { /** * Adds the necessary JavaScript to communicate with the embedded iframes. * - * This function is no longer used directly. For back-compat it exists exclusively as a way to indicate that the oEmbed - * host JS _should_ be added. In `default-filters.php` there remains this code: - * - * add_action( 'wp_head', 'wp_oembed_add_host_js' ) - * - * Historically a site has been able to disable adding the oEmbed host script by doing: - * - * remove_action( 'wp_head', 'wp_oembed_add_host_js' ) - * - * In order to ensure that such code still works as expected, this function remains. There is now a `has_action()` check - * in `wp_maybe_enqueue_oembed_host_js()` to see if `wp_oembed_add_host_js()` has not been unhooked from running at the - * `wp_head` action. - * - * @since 4.4.0 - * @deprecated 5.9.0 Use {@see wp_maybe_enqueue_oembed_host_js()} instead. + * @since WP-4.4.0 */ -function wp_oembed_add_host_js() {} - -/** - * Enqueue the wp-embed script if the provided oEmbed HTML contains a post embed. - * - * In order to only enqueue the wp-embed script on pages that actually contain post embeds, this function checks if the - * provided HTML contains post embed markup and if so enqueues the script so that it will get printed in the footer. - * - * @since 5.9.0 - * - * @param string $html Embed markup. - * @return string Embed markup (without modifications). - */ -function wp_maybe_enqueue_oembed_host_js( $html ) { - if ( - has_action( 'wp_head', 'wp_oembed_add_host_js' ) - && - preg_match( '/]*?wp-embedded-content/', $html ) - ) { - wp_enqueue_script( 'wp-embed' ); - } - return $html; +function wp_oembed_add_host_js() { + wp_enqueue_script( 'wp-embed' ); } /** * Retrieves the URL to embed a specific post in an iframe. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int|WP_Post $post Optional. Post ID or object. Defaults to the current post. * @return string|false The post embed URL on success, false if the post doesn't exist. @@ -421,12 +374,12 @@ function get_post_embed_url( $post = null ) { /** * Filters the URL to embed a specific post. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $embed_url The post embed URL. * @param WP_Post $post The corresponding post object. */ - return sanitize_url( apply_filters( 'post_embed_url', $embed_url, $post ) ); + return esc_url_raw( apply_filters( 'post_embed_url', $embed_url, $post ) ); } /** @@ -434,7 +387,7 @@ function get_post_embed_url( $post = null ) { * * Pass an empty string as the first argument to get the endpoint base URL. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $permalink Optional. The permalink used for the `url` query arg. Default empty. * @param string $format Optional. The requested response format. Default 'json'. @@ -456,7 +409,7 @@ function get_oembed_endpoint_url( $permalink = '', $format = 'json' ) { /** * Filters the oEmbed endpoint URL. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $url The URL to the oEmbed endpoint. * @param string $permalink The permalink used for the `url` query arg. @@ -468,7 +421,7 @@ function get_oembed_endpoint_url( $permalink = '', $format = 'json' ) { /** * Retrieves the embed code for a specific post. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $width The width for the response. * @param int $height The height for the response. @@ -484,45 +437,49 @@ function get_post_embed_html( $width, $height, $post = null ) { $embed_url = get_post_embed_url( $post ); - $secret = wp_generate_password( 10, false ); - $embed_url .= "#?secret={$secret}"; + $output = '
        ' . get_the_title( $post ) . "
        \n"; - $output = sprintf( - '
        %3$s
        ', - esc_attr( $secret ), - esc_url( get_permalink( $post ) ), - get_the_title( $post ) - ); + $output .= ""; $output .= sprintf( - '', + '', esc_url( $embed_url ), absint( $width ), absint( $height ), esc_attr( sprintf( - /* translators: 1: Post title, 2: Site title. */ + /* translators: 1: post title, 2: site name */ __( '“%1$s” — %2$s' ), get_the_title( $post ), get_bloginfo( 'name' ) ) - ), - esc_attr( $secret ) - ); - - // Note that the script must be placed after the
        and ',c=E.firstChild,x.appendChild(c),o.addEvent(c,"load",(function(){var i;try{i=c.contentWindow.document||c.contentDocument||window.frames[c.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?e=i.title.replace(/^(\d+).*$/,"$1"):(e=200,u=t.trim(i.body.innerHTML),y.trigger({type:"progress",loaded:u.length,total:u.length}),g&&y.trigger({type:"uploadprogress",loaded:g.size||1025,total:g.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return void l.call(y,(function(){y.trigger("error")}));e=404}l.call(y,(function(){y.trigger("load")}))}),y.uid),f.submit(),y.trigger("loadstart")},getStatus:function(){return e},getResponse:function(e){if("json"===e&&"string"===t.typeOf(u)&&window.JSON)try{return JSON.parse(u.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return u},abort:function(){var e=this;c&&c.contentWindow&&(c.contentWindow.stop?c.contentWindow.stop():c.contentWindow.document.execCommand?c.contentWindow.document.execCommand("Stop"):c.src="about:blank"),l.call(this,(function(){e.dispatchEvent("abort")}))}})}})),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],(function(e,t){return e.Image=t})),function(n){for(var r=0;rt[a]){s=1;break}}if(!i)return s;switch(i){case">":case"gt":return 0=":case"ge":return 0<=s;case"<=":case"le":return s<=0;case"==":case"=":case"eq":return 0===s;case"<>":case"!=":case"ne":return 0!==s;case"":case"<":case"lt":return s<0;default:return null}},global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return m.OS=m.os,MXI_DEBUG&&(m.debug={runtime:!0,events:!1},m.log=function(){var t,i,n=arguments[0];"string"===e.typeOf(n)&&(n=e.sprintf.apply(this,arguments)),window&&window.console&&window.console.log?window.console.log(n):document&&((t=document.getElementById("moxie-console"))||((t=document.createElement("pre")).id="moxie-console",document.body.appendChild(t)),-1!==e.inArray(e.typeOf(n),["object","array"])?(i=n,t.appendChild(document.createTextNode(i+"\n"))):t.appendChild(document.createTextNode(n+"\n")))}),m})),n("moxie/core/I18n",["moxie/core/utils/Basic"],(function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,(function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""}))}}})),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],(function(e,t){var i={mimes:{},extensions:{},addMimeType:function(e){for(var t,i,n=e.split(/,/),r=0;r>16&255,r=s>>8&255,s&=255,m[d++]=64==o?String.fromCharCode(n):64==a?String.fromCharCode(n,r):String.fromCharCode(n,r,s),l>12&63,r=a>>6&63,o=63&a,l[c++]=s.charAt(a>>18&63)+s.charAt(n)+s.charAt(r)+s.charAt(o),uf.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);this.exec("Image","downsize",t.width,t.height,t.crop,t.preserveHeaders)}catch(t){this.trigger("error",t.code)}},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(u.can("create_canvas"))return this.connectRuntime(this.ruid).exec.call(this,"Image","getAsCanvas");throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR)},getAsBlob:function(e,t){if(this.size)return this.exec("Image","getAsBlob",e||"image/jpeg",t||90);throw new i.DOMException(i.DOMException.INVALID_STATE_ERR)},getAsDataURL:function(e,t){if(this.size)return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90);throw new i.DOMException(i.DOMException.INVALID_STATE_ERR)},getAsBinaryString:function(e,t){return e=this.getAsDataURL(e,t),m.atob(e.substring(e.indexOf("base64,")+7))},embed:function(n,r){var o,a=this;r=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r||{});try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>f.MAX_RESIZE_WIDTH||this.height;var c=new f;return c.bind("Resize",(function(){(function(t,r){var c=this;if(u.can("create_canvas")){var l=c.getAsCanvas();if(l)return n.appendChild(l),c.destroy(),void a.trigger("embedded")}if(!(l=c.getAsDataURL(t,r)))throw new i.ImageError(i.ImageError.WRONG_FORMAT);u.can("use_data_uri_of",l.length)?(n.innerHTML='',c.destroy(),a.trigger("embedded")):((r=new s).bind("TransportingComplete",(function(){o=a.connectRuntime(this.result.ruid),a.bind("Embedded",(function(){e.extend(o.getShimContainer().style,{top:"0px",left:"0px",width:c.width+"px",height:c.height+"px"}),o=null}),999),o.exec.call(a,"ImageView","display",this.result.uid,width,height),c.destroy()})),r.transport(m.atob(l.substring(l.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n}))}).call(this,r.type,r.quality)})),c.bind("Load",(function(){c.downsize(r)})),this.meta.thumb&&this.meta.thumb.width>=r.width&&this.meta.thumb.height>=r.height?c.load(this.meta.thumb.data):c.clone(this,!1),c}catch(r){this.trigger("error",r.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(h),this.bind("Load Resize",(function(){(function(e){e=e||this.exec("Image","getInfo"),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}).call(this)}),999)}return f.MAX_RESIZE_WIDTH=8192,f.MAX_RESIZE_HEIGHT=8192,f.prototype=c.instance,f})),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],(function(e,t,i,n){var r={};return i.addConstructor("html5",(function(t){var o,a=this,s=i.capTest,u=i.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return a.can("access_binary")&&!!r.Image},display_media:s(n.can("create_canvas")||n.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(("draggable"in(c=document.createElement("div"))||"ondragstart"in c&&"ondrop"in c)&&("IE"!==n.browser||n.verComp(n.version,9,">"))),filter_by_extension:s("Chrome"===n.browser&&n.verComp(n.version,28,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||"Safari"===n.browser&&n.verComp(n.version,7,">=")),return_response_headers:u,return_response_type:function(e){return!("json"!==e||!window.JSON)||n.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return a.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return a.can("select_file")&&"Chrome"===n.browser&&n.verComp(n.version,21,">=")},select_multiple:function(){return a.can("select_file")&&!("Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||a.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return a.can("slice_blob")&&a.can("send_multipart")},summon_file_dialog:function(){return a.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:u},arguments[2]);i.call(this,t,arguments[1]||"html5",c),e.extend(this,{init:function(){this.trigger("Init")},destroy:(o=this.destroy,function(){o.call(a),o=a=null})}),e.extend(this.getShim(),r)})),r})),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],(function(e){var t={},i="moxie_"+e.guid();function n(){this.returnValue=!1}function r(){this.cancelBubble=!0}function o(n,r,o){if(r=r.toLowerCase(),n[i]&&t[n[i]]&&t[n[i]][r]){for(var a,s=(a=t[n[i]][r]).length-1;0<=s&&(a[s].orig!==o&&a[s].key!==o||(n.removeEventListener?n.removeEventListener(r,a[s].func,!1):n.detachEvent&&n.detachEvent("on"+r,a[s].func),a[s].orig=null,a[s].func=null,a.splice(s,1),void 0===o));s--);if(a.length||delete t[n[i]][r],e.isEmptyObj(t[n[i]])){delete t[n[i]];try{delete n[i]}catch(r){n[i]=void 0}}}}return{addEvent:function(o,a,s,u){var c;a=a.toLowerCase(),o.addEventListener?o.addEventListener(a,c=s,!1):o.attachEvent&&o.attachEvent("on"+a,c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=n,e.stopPropagation=r,s(e)}),o[i]||(o[i]=e.guid()),t.hasOwnProperty(o[i])||(t[o[i]]={}),(o=t[o[i]]).hasOwnProperty(a)||(o[a]=[]),o[a].push({func:c,orig:s,key:u})},removeEvent:o,removeAllEvents:function(n,r){n&&n[i]&&e.each(t[n[i]],(function(e,t){o(n,t,r)}))}}})),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],(function(e,t,i,n,r,o,a){return e.FileInput=function(){var e;i.extend(this,{init:function(s){var u,c,l,d=this,m=d.getRuntime();s=(e=s).accept.mimes||o.extList2mimes(e.accept,m.can("filter_by_extension"));(u=m.getShimContainer()).innerHTML='",s=n.get(m.uid),i.extend(s.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),c=n.get(e.browse_button),m.can("summon_file_dialog")&&("static"===n.getStyle(c,"position")&&(c.style.position="relative"),l=parseInt(n.getStyle(c,"z-index"),10)||1,c.style.zIndex=l,u.style.zIndex=l-1,r.addEvent(c,"click",(function(e){var t=n.get(m.uid);t&&!t.disabled&&t.click(),e.preventDefault()}),d.uid)),l=m.can("summon_file_dialog")?c:u,r.addEvent(l,"mouseover",(function(){d.trigger("mouseenter")}),d.uid),r.addEvent(l,"mouseout",(function(){d.trigger("mouseleave")}),d.uid),r.addEvent(l,"mousedown",(function(){d.trigger("mousedown")}),d.uid),r.addEvent(n.get(e.container),"mouseup",(function(){d.trigger("mouseup")}),d.uid),s.onchange=function h(n){var r;d.files=[],i.each(this.files,(function(i){var n="";if(e.directory&&"."==i.name)return!0;i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),(i=new t(m.uid,i)).relativePath=n,d.files.push(i)})),"IE"!==a.browser&&"IEMobile"!==a.browser?this.value="":(r=this.cloneNode(!0),this.parentNode.replaceChild(r,this),r.onchange=h),d.files.length&&d.trigger("change")},d.trigger({type:"ready",async:!0})},disable:function(e){var t=this.getRuntime();(t=n.get(t.uid))&&(t.disabled=!!e)},destroy:function(){var t=(i=this.getRuntime()).getShim(),i=i.getShimContainer();r.removeAllEvents(i,this.uid),r.removeAllEvents(e&&n.get(e.container),this.uid),r.removeAllEvents(e&&n.get(e.browse_button),this.uid),i&&(i.innerHTML=""),t.removeInstance(this.uid),e=null}})}})),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],(function(e,t){return e.Blob=function(){this.slice=function(){return new t(this.getRuntime().uid,function(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(n){return e.slice(t,i-t)}}.apply(this,arguments))}}})),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],(function(e,t,i,n,r,o){return e.FileDrop=function(){var e,a,s=[],u=[];function c(e){if(e.dataTransfer&&e.dataTransfer.types)return e=i.toArray(e.dataTransfer.types||[]),-1!==i.inArray("Files",e)||-1!==i.inArray("public.file-url",e)||-1!==i.inArray("application/x-moz-file",e)}function l(e,n){var r;r=e,u.length&&(r=o.getFileExtension(r.name))&&-1===i.inArray(r,u)||((r=new t(a,e)).relativePath=n||"",s.push(r))}function d(e,t){var n=[];i.each(e,(function(e){n.push((function(t){var i,n,r,o,a;a=t,(o=e).isFile?o.file((function(e){l(e,o.fullPath),a()}),(function(){a()})):o.isDirectory?(i=a,n=[],r=(t=o).createReader(),function s(e){r.readEntries((function(t){t.length?([].push.apply(n,t),s(e)):e()}),e)}((function(){d(n,i)}))):a()}))})),i.inSeries(n,(function(){t()}))}i.extend(this,{init:function(t){var n=this;e=t,a=n.ruid,u=function(e){for(var t=[],n=0;n=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(l=e.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),(c=!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;tthis.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),i=r=0;rthis.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;r>Math.abs(n+8*r)&255)},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){return 2147483647<(e=this.read(e,4))?e-4294967296:e},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;r=o.length));i++);},purge:function(){this.headers=s=[]}}}})),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],(function(e,i,n){function r(o){var a,s,u,c,l;if(i.call(this,o),s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},u={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d=(c={tiffHeader:10}).tiffHeader,a={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(o){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(o){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return l||null},EXIF:function(){var t=null;if(c.exifIFD){try{t=m.call(this,c.exifIFD,s.exif)}catch(t){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var i=0,n="";i=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"===l?h[o]=e.trim(m.STRING(s,a).replace(/\0$/,"")):(d=m.asArray(l,s,a),l=1==a?d[0]:d,u.hasOwnProperty(o)&&"object"!=typeof l?h[o]=u[o][l]:h[o]=l)}return h}d&&(c.IFD1=c.tiffHeader+d)}return r.prototype=i.prototype,r})),n("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],(function(e,t,i,n,r){return function(o){var a,s,u,c=new n(o);if(65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);a=new i(o);try{s=new r(a.get("app1")[0])}catch(o){}function l(e){var t,i=0;for(e=e||c;i<=e.length();){if(65472<=(t=e.SHORT(i+=2))&&t<=65475)return i+=5,{height:e.SHORT(i),width:e.SHORT(i+=2)};t=e.SHORT(i+=2),i+=t-2}return null}u=l.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:u&&u.width||0,height:u&&u.height||0,setExif:function(t,i){if(!s)return!1;"object"===e.typeOf(t)?e.each(t,(function(e,t){s.setExif(t,e)})):s.setExif(t,i),a.set("app1",s.SEGMENT())},writeHeaders:function(){return arguments.length?a.restore(arguments[0]):a.restore(o)},stripHeaders:function(e){return a.strip(e)},purge:function(){(function(){s&&a&&c&&(s.clear(),a.purge(),c.clear(),u=a=s=c=null)}).call(this)}}),s&&(this.meta={tiff:s.TIFF(),exif:s.EXIF(),gps:s.GPS(),thumb:function(){var e,t,i=s.thumb();return i&&(t=l(e=new n(i)),e.clear(),t)?(t.data=i,t):null}()})}})),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],(function(e,t,i){return function(n){var r,o=new i(n),a=0,s=0,u=[35152,20039,3338,6666];for(s=0;s>1;return i=null,0==(e=s/t)?1:e}(t,o),p=0;p=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||"Safari"===n.browser&&n.verComp(n.version,7,">=")),resize_image:function(){return r.Image&&a.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return a.can("select_file")},summon_file_dialog:function(){return a.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:(o=this.destroy,function(){o.call(a),o=a=null})}),e.extend(this.getShim(),r)})),r})),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],(function(e,t,i,n,r,o,a){return e.FileInput=function(){var e,s,u=[];function c(){var o,l,d,m=this,h=m.getRuntime(),f=i.guid("uid_"),p=h.getShimContainer();e&&(o=n.get(e+"_form"))&&i.extend(o.style,{top:"100%"}),(l=document.createElement("form")).setAttribute("id",f+"_form"),l.setAttribute("method","post"),l.setAttribute("enctype","multipart/form-data"),l.setAttribute("encoding","multipart/form-data"),i.extend(l.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),(d=document.createElement("input")).setAttribute("id",f),d.setAttribute("type","file"),d.setAttribute("name",s.name||"Filedata"),d.setAttribute("accept",u.join(",")),i.extend(d.style,{fontSize:"999px",opacity:0}),l.appendChild(d),p.appendChild(l),i.extend(d.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(d.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),d.onchange=function(){var e;if(this.value){if(this.files){if(0===(e=this.files[0]).size)return void l.parentNode.removeChild(l)}else e={name:this.value};e=new t(h.uid,e),this.onchange=function(){},c.call(m),m.files=[e],d.setAttribute("id",e.uid),l.setAttribute("id",e.uid+"_form"),m.trigger("change"),d=l=null}},h.can("summon_file_dialog")&&(o=n.get(s.browse_button),r.removeEvent(o,"click",m.uid),r.addEvent(o,"click",(function(e){d&&!d.disabled&&d.click(),e.preventDefault()}),m.uid)),e=f}i.extend(this,{init:function(e){var t,i,a,l=this,d=l.getRuntime();u=(s=e).accept.mimes||o.extList2mimes(e.accept,d.can("filter_by_extension")),t=d.getShimContainer(),a=n.get(e.browse_button),d.can("summon_file_dialog")&&("static"===n.getStyle(a,"position")&&(a.style.position="relative"),i=parseInt(n.getStyle(a,"z-index"),10)||1,a.style.zIndex=i,t.style.zIndex=i-1),i=d.can("summon_file_dialog")?a:t,r.addEvent(i,"mouseover",(function(){l.trigger("mouseenter")}),l.uid),r.addEvent(i,"mouseout",(function(){l.trigger("mouseleave")}),l.uid),r.addEvent(i,"mousedown",(function(){l.trigger("mousedown")}),l.uid),r.addEvent(n.get(e.container),"mouseup",(function(){l.trigger("mouseup")}),l.uid),c.call(this),t=null,l.trigger({type:"ready",async:!0})},disable:function(t){var i;(i=n.get(e))&&(i.disabled=!!t)},destroy:function(){var t=(i=this.getRuntime()).getShim(),i=i.getShimContainer();r.removeAllEvents(i,this.uid),r.removeAllEvents(s&&n.get(s.container),this.uid),r.removeAllEvents(s&&n.get(s.browse_button),this.uid),i&&(i.innerHTML=""),t.removeInstance(this.uid),e=u=s=null}})}})),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],(function(e,t){return e.FileReader=t})),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],(function(e,t,i,n,r,o,a,s){return e.XMLHttpRequest=function(){var e,u,c;function l(e){var t,n,r,a=this,s=!1;if(c){if(t=c.id.replace(/_iframe$/,""),t=i.get(t+"_form")){for(r=(n=t.getElementsByTagName("input")).length;r--;)switch(n[r].getAttribute("type")){case"hidden":n[r].parentNode.removeChild(n[r]);break;case"file":s=!0}n=[],s||t.parentNode.removeChild(t),t=null}setTimeout((function(){o.removeEvent(c,"load",a.uid),c.parentNode&&c.parentNode.removeChild(c);var t=a.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=c=null,e()}),1)}}t.extend(this,{send:function(d,m){var h,f,p,g,x=this,E=x.getRuntime();if(e=u=null,m instanceof s&&m.hasBlob()){if(h=(g=m.getBlob()).uid,p=i.get(h),!(f=i.get(h+"_form")))throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else h=t.guid("uid_"),(f=document.createElement("form")).setAttribute("id",h+"_form"),f.setAttribute("method",d.method),f.setAttribute("enctype","multipart/form-data"),f.setAttribute("encoding","multipart/form-data"),E.getShimContainer().appendChild(f);f.setAttribute("target",h+"_iframe"),m instanceof s&&m.each((function(e,i){var n;e instanceof a?p&&p.setAttribute("name",i):(n=document.createElement("input"),t.extend(n,{type:"hidden",name:i,value:e}),p?f.insertBefore(n,p):f.appendChild(n))})),f.setAttribute("action",d.url),m=E.getShimContainer()||document.body,(E=document.createElement("div")).innerHTML='',c=E.firstChild,m.appendChild(c),o.addEvent(c,"load",(function(){var i;try{i=c.contentWindow.document||c.contentDocument||window.frames[c.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?e=i.title.replace(/^(\d+).*$/,"$1"):(e=200,u=t.trim(i.body.innerHTML),x.trigger({type:"progress",loaded:u.length,total:u.length}),g&&x.trigger({type:"uploadprogress",loaded:g.size||1025,total:g.size||1025}))}catch(i){if(!n.hasSameOrigin(d.url))return void l.call(x,(function(){x.trigger("error")}));e=404}l.call(x,(function(){x.trigger("load")}))}),x.uid),f.submit(),x.trigger("loadstart")},getStatus:function(){return e},getResponse:function(e){if("json"===e&&"string"===t.typeOf(u)&&window.JSON)try{return JSON.parse(u.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(e){return null}return u},abort:function(){var e=this;c&&c.contentWindow&&(c.contentWindow.stop?c.contentWindow.stop():c.contentWindow.document.execCommand?c.contentWindow.document.execCommand("Stop"):c.src="about:blank"),l.call(this,(function(){e.dispatchEvent("abort")}))}})}})),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],(function(e,t){return e.Image=t}));for(var r=["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/FileInput","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events"],o=0;o0&&n(a,(function(n,a){n!==o&&(t(e[a])===t(n)&&~r(t(n),["array","object"])?i(e[a],n):e[a]=n)}))})),e},n=function(e,i){var n,r,o;if(e)if("number"===t(e.length)){for(o=0,n=e.length;o0?2==u.length?typeof u[1]==t?r[u[0]]=u[1].call(this,l):r[u[0]]=u[1]:3==u.length?typeof u[1]!==t||u[1].exec&&u[1].test?r[u[0]]=l?l.replace(u[1],u[2]):e:r[u[0]]=l?u[1].call(this,l,u[2]):e:4==u.length&&(r[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):r[u]=l||e;break}if(c)break}return r},str:function(t,i){for(var r in i)if(typeof i[r]===n&&i[r].length>0){for(var o=0;o=9)},use_data_uri_of:function(e){return r.use_data_uri&&e<33e3||r.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}},function(t){var i=[].slice.call(arguments);return i.shift(),"function"===e.typeOf(r[t])?r[t].apply(this,i):!!r[t]}),a=(new t).getResult(),s={can:o,uaParser:t,browser:a.browser.name,version:a.browser.version,os:a.os.name,osVersion:a.os.version,verComp:function(e,t,i){var n,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return(e=(e=(""+e).replace(/[_\-+]/g,".")).replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,".")).length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),n=Math.max(e.length,t.length),r=0;rt[r]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return o<=0;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return o<0;default:return null}},global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return s.OS=s.os,MXI_DEBUG&&(s.debug={runtime:!0,events:!1},s.log=function(){function t(e){n.appendChild(document.createTextNode(e+"\n"))}var i=arguments[0];if("string"===e.typeOf(i)&&(i=e.sprintf.apply(this,arguments)),window&&window.console&&window.console.log)window.console.log(i);else if(document){var n=document.getElementById("moxie-console");n||((n=document.createElement("pre")).id="moxie-console",document.body.appendChild(n)),-1!==e.inArray(e.typeOf(i),["object","array"])?t(i):n.appendChild(document.createTextNode(i+"\n"))}}),s})),n("moxie/core/I18n",["moxie/core/utils/Basic"],(function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,(function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""}))}}})),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],(function(e,t){var i={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;t=0;r--)if(o[r].fn===t){o.splice(r,1);break}}else o=[];o.length||(delete n[this.uid][e],i.isEmptyObj(n[this.uid])&&delete n[this.uid])}},removeAllEventListeners:function(){n[this.uid]&&delete n[this.uid]},dispatchEvent:function(r){var o,a,s,u,c,l,d={},m=!0;if("string"!==i.typeOf(r)){if(u=r,"string"!==i.typeOf(u.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);r=u.type,u.total!==c&&u.loaded!==c&&(d.total=u.total,d.loaded=u.loaded),d.async=u.async||!1}if(-1!==r.indexOf("::")?(l=r.split("::"),o=l[0],r=l[1]):o=this.uid,r=r.toLowerCase(),a=n[o]&&n[o][r]){a.sort((function(e,t){return t.priority-e.priority})),(s=[].slice.call(arguments)).shift(),d.type=r,s.unshift(d),MXI_DEBUG&&e.debug.events&&e.log("Event '%s' fired on %u",d.type,o);var h=[];i.each(a,(function(e){s[0].target=e.scope,d.async?h.push((function(t){setTimeout((function(){t(!1===e.fn.apply(e.scope,s))}),1)})):h.push((function(t){t(!1===e.fn.apply(e.scope,s))}))})),h.length&&i.inSeries(h,(function(e){m=!e}))}return m},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),(function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)})),i.each(e,(function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)}))}})}return n.instance=new n,n})),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],(function(e,t,i,n){var r={},o={};function a(n,r,s,u,c){var l,d,m=this,h=t.guid(r+"_"),f=c||"browser";n=n||{},o[h]=this,s=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},s),n.preferred_caps&&(f=a.getMode(u,n.preferred_caps,f)),MXI_DEBUG&&e.debug.runtime&&e.log("\tdefault mode: %s",f),d={},l={exec:function(e,t,i,n){if(l[t]&&(d[e]||(d[e]={context:this,instance:new l[t]}),d[e].instance[i]))return d[e].instance[i].apply(this,n)},removeInstance:function(e){delete d[e]},removeAllInstances:function(){var e=this;t.each(d,(function(i,n){"function"===t.typeOf(i.instance.destroy)&&i.instance.destroy.call(i.context),e.removeInstance(n)}))}},t.extend(this,{initialized:!1,uid:h,type:r,mode:a.getMode(u,n.required_caps,f),shimid:h+"_container",clients:0,options:n,can:function(e,i){var n=arguments[2]||s;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=a.parseCaps(e)),"object"===t.typeOf(e)){for(var r in e)if(!this.can(r,e[r],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=this.options.container?i.get(this.options.container):document.body,(n=document.createElement("div")).id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return l},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return m[e]&&m[e][t]?m[e][t].apply(this,i):m.shimExec.apply(this,arguments)},destroy:function(){if(m){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),l&&l.removeAllInstances(),this.unbindAll(),delete o[this.uid],this.uid=null,h=m=l=e=null}}}),this.mode&&n.required_caps&&!this.can(n.required_caps)&&(this.mode=!1)}return a.order="html5,html4",a.getRuntime=function(e){return!!o[e]&&o[e]},a.addConstructor=function(e,t){t.prototype=n.instance,r[e]=t},a.getConstructor=function(e){return r[e]||null},a.getInfo=function(e){var t=a.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},a.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),(function(e){i[e]=!0})),i)},a.can=function(e,t){var i,n,r=a.getConstructor(e);return!!r&&(n=(i=new r({required_caps:t})).mode,i.destroy(),!!n)},a.thatCan=function(e,t){var i=(t||a.order).split(/\s*,\s*/);for(var n in i)if(a.can(i[n],e))return i[n];return null},a.getMode=function(i,n,r){var o=null;if("undefined"===t.typeOf(r)&&(r="browser"),n&&!t.isEmptyObj(i)){if(t.each(n,(function(n,r){if(i.hasOwnProperty(r)){var a=i[r](n);if("string"==typeof a&&(a=[a]),o){if(!(o=t.arrayIntersect(o,a)))return MXI_DEBUG&&e.debug.runtime&&e.log("\t\t%c: %v (conflicting mode requested: %s)",r,n,a),o=!1}else o=a}MXI_DEBUG&&e.debug.runtime&&e.log("\t\t%c: %v (compatible modes: %s)",r,n,o)})),o)return-1!==t.inArray(r,o)?r:o[0];if(!1===o)return!1}return r},a.capTrue=function(){return!0},a.capFalse=function(){return!1},a.capTest=function(e){return function(){return!!e}},a})),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],(function(e,t,i,n){return function(){var r;i.extend(this,{connectRuntime:function(o){var a,s=this;if("string"===i.typeOf(o)?a=o:"string"===i.typeOf(o.ruid)&&(a=o.ruid),a){if(r=n.getRuntime(a))return r.clients++,r;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}!function u(i){var a,c;if(!i.length)return s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),void(r=null);a=i.shift().toLowerCase(),(c=n.getConstructor(a))?(MXI_DEBUG&&e.debug.runtime&&(e.log("Trying runtime: %s",a),e.log(o)),(r=new c(o)).bind("Init",(function(){r.initialized=!0,MXI_DEBUG&&e.debug.runtime&&e.log("Runtime '%s' initialized",r.type),setTimeout((function(){r.clients++,s.trigger("RuntimeInit",r)}),1)})),r.bind("Error",(function(){MXI_DEBUG&&e.debug.runtime&&e.log("Runtime '%s' failed to initialize",r.type),r.destroy(),u(i)})),MXI_DEBUG&&e.debug.runtime&&e.log("\tselected mode: %s",r.mode),r.mode?r.init():r.trigger("Error")):u(i)}((o.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){r&&--r.clients<=0&&r.destroy(),r=null},getRuntime:function(){return r&&r.uid?r:r=null},exec:function(){return r?r.exec.apply(this,arguments):null}})}})),n("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],(function(e,t,i,n,r,o,a,s,u){var c=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];function l(o){MXI_DEBUG&&t.log("Instantiating FileInput...");var l,d,m,h=this;if(-1!==e.inArray(e.typeOf(o),["string","node"])&&(o={browse_button:o}),!(d=n.get(o.browse_button)))throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);m={accept:[{title:a.translate("All Files"),extensions:"*"}],name:"file",multiple:!1,required_caps:!1,container:d.parentNode||document.body},"string"==typeof(o=e.extend({},m,o)).required_caps&&(o.required_caps=s.parseCaps(o.required_caps)),"string"==typeof o.accept&&(o.accept=i.mimes2extList(o.accept)),(l=n.get(o.container))||(l=document.body),"static"===n.getStyle(l,"position")&&(l.style.position="relative"),l=d=null,u.call(h),e.extend(h,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){h.bind("RuntimeInit",(function(t,i){h.ruid=i.uid,h.shimid=i.shimid,h.bind("Ready",(function(){h.trigger("Refresh")}),999),h.bind("Refresh",(function(){var t,r,a,s;a=n.get(o.browse_button),s=n.get(i.shimid),a&&(t=n.getPos(a,n.get(o.container)),r=n.getSize(a),s&&e.extend(s.style,{top:t.y+"px",left:t.x+"px",width:r.w+"px",height:r.h+"px"})),s=a=null})),i.exec.call(h,"FileInput","init",o)})),h.connectRuntime(e.extend({},o,{required_caps:{select_file:!0}}))},disable:function(t){var i=this.getRuntime();i&&i.exec.call(this,"FileInput","disable","undefined"===e.typeOf(t)||t)},refresh:function(){h.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,(function(e){e.destroy()})),this.files=null,this.unbindAll()}}),this.handleEventProps(c)}return l.prototype=o.instance,l})),n("moxie/core/utils/Encode",[],(function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))};return{utf8_encode:e,utf8_decode:t,atob:function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",d=0,m=0,h=[];if(!e)return e;e+="";do{n=(u=l.indexOf(e.charAt(d++))<<18|l.indexOf(e.charAt(d++))<<12|(a=l.indexOf(e.charAt(d++)))<<6|(s=l.indexOf(e.charAt(d++))))>>16&255,r=u>>8&255,o=255&u,h[m++]=64==a?String.fromCharCode(n):64==s?String.fromCharCode(n,r):String.fromCharCode(n,r,o)}while(d>18&63,r=s>>12&63,o=s>>6&63,a=63&s,m[l++]=u.charAt(n)+u.charAt(r)+u.charAt(o)+u.charAt(a)}while(c0?(S&&n.upload.dispatchEvent(t),n.dispatchEvent(t)):(D=!0,n.dispatchEvent("error")),r()})),E.bind("Abort",(function(e){n.dispatchEvent(e),r()})),E.bind("Error",(function(e){D=!0,L("readyState",p.DONE),n.dispatchEvent("readystatechange"),O=!0,n.dispatchEvent(e),r()})),o.exec.call(E,"XMLHttpRequest","send",{url:i,method:u,async:R,user:g,password:x,headers:_,mimeType:A,encoding:b,responseType:n.responseType,withCredentials:n.withCredentials,options:C},t)}(new Date).getTime(),E=new a,"string"==typeof C.required_caps&&(C.required_caps=o.parseCaps(C.required_caps)),C.required_caps=e.extend({},C.required_caps,{return_response_type:n.responseType}),t instanceof c&&(C.required_caps.send_multipart=!0),e.isEmptyObj(_)||(C.required_caps.send_custom_headers=!0),N||(C.required_caps.do_cors=!0),C.ruid?s(E.connectRuntime(C)):(E.bind("RuntimeInit",(function(e,t){s(t)})),E.bind("RuntimeError",(function(e,t){n.dispatchEvent("RuntimeError",t)})),E.connectRuntime(C))}function B(){L("responseText",""),L("responseXML",null),L("response",null),L("status",0),L("statusText",""),null}e.extend(this,w,{uid:e.guid("uid_"),upload:new h,open:function(o,a,s,c,l){var d;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(u=o.toUpperCase()),~e.inArray(u,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),d=r.parseUrl(a),N=r.hasSameOrigin(d),i=r.resolveUrl(a),(c||l)&&!N)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(g=c||d.user,x=l||d.pass,!1===(R=s||!0)&&(L("timeout")||L("withCredentials")||""!==L("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);I=!R,T=!1,_={},B.call(this),L("readyState",p.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(i,r){if(L("readyState")!==p.OPENED||T)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(i)||n.utf8_encode(i)!==i)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return i=e.trim(i).toLowerCase(),!~e.inArray(i,["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"])&&!/^(proxy\-|sec\-)/.test(i)&&(_[i]?_[i]+=", "+r:_[i]=r,!0)},getAllResponseHeaders:function(){return M||""},getResponseHeader:function(t){return t=t.toLowerCase(),D||~e.inArray(t,["set-cookie","set-cookie2"])?null:M&&""!==M&&(v||(v={},e.each(M.split(/\r\n/),(function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),v[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})}))),v.hasOwnProperty(t))?v[t].header+": "+v[t].value:null},overrideMimeType:function(i){var n,r;if(~e.inArray(L("readyState"),[p.LOADING,p.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i=e.trim(i.toLowerCase()),/;/.test(i)&&(n=i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(i=n[1],n[2]&&(r=n[2])),!d.mimes[i])throw new t.DOMException(t.DOMException.SYNTAX_ERR);i,r},send:function(i,r){if(C="string"===e.typeOf(r)?{ruid:r}:r||{},this.readyState!==p.OPENED||T)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)C.ruid=i.ruid,A=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();C.ruid=o.ruid,A=o.type||"application/octet-stream"}}else"string"==typeof i&&(b="UTF-8",A="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=C.required_caps&&C.required_caps.send_browser_cookies&&!N),S=!I&&this.upload.hasEventListener(),D=!1,O=!i,I||(T=!0),F.call(this,i)},abort:function(){if(D=!0,I=!1,~e.inArray(L("readyState"),[p.UNSENT,p.OPENED,p.DONE]))L("readyState",p.UNSENT);else{if(L("readyState",p.DONE),T=!1,!E)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);E.getRuntime().exec.call(E,"XMLHttpRequest","abort",O),O=!0}},destroy:function(){E&&("function"===e.typeOf(E.destroy)&&E.destroy(),E=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(f.concat(["readystatechange"])),this.upload.handleEventProps(f)}return p.UNSENT=0,p.OPENED=1,p.HEADERS_RECEIVED=2,p.LOADING=3,p.DONE=4,p.prototype=i.instance,p})),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],(function(e,t,i,n){function r(){var n,o,a,s,u,c;function l(){s=u=0,a=this.result=null}function d(t,i){var n=this;o=i,n.bind("TransportingProgress",(function(t){(u=t.loaded)i&&(c=i),e=t.btoa(a.substr(u,c)),o.exec.call(this,"Transporter","receive",e,s)}i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var o=this;if(r=e.extend({chunk_size:204798},r),(n=r.chunk_size%3)&&(r.chunk_size+=3-n),c=r.chunk_size,l.call(this),a=t,s=t.length,"string"===e.typeOf(r)||r.ruid)d.call(o,i,this.connectRuntime(r));else{var u=function(e,t){o.unbind("RuntimeInit",u),d.call(o,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,o&&(o.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),l.call(e)},destroy:function(){this.unbindAll(),o=null,this.disconnectRuntime(),l.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r})),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],(function(e,t,i,n,r,o,a,s,u,c,l,d,m){var h=["progress","load","error","resize","embedded"];function f(){function n(e){e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var n=e.typeOf(t);try{if(t instanceof f){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)||i)}function g(t,i){var n=this;function r(e){n.ruid=e.uid,e.exec.call(n,"Image","loadFromBlob",t)}n.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",(function(e,t){r(t)})),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):r(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;(i=new r).open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",(function(e,t){n.trigger("RuntimeError",t)})),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},downsize:function(t){var n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:!1};t="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]});try{if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(this.width>f.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);this.exec("Image","downsize",t.width,t.height,t.crop,t.preserveHeaders)}catch(r){this.trigger("error",r.code)}},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return this.connectRuntime(this.ruid).exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){var o,a=this;function c(t,r){var c=this;if(u.can("create_canvas")){var l=c.getAsCanvas();if(l)return n.appendChild(l),l=null,c.destroy(),void a.trigger("embedded")}var d=c.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='',c.destroy(),a.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",(function(){o=a.connectRuntime(this.result.ruid),a.bind("Embedded",(function(){e.extend(o.getShimContainer().style,{top:"0px",left:"0px",width:c.width+"px",height:c.height+"px"}),o=null}),999),o.exec.call(a,"ImageView","display",this.result.uid,width,height),c.destroy()})),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}r=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r||{});try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>f.MAX_RESIZE_WIDTH||(this.height,f.MAX_RESIZE_HEIGHT);var l=new f;return l.bind("Resize",(function(){c.call(this,r.type,r.quality)})),l.bind("Load",(function(){l.downsize(r)})),this.meta.thumb&&this.meta.thumb.width>=r.width&&this.meta.thumb.height>=r.height?l.load(this.meta.thumb.data):l.clone(this,!1),l}catch(d){this.trigger("error",d.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(h),this.bind("Load Resize",(function(){n.call(this)}),999)}return f.MAX_RESIZE_WIDTH=8192,f.MAX_RESIZE_HEIGHT=8192,f.prototype=c.instance,f})),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],(function(e,t,i,n){var r="html5",o={};return i.addConstructor(r,(function(t){var a,s,u=this,c=i.capTest,l=i.capTrue,d=e.extend({access_binary:c(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return u.can("access_binary")&&!!o.Image},display_media:c(n.can("create_canvas")||n.can("use_data_uri_over32kb")),do_cors:c(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:c((a=document.createElement("div"),("draggable"in a||"ondragstart"in a&&"ondrop"in a)&&("IE"!==n.browser||n.verComp(n.version,9,">")))),filter_by_extension:c("Chrome"===n.browser&&n.verComp(n.version,28,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||"Safari"===n.browser&&n.verComp(n.version,7,">=")),return_response_headers:l,return_response_type:function(e){return!("json"!==e||!window.JSON)||n.can("return_response_type",e)},return_status_code:l,report_upload_progress:c(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return u.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return u.can("select_file")&&"Chrome"===n.browser&&n.verComp(n.version,21,">=")},select_multiple:function(){return u.can("select_file")&&!("Safari"===n.browser&&"Windows"===n.os)&&!("iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:c(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:c(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||u.can("send_binary_string")},slice_blob:c(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return u.can("slice_blob")&&u.can("send_multipart")},summon_file_dialog:function(){return u.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:l},arguments[2]);i.call(this,t,arguments[1]||r,d),e.extend(this,{init:function(){this.trigger("Init")},destroy:(s=this.destroy,function(){s.call(u),s=u=null})}),e.extend(this.getShim(),o)})),o})),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],(function(e){var t={},i="moxie_"+e.guid();function n(){this.returnValue=!1}function r(){this.cancelBubble=!0}var o=function(n,r,o){var a,s;if(r=r.toLowerCase(),n[i]&&t[n[i]]&&t[n[i]][r]){for(var u=(a=t[n[i]][r]).length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(n.removeEventListener?n.removeEventListener(r,a[u].func,!1):n.detachEvent&&n.detachEvent("on"+r,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete t[n[i]][r],e.isEmptyObj(t[n[i]])){delete t[n[i]];try{delete n[i]}catch(c){n[i]=s}}}};return{addEvent:function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=n,e.stopPropagation=r,s(e)},o.attachEvent("on"+a,c)),o[i]||(o[i]=e.guid()),t.hasOwnProperty(o[i])||(t[o[i]]={}),(l=t[o[i]]).hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},removeEvent:o,removeAllEvents:function(n,r){n&&n[i]&&e.each(t[n[i]],(function(e,t){o(n,t,r)}))}}})),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],(function(e,t,i,n,r,o,a){return e.FileInput=function(){var e;i.extend(this,{init:function(s){var u,c,l,d,m,h,f=this,p=f.getRuntime();l=(e=s).accept.mimes||o.extList2mimes(e.accept,p.can("filter_by_extension")),(c=p.getShimContainer()).innerHTML='",u=n.get(p.uid),i.extend(u.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),d=n.get(e.browse_button),p.can("summon_file_dialog")&&("static"===n.getStyle(d,"position")&&(d.style.position="relative"),m=parseInt(n.getStyle(d,"z-index"),10)||1,d.style.zIndex=m,c.style.zIndex=m-1,r.addEvent(d,"click",(function(e){var t=n.get(p.uid);t&&!t.disabled&&t.click(),e.preventDefault()}),f.uid)),h=p.can("summon_file_dialog")?d:c,r.addEvent(h,"mouseover",(function(){f.trigger("mouseenter")}),f.uid),r.addEvent(h,"mouseout",(function(){f.trigger("mouseleave")}),f.uid),r.addEvent(h,"mousedown",(function(){f.trigger("mousedown")}),f.uid),r.addEvent(n.get(e.container),"mouseup",(function(){f.trigger("mouseup")}),f.uid),u.onchange=function g(n){if(f.files=[],i.each(this.files,(function(i){var n="";if(e.directory&&"."==i.name)return!0;i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),(i=new t(p.uid,i)).relativePath=n,f.files.push(i)})),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var r=this.cloneNode(!0);this.parentNode.replaceChild(r,this),r.onchange=g}f.files.length&&f.trigger("change")},f.trigger({type:"ready",async:!0}),c=null},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer();r.removeAllEvents(o,this.uid),r.removeAllEvents(e&&n.get(e.container),this.uid),r.removeAllEvents(e&&n.get(e.browse_button),this.uid),o&&(o.innerHTML=""),i.removeInstance(this.uid),e=o=i=null}})}})),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],(function(e,t){return e.Blob=function(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}})),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],(function(e,t,i,n,r,o){return e.FileDrop=function(){var e,a,s=[],u=[];function c(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function l(e,n){if(function(e){if(!u.length)return!0;var t=o.getFileExtension(e.name);return!t||-1!==i.inArray(t,u)}(e)){var r=new t(a,e);r.relativePath=n||"",s.push(r)}}function d(e,t){var n=[];i.each(e,(function(e){n.push((function(t){!function(e,t){e.isFile?e.file((function(i){l(i,e.fullPath),t()}),(function(){t()})):e.isDirectory?function(e,t){var i=[],n=e.createReader();function r(e){n.readEntries((function(t){t.length?([].push.apply(i,t),r(e)):e()}),e)}r((function(){d(i,t)}))}(e,t):t()}(e,t)}))})),i.inSeries(n,(function(){t()}))}i.extend(this,{init:function(t){var n,o=this;e=t,a=o.ruid,u=function(e){for(var t=[],n=0;n=")&&u.verComp(u.version,7,"<"),h="Android Browser"===u.browser,f=!1;if(c=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),(e=!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;rthis.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;r>Math.abs(n+8*r)&255)},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;r=65488&&a<=65495)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&a<=65519&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;n=o.length));i++);},purge:function(){this.headers=s=[]}}}})),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],(function(e,i,n){function r(o){var a,s,u,c,l,d;if(i.call(this,o),s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},u={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},l=(c={tiffHeader:10}).tiffHeader,a={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return d||null},EXIF:function(){var t=null;if(c.exifIFD){try{t=h.call(this,c.exifIFD,s.exif)}catch(r){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var i=0,n="";i4&&(h=p.LONG(h)+c.tiffHeader),h+m*d>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==l?(g=p.asArray(l,h,d),f=1==d?g[0]:g,u.hasOwnProperty(s)&&"object"!=typeof f?x[s]=u[s][f]:x[s]=f):x[s]=e.trim(p.STRING(h,d).replace(/\0$/,""))}return x}function f(e,t,i){var n,r,o,a=0;if("string"==typeof t){var u=s[e.toLowerCase()];for(var l in u)if(u[l]===t){t=l;break}}n=c[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var d=0;d=65472&&t<=65475)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function d(){u&&s&&a&&(u.clear(),s.purge(),a.clear(),c=s=u=a=null)}c=l.call(this),e.extend(this,{type:"image/jpeg",size:a.length(),width:c&&c.width||0,height:c&&c.height||0,setExif:function(t,i){if(!u)return!1;"object"===e.typeOf(t)?e.each(t,(function(e,t){u.setExif(t,e)})):u.setExif(t,i),s.set("app1",u.SEGMENT())},writeHeaders:function(){return arguments.length?s.restore(arguments[0]):s.restore(o)},stripHeaders:function(e){return s.strip(e)},purge:function(){d.call(this)}}),u&&(this.meta={tiff:u.TIFF(),exif:u.EXIF(),gps:u.GPS(),thumb:function(){var e,t,i=u.thumb();if(i&&(t=l(e=new n(i)),e.clear(),t))return t.data=i,t;return null}()})}})),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],(function(e,t,i){return function(n){var r,o;function a(){r&&(r.clear(),n=o=r=null)}function s(e){var t;return{length:t=r.LONG(e),type:r.STRING(e+=4,4),start:e+=4,CRC:r.LONG(e+t)}}r=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;i1048576){var i=document.createElement("canvas");i.width=i.height=1;var n=i.getContext("2d");return n.drawImage(e,1-t,0),0===n.getImageData(0,0,1,1).data[3]}return!1}return{isSubsampled:e,renderTo:function(t,i,n){var r=t.naturalWidth,o=t.naturalHeight,a=n.width,s=n.height,u=n.x||0,c=n.y||0,l=i.getContext("2d");e(t)&&(r/=2,o/=2);var d=1024,m=document.createElement("canvas");m.width=m.height=d;for(var h=m.getContext("2d"),f=function(e,t,i){var n=document.createElement("canvas");n.width=1,n.height=i;var r=n.getContext("2d");r.drawImage(e,0,0);var o=r.getImageData(0,0,1,i).data,a=0,s=i,u=i;for(;u>a;){0===o[4*(u-1)+3]?s=u:a=u,u=s+a>>1}n=null;var c=u/i;return 0===c?1:c}(t,0,o),p=0;po?o-p:d,x=0;xr?r-x:d;h.clearRect(0,0,d,d),h.drawImage(t,-x,-p);var v=x*a/r+u<<0,y=Math.ceil(E*a/r),w=p*s/o/f+c<<0,R=Math.ceil(g*s/o/f);l.drawImage(m,0,0,E,g,v,w,y,R),x+=d}p+=d}m=h=null}}})),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/MegaPixel","moxie/core/utils/Mime","moxie/core/utils/Env"],(function(e,t,i,n,r,o,a,s,u,c){return e.Image=function(){var e,l,d,m,h,f=this,p=!1,g=!0;function x(){if(!d&&!e)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return d||e}function E(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function v(t){var r=this;(e=new Image).onerror=function(){_.call(this),r.trigger("error",i.ImageError.WRONG_FORMAT)},e.onload=function(){r.trigger("load")},e.src="data:"==t.substr(0,5)?t:function(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}(t,h.type)}function y(e,t){var n,r=this;if(!window.FileReader)return t(e.getAsDataURL());(n=new FileReader).onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e)}function w(e,i,n,r){var o,a,s,u,c,l=0,m=0;if(g=r,c=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(c,[5,6,7,8])){var h=e;e=i,i=h}a=x(),n?(e=Math.min(e,a.width),i=Math.min(i,a.height),o=Math.max(e/a.width,i/a.height)):o=Math.min(e/a.width,i/a.height),o>1&&!n&&r||(d||(d=document.createElement("canvas")),s=Math.round(a.width*o),u=Math.round(a.height*o),n?(d.width=e,d.height=i,s>e&&(l=Math.round((s-e)/2)),u>i&&(m=Math.round((u-i)/2))):(d.width=s,d.height=u),g||function(e,t,i){switch(i){case 5:case 6:case 7:case 8:d.width=t,d.height=e;break;default:d.width=e,d.height=t}var n=d.getContext("2d");switch(i){case 2:n.translate(e,0),n.scale(-1,1);break;case 3:n.translate(e,t),n.rotate(Math.PI);break;case 4:n.translate(0,t),n.scale(1,-1);break;case 5:n.rotate(.5*Math.PI),n.scale(1,-1);break;case 6:n.rotate(.5*Math.PI),n.translate(0,-t);break;case 7:n.rotate(.5*Math.PI),n.translate(e,-t),n.scale(-1,1);break;case 8:n.rotate(-.5*Math.PI),n.translate(-e,0)}}(d.width,d.height,c),R.call(this,a,d,-l,-m,s,u),this.width=d.width,this.height=d.height,p=!0),this.trigger("Resize")}function R(e,t,i,n,r,o){"iOS"===c.OS?s.renderTo(e,t,{width:r,height:o,x:i,y:n}):t.getContext("2d").drawImage(e,i,n,r,o)}function _(){l&&(l.purge(),l=null),m=e=d=h=null,p=!1}t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=!(arguments.length>1)||arguments[1];if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);if(h=e,e.isDetached())return m=e.getSource(),void v.call(this,m);y.call(this,e.getSource(),(function(e){r&&(m=E(e)),v.call(t,e)}))},loadFromImage:function(e,t){this.meta=e.meta,h=new o(null,{name:e.name,size:e.size,type:e.type}),v.call(this,t?m=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var e,t=this.getRuntime();return!l&&m&&t.can("access_image_binary")&&(l=new a(m)),!(e={width:x().width||0,height:x().height||0,type:h.type||u.getFileMime(h.name),size:m&&m.length||h.size||0,name:h.name||"",meta:l&&l.meta||this.meta||{}}).meta||!e.meta.thumb||e.meta.thumb.data instanceof r||(e.meta.thumb.data=new r(null,{type:"image/jpeg",data:e.meta.thumb.data})),e},downsize:function(){w.apply(this,arguments)},getAsCanvas:function(){return d&&(d.id=this.uid+"_canvas"),d},getAsBlob:function(e,t){return e!==this.type&&w.call(this,this.width,this.height,!1),new o(null,{name:h.name||"",type:e,data:f.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(t){var i=arguments[1]||90;if(!p)return e.src;if("image/jpeg"!==t)return d.toDataURL("image/png");try{return d.toDataURL("image/jpeg",i/100)}catch(n){return d.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!p)return m||(m=E(f.getAsDataURL(e,t))),m;if("image/jpeg"!==e)m=E(f.getAsDataURL(e,t));else{var i;t||(t=90);try{i=d.toDataURL("image/jpeg",t/100)}catch(n){i=d.toDataURL("image/jpeg")}m=E(i),l&&(m=l.stripHeaders(m),g&&(l.meta&&l.meta.exif&&l.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),m=l.writeHeaders(m)),l.purge(),l=null)}return p=!1,m},destroy:function(){f=null,_.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}})),n("moxie/runtime/flash/Runtime",[],(function(){return{}})),n("moxie/runtime/silverlight/Runtime",[],(function(){return{}})),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],(function(e,t,i,n){var r="html4",o={};return i.addConstructor(r,(function(t){var a,s=this,u=i.capTest,c=i.capTrue;i.call(this,t,r,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u(o.Image&&(n.can("create_canvas")||n.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:u("Chrome"===n.browser&&n.verComp(n.version,28,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||"Safari"===n.browser&&n.verComp(n.version,7,">=")),resize_image:function(){return o.Image&&s.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return!("json"!==t||!window.JSON)||!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return s.can("select_file")},summon_file_dialog:function(){return s.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:(a=this.destroy,function(){a.call(s),a=s=null})}),e.extend(this.getShim(),o)})),o})),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],(function(e,t,i,n,r,o,a){return e.FileInput=function(){var e,s,u=[];function c(){var o,l,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),e&&(d=n.get(e+"_form"))&&i.extend(d.style,{top:"100%"}),(m=document.createElement("form")).setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),(h=document.createElement("input")).setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("name",s.name||"Filedata"),h.setAttribute("accept",u.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var e;if(this.value){if(this.files){if(0===(e=this.files[0]).size)return void m.parentNode.removeChild(m)}else e={name:this.value};e=new t(g.uid,e),this.onchange=function(){},c.call(p),p.files=[e],h.setAttribute("id",e.uid),m.setAttribute("id",e.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(l=n.get(s.browse_button),r.removeEvent(l,"click",p.uid),r.addEvent(l,"click",(function(e){h&&!h.disabled&&h.click(),e.preventDefault()}),p.uid)),e=f,o=d=l=null}i.extend(this,{init:function(e){var t,i,a,l,d=this,m=d.getRuntime();s=e,u=e.accept.mimes||o.extList2mimes(e.accept,m.can("filter_by_extension")),t=m.getShimContainer(),i=n.get(e.browse_button),m.can("summon_file_dialog")&&("static"===n.getStyle(i,"position")&&(i.style.position="relative"),a=parseInt(n.getStyle(i,"z-index"),10)||1,i.style.zIndex=a,t.style.zIndex=a-1),l=m.can("summon_file_dialog")?i:t,r.addEvent(l,"mouseover",(function(){d.trigger("mouseenter")}),d.uid),r.addEvent(l,"mouseout",(function(){d.trigger("mouseleave")}),d.uid),r.addEvent(l,"mousedown",(function(){d.trigger("mousedown")}),d.uid),r.addEvent(n.get(e.container),"mouseup",(function(){d.trigger("mouseup")}),d.uid),i=null,c.call(this),t=null,d.trigger({type:"ready",async:!0})},disable:function(t){var i;(i=n.get(e))&&(i.disabled=!!t)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer();r.removeAllEvents(o,this.uid),r.removeAllEvents(s&&n.get(s.container),this.uid),r.removeAllEvents(s&&n.get(s.browse_button),this.uid),o&&(o.innerHTML=""),i.removeInstance(this.uid),e=u=s=o=i=null}})}})),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],(function(e,t){return e.FileReader=t})),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],(function(e,t,i,n,r,o,a,s){return e.XMLHttpRequest=function(){var e,u,c;function l(e){var t,n,r,a,s=this,u=!1;if(c){if(t=c.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(a=(r=n.getElementsByTagName("input")).length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout((function(){o.removeEvent(c,"load",s.uid),c.parentNode&&c.parentNode.removeChild(c);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=c=null,e()}),1)}}t.extend(this,{send:function(d,m){var h,f,p,g,x,E,v=this,y=v.getRuntime();if(e=u=null,m instanceof s&&m.hasBlob()){if(g=m.getBlob(),h=g.uid,p=i.get(h),!(f=i.get(h+"_form")))throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else h=t.guid("uid_"),(f=document.createElement("form")).setAttribute("id",h+"_form"),f.setAttribute("method",d.method),f.setAttribute("enctype","multipart/form-data"),f.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(f);f.setAttribute("target",h+"_iframe"),m instanceof s&&m.each((function(e,i){if(e instanceof a)p&&p.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),p?f.insertBefore(n,p):f.appendChild(n)}})),f.setAttribute("action",d.url),x=y.getShimContainer()||document.body,(E=document.createElement("div")).innerHTML='',c=E.firstChild,x.appendChild(c),o.addEvent(c,"load",(function(){var i;try{i=c.contentWindow.document||c.contentDocument||window.frames[c.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?e=i.title.replace(/^(\d+).*$/,"$1"):(e=200,u=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:u.length,total:u.length}),g&&v.trigger({type:"uploadprogress",loaded:g.size||1025,total:g.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return void l.call(v,(function(){v.trigger("error")}));e=404}l.call(v,(function(){v.trigger("load")}))}),v.uid),f.submit(),v.trigger("loadstart")},getStatus:function(){return e},getResponse:function(e){if("json"===e&&"string"===t.typeOf(u)&&window.JSON)try{return JSON.parse(u.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return u},abort:function(){var e=this;c&&c.contentWindow&&(c.contentWindow.stop?c.contentWindow.stop():c.contentWindow.document.execCommand?c.contentWindow.document.execCommand("Stop"):c.src="about:blank"),l.call(this,(function(){e.dispatchEvent("abort")}))}})}})),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],(function(e,t){return e.Image=t})),function(n){for(var r=0;r0&&(i.slice_blob=!0),!e.resize.enabled&&e.multipart||(i.send_binary_string=!0),o.each(e,(function(e,t){n(t,!!e,!0)}))),e.runtimes="html5,html4",i}var a,o={VERSION:"2.1.9",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,getAll:function(e){var t,i=[];"array"!==o.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)(t=o.get(e[n]))&&i.push(t);return i.length?i:null},get:t.get,each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"};return e?(""+e).replace(/[<>&\"\']/g,(function(e){return t[e]?"&"+t[e]+";":e})):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){if(e===i||/\D/.test(e))return o.translate("N/A");function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+o.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+o.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,i){var n,r;return n=new o.Uploader(e),r=t.Runtime.thatCan(n.getOption().required_features,i||e.runtimes),n.destroy(),r},addFileFilter:function(e,t){r[e]=t}};o.addFileFilter("mime_types",(function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),i(!1)):i(!0)})),o.addFileFilter("max_file_size",(function(e,t,i){e=o.parseSize(e),undefined!==t.size&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),i(!1)):i(!0)})),o.addFileFilter("prevent_duplicates",(function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),void i(!1);i(!0)})),o.Uploader=function(e){var a,u,l,d,c=o.guid(),f=[],g={},p=[],h=[],_=!1;function m(){var e,t,i=0;if(this.state==o.STARTED){for(t=0;t0?Math.ceil(e.loaded/e.size*100):100,R()}function R(){var e,t;for(l.reset(),e=0;e0?Math.ceil(l.uploaded/f.length*100):0:(l.bytesPerSec=Math.ceil(l.loaded/((+new Date-u||1)/1e3)),l.percent=l.size>0?Math.ceil(l.loaded/l.size*100):0)}function E(){var e=p[0]||h[0];return!!e&&e.getRuntime().uid}function y(){this.bind("FilesAdded FilesRemoved",(function(e){e.trigger("QueueChanged"),e.refresh()})),this.bind("CancelUpload",w),this.bind("BeforeUpload",I),this.bind("UploadFile",S),this.bind("UploadProgress",T),this.bind("StateChanged",D),this.bind("QueueChanged",R),this.bind("Error",A),this.bind("FileUploaded",F),this.bind("Destroy",P)}function v(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:g};o.each(e.runtimes.split(/\s*,\s*/),(function(t){e[t]&&(a[t]=e[t])})),e.browse_button&&o.each(e.browse_button,(function(i){s.push((function(s){var u=new t.FileInput(o.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,p.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",(function(n){_||(e.browse_button_hover&&("mouseenter"===n.type?t.addClass(i,e.browse_button_hover):"mouseleave"===n.type&&t.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===n.type?t.addClass(i,e.browse_button_active):"mouseup"===n.type&&t.removeClass(i,e.browse_button_active)))})),u.bind("mousedown",(function(){n.trigger("Browse")})),u.bind("error runtimeerror",(function(){u=null,s()})),u.init()}))})),e.drop_element&&o.each(e.drop_element,(function(e){s.push((function(i){var s=new t.FileDrop(o.extend({},a,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,h.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",(function(){s=null,i()})),s.init()}))})),t.inSeries(s,(function(){"function"==typeof i&&i(r)}))}function z(e,n,r){var s=new t.Image;try{s.onload=function(){if(n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop)return this.destroy(),r(e);s.downsize(n.width,n.height,n.crop,n.preserve_headers)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function O(e,i,n){var r=this,u=!1;function l(e,t,i){var n,s,l=a[e];switch(e){case"max_file_size":"max_file_size"===e&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":(t=o.parseSize(t))&&(a[e]=t,a.send_file_name=!0);break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":"array"===o.typeOf(t)&&(t={mime_types:t}),i?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=(n=a.filters.mime_types,s=[],o.each(n,(function(e){o.each(e.extensions.split(/,/),(function(e){/^\s*\*\s*$/.test(e)?s.push("\\.*"):s.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))}))})),new RegExp("("+s.join("|")+")$","i")));break;case"resize":i?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"container":case"browse_button":case"drop_element":t="container"===e?o.get(t):o.getAll(t);case"runtimes":case"multi_selection":a[e]=t,i||(u=!0);break;default:a[e]=t}i||r.trigger("OptionChanged",e,t,l)}"object"==typeof e?o.each(e,(function(e,t){l(t,e,n)})):l(e,i,n),n?(a.required_features=s(o.extend({},a)),g=s(o.extend({},a,{required_features:!0}))):u&&(r.trigger("Destroy"),v.call(r,a,(function(e){e?(r.runtime=t.Runtime.getInfo(E()).type,r.trigger("Init",{runtime:r.runtime}),r.trigger("PostInit")):r.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})))}function I(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function S(e,i){var r,s=e.settings.url,a=e.settings.chunk_size,u=e.settings.max_retries,l=e.features,c=0;function f(){u-- >0?n(p,1e3):(i.loaded=c,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:i,response:d.responseText,status:d.status,responseHeaders:d.getAllResponseHeaders()}))}function p(){var h,_,m,b={};i.status===o.UPLOADING&&e.state!==o.STOPPED&&(e.settings.send_file_name&&(b.name=i.target_name||i.name),a&&l.chunks&&r.size>a?(m=Math.min(a,r.size-c),h=r.slice(c,c+m)):(m=r.size,h=r),a&&l.chunks&&(e.settings.send_chunk_number?(b.chunk=Math.ceil(c/a),b.chunks=Math.ceil(r.size/a)):(b.offset=c,b.total=r.size)),(d=new t.XMLHttpRequest).upload&&(d.upload.onprogress=function(t){i.loaded=Math.min(i.size,c+t.loaded),e.trigger("UploadProgress",i)}),d.onload=function(){d.status>=400?f():(u=e.settings.max_retries,m=r.size?(i.size!=i.origSize&&(r.destroy(),r=null),e.trigger("UploadProgress",i),i.status=o.DONE,e.trigger("FileUploaded",i,{response:d.responseText,status:d.status,responseHeaders:d.getAllResponseHeaders()})):n(p,1))},d.onerror=function(){f()},d.onloadend=function(){this.destroy(),d=null},e.settings.multipart&&l.multipart?(d.open("post",s,!0),o.each(e.settings.headers,(function(e,t){d.setRequestHeader(t,e)})),_=new t.FormData,o.each(o.extend(b,e.settings.multipart_params),(function(e,t){_.append(t,e)})),_.append(e.settings.file_data_name,h),d.send(_,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:g})):(s=o.buildUrl(e.settings.url,o.extend(b,e.settings.multipart_params)),d.open("post",s,!0),d.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,(function(e,t){d.setRequestHeader(t,e)})),d.send(h,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:g})))}i.loaded&&(c=i.loaded=a?a*Math.floor(i.loaded/a):0),r=i.getSource(),e.settings.resize.enabled&&function(e,i){if(e.ruid){var n=t.Runtime.getInfo(e.ruid);if(n)return n.can(i)}return!1}(r,"send_binary_string")&&~t.inArray(r.type,["image/jpeg","image/png"])?z.call(this,r,e.settings.resize,(function(e){r=e,i.size=e.size,p()})):p()}function T(e,t){b(t)}function D(e){if(e.state==o.STARTED)u=+new Date;else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,R())}function w(){d&&d.abort()}function F(e){R(),n((function(){m.call(e)}),1)}function A(e,t){t.code===o.INIT_ERROR?e.destroy():t.code===o.HTTP_ERROR&&(t.file.status=o.FAILED,b(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),n((function(){m.call(e)}),1)))}function P(e){e.stop(),o.each(f,(function(e){e.destroy()})),f=[],p.length&&(o.each(p,(function(e){e.destroy()})),p=[]),h.length&&(o.each(h,(function(e){e.destroy()})),h=[]),g={},_=!1,u=d=null,l.reset()}a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},O.call(this,e,null,!0),l=new o.QueueProgress,o.extend(this,{id:c,uid:c,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:l,init:function(){var e,i,n=this;return"function"==typeof(e=n.getOption("preinit"))?e(n):o.each(e,(function(e,t){n.bind(t,e)})),y.call(n),o.each(["container","browse_button","drop_element"],(function(e){if(null===n.getOption(e))return i={code:o.INIT_ERROR,message:o.translate("'%' specified, but cannot be found.")},!1})),i?n.trigger("Error",i):a.browse_button||a.drop_element?void v.call(n,a,(function(e){var i=n.getOption("init");"function"==typeof i?i(n):o.each(i,(function(e,t){n.bind(t,e)})),e?(n.runtime=t.Runtime.getInfo(E()).type,n.trigger("Init",{runtime:n.runtime}),n.trigger("PostInit")):n.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})):n.trigger("Error",{code:o.INIT_ERROR,message:o.translate("You must specify either 'browse_button' or 'drop_element'.")})},setOption:function(e,t){O.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){p.length&&o.each(p,(function(e){e.trigger("Refresh")})),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),m.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){_=arguments[0]===i||arguments[0],p.length&&o.each(p,(function(e){e.disable(_)})),this.trigger("DisableBrowse",_)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,i){var s,a=this,u=[],l=[];s=E(),function d(e){var c=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!s)return!1;e.ruid=s,e.connectRuntime(s)}d(new o.File(e))}else e instanceof t.Blob?(d(e.getSource()),e.destroy()):e instanceof o.File?(i&&(e.name=i),u.push((function(i){!function(e,i){var n=[];t.each(a.settings.filters,(function(t,i){r[i]&&n.push((function(n){r[i].call(a,t,e,(function(e){n(!e)}))}))})),t.inSeries(n,i)}(e,(function(t){t||(f.push(e),l.push(e),a.trigger("FileFiltered",e)),n(i,1)}))}))):-1!==t.inArray(c,["file","blob"])?d(new t.File(null,e)):"node"===c&&"filelist"===t.typeOf(e.files)?t.each(e.files,d):"array"===c&&(i=null,t.each(e,d))}(e),u.length&&t.inSeries(u,(function(){l.length&&a.trigger("FilesAdded",l)}))},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=f.length-1;i>=0;i--)if(f[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=f.splice(e===i?0:e,t===i?f.length:t),r=!1;return this.state==o.STARTED&&(o.each(n,(function(e){if(e.status===o.UPLOADING)return r=!0,!1})),r&&this.stop()),this.trigger("FilesRemoved",n),o.each(n,(function(e){e.destroy()})),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort((function(e,t){return t.priority-e.priority})),(i=[].slice.call(arguments)).shift(),i.unshift(this);for(var n=0;n":"gt","&":"amp",'"':"quot","'":"#39"};return e&&(""+e).replace(/[<>&\"\']/g,(function(e){return t[e]?"&"+t[e]+";":e}))},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){for(var t=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],i=0;i(t/=1024)?n(e/t,1)+" "+o.translate("gb"):e>(t/=1024)?n(e/t,1)+" "+o.translate("mb"):1024e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),i(!1)):i(!0)})),o.addFileFilter("prevent_duplicates",(function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),void i(!1);i(!0)})),o.Uploader=function(e){var a,u,l,d,c=o.guid(),f=[],g={},p=[],h=[],_=!1;function m(){var e,t,i=0;if(this.state==o.STARTED){for(t=0;tu?(m=Math.min(u,s.size-f),s.slice(f,f+m)):(m=s.size,s),u&&c.chunks&&(e.settings.send_chunk_number?(b.chunk=Math.ceil(f/u),b.chunks=Math.ceil(s.size/u)):(b.offset=f,b.total=s.size)),(d=new t.XMLHttpRequest).upload&&(d.upload.onprogress=function(t){r.loaded=Math.min(r.size,f+t.loaded),e.trigger("UploadProgress",r)}),d.onload=function(){400<=d.status?p():(l=e.settings.max_retries,m=s.size?(r.size!=r.origSize&&(s.destroy(),s=null),e.trigger("UploadProgress",r),r.status=o.DONE,e.trigger("FileUploaded",r,{response:d.responseText,status:d.status,responseHeaders:d.getAllResponseHeaders()})):n(h,1))},d.onerror=function(){p()},d.onloadend=function(){this.destroy(),d=null},e.settings.multipart&&c.multipart?(d.open("post",a,!0),o.each(e.settings.headers,(function(e,t){d.setRequestHeader(t,e)})),_=new t.FormData,o.each(o.extend(b,e.settings.multipart_params),(function(e,t){_.append(t,e)})),_.append(e.settings.file_data_name,i),d.send(_,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:g})):(a=o.buildUrl(e.settings.url,o.extend(b,e.settings.multipart_params)),d.open("post",a,!0),d.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,(function(e,t){d.setRequestHeader(t,e)})),d.send(i,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:g})))}r.loaded&&(f=r.loaded=u?u*Math.floor(r.loaded/u):0),s=r.getSource(),e.settings.resize.enabled&&function(e,i){if(e.ruid&&(e=t.Runtime.getInfo(e.ruid)))return e.can("send_binary_string")}(s)&&~t.inArray(s.type,["image/jpeg","image/png"])?function(e,n,r){var s=new t.Image;try{s.onload=function(){if(n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop)return this.destroy(),r(e);s.downsize(n.width,n.height,n.crop,n.preserve_headers)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(n){r(e)}}.call(this,s,e.settings.resize,(function(e){s=e,r.size=e.size,h()})):h()}function I(e,t){b(t)}function S(e){if(e.state==o.STARTED)u=+new Date;else if(e.state==o.STOPPED)for(var t=e.files.length-1;0<=t;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,R())}function T(){d&&d.abort()}function D(e){R(),n((function(){m.call(e)}),1)}function w(e,t){t.code===o.INIT_ERROR?e.destroy():t.code===o.HTTP_ERROR&&(t.file.status=o.FAILED,b(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),n((function(){m.call(e)}),1)))}function F(e){e.stop(),o.each(f,(function(e){e.destroy()})),f=[],p.length&&(o.each(p,(function(e){e.destroy()})),p=[]),h.length&&(o.each(h,(function(e){e.destroy()})),h=[]),_=!(g={}),u=d=null,l.reset()}a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},v.call(this,e,null,!0),l=new o.QueueProgress,o.extend(this,{id:c,uid:c,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:l,init:function(){var e,i=this,n=i.getOption("preinit");return"function"==typeof n?n(i):o.each(n,(function(e,t){i.bind(t,e)})),function(){this.bind("FilesAdded FilesRemoved",(function(e){e.trigger("QueueChanged"),e.refresh()})),this.bind("CancelUpload",T),this.bind("BeforeUpload",z),this.bind("UploadFile",O),this.bind("UploadProgress",I),this.bind("StateChanged",S),this.bind("QueueChanged",R),this.bind("Error",w),this.bind("FileUploaded",D),this.bind("Destroy",F)}.call(i),o.each(["container","browse_button","drop_element"],(function(t){if(null===i.getOption(t))return!(e={code:o.INIT_ERROR,message:o.translate("'%' specified, but cannot be found.")})})),e?i.trigger("Error",e):a.browse_button||a.drop_element?void y.call(i,a,(function(e){var n=i.getOption("init");"function"==typeof n?n(i):o.each(n,(function(e,t){i.bind(t,e)})),e?(i.runtime=t.Runtime.getInfo(E()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("You must specify either 'browse_button' or 'drop_element'.")})},setOption:function(e,t){v.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){p.length&&o.each(p,(function(e){e.trigger("Refresh")})),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),m.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){_=arguments[0]===i||arguments[0],p.length&&o.each(p,(function(e){e.disable(_)})),this.trigger("DisableBrowse",_)},getFile:function(e){for(var t=f.length-1;0<=t;t--)if(f[t].id===e)return f[t]},addFile:function(e,i){var s,a=this,u=[],l=[];s=E(),function d(e){var c=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!s)return!1;e.ruid=s,e.connectRuntime(s)}d(new o.File(e))}else e instanceof t.Blob?(d(e.getSource()),e.destroy()):e instanceof o.File?(i&&(e.name=i),u.push((function(i){var s,o,u;s=e,o=function(t){t||(f.push(e),l.push(e),a.trigger("FileFiltered",e)),n(i,1)},u=[],t.each(a.settings.filters,(function(e,t){r[t]&&u.push((function(i){r[t].call(a,e,s,(function(e){i(!e)}))}))})),t.inSeries(u,o)}))):-1!==t.inArray(c,["file","blob"])?d(new t.File(null,e)):"node"===c&&"filelist"===t.typeOf(e.files)?t.each(e.files,d):"array"===c&&(i=null,t.each(e,d))}(e),u.length&&t.inSeries(u,(function(){l.length&&a.trigger("FilesAdded",l)}))},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=f.length-1;0<=i;i--)if(f[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){e=f.splice(e===i?0:e,t===i?f.length:t);var n=!1;return this.state==o.STARTED&&(o.each(e,(function(e){if(e.status===o.UPLOADING)return!(n=!0)})),n&&this.stop()),this.trigger("FilesRemoved",e),o.each(e,(function(e){e.destroy()})),n&&this.start(),e},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort((function(e,t){return t.priority-e.priority})),(i=[].slice.call(arguments)).shift(),i.unshift(this);for(var n=0;n0&&(i.slice_blob=!0),!e.resize.enabled&&e.multipart||(i.send_binary_string=!0),o.each(e,(function(e,t){n(t,!!e,!0)}))),e.runtimes="html5,html4",i}var a,o={VERSION:"2.1.9",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,getAll:function(e){var t,i=[];"array"!==o.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)(t=o.get(e[n]))&&i.push(t);return i.length?i:null},get:t.get,each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"};return e?(""+e).replace(/[<>&\"\']/g,(function(e){return t[e]?"&"+t[e]+";":e})):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){if(e===i||/\D/.test(e))return o.translate("N/A");function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+o.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+o.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,i){var n,r;return n=new o.Uploader(e),r=t.Runtime.thatCan(n.getOption().required_features,i||e.runtimes),n.destroy(),r},addFileFilter:function(e,t){r[e]=t}};o.addFileFilter("mime_types",(function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),i(!1)):i(!0)})),o.addFileFilter("max_file_size",(function(e,t,i){e=o.parseSize(e),undefined!==t.size&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),i(!1)):i(!0)})),o.addFileFilter("prevent_duplicates",(function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),void i(!1);i(!0)})),o.Uploader=function(e){var a,u,l,d,c=o.guid(),f=[],g={},p=[],h=[],_=!1;function m(){var e,t,i=0;if(this.state==o.STARTED){for(t=0;t0?Math.ceil(e.loaded/e.size*100):100,R()}function R(){var e,t;for(l.reset(),e=0;e0?Math.ceil(l.uploaded/f.length*100):0:(l.bytesPerSec=Math.ceil(l.loaded/((+new Date-u||1)/1e3)),l.percent=l.size>0?Math.ceil(l.loaded/l.size*100):0)}function E(){var e=p[0]||h[0];return!!e&&e.getRuntime().uid}function y(){this.bind("FilesAdded FilesRemoved",(function(e){e.trigger("QueueChanged"),e.refresh()})),this.bind("CancelUpload",w),this.bind("BeforeUpload",I),this.bind("UploadFile",S),this.bind("UploadProgress",T),this.bind("StateChanged",D),this.bind("QueueChanged",R),this.bind("Error",A),this.bind("FileUploaded",F),this.bind("Destroy",P)}function v(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:g};o.each(e.runtimes.split(/\s*,\s*/),(function(t){e[t]&&(a[t]=e[t])})),e.browse_button&&o.each(e.browse_button,(function(i){s.push((function(s){var u=new t.FileInput(o.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,p.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",(function(n){_||(e.browse_button_hover&&("mouseenter"===n.type?t.addClass(i,e.browse_button_hover):"mouseleave"===n.type&&t.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===n.type?t.addClass(i,e.browse_button_active):"mouseup"===n.type&&t.removeClass(i,e.browse_button_active)))})),u.bind("mousedown",(function(){n.trigger("Browse")})),u.bind("error runtimeerror",(function(){u=null,s()})),u.init()}))})),e.drop_element&&o.each(e.drop_element,(function(e){s.push((function(i){var s=new t.FileDrop(o.extend({},a,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,h.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",(function(){s=null,i()})),s.init()}))})),t.inSeries(s,(function(){"function"==typeof i&&i(r)}))}function z(e,n,r){var s=new t.Image;try{s.onload=function(){if(n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop)return this.destroy(),r(e);s.downsize(n.width,n.height,n.crop,n.preserve_headers)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function O(e,i,n){var r=this,u=!1;function l(e,t,i){var n,s,l=a[e];switch(e){case"max_file_size":"max_file_size"===e&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":(t=o.parseSize(t))&&(a[e]=t,a.send_file_name=!0);break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":"array"===o.typeOf(t)&&(t={mime_types:t}),i?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=(n=a.filters.mime_types,s=[],o.each(n,(function(e){o.each(e.extensions.split(/,/),(function(e){/^\s*\*\s*$/.test(e)?s.push("\\.*"):s.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))}))})),new RegExp("("+s.join("|")+")$","i")));break;case"resize":i?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"container":case"browse_button":case"drop_element":t="container"===e?o.get(t):o.getAll(t);case"runtimes":case"multi_selection":a[e]=t,i||(u=!0);break;default:a[e]=t}i||r.trigger("OptionChanged",e,t,l)}"object"==typeof e?o.each(e,(function(e,t){l(t,e,n)})):l(e,i,n),n?(a.required_features=s(o.extend({},a)),g=s(o.extend({},a,{required_features:!0}))):u&&(r.trigger("Destroy"),v.call(r,a,(function(e){e?(r.runtime=t.Runtime.getInfo(E()).type,r.trigger("Init",{runtime:r.runtime}),r.trigger("PostInit")):r.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})))}function I(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function S(e,i){var r,s=e.settings.url,a=e.settings.chunk_size,u=e.settings.max_retries,l=e.features,c=0;function f(){u-- >0?n(p,1e3):(i.loaded=c,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:i,response:d.responseText,status:d.status,responseHeaders:d.getAllResponseHeaders()}))}function p(){var h,_,m,b={};i.status===o.UPLOADING&&e.state!==o.STOPPED&&(e.settings.send_file_name&&(b.name=i.target_name||i.name),a&&l.chunks&&r.size>a?(m=Math.min(a,r.size-c),h=r.slice(c,c+m)):(m=r.size,h=r),a&&l.chunks&&(e.settings.send_chunk_number?(b.chunk=Math.ceil(c/a),b.chunks=Math.ceil(r.size/a)):(b.offset=c,b.total=r.size)),(d=new t.XMLHttpRequest).upload&&(d.upload.onprogress=function(t){i.loaded=Math.min(i.size,c+t.loaded),e.trigger("UploadProgress",i)}),d.onload=function(){d.status>=400?f():(u=e.settings.max_retries,m=r.size?(i.size!=i.origSize&&(r.destroy(),r=null),e.trigger("UploadProgress",i),i.status=o.DONE,e.trigger("FileUploaded",i,{response:d.responseText,status:d.status,responseHeaders:d.getAllResponseHeaders()})):n(p,1))},d.onerror=function(){f()},d.onloadend=function(){this.destroy(),d=null},e.settings.multipart&&l.multipart?(d.open("post",s,!0),o.each(e.settings.headers,(function(e,t){d.setRequestHeader(t,e)})),_=new t.FormData,o.each(o.extend(b,e.settings.multipart_params),(function(e,t){_.append(t,e)})),_.append(e.settings.file_data_name,h),d.send(_,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:g})):(s=o.buildUrl(e.settings.url,o.extend(b,e.settings.multipart_params)),d.open("post",s,!0),d.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,(function(e,t){d.setRequestHeader(t,e)})),d.send(h,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:g})))}i.loaded&&(c=i.loaded=a?a*Math.floor(i.loaded/a):0),r=i.getSource(),e.settings.resize.enabled&&function(e,i){if(e.ruid){var n=t.Runtime.getInfo(e.ruid);if(n)return n.can(i)}return!1}(r,"send_binary_string")&&~t.inArray(r.type,["image/jpeg","image/png"])?z.call(this,r,e.settings.resize,(function(e){r=e,i.size=e.size,p()})):p()}function T(e,t){b(t)}function D(e){if(e.state==o.STARTED)u=+new Date;else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,R())}function w(){d&&d.abort()}function F(e){R(),n((function(){m.call(e)}),1)}function A(e,t){t.code===o.INIT_ERROR?e.destroy():t.code===o.HTTP_ERROR&&(t.file.status=o.FAILED,b(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),n((function(){m.call(e)}),1)))}function P(e){e.stop(),o.each(f,(function(e){e.destroy()})),f=[],p.length&&(o.each(p,(function(e){e.destroy()})),p=[]),h.length&&(o.each(h,(function(e){e.destroy()})),h=[]),g={},_=!1,u=d=null,l.reset()}a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},O.call(this,e,null,!0),l=new o.QueueProgress,o.extend(this,{id:c,uid:c,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:l,init:function(){var e,i,n=this;return"function"==typeof(e=n.getOption("preinit"))?e(n):o.each(e,(function(e,t){n.bind(t,e)})),y.call(n),o.each(["container","browse_button","drop_element"],(function(e){if(null===n.getOption(e))return i={code:o.INIT_ERROR,message:o.translate("'%' specified, but cannot be found.")},!1})),i?n.trigger("Error",i):a.browse_button||a.drop_element?void v.call(n,a,(function(e){var i=n.getOption("init");"function"==typeof i?i(n):o.each(i,(function(e,t){n.bind(t,e)})),e?(n.runtime=t.Runtime.getInfo(E()).type,n.trigger("Init",{runtime:n.runtime}),n.trigger("PostInit")):n.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})):n.trigger("Error",{code:o.INIT_ERROR,message:o.translate("You must specify either 'browse_button' or 'drop_element'.")})},setOption:function(e,t){O.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){p.length&&o.each(p,(function(e){e.trigger("Refresh")})),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),m.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){_=arguments[0]===i||arguments[0],p.length&&o.each(p,(function(e){e.disable(_)})),this.trigger("DisableBrowse",_)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,i){var s,a=this,u=[],l=[];s=E(),function d(e){var c=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!s)return!1;e.ruid=s,e.connectRuntime(s)}d(new o.File(e))}else e instanceof t.Blob?(d(e.getSource()),e.destroy()):e instanceof o.File?(i&&(e.name=i),u.push((function(i){!function(e,i){var n=[];t.each(a.settings.filters,(function(t,i){r[i]&&n.push((function(n){r[i].call(a,t,e,(function(e){n(!e)}))}))})),t.inSeries(n,i)}(e,(function(t){t||(f.push(e),l.push(e),a.trigger("FileFiltered",e)),n(i,1)}))}))):-1!==t.inArray(c,["file","blob"])?d(new t.File(null,e)):"node"===c&&"filelist"===t.typeOf(e.files)?t.each(e.files,d):"array"===c&&(i=null,t.each(e,d))}(e),u.length&&t.inSeries(u,(function(){l.length&&a.trigger("FilesAdded",l)}))},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=f.length-1;i>=0;i--)if(f[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=f.splice(e===i?0:e,t===i?f.length:t),r=!1;return this.state==o.STARTED&&(o.each(n,(function(e){if(e.status===o.UPLOADING)return r=!0,!1})),r&&this.stop()),this.trigger("FilesRemoved",n),o.each(n,(function(e){e.destroy()})),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort((function(e,t){return t.priority-e.priority})),(i=[].slice.call(arguments)).shift(),i.unshift(this);for(var n=0;n 4 ) { - /* - * The file may have been uploaded and attachment post created, - * but post-processing and resizing failed... - * Do a cleanup then tell the user to scale down the image and upload it again. - */ - $.ajax({ - type: 'post', - url: ajaxurl, - dataType: 'json', - data: { - action: 'media-create-image-subsizes', - _wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce, - attachment_id: id, - _wp_upload_failed_cleanup: true, - } - }); - - error( message, data, file, 'no-retry' ); - return; - } - - if ( ! times ) { - tryAgainCount[ file.id ] = 1; - } else { - tryAgainCount[ file.id ] = ++times; - } - - // Another request to try to create the missing image sub-sizes. - $.ajax({ - type: 'post', - url: ajaxurl, - dataType: 'json', - data: { - action: 'media-create-image-subsizes', - _wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce, - attachment_id: id, - } - }).done( function( response ) { - if ( response.success ) { - fileUploaded( self.uploader, file, response ); - } else { - if ( response.data && response.data.message ) { - message = response.data.message; - } - - error( message, data, file, 'no-retry' ); - } - }).fail( function( jqXHR ) { - // If another HTTP 5xx error, try try again... - if ( jqXHR.status >= 500 && jqXHR.status < 600 ) { - tryAgain( message, data, file ); - return; - } - - error( message, data, file, 'no-retry' ); - }); - } - /** * Custom error callback. * * Add a new error to the errors collection, so other modules can track * and display errors. @see wp.Uploader.errors. * - * @param {string} message Error message. - * @param {object} data Error data from Plupload. - * @param {plupload.File} file File that was uploaded. - * @param {string} retry Whether to try again to create image sub-sizes. Passing 'no-retry' will prevent it. + * @param {string} message + * @param {object} data + * @param {plupload.File} file File that was uploaded. */ - error = function( message, data, file, retry ) { - var isImage = file.type && file.type.indexOf( 'image/' ) === 0, - status = data && data.status; - - // If the file is an image and the error is HTTP 5xx try to create sub-sizes again. - if ( retry !== 'no-retry' && isImage && status >= 500 && status < 600 ) { - tryAgain( message, data, file ); - return; - } - + error = function( message, data, file ) { if ( file.attachment ) { file.attachment.destroy(); } @@ -231,36 +128,6 @@ window.wp = window.wp || {}; self.error( message, data, file ); }; - /** - * After a file is successfully uploaded, update its model. - * - * @param {plupload.Uploader} up Uploader instance. - * @param {plupload.File} file File that was uploaded. - * @param {Object} response Object with response properties. - */ - fileUploaded = function( up, file, response ) { - var complete; - - // Remove the "uploading" UI elements. - _.each( ['file','loaded','size','percent'], function( key ) { - file.attachment.unset( key ); - } ); - - file.attachment.set( _.extend( response.data, { uploading: false } ) ); - - wp.media.model.Attachment.get( response.data.id, file.attachment ); - - complete = Uploader.queue.all( function( attachment ) { - return ! attachment.get( 'uploading' ); - }); - - if ( complete ) { - Uploader.queue.reset(); - } - - self.success( file.attachment ); - } - /** * After the Uploader has been initialized, initialize some behaviors for the dropzone. * @@ -284,7 +151,7 @@ window.wp = window.wp || {}; } // 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'. - dropzone.on( 'dragover.wp-uploader', function() { + dropzone.bind( 'dragover.wp-uploader', function() { if ( timer ) { clearTimeout( timer ); } @@ -297,14 +164,12 @@ window.wp = window.wp || {}; active = true; }); - dropzone.on('dragleave.wp-uploader, drop.wp-uploader', function() { - /* - * Using an instant timer prevents the drag-over class - * from being quickly removed and re-added when elements - * inside the dropzone are repositioned. - * - * @see https://core.trac.wordpress.org/ticket/21705 - */ + dropzone.bind('dragleave.wp-uploader, drop.wp-uploader', function() { + // Using an instant timer prevents the drag-over class from + // being quickly removed and re-added when elements inside the + // dropzone are repositioned. + // + // @see https://core.trac.wordpress.org/ticket/21705 timer = setTimeout( function() { active = false; dropzone.trigger('dropzone:leave').removeClass('drag-over'); @@ -326,21 +191,15 @@ window.wp = window.wp || {}; this.browser.on( 'mouseenter', this.refresh ); } else { this.uploader.disableBrowse( true ); + // If HTML5 mode, hide the auto-created file container. + $('#' + this.uploader.id + '_html5_container').hide(); } - $( self ).on( 'uploader:ready', function() { - $( '.moxie-shim-html5 input[type="file"]' ) - .attr( { - tabIndex: '-1', - 'aria-hidden': 'true' - } ); - } ); - /** * After files were filtered and added to the queue, create a model for each. * - * @param {plupload.Uploader} up Uploader instance. - * @param {Array} files Array of file objects that were added to queue by the user. + * @param {plupload.Uploader} uploader Uploader instance. + * @param {Array} files Array of file objects that were added to queue by the user. */ this.uploader.bind( 'FilesAdded', function( up, files ) { _.each( files, function( file ) { @@ -358,11 +217,6 @@ window.wp = window.wp || {}; data: {}, file: file }); - } else if ( file.type === 'image/webp' && up.settings.webp_upload_error ) { - // Disallow uploading of WebP images if the server cannot edit them. - error( pluploadL10n.noneditable_image, {}, file, 'no-retry' ); - up.removeFile( file ); - return; } // Generate attributes for a new `Attachment` model. @@ -407,12 +261,13 @@ window.wp = window.wp || {}; /** * After a file is successfully uploaded, update its model. * - * @param {plupload.Uploader} up Uploader instance. + * @param {plupload.Uploader} uploader Uploader instance. * @param {plupload.File} file File that was uploaded. * @param {Object} response Object with response properties. * @return {mixed} */ this.uploader.bind( 'FileUploaded', function( up, file, response ) { + var complete; try { response = JSON.parse( response.response ); @@ -420,21 +275,33 @@ window.wp = window.wp || {}; return error( pluploadL10n.default_error, e, file ); } - if ( ! _.isObject( response ) || _.isUndefined( response.success ) ) { + if ( ! _.isObject( response ) || _.isUndefined( response.success ) ) return error( pluploadL10n.default_error, null, file ); - } else if ( ! response.success ) { + else if ( ! response.success ) return error( response.data && response.data.message, response.data, file ); - } - // Success. Update the UI with the new attachment. - fileUploaded( up, file, response ); + _.each(['file','loaded','size','percent'], function( key ) { + file.attachment.unset( key ); + }); + + file.attachment.set( _.extend( response.data, { uploading: false }) ); + wp.media.model.Attachment.get( response.data.id, file.attachment ); + + complete = Uploader.queue.all( function( attachment ) { + return ! attachment.get('uploading'); + }); + + if ( complete ) + Uploader.queue.reset(); + + self.success( file.attachment ); }); /** * When plupload surfaces an error, send it to the error handler. * - * @param {plupload.Uploader} up Uploader instance. - * @param {Object} pluploadError Contains code, message and sometimes file and other details. + * @param {plupload.Uploader} uploader Uploader instance. + * @param {Object} error Contains code, message and sometimes file and other details. */ this.uploader.bind( 'Error', function( up, pluploadError ) { var message = pluploadL10n.default_error, @@ -445,7 +312,7 @@ window.wp = window.wp || {}; if ( pluploadError.code === plupload[ key ] ) { message = Uploader.errorMap[ key ]; - if ( typeof message === 'function' ) { + if ( _.isFunction( message ) ) { message = message( pluploadError.file, pluploadError ); } @@ -473,19 +340,12 @@ window.wp = window.wp || {}; '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, 'FILE_SIZE_ERROR': function( file ) { - return pluploadL10n.file_exceeds_size_limit.replace( '%s', file.name ); - }, - - 'HTTP_ERROR': function( file ) { - if ( file.type && file.type.indexOf( 'image/' ) === 0 ) { - return pluploadL10n.http_error_image; - } - - return pluploadL10n.http_error; - }, + return pluploadL10n.file_exceeds_size_limit.replace('%s', file.name); + } }; $.extend( Uploader.prototype, /** @lends wp.Uploader.prototype */{ @@ -538,11 +398,9 @@ window.wp = window.wp || {}; node = node.parentNode; } - /* - * If the browser node is not attached to the DOM, - * use a temporary container to house it, as the browser button shims - * require the button to exist in the DOM at all times. - */ + // If the browser node is not attached to the DOM, use a + // temporary container to house it, as the browser button + // shims require the button to exist in the DOM at all times. if ( ! attached ) { id = 'wp-uploader-browser-' + this.uploader.id; diff --git a/wp-includes/js/plupload/wp-plupload.min.js b/wp-includes/js/plupload/wp-plupload.min.js index c694fb7..15733d9 100644 --- a/wp-includes/js/plupload/wp-plupload.min.js +++ b/wp-includes/js/plupload/wp-plupload.min.js @@ -1 +1 @@ -window.wp=window.wp||{},function(e,t){var r;"undefined"!=typeof _wpPluploadSettings&&(r=function(e){var a,o,i,n,p=this,d={container:"container",browser:"browse_button",dropzone:"drop_element"},s={};if(this.supports={upload:r.browser.supported},this.supported=this.supports.upload,this.supported){for(o in this.plupload=t.extend(!0,{multipart_params:{}},r.defaults),this.container=document.body,t.extend(!0,this,e),this)"function"==typeof this[o]&&(this[o]=t.proxy(this[o],this));for(o in d)this[o]&&(this[o]=t(this[o]).first(),this[o].length?(this[o].prop("id")||this[o].prop("id","__wp-uploader-id-"+r.uuid++),this.plupload[d[o]]=this[o].prop("id")):delete this[o]);(this.browser&&this.browser.length||this.dropzone&&this.dropzone.length)&&(this.uploader=new plupload.Uploader(this.plupload),delete this.plupload,this.param(this.params||{}),delete this.params,a=function(e,r,o){var d,l;if(r&&r.responseHeaders)if((l=r.responseHeaders.match(/x-wp-upload-attachment-id:\s*(\d+)/i))&&l[1]){if(l=l[1],(d=s[o.id])&&d>4)return t.ajax({type:"post",url:ajaxurl,dataType:"json",data:{action:"media-create-image-subsizes",_wpnonce:_wpPluploadSettings.defaults.multipart_params._wpnonce,attachment_id:l,_wp_upload_failed_cleanup:!0}}),void i(e,r,o,"no-retry");s[o.id]=d?++d:1,t.ajax({type:"post",url:ajaxurl,dataType:"json",data:{action:"media-create-image-subsizes",_wpnonce:_wpPluploadSettings.defaults.multipart_params._wpnonce,attachment_id:l}}).done((function(t){t.success?n(p.uploader,o,t):(t.data&&t.data.message&&(e=t.data.message),i(e,r,o,"no-retry"))})).fail((function(t){t.status>=500&&t.status<600?a(e,r,o):i(e,r,o,"no-retry")}))}else i(pluploadL10n.http_error_image,r,o,"no-retry");else i(pluploadL10n.http_error_image,r,o,"no-retry")},i=function(e,t,o,i){var n=o.type&&0===o.type.indexOf("image/"),d=t&&t.status;"no-retry"!==i&&n&&d>=500&&d<600?a(e,t,o):(o.attachment&&o.attachment.destroy(),r.errors.unshift({message:e||pluploadL10n.default_error,data:t,file:o}),p.error(e,t,o))},n=function(e,t,a){_.each(["file","loaded","size","percent"],(function(e){t.attachment.unset(e)})),t.attachment.set(_.extend(a.data,{uploading:!1})),wp.media.model.Attachment.get(a.data.id,t.attachment),r.queue.all((function(e){return!e.get("uploading")}))&&r.queue.reset(),p.success(t.attachment)},this.uploader.bind("init",(function(e){var a,o,i,n=p.dropzone;if(i=p.supports.dragdrop=e.features.dragdrop&&!r.browser.mobile,n){if(n.toggleClass("supports-drag-drop",!!i),!i)return n.unbind(".wp-uploader");n.on("dragover.wp-uploader",(function(){a&&clearTimeout(a),o||(n.trigger("dropzone:enter").addClass("drag-over"),o=!0)})),n.on("dragleave.wp-uploader, drop.wp-uploader",(function(){a=setTimeout((function(){o=!1,n.trigger("dropzone:leave").removeClass("drag-over")}),0)})),p.ready=!0,t(p).trigger("uploader:ready")}})),this.uploader.bind("postinit",(function(e){e.refresh(),p.init()})),this.uploader.init(),this.browser?this.browser.on("mouseenter",this.refresh):this.uploader.disableBrowse(!0),t(p).on("uploader:ready",(function(){t('.moxie-shim-html5 input[type="file"]').attr({tabIndex:"-1","aria-hidden":"true"})})),this.uploader.bind("FilesAdded",(function(e,t){_.each(t,(function(t){var a,o;if(plupload.FAILED!==t.status){if("image/heic"===t.type&&e.settings.heic_upload_error)r.errors.unshift({message:pluploadL10n.unsupported_image,data:{},file:t});else if("image/webp"===t.type&&e.settings.webp_upload_error)return i(pluploadL10n.noneditable_image,{},t,"no-retry"),void e.removeFile(t);a=_.extend({file:t,uploading:!0,date:new Date,filename:t.name,menuOrder:0,uploadedTo:wp.media.model.settings.post.id},_.pick(t,"loaded","size","percent")),(o=/(?:jpe?g|png|gif)$/i.exec(t.name))&&(a.type="image",a.subtype="jpg"===o[0]?"jpeg":o[0]),t.attachment=wp.media.model.Attachment.create(a),r.queue.add(t.attachment),p.added(t.attachment)}})),e.refresh(),e.start()})),this.uploader.bind("UploadProgress",(function(e,t){t.attachment.set(_.pick(t,"loaded","percent")),p.progress(t.attachment)})),this.uploader.bind("FileUploaded",(function(e,t,r){try{r=JSON.parse(r.response)}catch(a){return i(pluploadL10n.default_error,a,t)}return!_.isObject(r)||_.isUndefined(r.success)?i(pluploadL10n.default_error,null,t):r.success?void n(e,t,r):i(r.data&&r.data.message,r.data,t)})),this.uploader.bind("Error",(function(e,t){var a,o=pluploadL10n.default_error;for(a in r.errorMap)if(t.code===plupload[a]){"function"==typeof(o=r.errorMap[a])&&(o=o(t.file,t));break}i(o,t,t.file),e.refresh()})))}},t.extend(r,_wpPluploadSettings),r.uuid=0,r.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,SECURITY_ERROR:pluploadL10n.security_error,FILE_SIZE_ERROR:function(e){return pluploadL10n.file_exceeds_size_limit.replace("%s",e.name)},HTTP_ERROR:function(e){return e.type&&0===e.type.indexOf("image/")?pluploadL10n.http_error_image:pluploadL10n.http_error}},t.extend(r.prototype,{param:function(e,r){if(1===arguments.length&&"string"==typeof e)return this.uploader.settings.multipart_params[e];arguments.length>1?this.uploader.settings.multipart_params[e]=r:t.extend(this.uploader.settings.multipart_params,e)},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){var e,r,a,o;if(this.browser){for(e=this.browser[0];e;){if(e===document.body){r=!0;break}e=e.parentNode}r||(o="wp-uploader-browser-"+this.uploader.id,(a=t("#"+o)).length||(a=t('
        ').css({position:"fixed",top:"-1000px",left:"-1000px",height:0,width:0}).attr("id","wp-uploader-browser-"+this.uploader.id).appendTo("body")),a.append(this.browser))}this.uploader.refresh()}}),r.queue=new wp.media.model.Attachments([],{query:!1}),r.errors=new Backbone.Collection,e.Uploader=r)}(wp,jQuery),window.wp=window.wp||{},function(e,t){var r;"undefined"!=typeof _wpPluploadSettings&&(t.extend(r=function(e){var a,o,i,n,p=this,d={container:"container",browser:"browse_button",dropzone:"drop_element"},s={};if(this.supports={upload:r.browser.supported},this.supported=this.supports.upload,this.supported){for(o in this.plupload=t.extend(!0,{multipart_params:{}},r.defaults),this.container=document.body,t.extend(!0,this,e),this)"function"==typeof this[o]&&(this[o]=t.proxy(this[o],this));for(o in d)this[o]&&(this[o]=t(this[o]).first(),this[o].length?(this[o].prop("id")||this[o].prop("id","__wp-uploader-id-"+r.uuid++),this.plupload[d[o]]=this[o].prop("id")):delete this[o]);(this.browser&&this.browser.length||this.dropzone&&this.dropzone.length)&&(this.uploader=new plupload.Uploader(this.plupload),delete this.plupload,this.param(this.params||{}),delete this.params,a=function(e,r,o){var d,l;r&&r.responseHeaders&&(l=r.responseHeaders.match(/x-wp-upload-attachment-id:\s*(\d+)/i))&&l[1]?(l=l[1],(d=s[o.id])&&4').css({position:"fixed",top:"-1000px",left:"-1000px",height:0,width:0}).attr("id","wp-uploader-browser-"+this.uploader.id).appendTo("body")).append(this.browser))}this.uploader.refresh()}}),r.queue=new wp.media.model.Attachments([],{query:!1}),r.errors=new Backbone.Collection,e.Uploader=r)}(wp,jQuery); \ No newline at end of file +window.wp=window.wp||{},function(e,t){var r;"undefined"!=typeof _wpPluploadSettings&&(r=function(e){var i,a,o=this,d=-1!=navigator.userAgent.indexOf("Trident/")||-1!=navigator.userAgent.indexOf("MSIE "),n={container:"container",browser:"browse_button",dropzone:"drop_element"};if(this.supports={upload:r.browser.supported},this.supported=this.supports.upload,this.supported){for(i in this.plupload=t.extend(!0,{multipart_params:{}},r.defaults),this.container=document.body,t.extend(!0,this,e),this)t.isFunction(this[i])&&(this[i]=t.proxy(this[i],this));for(i in n)this[i]&&(this[i]=t(this[i]).first(),this[i].length?(this[i].prop("id")||this[i].prop("id","__wp-uploader-id-"+r.uuid++),this.plupload[n[i]]=this[i].prop("id")):delete this[i]);(this.browser&&this.browser.length||this.dropzone&&this.dropzone.length)&&(d||"flash"!==plupload.predictRuntime(this.plupload)||this.plupload.required_features&&this.plupload.required_features.hasOwnProperty("send_binary_string")||(this.plupload.required_features=this.plupload.required_features||{},this.plupload.required_features.send_binary_string=!0),this.uploader=new plupload.Uploader(this.plupload),delete this.plupload,this.param(this.params||{}),delete this.params,a=function(e,t,i){i.attachment&&i.attachment.destroy(),r.errors.unshift({message:e||pluploadL10n.default_error,data:t,file:i}),o.error(e,t,i)},this.uploader.bind("init",(function(e){var i,a,d,n=o.dropzone;if(d=o.supports.dragdrop=e.features.dragdrop&&!r.browser.mobile,n){if(n.toggleClass("supports-drag-drop",!!d),!d)return n.unbind(".wp-uploader");n.bind("dragover.wp-uploader",(function(){i&&clearTimeout(i),a||(n.trigger("dropzone:enter").addClass("drag-over"),a=!0)})),n.bind("dragleave.wp-uploader, drop.wp-uploader",(function(){i=setTimeout((function(){a=!1,n.trigger("dropzone:leave").removeClass("drag-over")}),0)})),o.ready=!0,t(o).trigger("uploader:ready")}})),this.uploader.bind("postinit",(function(e){e.refresh(),o.init()})),this.uploader.init(),this.browser?this.browser.on("mouseenter",this.refresh):(this.uploader.disableBrowse(!0),t("#"+this.uploader.id+"_html5_container").hide()),this.uploader.bind("FilesAdded",(function(e,t){_.each(t,(function(t){var i,a;plupload.FAILED!==t.status&&("image/heic"===t.type&&e.settings.heic_upload_error&&r.errors.unshift({message:pluploadL10n.unsupported_image,data:{},file:t}),i=_.extend({file:t,uploading:!0,date:new Date,filename:t.name,menuOrder:0,uploadedTo:wp.media.model.settings.post.id},_.pick(t,"loaded","size","percent")),(a=/(?:jpe?g|png|gif)$/i.exec(t.name))&&(i.type="image",i.subtype="jpg"===a[0]?"jpeg":a[0]),t.attachment=wp.media.model.Attachment.create(i),r.queue.add(t.attachment),o.added(t.attachment))})),e.refresh(),e.start()})),this.uploader.bind("UploadProgress",(function(e,t){t.attachment.set(_.pick(t,"loaded","percent")),o.progress(t.attachment)})),this.uploader.bind("FileUploaded",(function(e,t,i){try{i=JSON.parse(i.response)}catch(d){return a(pluploadL10n.default_error,d,t)}return!_.isObject(i)||_.isUndefined(i.success)?a(pluploadL10n.default_error,null,t):i.success?(_.each(["file","loaded","size","percent"],(function(e){t.attachment.unset(e)})),t.attachment.set(_.extend(i.data,{uploading:!1})),wp.media.model.Attachment.get(i.data.id,t.attachment),r.queue.all((function(e){return!e.get("uploading")}))&&r.queue.reset(),void o.success(t.attachment)):a(i.data&&i.data.message,i.data,t)})),this.uploader.bind("Error",(function(e,t){var i,o=pluploadL10n.default_error;for(i in r.errorMap)if(t.code===plupload[i]){o=r.errorMap[i],_.isFunction(o)&&(o=o(t.file,t));break}a(o,t,t.file),e.refresh()})))}},t.extend(r,_wpPluploadSettings),r.uuid=0,r.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,FILE_SIZE_ERROR:function(e){return pluploadL10n.file_exceeds_size_limit.replace("%s",e.name)}},t.extend(r.prototype,{param:function(e,r){if(1===arguments.length&&"string"==typeof e)return this.uploader.settings.multipart_params[e];arguments.length>1?this.uploader.settings.multipart_params[e]=r:t.extend(this.uploader.settings.multipart_params,e)},init:function(){},error:function(){},success:function(){},added:function(){},progress:function(){},complete:function(){},refresh:function(){var e,r,i,a;if(this.browser){for(e=this.browser[0];e;){if(e===document.body){r=!0;break}e=e.parentNode}r||(a="wp-uploader-browser-"+this.uploader.id,(i=t("#"+a)).length||(i=t('
        ').css({position:"fixed",top:"-1000px",left:"-1000px",height:0,width:0}).attr("id","wp-uploader-browser-"+this.uploader.id).appendTo("body")),i.append(this.browser))}this.uploader.refresh()}}),r.queue=new wp.media.model.Attachments([],{query:!1}),r.errors=new Backbone.Collection,e.Uploader=r)}(wp,jQuery); \ No newline at end of file diff --git a/wp-includes/js/quicktags.js b/wp-includes/js/quicktags.js index 76350bb..0205f4b 100644 --- a/wp-includes/js/quicktags.js +++ b/wp-includes/js/quicktags.js @@ -1,8 +1,8 @@ - +/* global adminpage, wpActiveEditor, quicktagsL10n, wpLink, prompt */ /* * Quicktags * - * This is the HTML editor in WordPress. It can be attached to any textarea and will + * This is the HTML editor in ClassicPress. It can be attached to any textarea and will * append a toolbar above it. This script is self-contained (does not require external libraries). * * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties: @@ -16,17 +16,14 @@ * * quicktags_id string The ID of the textarea that will be the editor canvas * buttons string Comma separated list of the default buttons names that will be shown in that instance. - * - * @output wp-includes/js/quicktags.js */ -// New edit toolbar used with permission +// new edit toolbar used with permission // by Alex King // http://www.alexking.org/ -/* global adminpage, wpActiveEditor, quicktagsL10n, wpLink, prompt, edButtons */ - -window.edButtons = []; +var QTags, edCanvas, + edButtons = []; /* jshint ignore:start */ @@ -35,30 +32,56 @@ window.edButtons = []; * * Define all former global functions so plugins that hack quicktags.js directly don't cause fatal errors. */ -window.edAddTag = function(){}; -window.edCheckOpenTags = function(){}; -window.edCloseAllTags = function(){}; -window.edInsertImage = function(){}; -window.edInsertLink = function(){}; -window.edInsertTag = function(){}; -window.edLink = function(){}; -window.edQuickLink = function(){}; -window.edRemoveTag = function(){}; -window.edShowButton = function(){}; -window.edShowLinks = function(){}; -window.edSpell = function(){}; -window.edToolbar = function(){}; +var 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(){}; + +/** + * Initialize new instance of the Quicktags editor + */ +function quicktags(settings) { + return new QTags(settings); +} + +/** + * Inserts content at the caret in the active editor (textarea) + * + * Added for back compatibility + * @see QTags.insertContent() + */ +function edInsertContent(bah, txt) { + return QTags.insertContent(txt); +} + +/** + * 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) { + return QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 ); +} /* jshint ignore:end */ (function(){ - // Private stuff is prefixed with an underscore. - // eslint-disable-next-line func-style + // private stuff is prefixed with an underscore var _domReady = function(func) { var t, i, DOMContentLoaded, _tryReady; if ( typeof jQuery !== 'undefined' ) { - jQuery( func ); + jQuery(document).ready(func); } else { t = _domReady; t.funcs = []; @@ -80,19 +103,11 @@ window.edToolbar = function(){}; if ( ! t.eventAttached ) { if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false); - t.ready(); - }; + DOMContentLoaded = function(){document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);t.ready();}; document.addEventListener('DOMContentLoaded', DOMContentLoaded, false); window.addEventListener('load', t.ready, false); } else if ( document.attachEvent ) { - DOMContentLoaded = function(){ - if (document.readyState === 'complete'){ - document.detachEvent('onreadystatechange', DOMContentLoaded); - t.ready(); - } - }; + DOMContentLoaded = function(){if (document.readyState === 'complete'){ document.detachEvent('onreadystatechange', DOMContentLoaded);t.ready();}}; document.attachEvent('onreadystatechange', DOMContentLoaded); window.attachEvent('onload', t.ready); @@ -134,9 +149,10 @@ window.edToolbar = function(){}; zeroise( now.getUTCMinutes() ) + ':' + zeroise( now.getUTCSeconds() ) + '+00:00'; - })(); + })(), + qt; - var qt = window.QTags = function(settings) { + qt = QTags = function(settings) { if ( typeof(settings) === 'string' ) { settings = {id: settings}; } else if ( typeof(settings) !== 'object' ) { @@ -159,8 +175,8 @@ window.edToolbar = function(){}; t.settings = settings; if ( id === 'content' && typeof(adminpage) === 'string' && ( adminpage === 'post-new-php' || adminpage === 'post-php' ) ) { - // Back compat hack :-( - window.edCanvas = canvas; + // back compat hack :-( + edCanvas = canvas; toolbar_id = 'ed_toolbar'; } else { toolbar_id = name + '_toolbar'; @@ -177,19 +193,19 @@ window.edToolbar = function(){}; canvas.parentNode.insertBefore(tb, canvas); t.toolbar = tb; - // Listen for click events. + // listen for click events onclick = function(e) { e = e || window.event; var target = e.target || e.srcElement, visible = target.clientWidth || target.offsetWidth, i; - // Don't call the callback on pressing the accesskey when the button is not visible. + // don't call the callback on pressing the accesskey when the button is not visible if ( !visible ) { return; } - // As long as it has the class ed_button, execute the callback. + // as long as it has the class ed_button, execute the callback if ( / ed_button /.test(' ' + target.className + ' ') ) { - // We have to reassign canvas here. + // we have to reassign canvas here t.canvas = canvas = document.getElementById(id); i = target.id.replace(name + '_', ''); @@ -270,7 +286,7 @@ window.edToolbar = function(){}; theButtons = {}; use = ''; - // Set buttons. + // set buttons if ( settings.buttons ) { use = ','+settings.buttons+','; } @@ -370,7 +386,7 @@ window.edToolbar = function(){}; return; } - if ( priority === -1 ) { // Back-compat. + if ( priority === -1 ) { // back-compat return btn; } @@ -385,7 +401,7 @@ window.edToolbar = function(){}; } if ( this.buttonsInitDone ) { - this._buttonsInit(); // Add the button HTML to all instances toolbars if addButton() was called too late. + this._buttonsInit(); // add the button HTML to all instances toolbars if addButton() was called too late } }; @@ -396,12 +412,12 @@ window.edToolbar = function(){}; return false; } - if ( document.selection ) { // IE. + if ( document.selection ) { //IE canvas.focus(); sel = document.selection.createRange(); sel.text = content; canvas.focus(); - } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera. + } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera text = canvas.value; startPos = canvas.selectionStart; endPos = canvas.selectionEnd; @@ -429,7 +445,7 @@ window.edToolbar = function(){}; return true; }; - // A plain, dumb button. + // a plain, dumb button qt.Button = function( id, display, access, title, instance, attr ) { this.id = id; this.display = display; @@ -459,7 +475,7 @@ window.edToolbar = function(){}; }; qt.Button.prototype.callback = function(){}; - // A button that inserts HTML tag. + // a button that inserts HTML tag qt.TagButton = function( id, display, tagStart, tagEnd, access, title, instance, attr ) { var t = this; qt.Button.call( t, id, display, access, title, instance, attr ); @@ -494,7 +510,7 @@ window.edToolbar = function(){}; element.setAttribute( 'aria-label', this.attr.ariaLabel ); } }; - // Whether a tag is open or not. Returns false if not open, or current open depth of the tag. + // whether a tag is open or not. Returns false if not open, or current open depth of the tag qt.TagButton.prototype.isOpen = function (ed) { var t = this, i = 0, ret = false; if ( ed.openTags ) { @@ -510,7 +526,7 @@ window.edToolbar = function(){}; qt.TagButton.prototype.callback = function(element, canvas, ed) { var t = this, startPos, endPos, cursorPos, scrollTop, v = canvas.value, l, r, i, sel, endTag = v ? t.tagEnd : '', event; - if ( document.selection ) { // IE. + if ( document.selection ) { // IE canvas.focus(); sel = document.selection.createRange(); if ( sel.text.length > 0 ) { @@ -531,7 +547,7 @@ window.edToolbar = function(){}; } } canvas.focus(); - } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera. + } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera startPos = canvas.selectionStart; endPos = canvas.selectionEnd; @@ -541,12 +557,12 @@ window.edToolbar = function(){}; cursorPos = endPos; scrollTop = canvas.scrollTop; - l = v.substring(0, startPos); // Left of the selection. - r = v.substring(endPos, v.length); // Right of the selection. - i = v.substring(startPos, endPos); // Inside the selection. + l = v.substring(0, startPos); // left of the selection + r = v.substring(endPos, v.length); // right of the selection + i = v.substring(startPos, endPos); // inside the selection if ( startPos !== endPos ) { if ( !t.tagEnd ) { - canvas.value = l + i + t.tagStart + r; // Insert self-closing tags after the selection. + canvas.value = l + i + t.tagStart + r; // insert self closing tags after the selection cursorPos += t.tagStart.length; } else { canvas.value = l + t.tagStart + i + endTag + r; @@ -571,7 +587,7 @@ window.edToolbar = function(){}; canvas.selectionEnd = cursorPos; canvas.scrollTop = scrollTop; canvas.focus(); - } else { // Other browsers? + } else { // other browsers? if ( !endTag ) { canvas.value += t.tagStart; } else if ( t.isOpen(ed) !== false ) { @@ -593,10 +609,10 @@ window.edToolbar = function(){}; } }; - // Removed. + // removed qt.SpellButton = function() {}; - // The close tags button. + // the close tags button qt.CloseButton = function() { qt.Button.call( this, 'close', quicktagsL10n.closeTags, '', quicktagsL10n.closeAllOpenTags ); }; @@ -630,7 +646,7 @@ window.edToolbar = function(){}; } }; - // The link button. + // the link button qt.LinkButton = function() { var attr = { ariaLabel: quicktagsL10n.link @@ -662,7 +678,7 @@ window.edToolbar = function(){}; } }; - // The img button. + // the img button qt.ImgButton = function() { var attr = { ariaLabel: quicktagsL10n.image @@ -713,14 +729,14 @@ window.edToolbar = function(){}; c.focus(); }; - // Ensure backward compatibility. + // ensure backward compatibility edButtons[10] = new qt.TagButton( 'strong', 'b', '', '', '', '', '', { ariaLabel: quicktagsL10n.strong, ariaLabelClose: quicktagsL10n.strongClose } ); edButtons[20] = new qt.TagButton( 'em', 'i', '', '', '', '', '', { ariaLabel: quicktagsL10n.em, ariaLabelClose: quicktagsL10n.emClose } ); - edButtons[30] = new qt.LinkButton(); // Special case. + edButtons[30] = new qt.LinkButton(); // special case edButtons[40] = new qt.TagButton( 'block', 'b-quote', '\n\n
        ', '
        \n\n', '', '', '', { ariaLabel: quicktagsL10n.blockquote, ariaLabelClose: quicktagsL10n.blockquoteClose } ); edButtons[50] = new qt.TagButton( 'del', 'del', '', '', '', '', '', { ariaLabel: quicktagsL10n.del, ariaLabelClose: quicktagsL10n.delClose } ); edButtons[60] = new qt.TagButton( 'ins', 'ins', '', '', '', '', '', { ariaLabel: quicktagsL10n.ins, ariaLabelClose: quicktagsL10n.insClose } ); - edButtons[70] = new qt.ImgButton(); // Special case. + edButtons[70] = new qt.ImgButton(); // special case edButtons[80] = new qt.TagButton( 'ul', 'ul', '
          \n', '
        \n\n', '', '', '', { ariaLabel: quicktagsL10n.ul, ariaLabelClose: quicktagsL10n.ulClose } ); edButtons[90] = new qt.TagButton( 'ol', 'ol', '
          \n', '
        \n\n', '', '', '', { ariaLabel: quicktagsL10n.ol, ariaLabelClose: quicktagsL10n.olClose } ); edButtons[100] = new qt.TagButton( 'li', 'li', '\t
      28. ', '
      29. \n', '', '', '', { ariaLabel: quicktagsL10n.li, ariaLabelClose: quicktagsL10n.liClose } ); @@ -729,30 +745,3 @@ window.edToolbar = function(){}; edButtons[140] = new qt.CloseButton(); })(); - -/** - * Initialize new instance of the Quicktags editor - */ -window.quicktags = function(settings) { - return new window.QTags(settings); -}; - -/** - * Inserts content at the caret in the active editor (textarea) - * - * Added for back compatibility - * @see QTags.insertContent() - */ -window.edInsertContent = function(bah, txt) { - return window.QTags.insertContent(txt); -}; - -/** - * 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() - */ -window.edButton = function(id, display, tagStart, tagEnd, access) { - return window.QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 ); -}; diff --git a/wp-includes/js/quicktags.min.js b/wp-includes/js/quicktags.min.js index 5a065ac..1dad8ad 100644 --- a/wp-includes/js/quicktags.min.js +++ b/wp-includes/js/quicktags.min.js @@ -1 +1 @@ -window.edButtons=[],window.edAddTag=function(){},window.edCheckOpenTags=function(){},window.edCloseAllTags=function(){},window.edInsertImage=function(){},window.edInsertLink=function(){},window.edInsertTag=function(){},window.edLink=function(){},window.edQuickLink=function(){},window.edRemoveTag=function(){},window.edShowButton=function(){},window.edShowLinks=function(){},window.edSpell=function(){},window.edToolbar=function(){},function(){var t,e,n=function(t){var e,o,a,i;"undefined"!=typeof jQuery?jQuery(t):((e=n).funcs=[],e.ready=function(){if(!e.isReady)for(e.isReady=!0,o=0;o/g,">").replace(/"/g,""").replace(/'/g,"'")}a.instances={},a.getInstance=function(t){return a.instances[t]},a._buttonsInit=function(t){var e=this;function n(t){var n,o,i,s,u,l,c,r;for(c in(u=e.instances[t]).canvas,n=u.name,s="",i={},r="",(o=u.settings).buttons&&(r=","+o.buttons+","),edButtons)edButtons[c]&&(l=edButtons[c].id,r&&-1!==",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,".indexOf(","+l+",")&&-1===r.indexOf(","+l+",")||edButtons[c].instance&&edButtons[c].instance!==t||(i[l]=edButtons[c],edButtons[c].html&&(s+=edButtons[c].html(n+"_"))));r&&-1!==r.indexOf(",dfw,")&&(i.dfw=new a.DFWButton,s+=i.dfw.html(n+"_")),"rtl"===document.getElementsByTagName("html")[0].dir&&(i.textdirection=new a.TextDirectionButton,s+=i.textdirection.html(n+"_")),u.toolbar.innerHTML=s,u.theButtons=i,"undefined"!=typeof jQuery&&jQuery(document).triggerHandler("quicktags-init",[u])}if(t)n(t);else for(t in e.instances)n(t);e.buttonsInitDone=!0},a.addButton=function(t,e,n,o,i,s,u,l,c){var r;if(t&&e){if(u=u||0,o=o||"",c=c||{},"function"==typeof n)(r=new a.Button(t,e,i,s,l,c)).callback=n;else{if("string"!=typeof n)return;r=new a.TagButton(t,e,n,o,i,s,l,c)}if(-1===u)return r;if(u>0){for(;"undefined"!=typeof edButtons[u];)u++;edButtons[u]=r}else edButtons[edButtons.length]=r;this.buttonsInitDone&&this._buttonsInit()}},a.insertContent=function(t){var e,n,o,a,i,s=document.getElementById(wpActiveEditor);return!!s&&(document.selection?(s.focus(),document.selection.createRange().text=t,s.focus()):s.selectionStart||0===s.selectionStart?(a=s.value,e=s.selectionStart,n=s.selectionEnd,o=s.scrollTop,s.value=a.substring(0,e)+t+a.substring(n,a.length),s.selectionStart=e+t.length,s.selectionEnd=e+t.length,s.scrollTop=o,s.focus()):(s.value+=t,s.focus()),document.createEvent?((i=document.createEvent("HTMLEvents")).initEvent("change",!1,!0),s.dispatchEvent(i)):s.fireEvent&&s.fireEvent("onchange"),!0)},a.Button=function(t,e,n,o,a,i){this.id=t,this.display=e,this.access="",this.title=o||"",this.instance=a||"",this.attr=i||{}},a.Button.prototype.html=function(t){var e,n,o=this.title?' title="'+i(this.title)+'"':"",a=this.attr&&this.attr.ariaLabel?' aria-label="'+i(this.attr.ariaLabel)+'"':"",s=this.display?' value="'+i(this.display)+'"':"",u=this.id?' id="'+i(t+this.id)+'"':"",l=(n=window.wp)&&n.editor&&n.editor.dfw;return"fullscreen"===this.id?'":"dfw"===this.id?(e=l&&l.isActive()?"":' disabled="disabled"','"):'"},a.Button.prototype.callback=function(){},a.TagButton=function(t,e,n,o,i,s,u,l){var c=this;a.Button.call(c,t,e,i,s,u,l),c.tagStart=n,c.tagEnd=o},a.TagButton.prototype=new a.Button,a.TagButton.prototype.openTag=function(t,e){e.openTags||(e.openTags=[]),this.tagEnd&&(e.openTags.push(this.id),t.value="/"+t.value,this.attr.ariaLabelClose&&t.setAttribute("aria-label",this.attr.ariaLabelClose))},a.TagButton.prototype.closeTag=function(t,e){var n=this.isOpen(e);!1!==n&&e.openTags.splice(n,1),t.value=this.display,this.attr.ariaLabel&&t.setAttribute("aria-label",this.attr.ariaLabel)},a.TagButton.prototype.isOpen=function(t){var e=0,n=!1;if(t.openTags)for(;!1===n&&e0?g.tagEnd?r.text=g.tagStart+r.text+p:r.text=r.text+g.tagStart:g.tagEnd?!1===g.isOpen(n)?(r.text=g.tagStart,g.openTag(t,n)):(r.text=p,g.closeTag(t,n)):r.text=g.tagStart,e.focus()):e.selectionStart||0===e.selectionStart?((o=e.selectionStart)<(a=e.selectionEnd)&&"\n"===f.charAt(a-1)&&(a-=1),i=a,s=e.scrollTop,u=f.substring(0,o),l=f.substring(a,f.length),c=f.substring(o,a),o!==a?g.tagEnd?(e.value=u+g.tagStart+c+p+l,i+=g.tagStart.length+p.length):(e.value=u+c+g.tagStart+l,i+=g.tagStart.length):g.tagEnd?!1===g.isOpen(n)?(e.value=u+g.tagStart+l,g.openTag(t,n),i=o+g.tagStart.length):(e.value=u+p+l,i=o+p.length,g.closeTag(t,n)):(e.value=u+g.tagStart+l,i=o+g.tagStart.length),e.selectionStart=i,e.selectionEnd=i,e.scrollTop=s,e.focus()):(p?!1!==g.isOpen(n)?(e.value+=g.tagStart,g.openTag(t,n)):(e.value+=p,g.closeTag(t,n)):e.value+=g.tagStart,e.focus()),document.createEvent?((d=document.createEvent("HTMLEvents")).initEvent("change",!1,!0),e.dispatchEvent(d)):e.fireEvent&&e.fireEvent("onchange")},a.SpellButton=function(){},a.CloseButton=function(){a.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)},a.CloseButton.prototype=new a.Button,a._close=function(t,e,n){var o,a,i=n.openTags;if(i)for(;i.length>0;)o=n.getButton(i[i.length-1]),a=document.getElementById(n.name+"_"+o.id),t?o.callback.call(o,a,e,n):o.closeTag(a,n)},a.CloseButton.prototype.callback=a._close,a.closeAllTags=function(t){var e=this.getInstance(t);e&&a._close("",e.canvas,e)},a.LinkButton=function(){var t={ariaLabel:quicktagsL10n.link};a.TagButton.call(this,"link","link","","","","","",t)},a.LinkButton.prototype=new a.TagButton,a.LinkButton.prototype.callback=function(t,e,n,o){var i,s=this;"undefined"==typeof wpLink?(o||(o="http://"),!1===s.isOpen(n)?(i=prompt(quicktagsL10n.enterURL,o))&&(s.tagStart='',a.TagButton.prototype.callback.call(s,t,e,n)):a.TagButton.prototype.callback.call(s,t,e,n)):wpLink.open(n.id)},a.ImgButton=function(){var t={ariaLabel:quicktagsL10n.image};a.TagButton.call(this,"img","img","","","","","",t)},a.ImgButton.prototype=new a.TagButton,a.ImgButton.prototype.callback=function(t,e,n,o){o||(o="http://");var i,s=prompt(quicktagsL10n.enterImageURL,o);s&&(i=prompt(quicktagsL10n.enterImageDescription,""),this.tagStart=''+i+'',a.TagButton.prototype.callback.call(this,t,e,n))},a.DFWButton=function(){a.Button.call(this,"dfw","","f",quicktagsL10n.dfw)},a.DFWButton.prototype=new a.Button,a.DFWButton.prototype.callback=function(){var t;(t=window.wp)&&t.editor&&t.editor.dfw&&window.wp.editor.dfw.toggle()},a.TextDirectionButton=function(){a.Button.call(this,"textdirection",quicktagsL10n.textdirection,"",quicktagsL10n.toggleTextdirection)},a.TextDirectionButton.prototype=new a.Button,a.TextDirectionButton.prototype.callback=function(t,e){var n="rtl"===document.getElementsByTagName("html")[0].dir,o=e.style.direction;o||(o=n?"rtl":"ltr"),e.style.direction="rtl"===o?"ltr":"rtl",e.focus()},edButtons[10]=new a.TagButton("strong","b","","","","","",{ariaLabel:quicktagsL10n.strong,ariaLabelClose:quicktagsL10n.strongClose}),edButtons[20]=new a.TagButton("em","i","","","","","",{ariaLabel:quicktagsL10n.em,ariaLabelClose:quicktagsL10n.emClose}),edButtons[30]=new a.LinkButton,edButtons[40]=new a.TagButton("block","b-quote","\n\n
        ","
        \n\n","","","",{ariaLabel:quicktagsL10n.blockquote,ariaLabelClose:quicktagsL10n.blockquoteClose}),edButtons[50]=new a.TagButton("del","del",'',"","","","",{ariaLabel:quicktagsL10n.del,ariaLabelClose:quicktagsL10n.delClose}),edButtons[60]=new a.TagButton("ins","ins",'',"","","","",{ariaLabel:quicktagsL10n.ins,ariaLabelClose:quicktagsL10n.insClose}),edButtons[70]=new a.ImgButton,edButtons[80]=new a.TagButton("ul","ul","
          \n","
        \n\n","","","",{ariaLabel:quicktagsL10n.ul,ariaLabelClose:quicktagsL10n.ulClose}),edButtons[90]=new a.TagButton("ol","ol","
          \n","
        \n\n","","","",{ariaLabel:quicktagsL10n.ol,ariaLabelClose:quicktagsL10n.olClose}),edButtons[100]=new a.TagButton("li","li","\t
      30. ","
      31. \n","","","",{ariaLabel:quicktagsL10n.li,ariaLabelClose:quicktagsL10n.liClose}),edButtons[110]=new a.TagButton("code","code","","","","","",{ariaLabel:quicktagsL10n.code,ariaLabelClose:quicktagsL10n.codeClose}),edButtons[120]=new a.TagButton("more","more","\x3c!--more--\x3e\n\n","","","","",{ariaLabel:quicktagsL10n.more}),edButtons[140]=new a.CloseButton}(),window.quicktags=function(t){return new window.QTags(t)},window.edInsertContent=function(t,e){return window.QTags.insertContent(e)},window.edButton=function(t,e,n,o,a){return window.QTags.addButton(t,e,n,o,a,"",-1)}; \ No newline at end of file +var QTags,edCanvas,edButtons=[],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(t){return new QTags(t)}function edInsertContent(t,e){return QTags.insertContent(e)}function edButton(t,e,n,o,a){return QTags.addButton(t,e,n,o,a,"",-1)}!function(){var t,e,n,o=function(t){var e,n,a,i;"undefined"!=typeof jQuery?jQuery(document).ready(t):((e=o).funcs=[],e.ready=function(){if(!e.isReady)for(e.isReady=!0,n=0;n/g,">").replace(/"/g,""").replace(/'/g,"'")}(t=QTags=function(e){if("string"==typeof e)e={id:e};else if("object"!=typeof e)return!1;var n,a,i,s,u,l=this,c=e.id,r=document.getElementById(c),d="qt_"+c;if(!c||!r)return!1;l.name=d,l.id=c,l.canvas=r,l.settings=e,"content"!==c||"string"!=typeof adminpage||"post-new-php"!==adminpage&&"post-php"!==adminpage?i=d+"_toolbar":(edCanvas=r,i="ed_toolbar"),(n=document.getElementById(i))||((n=document.createElement("div")).id=i,n.className="quicktags-toolbar"),r.parentNode.insertBefore(n,r),l.toolbar=n,a=function(t){var e,n=(t=t||window.event).target||t.srcElement;(n.clientWidth||n.offsetWidth)&&/ ed_button /.test(" "+n.className+" ")&&(l.canvas=r=document.getElementById(c),e=n.id.replace(d+"_",""),l.theButtons[e]&&l.theButtons[e].callback.call(l.theButtons[e],n,r,l))},u=function(){window.wpActiveEditor=c},s=document.getElementById("wp-"+c+"-wrap"),n.addEventListener?(n.addEventListener("click",a,!1),s&&s.addEventListener("click",u,!1)):n.attachEvent&&(n.attachEvent("onclick",a),s&&s.attachEvent("onclick",u)),l.getButton=function(t){return l.theButtons[t]},l.getButtonElement=function(t){return document.getElementById(d+"_"+t)},l.init=function(){o((function(){t._buttonsInit(c)}))},l.remove=function(){delete t.instances[c],n&&n.parentNode&&n.parentNode.removeChild(n)},t.instances[c]=l,l.init()}).instances={},t.getInstance=function(e){return t.instances[e]},t._buttonsInit=function(e){var n=this;function o(e){var o,a,i,s,u,l,c,r;for(c in(u=n.instances[e]).canvas,o=u.name,s="",i={},r="",(a=u.settings).buttons&&(r=","+a.buttons+","),edButtons)edButtons[c]&&(l=edButtons[c].id,r&&-1!==",strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,".indexOf(","+l+",")&&-1===r.indexOf(","+l+",")||edButtons[c].instance&&edButtons[c].instance!==e||(i[l]=edButtons[c],edButtons[c].html&&(s+=edButtons[c].html(o+"_"))));r&&-1!==r.indexOf(",dfw,")&&(i.dfw=new t.DFWButton,s+=i.dfw.html(o+"_")),"rtl"===document.getElementsByTagName("html")[0].dir&&(i.textdirection=new t.TextDirectionButton,s+=i.textdirection.html(o+"_")),u.toolbar.innerHTML=s,u.theButtons=i,"undefined"!=typeof jQuery&&jQuery(document).triggerHandler("quicktags-init",[u])}if(e)o(e);else for(e in n.instances)o(e);n.buttonsInitDone=!0},t.addButton=function(e,n,o,a,i,s,u,l,c){var r;if(e&&n){if(u=u||0,a=a||"",c=c||{},"function"==typeof o)(r=new t.Button(e,n,i,s,l,c)).callback=o;else{if("string"!=typeof o)return;r=new t.TagButton(e,n,o,a,i,s,l,c)}if(-1===u)return r;if(u>0){for(;"undefined"!=typeof edButtons[u];)u++;edButtons[u]=r}else edButtons[edButtons.length]=r;this.buttonsInitDone&&this._buttonsInit()}},t.insertContent=function(t){var e,n,o,a,i,s=document.getElementById(wpActiveEditor);return!!s&&(document.selection?(s.focus(),document.selection.createRange().text=t,s.focus()):s.selectionStart||0===s.selectionStart?(a=s.value,e=s.selectionStart,n=s.selectionEnd,o=s.scrollTop,s.value=a.substring(0,e)+t+a.substring(n,a.length),s.selectionStart=e+t.length,s.selectionEnd=e+t.length,s.scrollTop=o,s.focus()):(s.value+=t,s.focus()),document.createEvent?((i=document.createEvent("HTMLEvents")).initEvent("change",!1,!0),s.dispatchEvent(i)):s.fireEvent&&s.fireEvent("onchange"),!0)},t.Button=function(t,e,n,o,a,i){this.id=t,this.display=e,this.access="",this.title=o||"",this.instance=a||"",this.attr=i||{}},t.Button.prototype.html=function(t){var e,n,o=this.title?' title="'+i(this.title)+'"':"",a=this.attr&&this.attr.ariaLabel?' aria-label="'+i(this.attr.ariaLabel)+'"':"",s=this.display?' value="'+i(this.display)+'"':"",u=this.id?' id="'+i(t+this.id)+'"':"",l=(n=window.wp)&&n.editor&&n.editor.dfw;return"fullscreen"===this.id?'":"dfw"===this.id?(e=l&&l.isActive()?"":' disabled="disabled"','"):'"},t.Button.prototype.callback=function(){},t.TagButton=function(e,n,o,a,i,s,u,l){var c=this;t.Button.call(c,e,n,i,s,u,l),c.tagStart=o,c.tagEnd=a},t.TagButton.prototype=new t.Button,t.TagButton.prototype.openTag=function(t,e){e.openTags||(e.openTags=[]),this.tagEnd&&(e.openTags.push(this.id),t.value="/"+t.value,this.attr.ariaLabelClose&&t.setAttribute("aria-label",this.attr.ariaLabelClose))},t.TagButton.prototype.closeTag=function(t,e){var n=this.isOpen(e);!1!==n&&e.openTags.splice(n,1),t.value=this.display,this.attr.ariaLabel&&t.setAttribute("aria-label",this.attr.ariaLabel)},t.TagButton.prototype.isOpen=function(t){var e=0,n=!1;if(t.openTags)for(;!1===n&&e0?g.tagEnd?r.text=g.tagStart+r.text+p:r.text=r.text+g.tagStart:g.tagEnd?!1===g.isOpen(n)?(r.text=g.tagStart,g.openTag(t,n)):(r.text=p,g.closeTag(t,n)):r.text=g.tagStart,e.focus()):e.selectionStart||0===e.selectionStart?((o=e.selectionStart)<(a=e.selectionEnd)&&"\n"===f.charAt(a-1)&&(a-=1),i=a,s=e.scrollTop,u=f.substring(0,o),l=f.substring(a,f.length),c=f.substring(o,a),o!==a?g.tagEnd?(e.value=u+g.tagStart+c+p+l,i+=g.tagStart.length+p.length):(e.value=u+c+g.tagStart+l,i+=g.tagStart.length):g.tagEnd?!1===g.isOpen(n)?(e.value=u+g.tagStart+l,g.openTag(t,n),i=o+g.tagStart.length):(e.value=u+p+l,i=o+p.length,g.closeTag(t,n)):(e.value=u+g.tagStart+l,i=o+g.tagStart.length),e.selectionStart=i,e.selectionEnd=i,e.scrollTop=s,e.focus()):(p?!1!==g.isOpen(n)?(e.value+=g.tagStart,g.openTag(t,n)):(e.value+=p,g.closeTag(t,n)):e.value+=g.tagStart,e.focus()),document.createEvent?((d=document.createEvent("HTMLEvents")).initEvent("change",!1,!0),e.dispatchEvent(d)):e.fireEvent&&e.fireEvent("onchange")},t.SpellButton=function(){},t.CloseButton=function(){t.Button.call(this,"close",quicktagsL10n.closeTags,"",quicktagsL10n.closeAllOpenTags)},t.CloseButton.prototype=new t.Button,t._close=function(t,e,n){var o,a,i=n.openTags;if(i)for(;i.length>0;)o=n.getButton(i[i.length-1]),a=document.getElementById(n.name+"_"+o.id),t?o.callback.call(o,a,e,n):o.closeTag(a,n)},t.CloseButton.prototype.callback=t._close,t.closeAllTags=function(e){var n=this.getInstance(e);n&&t._close("",n.canvas,n)},t.LinkButton=function(){var e={ariaLabel:quicktagsL10n.link};t.TagButton.call(this,"link","link","","
        ","","","",e)},t.LinkButton.prototype=new t.TagButton,t.LinkButton.prototype.callback=function(e,n,o,a){var i,s=this;"undefined"==typeof wpLink?(a||(a="http://"),!1===s.isOpen(o)?(i=prompt(quicktagsL10n.enterURL,a))&&(s.tagStart='',t.TagButton.prototype.callback.call(s,e,n,o)):t.TagButton.prototype.callback.call(s,e,n,o)):wpLink.open(o.id)},t.ImgButton=function(){var e={ariaLabel:quicktagsL10n.image};t.TagButton.call(this,"img","img","","","","","",e)},t.ImgButton.prototype=new t.TagButton,t.ImgButton.prototype.callback=function(e,n,o,a){a||(a="http://");var i,s=prompt(quicktagsL10n.enterImageURL,a);s&&(i=prompt(quicktagsL10n.enterImageDescription,""),this.tagStart=''+i+'',t.TagButton.prototype.callback.call(this,e,n,o))},t.DFWButton=function(){t.Button.call(this,"dfw","","f",quicktagsL10n.dfw)},t.DFWButton.prototype=new t.Button,t.DFWButton.prototype.callback=function(){var t;(t=window.wp)&&t.editor&&t.editor.dfw&&window.wp.editor.dfw.toggle()},t.TextDirectionButton=function(){t.Button.call(this,"textdirection",quicktagsL10n.textdirection,"",quicktagsL10n.toggleTextdirection)},t.TextDirectionButton.prototype=new t.Button,t.TextDirectionButton.prototype.callback=function(t,e){var n="rtl"===document.getElementsByTagName("html")[0].dir,o=e.style.direction;o||(o=n?"rtl":"ltr"),e.style.direction="rtl"===o?"ltr":"rtl",e.focus()},edButtons[10]=new t.TagButton("strong","b","","","","","",{ariaLabel:quicktagsL10n.strong,ariaLabelClose:quicktagsL10n.strongClose}),edButtons[20]=new t.TagButton("em","i","","","","","",{ariaLabel:quicktagsL10n.em,ariaLabelClose:quicktagsL10n.emClose}),edButtons[30]=new t.LinkButton,edButtons[40]=new t.TagButton("block","b-quote","\n\n
        ","
        \n\n","","","",{ariaLabel:quicktagsL10n.blockquote,ariaLabelClose:quicktagsL10n.blockquoteClose}),edButtons[50]=new t.TagButton("del","del",'',"","","","",{ariaLabel:quicktagsL10n.del,ariaLabelClose:quicktagsL10n.delClose}),edButtons[60]=new t.TagButton("ins","ins",'',"","","","",{ariaLabel:quicktagsL10n.ins,ariaLabelClose:quicktagsL10n.insClose}),edButtons[70]=new t.ImgButton,edButtons[80]=new t.TagButton("ul","ul","
          \n","
        \n\n","","","",{ariaLabel:quicktagsL10n.ul,ariaLabelClose:quicktagsL10n.ulClose}),edButtons[90]=new t.TagButton("ol","ol","
          \n","
        \n\n","","","",{ariaLabel:quicktagsL10n.ol,ariaLabelClose:quicktagsL10n.olClose}),edButtons[100]=new t.TagButton("li","li","\t
      32. ","
      33. \n","","","",{ariaLabel:quicktagsL10n.li,ariaLabelClose:quicktagsL10n.liClose}),edButtons[110]=new t.TagButton("code","code","","","","","",{ariaLabel:quicktagsL10n.code,ariaLabelClose:quicktagsL10n.codeClose}),edButtons[120]=new t.TagButton("more","more","\x3c!--more--\x3e\n\n","","","","",{ariaLabel:quicktagsL10n.more}),edButtons[140]=new t.CloseButton}(); \ No newline at end of file diff --git a/wp-includes/js/shortcode.js b/wp-includes/js/shortcode.js index 1818d20..3988132 100644 --- a/wp-includes/js/shortcode.js +++ b/wp-includes/js/shortcode.js @@ -1,8 +1,4 @@ -/** - * Utility functions for parsing and handling shortcodes in JavaScript. - * - * @output wp-includes/js/shortcode.js - */ +// Utility functions for parsing and handling shortcodes in JavaScript. /** * Ensure the global `wp` object exists. @@ -13,15 +9,13 @@ window.wp = window.wp || {}; (function(){ wp.shortcode = { - /* - * ### Find the next matching shortcode. - * - * Given a shortcode `tag`, a block of `text`, and an optional starting - * `index`, returns the next matching shortcode or `undefined`. - * - * Shortcodes are formatted as an object that contains the match - * `content`, the matching `index`, and the parsed `shortcode` object. - */ + // ### Find the next matching shortcode + // + // Given a shortcode `tag`, a block of `text`, and an optional starting + // `index`, returns the next matching shortcode or `undefined`. + // + // Shortcodes are formatted as an object that contains the match + // `content`, the matching `index`, and the parsed `shortcode` object. next: function( tag, text, index ) { var re = wp.shortcode.regexp( tag ), match, result; @@ -59,17 +53,15 @@ window.wp = window.wp || {}; return result; }, - /* - * ### Replace matching shortcodes in a block of text. - * - * Accepts a shortcode `tag`, content `text` to scan, and a `callback` - * to process the shortcode matches and return a replacement string. - * Returns the `text` with all shortcodes replaced. - * - * Shortcode matches are objects that contain the shortcode `tag`, - * a shortcode `attrs` object, the `content` between shortcode tags, - * and a boolean flag to indicate if the match was a `single` tag. - */ + // ### Replace matching shortcodes in a block of text + // + // Accepts a shortcode `tag`, content `text` to scan, and a `callback` + // to process the shortcode matches and return a replacement string. + // Returns the `text` with all shortcodes replaced. + // + // Shortcode matches are objects that contain the shortcode `tag`, + // a shortcode `attrs` object, the `content` between shortcode tags, + // and a boolean flag to indicate if the match was a `single` tag. replace: function( tag, text, callback ) { return text.replace( wp.shortcode.regexp( tag ), function( match, left, tag, attrs, slash, content, closing, right ) { // If both extra brackets exist, the shortcode has been @@ -87,75 +79,67 @@ window.wp = window.wp || {}; }); }, - /* - * ### Generate a string from shortcode parameters. - * - * Creates a `wp.shortcode` instance and returns a string. - * - * Accepts the same `options` as the `wp.shortcode()` constructor, - * containing a `tag` string, a string or object of `attrs`, a boolean - * indicating whether to format the shortcode using a `single` tag, and a - * `content` string. - */ + // ### Generate a string from shortcode parameters + // + // Creates a `wp.shortcode` instance and returns a string. + // + // Accepts the same `options` as the `wp.shortcode()` constructor, + // containing a `tag` string, a string or object of `attrs`, a boolean + // indicating whether to format the shortcode using a `single` tag, and a + // `content` string. string: function( options ) { return new wp.shortcode( options ).string(); }, - /* - * ### Generate a RegExp to identify a shortcode. - * - * The base regex is functionally equivalent to the one found in - * `get_shortcode_regex()` in `wp-includes/shortcodes.php`. - * - * Capture groups: - * - * 1. An extra `[` to allow for escaping shortcodes with double `[[]]`. - * 2. The shortcode name. - * 3. The shortcode argument list. - * 4. The self closing `/`. - * 5. The content of a shortcode when it wraps some content. - * 6. The closing tag. - * 7. An extra `]` to allow for escaping shortcodes with double `[[]]`. - */ + // ### Generate a RegExp to identify a shortcode + // + // The base regex is functionally equivalent to the one found in + // `get_shortcode_regex()` in `wp-includes/shortcodes.php`. + // + // Capture groups: + // + // 1. An extra `[` to allow for escaping shortcodes with double `[[]]` + // 2. The shortcode name + // 3. The shortcode argument list + // 4. The self closing `/` + // 5. The content of a shortcode when it wraps some content. + // 6. The closing tag. + // 7. An extra `]` to allow for escaping shortcodes with double `[[]]` regexp: _.memoize( function( tag ) { return new RegExp( '\\[(\\[?)(' + tag + ')(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)', 'g' ); }), - /* - * ### Parse shortcode attributes. - * - * Shortcodes accept many types of attributes. These can chiefly be - * divided into named and numeric attributes: - * - * Named attributes are assigned on a key/value basis, while numeric - * attributes are treated as an array. - * - * Named attributes can be formatted as either `name="value"`, - * `name='value'`, or `name=value`. Numeric attributes can be formatted - * as `"value"` or just `value`. - */ + // ### Parse shortcode attributes + // + // Shortcodes accept many types of attributes. These can chiefly be + // divided into named and numeric attributes: + // + // Named attributes are assigned on a key/value basis, while numeric + // attributes are treated as an array. + // + // Named attributes can be formatted as either `name="value"`, + // `name='value'`, or `name=value`. Numeric attributes can be formatted + // as `"value"` or just `value`. attrs: _.memoize( function( text ) { var named = {}, numeric = [], pattern, match; - /* - * This regular expression is reused from `shortcode_parse_atts()` - * in `wp-includes/shortcodes.php`. - * - * Capture groups: - * - * 1. An attribute name, that corresponds to... - * 2. a value in double quotes. - * 3. An attribute name, that corresponds to... - * 4. a value in single quotes. - * 5. An attribute name, that corresponds to... - * 6. an unquoted value. - * 7. A numeric attribute in double quotes. - * 8. A numeric attribute in single quotes. - * 9. An unquoted numeric attribute. - */ + // This regular expression is reused from `shortcode_parse_atts()` + // in `wp-includes/shortcodes.php`. + // + // Capture groups: + // + // 1. An attribute name, that corresponds to... + // 2. a value in double quotes. + // 3. An attribute name, that corresponds to... + // 4. a value in single quotes. + // 5. An attribute name, that corresponds to... + // 6. an unquoted value. + // 7. A numeric attribute in double quotes. + // 8. A numeric attribute in single quotes. + // 9. An unquoted numeric attribute. pattern = /([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|'([^']*)'(?:\s|$)|(\S+)(?:\s|$)/g; // Map zero-width spaces to actual spaces. @@ -184,13 +168,10 @@ window.wp = window.wp || {}; }; }), - /* - * ### Generate a Shortcode Object from a RegExp match. - * - * Accepts a `match` object from calling `regexp.exec()` on a `RegExp` - * generated by `wp.shortcode.regexp()`. `match` can also be set - * to the `arguments` from a callback passed to `regexp.replace()`. - */ + // ### Generate a Shortcode Object from a RegExp match + // Accepts a `match` object from calling `regexp.exec()` on a `RegExp` + // generated by `wp.shortcode.regexp()`. `match` can also be set to the + // `arguments` from a callback passed to `regexp.replace()`. fromMatch: function( match ) { var type; @@ -212,18 +193,16 @@ window.wp = window.wp || {}; }; - /* - * Shortcode Objects - * ----------------- - * - * Shortcode objects are generated automatically when using the main - * `wp.shortcode` methods: `next()`, `replace()`, and `string()`. - * - * To access a raw representation of a shortcode, pass an `options` object, - * containing a `tag` string, a string or object of `attrs`, a string - * indicating the `type` of the shortcode ('single', 'self-closing', - * or 'closed'), and a `content` string. - */ + // Shortcode Objects + // ----------------- + // + // Shortcode objects are generated automatically when using the main + // `wp.shortcode` methods: `next()`, `replace()`, and `string()`. + // + // To access a raw representation of a shortcode, pass an `options` object, + // containing a `tag` string, a string or object of `attrs`, a string + // indicating the `type` of the shortcode ('single', 'self-closing', or + // 'closed'), and a `content` string. wp.shortcode = _.extend( function( options ) { _.extend( this, _.pick( options || {}, 'tag', 'attrs', 'type', 'content' ) ); @@ -244,8 +223,8 @@ window.wp = window.wp || {}; this.attrs = wp.shortcode.attrs( attrs ); // Identify a correctly formatted `attrs` object. - } else if ( _.difference( _.keys( attrs ), [ 'named', 'numeric' ] ).length === 0 ) { - this.attrs = _.defaults( attrs, this.attrs ); + } else if ( _.isEqual( _.keys( attrs ), [ 'named', 'numeric' ] ) ) { + this.attrs = attrs; // Handle a flat object of attributes. } else { @@ -256,28 +235,24 @@ window.wp = window.wp || {}; }, wp.shortcode ); _.extend( wp.shortcode.prototype, { - /* - * ### Get a shortcode attribute. - * - * Automatically detects whether `attr` is named or numeric and routes - * it accordingly. - */ + // ### Get a shortcode attribute + // + // Automatically detects whether `attr` is named or numeric and routes + // it accordingly. get: function( attr ) { return this.attrs[ _.isNumber( attr ) ? 'numeric' : 'named' ][ attr ]; }, - /* - * ### Set a shortcode attribute. - * - * Automatically detects whether `attr` is named or numeric and routes - * it accordingly. - */ + // ### Set a shortcode attribute + // + // Automatically detects whether `attr` is named or numeric and routes + // it accordingly. set: function( attr, value ) { this.attrs[ _.isNumber( attr ) ? 'numeric' : 'named' ][ attr ] = value; return this; }, - // ### Transform the shortcode match into a string. + // ### Transform the shortcode match into a string string: function() { var text = '[' + this.tag; @@ -314,24 +289,20 @@ window.wp = window.wp || {}; }); }()); -/* - * HTML utility functions - * ---------------------- - * - * Experimental. These functions may change or be removed in the future. - */ +// HTML utility functions +// ---------------------- +// +// Experimental. These functions may change or be removed in the future. (function(){ wp.html = _.extend( wp.html || {}, { - /* - * ### Parse HTML attributes. - * - * Converts `content` to a set of parsed HTML attributes. - * Utilizes `wp.shortcode.attrs( content )`, which is a valid superset of - * the HTML attribute specification. Reformats the attributes into an - * object that contains the `attrs` with `key:value` mapping, and a record - * of the attributes that were entered using `empty` attribute syntax (i.e. - * with no value). - */ + // ### Parse HTML attributes. + // + // Converts `content` to a set of parsed HTML attributes. + // Utilizes `wp.shortcode.attrs( content )`, which is a valid superset of + // the HTML attribute specification. Reformats the attributes into an + // object that contains the `attrs` with `key:value` mapping, and a record + // of the attributes that were entered using `empty` attribute syntax (i.e. + // with no value). attrs: function( content ) { var result, attrs; diff --git a/wp-includes/js/shortcode.min.js b/wp-includes/js/shortcode.min.js index 329fad5..6952b5b 100644 --- a/wp-includes/js/shortcode.min.js +++ b/wp-includes/js/shortcode.min.js @@ -1 +1 @@ -window.wp=window.wp||{},wp.shortcode={next:function(t,e,n){var s,r,o=wp.shortcode.regexp(t);if(o.lastIndex=n||0,s=o.exec(e))return"["===s[1]&&"]"===s[7]?wp.shortcode.next(t,e,o.lastIndex):(r={index:s.index,content:s[0],shortcode:wp.shortcode.fromMatch(s)},s[1]&&(r.content=r.content.slice(1),r.index++),s[7]&&(r.content=r.content.slice(0,-1)),r)},replace:function(t,e,n){return e.replace(wp.shortcode.regexp(t),(function(t,e,s,r,o,i,c,a){if("["===e&&"]"===a)return t;var h=n(wp.shortcode.fromMatch(arguments));return h?e+h+a:t}))},string:function(t){return new wp.shortcode(t).string()},regexp:_.memoize((function(t){return new RegExp("\\[(\\[?)("+t+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")})),attrs:_.memoize((function(t){var e,n,s={},r=[];for(e=/([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|'([^']*)'(?:\s|$)|(\S+)(?:\s|$)/g,t=t.replace(/[\u00a0\u200b]/g," ");n=e.exec(t);)n[1]?s[n[1].toLowerCase()]=n[2]:n[3]?s[n[3].toLowerCase()]=n[4]:n[5]?s[n[5].toLowerCase()]=n[6]:n[7]?r.push(n[7]):n[8]?r.push(n[8]):n[9]&&r.push(n[9]);return{named:s,numeric:r}})),fromMatch:function(t){var e;return e=t[4]?"self-closing":t[6]?"closed":"single",new wp.shortcode({tag:t[2],attrs:t[3],type:e,content:t[5]})}},wp.shortcode=_.extend((function(t){_.extend(this,_.pick(t||{},"tag","attrs","type","content"));var e=this.attrs;this.attrs={named:{},numeric:[]},e&&(_.isString(e)?this.attrs=wp.shortcode.attrs(e):0===_.difference(_.keys(e),["named","numeric"]).length?this.attrs=_.defaults(e,this.attrs):_.each(t.attrs,(function(t,e){this.set(e,t)}),this))}),wp.shortcode),_.extend(wp.shortcode.prototype,{get:function(t){return this.attrs[_.isNumber(t)?"numeric":"named"][t]},set:function(t,e){return this.attrs[_.isNumber(t)?"numeric":"named"][t]=e,this},string:function(){var t="["+this.tag;return _.each(this.attrs.numeric,(function(e){/\s/.test(e)?t+=' "'+e+'"':t+=" "+e})),_.each(this.attrs.named,(function(e,n){t+=" "+n+'="'+e+'"'})),"single"===this.type?t+"]":"self-closing"===this.type?t+" /]":(t+="]",this.content&&(t+=this.content),t+"[/"+this.tag+"]")}}),wp.html=_.extend(wp.html||{},{attrs:function(t){var e,n;return"/"===t[t.length-1]&&(t=t.slice(0,-1)),e=wp.shortcode.attrs(t),n=e.named,_.each(e.numeric,(function(t){/\s/.test(t)||(n[t]="")})),n},string:function(t){var e="<"+t.tag,n=t.content||"";return _.each(t.attrs,(function(t,n){e+=" "+n,_.isBoolean(t)&&(t=t?"true":"false"),e+='="'+t+'"'})),t.single?e+" />":(e+=">",(e+=_.isObject(n)?wp.html.string(n):n)+"")}}); \ No newline at end of file +window.wp=window.wp||{},wp.shortcode={next:function(t,e,n){var s,r,o=wp.shortcode.regexp(t);if(o.lastIndex=n||0,s=o.exec(e))return"["===s[1]&&"]"===s[7]?wp.shortcode.next(t,e,o.lastIndex):(r={index:s.index,content:s[0],shortcode:wp.shortcode.fromMatch(s)},s[1]&&(r.content=r.content.slice(1),r.index++),s[7]&&(r.content=r.content.slice(0,-1)),r)},replace:function(t,e,n){return e.replace(wp.shortcode.regexp(t),(function(t,e,s,r,o,i,c,a){if("["===e&&"]"===a)return t;var h=n(wp.shortcode.fromMatch(arguments));return h?e+h+a:t}))},string:function(t){return new wp.shortcode(t).string()},regexp:_.memoize((function(t){return new RegExp("\\[(\\[?)("+t+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")})),attrs:_.memoize((function(t){var e,n,s={},r=[];for(e=/([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|'([^']*)'(?:\s|$)|(\S+)(?:\s|$)/g,t=t.replace(/[\u00a0\u200b]/g," ");n=e.exec(t);)n[1]?s[n[1].toLowerCase()]=n[2]:n[3]?s[n[3].toLowerCase()]=n[4]:n[5]?s[n[5].toLowerCase()]=n[6]:n[7]?r.push(n[7]):n[8]?r.push(n[8]):n[9]&&r.push(n[9]);return{named:s,numeric:r}})),fromMatch:function(t){var e;return e=t[4]?"self-closing":t[6]?"closed":"single",new wp.shortcode({tag:t[2],attrs:t[3],type:e,content:t[5]})}},wp.shortcode=_.extend((function(t){_.extend(this,_.pick(t||{},"tag","attrs","type","content"));var e=this.attrs;this.attrs={named:{},numeric:[]},e&&(_.isString(e)?this.attrs=wp.shortcode.attrs(e):_.isEqual(_.keys(e),["named","numeric"])?this.attrs=e:_.each(t.attrs,(function(t,e){this.set(e,t)}),this))}),wp.shortcode),_.extend(wp.shortcode.prototype,{get:function(t){return this.attrs[_.isNumber(t)?"numeric":"named"][t]},set:function(t,e){return this.attrs[_.isNumber(t)?"numeric":"named"][t]=e,this},string:function(){var t="["+this.tag;return _.each(this.attrs.numeric,(function(e){/\s/.test(e)?t+=' "'+e+'"':t+=" "+e})),_.each(this.attrs.named,(function(e,n){t+=" "+n+'="'+e+'"'})),"single"===this.type?t+"]":"self-closing"===this.type?t+" /]":(t+="]",this.content&&(t+=this.content),t+"[/"+this.tag+"]")}}),wp.html=_.extend(wp.html||{},{attrs:function(t){var e,n;return"/"===t[t.length-1]&&(t=t.slice(0,-1)),e=wp.shortcode.attrs(t),n=e.named,_.each(e.numeric,(function(t){/\s/.test(t)||(n[t]="")})),n},string:function(t){var e="<"+t.tag,n=t.content||"";return _.each(t.attrs,(function(t,n){e+=" "+n,_.isBoolean(t)&&(t=t?"true":"false"),e+='="'+t+'"'})),t.single?e+" />":(e+=">",(e+=_.isObject(n)?wp.html.string(n):n)+"")}}); \ No newline at end of file diff --git a/wp-includes/js/swfupload/swfupload.js b/wp-includes/js/swfupload/swfupload.js index 14d58dc..d0e4051 100644 --- a/wp-includes/js/swfupload/swfupload.js +++ b/wp-includes/js/swfupload/swfupload.js @@ -1,7 +1,7 @@ /** * SWFUpload fallback * - * @since 4.9.0 + * @since WP-4.9.0 */ var SWFUpload; diff --git a/wp-includes/js/thickbox/thickbox.css b/wp-includes/js/thickbox/thickbox.css index c884f03..f27abdb 100644 --- a/wp-includes/js/thickbox/thickbox.css +++ b/wp-includes/js/thickbox/thickbox.css @@ -136,14 +136,14 @@ .tb-close-icon:before { content: "\f158"; font: normal 20px/29px dashicons; - speak: never; + speak: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #TB_closeWindowButton:hover .tb-close-icon, #TB_closeWindowButton:focus .tb-close-icon { - color: #006799; + color: #00a0d2; } #TB_closeWindowButton:focus .tb-close-icon { diff --git a/wp-includes/js/thickbox/thickbox.js b/wp-includes/js/thickbox/thickbox.js index 5470467..391fd41 100644 --- a/wp-includes/js/thickbox/thickbox.js +++ b/wp-includes/js/thickbox/thickbox.js @@ -49,12 +49,12 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic jQuery("html").css("overflow","hidden"); if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6 jQuery("body").append("
        "); - jQuery("#TB_overlay").on( 'click', tb_remove ); + jQuery("#TB_overlay").click(tb_remove); } }else{//all others if(document.getElementById("TB_overlay") === null){ jQuery("body").append("
        "); - jQuery("#TB_overlay").on( 'click', tb_remove ); + jQuery("#TB_overlay").click(tb_remove); jQuery( 'body' ).addClass( 'modal-open' ); } } @@ -76,16 +76,10 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic baseURL = url; } - var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$|\.webp$/; + var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/; var urlType = baseURL.toLowerCase().match(urlString); - if(urlType == '.jpg' || - urlType == '.jpeg' || - urlType == '.png' || - urlType == '.gif' || - urlType == '.bmp' || - urlType == '.webp' - ){//code to show images + if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images TB_PrevCaption = ""; TB_PrevURL = ""; @@ -147,17 +141,17 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic TB_HEIGHT = imageHeight + 60; jQuery("#TB_window").append("
        "+thickboxL10n.close+""+caption+"" + "
        "+caption+"
        " + TB_imageCount + TB_PrevHTML + TB_NextHTML + "
        "); - jQuery("#TB_closeWindowButton").on( 'click', tb_remove ); + jQuery("#TB_closeWindowButton").click(tb_remove); if (!(TB_PrevHTML === "")) { function goPrev(){ - if(jQuery(document).off("click",goPrev)){jQuery(document).off("click",goPrev);} + if(jQuery(document).unbind("click",goPrev)){jQuery(document).unbind("click",goPrev);} jQuery("#TB_window").remove(); jQuery("body").append("
        "); tb_show(TB_PrevCaption, TB_PrevURL, imageGroup); return false; } - jQuery("#TB_prev").on( 'click', goPrev ); + jQuery("#TB_prev").click(goPrev); } if (!(TB_NextHTML === "")) { @@ -167,22 +161,22 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic tb_show(TB_NextCaption, TB_NextURL, imageGroup); return false; } - jQuery("#TB_next").on( 'click', goNext ); + jQuery("#TB_next").click(goNext); } - jQuery(document).on('keydown.thickbox', function(e){ + jQuery(document).bind('keydown.thickbox', function(e){ if ( e.which == 27 ){ // close tb_remove(); } else if ( e.which == 190 ){ // display previous image if(!(TB_NextHTML == "")){ - jQuery(document).off('thickbox'); + jQuery(document).unbind('thickbox'); goNext(); } } else if ( e.which == 188 ){ // display next image if(!(TB_PrevHTML == "")){ - jQuery(document).off('thickbox'); + jQuery(document).unbind('thickbox'); goPrev(); } } @@ -191,7 +185,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic tb_position(); jQuery("#TB_load").remove(); - jQuery("#TB_ImageOff").on( 'click', tb_remove ); + jQuery("#TB_ImageOff").click(tb_remove); jQuery("#TB_window").css({'visibility':'visible'}); //for safari using css instead of show }; @@ -212,7 +206,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic if(params['modal'] != "true"){//iframe no modal jQuery("#TB_window").append("
        "+caption+"
        "); }else{//iframe modal - jQuery("#TB_overlay").off(); + jQuery("#TB_overlay").unbind(); jQuery("#TB_window").append(""); } }else{// not an iframe, ajax @@ -220,7 +214,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic if(params['modal'] != "true"){//ajax no modal jQuery("#TB_window").append("
        "+caption+"
        "); }else{//ajax modal - jQuery("#TB_overlay").off(); + jQuery("#TB_overlay").unbind(); jQuery("#TB_window").append("
        "); } }else{//this means the window is already up, we are just loading new content via ajax @@ -231,11 +225,11 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic } } - jQuery("#TB_closeWindowButton").on( 'click', tb_remove ); + jQuery("#TB_closeWindowButton").click(tb_remove); if(url.indexOf('TB_inline') != -1){ jQuery("#TB_ajaxContent").append(jQuery('#' + params['inlineId']).children()); - jQuery("#TB_window").on('tb_unload', function () { + jQuery("#TB_window").bind('tb_unload', function () { jQuery('#' + params['inlineId']).append( jQuery("#TB_ajaxContent").children() ); // move elements back when you're finished }); tb_position(); @@ -259,7 +253,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic } if(!params['modal']){ - jQuery(document).on('keydown.thickbox', function(e){ + jQuery(document).bind('keydown.thickbox', function(e){ if ( e.which == 27 ){ // close tb_remove(); return false; @@ -274,7 +268,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic * In other admin screens is hidden and replaced by a different icon. */ if ( $closeBtn.find( '.tb-close-icon' ).is( ':visible' ) ) { - $closeBtn.trigger( 'focus' ); + $closeBtn.focus(); } } catch(e) { @@ -289,10 +283,10 @@ function tb_showIframe(){ } function tb_remove() { - jQuery("#TB_imageOff").off("click"); - jQuery("#TB_closeWindowButton").off("click"); + jQuery("#TB_imageOff").unbind("click"); + jQuery("#TB_closeWindowButton").unbind("click"); jQuery( '#TB_window' ).fadeOut( 'fast', function() { - jQuery( '#TB_window, #TB_overlay, #TB_HideSelect' ).trigger( 'tb_unload' ).off().remove(); + jQuery( '#TB_window, #TB_overlay, #TB_HideSelect' ).trigger( 'tb_unload' ).unbind().remove(); jQuery( 'body' ).trigger( 'thickbox:removed' ); }); jQuery( 'body' ).removeClass( 'modal-open' ); @@ -301,7 +295,7 @@ function tb_remove() { jQuery("body","html").css({height: "auto", width: "auto"}); jQuery("html").css("overflow",""); } - jQuery(document).off('.thickbox'); + jQuery(document).unbind('.thickbox'); return false; } diff --git a/wp-includes/js/tinymce/langs/wp-langs-en.js b/wp-includes/js/tinymce/langs/wp-langs-en.js index c3ddbb3..65d9669 100644 --- a/wp-includes/js/tinymce/langs/wp-langs-en.js +++ b/wp-includes/js/tinymce/langs/wp-langs-en.js @@ -24,7 +24,7 @@ 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", @@ -152,9 +152,9 @@ plaintext_mode: "Paste is now in plain text mode. Click again to toggle back to regular paste mode." }, paste_dlg: { - text_title: "Use Ctrl + V on your keyboard to paste the text into the window.", + 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." + word_title: "Use CTRL + V on your keyboard to paste the text into the window." }, table: { desc: "Inserts a new table", @@ -501,6 +501,9 @@ 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%", diff --git a/wp-includes/js/tinymce/plugins/wordpress/plugin.js b/wp-includes/js/tinymce/plugins/wordpress/plugin.js index 5aa0bb7..fdb3856 100644 --- a/wp-includes/js/tinymce/plugins/wordpress/plugin.js +++ b/wp-includes/js/tinymce/plugins/wordpress/plugin.js @@ -1,6 +1,6 @@ /* global getUserSetting, setUserSetting */ ( function( tinymce ) { -// Set the minimum value for the modals z-index higher than #wpadminbar (100000). +// Set the minimum value for the modals z-index higher than #wpadminbar (100000) if ( ! tinymce.ui.FloatPanel.zIndex || tinymce.ui.FloatPanel.zIndex < 100100 ) { tinymce.ui.FloatPanel.zIndex = 100100; } @@ -12,67 +12,54 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { __ = editor.editorManager.i18n.translate, $ = window.jQuery, wp = window.wp, - hasWpautop = ( wp && wp.editor && wp.editor.autop && editor.getParam( 'wpautop', true ) ), - wpTooltips = false; + hasWpautop = ( wp && wp.editor && wp.editor.autop && editor.getParam( 'wpautop', true ) ); if ( $ ) { - // Runs as soon as TinyMCE has started initializing, while plugins are loading. - // Handlers attached after the `tinymce.init()` call may not get triggered for this instance. $( document ).triggerHandler( 'tinymce-editor-setup', [ editor ] ); } function toggleToolbars( state ) { - var initial, toolbars, iframeHeight, - pixels = 0, - classicBlockToolbar = tinymce.$( '.block-library-classic__toolbar' ); - - if ( state === 'hide' ) { - initial = true; - } else if ( classicBlockToolbar.length && ! classicBlockToolbar.hasClass( 'has-advanced-toolbar' ) ) { - // Show the second, third, etc. toolbar rows in the Classic block instance. - classicBlockToolbar.addClass( 'has-advanced-toolbar' ); - state = 'show'; - } + var iframe, initial, toolbars, + pixels = 0; + + initial = ( state === 'hide' ); if ( editor.theme.panel ) { toolbars = editor.theme.panel.find('.toolbar:not(.menubar)'); } - if ( toolbars && toolbars.length > 1 ) { - if ( ! state && toolbars[1].visible() ) { - state = 'hide'; - } + if ( ! toolbars || toolbars.length < 2 || ( state === 'hide' && ! toolbars[1].visible() ) ) { + return; + } - each( toolbars, function( toolbar, i ) { - if ( i > 0 ) { - if ( state === 'hide' ) { - toolbar.hide(); - pixels += 34; - } else { - toolbar.show(); - pixels -= 34; - } - } - }); + if ( ! state && toolbars[1].visible() ) { + state = 'hide'; } - // Resize editor iframe, not needed for iOS and inline instances. - // Don't resize if the editor is in a hidden container. - if ( pixels && ! tinymce.Env.iOS && editor.iframeElement && editor.iframeElement.clientHeight ) { - iframeHeight = editor.iframeElement.clientHeight + pixels; + each( toolbars, function( toolbar, i ) { + if ( i > 0 ) { + if ( state === 'hide' ) { + toolbar.hide(); + pixels += 30; + } else { + toolbar.show(); + pixels -= 30; + } + } + }); - // Keep min-height. - if ( iframeHeight > 50 ) { - DOM.setStyle( editor.iframeElement, 'height', iframeHeight ); + if ( pixels && ! initial ) { + // Resize iframe, not needed in iOS + if ( ! tinymce.Env.iOS ) { + iframe = editor.getContentAreaContainer().firstChild; + DOM.setStyle( iframe, 'height', iframe.clientHeight + pixels ); } - } - if ( ! initial ) { if ( state === 'hide' ) { - setUserSetting( 'hidetb', '0' ); + setUserSetting('hidetb', '0'); wpAdvButton && wpAdvButton.active( false ); } else { - setUserSetting( 'hidetb', '1' ); + setUserSetting('hidetb', '1'); wpAdvButton && wpAdvButton.active( true ); } } @@ -86,16 +73,14 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { cmd: 'WP_Adv', onPostRender: function() { wpAdvButton = this; - wpAdvButton.active( getUserSetting( 'hidetb' ) === '1' ); + wpAdvButton.active( getUserSetting( 'hidetb' ) === '1' ? true : false ); } }); - // Hide the toolbars after loading. + // Hide the toolbars after loading editor.on( 'PostRender', function() { if ( editor.getParam( 'wordpress_adv_hidden', true ) && getUserSetting( 'hidetb', '0' ) === '0' ) { toggleToolbars( 'hide' ); - } else { - tinymce.$( '.block-library-classic__toolbar' ).addClass( 'has-advanced-toolbar' ); } }); @@ -193,7 +178,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } }); - // Display the tag name instead of img in element path. + // Display the tag name instead of img in element path editor.on( 'ResolveName', function( event ) { var attr; @@ -202,7 +187,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } }); - // Register commands. + // Register commands editor.addCommand( 'WP_More', function( tag ) { var parent, html, title, classname = 'wp-more-tag', @@ -217,13 +202,13 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { html = ''; - // Most common case. + // Most common case if ( node === rootNode || ( node.nodeName === 'P' && node.parentNode === rootNode ) ) { editor.insertContent( html ); return; } - // Get the top level parent node. + // Get the top level parent node parent = dom.getParent( node, function( found ) { if ( found.parentNode && found.parentNode === rootNode ) { return true; @@ -253,7 +238,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { editor.addCommand( 'WP_Help', function() { var access = tinymce.Env.mac ? __( 'Ctrl + Alt + letter:' ) : __( 'Shift + Alt + letter:' ), - meta = tinymce.Env.mac ? __( '⌘ + letter:' ) : __( 'Ctrl + letter:' ), + meta = tinymce.Env.mac ? __( 'Cmd + letter:' ) : __( 'Ctrl + letter:' ), table1 = [], table2 = [], row1 = {}, @@ -330,7 +315,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { html = '
        '; - // Main section, default and additional shortcuts. + // Main section, default and additional shortcuts html = html + '

        ' + __( 'Default shortcuts,' ) + ' ' + meta + '

        ' + '' + @@ -344,7 +329,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { '
        '; if ( editor.plugins.wptextpattern && ( ! tinymce.Env.ie || tinymce.Env.ie > 8 ) ) { - // Text pattern section. + // Text pattern section html = html + '

        ' + __( 'When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.' ) + '

        ' + '' + @@ -365,7 +350,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { '
        '; } - // Focus management section. + // Focus management section html = html + '

        ' + __( 'Focus shortcuts:' ) + '

        ' + '' + @@ -379,7 +364,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { html += ''; dialog = editor.windowManager.open( { - title: editor.settings.classic_block_editor ? 'Classic Block Keyboard Shortcuts' : 'Keyboard Shortcuts', + title: 'Keyboard Shortcuts', items: { type: 'container', classes: 'wp-help', @@ -415,7 +400,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } }); - // Register buttons. + // Register buttons editor.addButton( 'wp_more', { tooltip: 'Insert Read More tag', onclick: function() { @@ -441,14 +426,9 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { stateSelector: 'code' }); - // Insert->Add Media. + // Menubar + // Insert->Add Media if ( wp && wp.media && wp.media.editor ) { - editor.addButton( 'wp_add_media', { - tooltip: 'Add Media', - icon: 'dashicon dashicons-admin-media', - cmd: 'WP_Medialib' - } ); - editor.addMenuItem( 'add_media', { text: 'Add Media', icon: 'wp-media-library', @@ -457,7 +437,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { }); } - // Insert "Read More...". + // Insert "Read More..." editor.addMenuItem( 'wp_more', { text: 'Insert Read More tag', icon: 'wp_more', @@ -467,7 +447,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } }); - // Insert "Next Page". + // Insert "Next Page" editor.addMenuItem( 'wp_page', { text: 'Page break', icon: 'wp_page', @@ -498,7 +478,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { editor.on( 'init', function() { var env = tinymce.Env, - bodyClass = ['mceContentBody'], // Back-compat for themes that use this in editor-style.css... + bodyClass = ['mceContentBody'], // back-compat for themes that use this in editor-style.css... doc = editor.getDoc(), dom = editor.dom; @@ -533,7 +513,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } }); - // Remove invalid parent paragraphs when inserting HTML. + // Remove invalid parent paragraphs when inserting HTML editor.on( 'BeforeSetContent', function( event ) { if ( event.content ) { event.content = event.content.replace( /

        \s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)( [^>]*)?>/gi, '<$1$2>' ) @@ -542,11 +522,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { }); if ( $ ) { - // Run on DOM ready. Otherwise TinyMCE may initialize earlier and handlers attached - // on DOM ready of after the `tinymce.init()` call may not get triggered. - $( function() { - $( document ).triggerHandler( 'tinymce-editor-init', [editor] ); - }); + $( document ).triggerHandler( 'tinymce-editor-init', [editor] ); } if ( window.tinyMCEPreInit && window.tinyMCEPreInit.dragDropUpload ) { @@ -560,21 +536,21 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { if ( editor.getParam( 'wp_paste_filters', true ) ) { editor.on( 'PastePreProcess', function( event ) { - // Remove trailing
        added by WebKit browsers to the clipboard. + // Remove trailing
        added by WebKit browsers to the clipboard event.content = event.content.replace( /
        /gi, '' ); - // In WebKit this is handled by removeWebKitStyles(). + // In WebKit this is handled by removeWebKitStyles() if ( ! tinymce.Env.webkit ) { - // Remove all inline styles. + // Remove all inline styles event.content = event.content.replace( /(<[^>]+) style="[^"]*"([^>]*>)/gi, '$1$2' ); - // Put back the internal styles. + // Put back the internal styles event.content = event.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi, '$1 style=$2' ); } }); editor.on( 'PastePostProcess', function( event ) { - // Remove empty paragraphs. + // Remove empty paragraphs editor.$( 'p', event.node ).each( function( i, node ) { if ( dom.isEmpty( node ) ) { dom.remove( node ); @@ -588,10 +564,45 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } }); } + + if ( editor.settings.wp_shortcut_labels && editor.theme.panel ) { + var labels = {}; + var access = 'Shift+Alt+'; + var meta = 'Ctrl+'; + + // For Mac: ctrl = \u2303, cmd = \u2318, alt = \u2325 + + if ( tinymce.Env.mac ) { + access = '\u2303\u2325'; + meta = '\u2318'; + } + + each( editor.settings.wp_shortcut_labels, function( value, name ) { + labels[ name ] = value.replace( 'access', access ).replace( 'meta', meta ); + } ); + + each( editor.theme.panel.find('button'), function( button ) { + if ( button && button.settings.tooltip && labels.hasOwnProperty( button.settings.tooltip ) ) { + // Need to translate now. We are changing the string so it won't match and cannot be translated later. + button.settings.tooltip = editor.translate( button.settings.tooltip ) + ' (' + labels[ button.settings.tooltip ] + ')'; + } + } ); + + // listbox for the "blocks" drop-down + each( editor.theme.panel.find('listbox'), function( listbox ) { + if ( listbox && listbox.settings.text === 'Paragraph' ) { + each( listbox.settings.values, function( item ) { + if ( item.text && labels.hasOwnProperty( item.text ) ) { + item.shortcut = '(' + labels[ item.text ] + ')'; + } + } ); + } + } ); + } }); editor.on( 'SaveContent', function( event ) { - // If editor is hidden, we just want the textarea's value to be saved. + // If editor is hidden, we just want the textarea's value to be saved if ( ! editor.inline && editor.isHidden() ) { event.content = event.element.value; return; @@ -630,8 +641,10 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { u: 'InsertUnorderedList', o: 'InsertOrderedList', m: 'WP_Medialib', + z: 'WP_Adv', t: 'WP_More', d: 'Strikethrough', + h: 'WP_Help', p: 'WP_Page', x: 'WP_Code' }, function( command, key ) { @@ -644,31 +657,6 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } } ); - // Alt+Shift+Z removes a block in the block editor, don't add it to the Classic block. - if ( ! editor.settings.classic_block_editor ) { - editor.addShortcut( 'access+z', '', 'WP_Adv' ); - } - - // Workaround for not triggering the global help modal in the block editor by the Classic block shortcut. - editor.on( 'keydown', function( event ) { - var match; - - if ( tinymce.Env.mac ) { - match = event.ctrlKey && event.altKey && event.code === 'KeyH'; - } else { - match = event.shiftKey && event.altKey && event.code === 'KeyH'; - } - - if ( match ) { - editor.execCommand( 'WP_Help' ); - event.stopPropagation(); - event.stopImmediatePropagation(); - return false; - } - - return true; - }); - if ( window.getUserSetting( 'editor_plain_text_paste_warning' ) > 1 ) { editor.settings.paste_plaintext_inform = false; } @@ -690,95 +678,6 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } }); - editor.on( 'beforerenderui', function() { - if ( editor.theme.panel ) { - each( [ 'button', 'colorbutton', 'splitbutton' ], function( buttonType ) { - replaceButtonsTooltips( editor.theme.panel.find( buttonType ) ); - } ); - - addShortcutsToListbox(); - } - } ); - - function prepareTooltips() { - var access = 'Shift+Alt+'; - var meta = 'Ctrl+'; - - wpTooltips = {}; - - // For MacOS: ctrl = \u2303, cmd = \u2318, alt = \u2325. - if ( tinymce.Env.mac ) { - access = '\u2303\u2325'; - meta = '\u2318'; - } - - // Some tooltips are translated, others are not... - if ( editor.settings.wp_shortcut_labels ) { - each( editor.settings.wp_shortcut_labels, function( value, tooltip ) { - var translated = editor.translate( tooltip ); - - value = value.replace( 'access', access ).replace( 'meta', meta ); - wpTooltips[ tooltip ] = value; - - // Add the translated so we can match all of them. - if ( tooltip !== translated ) { - wpTooltips[ translated ] = value; - } - } ); - } - } - - function getTooltip( tooltip ) { - var translated = editor.translate( tooltip ); - var label; - - if ( ! wpTooltips ) { - prepareTooltips(); - } - - if ( wpTooltips.hasOwnProperty( translated ) ) { - label = wpTooltips[ translated ]; - } else if ( wpTooltips.hasOwnProperty( tooltip ) ) { - label = wpTooltips[ tooltip ]; - } - - return label ? translated + ' (' + label + ')' : translated; - } - - function replaceButtonsTooltips( buttons ) { - - if ( ! buttons ) { - return; - } - - each( buttons, function( button ) { - var tooltip; - - if ( button && button.settings.tooltip ) { - tooltip = getTooltip( button.settings.tooltip ); - button.settings.tooltip = tooltip; - - // Override the aria label with the translated tooltip + shortcut. - if ( button._aria && button._aria.label ) { - button._aria.label = tooltip; - } - } - } ); - } - - function addShortcutsToListbox() { - // listbox for the "blocks" drop-down. - each( editor.theme.panel.find( 'listbox' ), function( listbox ) { - if ( listbox && listbox.settings.text === 'Paragraph' ) { - each( listbox.settings.values, function( item ) { - if ( item.text && wpTooltips.hasOwnProperty( item.text ) ) { - item.shortcut = '(' + wpTooltips[ item.text ] + ')'; - } - } ); - } - } ); - } - /** * Experimental: create a floating toolbar. * This functionality will change in the next releases. Not recommended for use by plugins. @@ -795,7 +694,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { mceToolbar, mceStatusbar, wpStatusbar, - cachedWinSize; + isChromeRtl = ( editor.rtl && /Chrome/.test( navigator.userAgent ) ); if ( container ) { mceToolbar = tinymce.$( '.mce-toolbar-grp', container )[0]; @@ -813,7 +712,6 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { each( buttons, function( item ) { var itemName; - var tooltip; function bindSelectorChanged() { var selection = editor.selection; @@ -904,12 +802,6 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { item.size = settings.toolbar_items_size; } - tooltip = item.tooltip || item.title; - - if ( tooltip ) { - item.tooltip = getTooltip( tooltip ); - } - item = Factory.create( item ); buttonGroup.items.push( item ); @@ -1046,6 +938,16 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { toolbar.on( 'show', function() { this.reposition(); + + if ( isChromeRtl ) { + tinymce.$( '.mce-widget.mce-tooltip' ).addClass( 'wp-hide-mce-tooltip' ); + } + } ); + + toolbar.on( 'hide', function() { + if ( isChromeRtl ) { + tinymce.$( '.mce-widget.mce-tooltip' ).removeClass( 'wp-hide-mce-tooltip' ); + } } ); toolbar.on( 'keydown', function( event ) { @@ -1111,9 +1013,6 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } ); function hide( event ) { - var win; - var size; - if ( activeToolbar ) { if ( activeToolbar.tempHide || event.type === 'hide' || event.type === 'blur' ) { activeToolbar.hide(); @@ -1124,36 +1023,6 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { event.type === 'resize' || event.type === 'scroll' ) && ! activeToolbar.blockHide ) { - /* - * Showing a tooltip may trigger a `resize` event in Chromium browsers. - * That results in a flicketing inline menu; tooltips are shown on hovering over a button, - * which then hides the toolbar on `resize`, then it repeats as soon as the toolbar is shown again. - */ - if ( event.type === 'resize' || event.type === 'resizewindow' ) { - win = editor.getWin(); - size = win.innerHeight + win.innerWidth; - - // Reset old cached size. - if ( cachedWinSize && ( new Date() ).getTime() - cachedWinSize.timestamp > 2000 ) { - cachedWinSize = null; - } - - if ( cachedWinSize ) { - if ( size && Math.abs( size - cachedWinSize.size ) < 2 ) { - // `resize` fired but the window hasn't been resized. Bail. - return; - } - } else { - // First of a new series of `resize` events. Store the cached size and bail. - cachedWinSize = { - timestamp: ( new Date() ).getTime(), - size: size, - }; - - return; - } - } - clearTimeout( timeout ); timeout = setTimeout( function() { @@ -1169,20 +1038,12 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { } } - if ( editor.inline ) { - editor.on( 'resizewindow', hide ); - - // Enable `capture` for the event. - // This will hide/reposition the toolbar on any scrolling in the document. - document.addEventListener( 'scroll', hide, true ); - } else { - // Bind to the editor iframe and to the parent window. - editor.dom.bind( editor.getWin(), 'resize scroll', hide ); - editor.on( 'resizewindow scrollwindow', hide ); - } + // For full height editor. + editor.on( 'resizewindow scrollwindow', hide ); + // For scrollable editor. + editor.dom.bind( editor.getWin(), 'resize scroll', hide ); editor.on( 'remove', function() { - document.removeEventListener( 'scroll', hide, true ); editor.off( 'resizewindow scrollwindow', hide ); editor.dom.unbind( editor.getWin(), 'resize scroll', hide ); } ); @@ -1195,7 +1056,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) { function noop() {} - // Expose some functions (back-compat). + // Expose some functions (back-compat) return { _showButtons: noop, _hideButtons: noop, diff --git a/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js b/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js index c3943f4..037fc94 100644 --- a/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js +++ b/wp-includes/js/tinymce/plugins/wordpress/plugin.min.js @@ -1 +1 @@ -!function(e){(!e.ui.FloatPanel.zIndex||e.ui.FloatPanel.zIndex<100100)&&(e.ui.FloatPanel.zIndex=100100),e.PluginManager.add("wordpress",(function(t){var n,o,i=e.DOM,a=e.each,r=t.editorManager.i18n.translate,s=window.jQuery,d=window.wp,l=d&&d.editor&&d.editor.autop&&t.getParam("wpautop",!0),c=!1;function p(o){var r,s,d,l=0,c=e.$(".block-library-classic__toolbar");"hide"===o?r=!0:c.length&&!c.hasClass("has-advanced-toolbar")&&(c.addClass("has-advanced-toolbar"),o="show"),t.theme.panel&&(s=t.theme.panel.find(".toolbar:not(.menubar)")),s&&s.length>1&&(!o&&s[1].visible()&&(o="hide"),a(s,(function(e,t){t>0&&("hide"===o?(e.hide(),l+=34):(e.show(),l-=34))}))),l&&!e.Env.iOS&&t.iframeElement&&t.iframeElement.clientHeight&&(d=t.iframeElement.clientHeight+l)>50&&i.setStyle(t.iframeElement,"height",d),r||("hide"===o?(setUserSetting("hidetb","0"),n&&n.active(!1)):(setUserSetting("hidetb","1"),n&&n.active(!0))),t.fire("wp-toolbar-toggle")}function m(n){var o,i,r,s=t.translate(n);return c||(i="Shift+Alt+",r="Ctrl+",c={},e.Env.mac&&(i="\u2303\u2325",r="\u2318"),t.settings.wp_shortcut_labels&&a(t.settings.wp_shortcut_labels,(function(e,n){var o=t.translate(n);e=e.replace("access",i).replace("meta",r),c[n]=e,n!==o&&(c[o]=e)}))),c.hasOwnProperty(s)?o=c[s]:c.hasOwnProperty(n)&&(o=c[n]),o?s+" ("+o+")":s}function u(){}return s&&s(document).triggerHandler("tinymce-editor-setup",[t]),t.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){(n=this).active("1"===getUserSetting("hidetb"))}}),t.on("PostRender",(function(){t.getParam("wordpress_adv_hidden",!0)&&"0"===getUserSetting("hidetb","0")?p("hide"):e.$(".block-library-classic__toolbar").addClass("has-advanced-toolbar")})),t.addCommand("WP_Adv",(function(){p()})),t.on("focus",(function(){window.wpActiveEditor=t.id})),t.on("BeforeSetContent",(function(t){var n;t.content&&(-1!==t.content.indexOf("\x3c!--more")&&(n=r("Read more..."),t.content=t.content.replace(//g,(function(t,o){return''}))),-1!==t.content.indexOf("\x3c!--nextpage--\x3e")&&(n=r("Page break"),t.content=t.content.replace(//g,'')),t.load&&"raw"!==t.format&&(t.content=l?d.editor.autop(t.content):t.content.replace(/-->\s+\s*/g,(function(t,o){return''}))),-1!==t.content.indexOf("\x3c!--nextpage--\x3e")&&(n=r("Page break"),t.content=t.content.replace(//g,'')),t.load&&"raw"!==t.format&&(t.content=c?d.editor.autop(t.content):t.content.replace(/-->\s+\s*'); - }, - pi: function (name, text) { - if (text) { - html.push(''); - } else { - html.push(''); - } - if (indent) { - html.push('\n'); - } - }, - doctype: function (text) { - html.push('', indent ? '\n' : ''); - }, - reset: function () { - html.length = 0; - }, - getContent: function () { - return html.join('').replace(/\n$/, ''); - } - }; - } - - function HtmlSerializer (settings, schema) { - if (schema === void 0) { - schema = Schema(); - } - var writer = Writer(settings); - settings = settings || {}; - settings.validate = 'validate' in settings ? settings.validate : true; - var serialize = function (node) { - var handlers, validate; - validate = settings.validate; - handlers = { - 3: function (node) { - writer.text(node.value, node.raw); - }, - 8: function (node) { - writer.comment(node.value); - }, - 7: function (node) { - writer.pi(node.name, node.value); - }, - 10: function (node) { - writer.doctype(node.value); - }, - 4: function (node) { - writer.cdata(node.value); - }, - 11: function (node) { - if (node = node.firstChild) { - do { - walk(node); - } while (node = node.next); - } - } - }; - writer.reset(); - var walk = function (node) { - var handler = handlers[node.type]; - var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule; - if (!handler) { - name = node.name; - isEmpty = node.shortEnded; - attrs = node.attributes; - if (validate && attrs && attrs.length > 1) { - sortedAttrs = []; - sortedAttrs.map = {}; - elementRule = schema.getElementRule(node.name); - if (elementRule) { - for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) { - attrName = elementRule.attributesOrder[i]; - if (attrName in attrs.map) { - attrValue = attrs.map[attrName]; - sortedAttrs.map[attrName] = attrValue; - sortedAttrs.push({ - name: attrName, - value: attrValue - }); - } - } - for (i = 0, l = attrs.length; i < l; i++) { - attrName = attrs[i].name; - if (!(attrName in sortedAttrs.map)) { - attrValue = attrs.map[attrName]; - sortedAttrs.map[attrName] = attrValue; - sortedAttrs.push({ - name: attrName, - value: attrValue - }); - } - } - attrs = sortedAttrs; - } - } - writer.start(node.name, attrs, isEmpty); - if (!isEmpty) { - if (node = node.firstChild) { - do { - walk(node); - } while (node = node.next); - } - writer.end(name); - } - } else { - handler(node); - } - }; - if (node.type === 1 && !settings.inner) { - walk(node); - } else { - handlers[11](node); - } - return writer.getContent(); - }; - return { serialize: serialize }; - } - - var createRange$1 = function (sc, so, ec, eo) { - var rng = domGlobals.document.createRange(); - rng.setStart(sc, so); - rng.setEnd(ec, eo); - return rng; - }; - var normalizeBlockSelectionRange = function (rng) { - var startPos = CaretPosition$1.fromRangeStart(rng); - var endPos = CaretPosition$1.fromRangeEnd(rng); - var rootNode = rng.commonAncestorContainer; - return CaretFinder.fromPosition(false, rootNode, endPos).map(function (newEndPos) { - if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) { - return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset()); - } else { - return rng; - } - }).getOr(rng); - }; - var normalize = function (rng) { - return rng.collapsed ? rng : normalizeBlockSelectionRange(rng); - }; - var RangeNormalizer = { normalize: normalize }; - - var isAfterNbsp = function (container, offset) { - return NodeType.isText(container) && container.nodeValue[offset - 1] === '\xA0'; - }; - var trimOrPadLeftRight = function (rng, html) { - var container, offset; - container = rng.startContainer; - offset = rng.startOffset; - var hasSiblingText = function (siblingName) { - return container[siblingName] && container[siblingName].nodeType === 3; - }; - if (container.nodeType === 3) { - if (offset > 0) { - html = html.replace(/^ /, ' '); - } else if (!hasSiblingText('previousSibling')) { - html = html.replace(/^ /, ' '); - } - if (offset < container.length) { - html = html.replace(/ (
        |)$/, ' '); - } else if (!hasSiblingText('nextSibling')) { - html = html.replace(/( | )(
        |)$/, ' '); - } - } - return html; - }; - var trimNbspAfterDeleteAndPadValue = function (rng, value) { - var container, offset; - container = rng.startContainer; - offset = rng.startOffset; - if (container.nodeType === 3 && rng.collapsed) { - if (container.data[offset] === '\xA0') { - container.deleteData(offset, 1); - if (!/[\u00a0| ]$/.test(value)) { - value += ' '; - } - } else if (container.data[offset - 1] === '\xA0') { - container.deleteData(offset - 1, 1); - if (!/[\u00a0| ]$/.test(value)) { - value = ' ' + value; - } - } - } - return value; - }; - - var isTableCell$2 = NodeType.matchNodeNames('td th'); - var selectionSetContent = function (editor, content) { - var rng = editor.selection.getRng(); - var container = rng.startContainer; - var offset = rng.startOffset; - if (rng.collapsed && isAfterNbsp(container, offset) && NodeType.isText(container)) { - container.insertData(offset - 1, ' '); - container.deleteData(offset, 1); - rng.setStart(container, offset); - rng.setEnd(container, offset); - editor.selection.setRng(rng); - } - editor.selection.setContent(content); - }; - var validInsertion = function (editor, value, parentNode) { - if (parentNode.getAttribute('data-mce-bogus') === 'all') { - parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode); - } else { - var node = parentNode.firstChild; - var node2 = parentNode.lastChild; - if (!node || node === node2 && node.nodeName === 'BR') { - editor.dom.setHTML(parentNode, value); - } else { - selectionSetContent(editor, value); - } - } - }; - var trimBrsFromTableCell = function (dom, elm) { - Option.from(dom.getParent(elm, 'td,th')).map(Element.fromDom).each(PaddingBr.trimBlockTrailingBr); - }; - var reduceInlineTextElements = function (editor, merge) { - var textInlineElements = editor.schema.getTextInlineElements(); - var dom = editor.dom; - if (merge) { - var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom); - Tools.each(dom.select('*[data-mce-fragment]'), function (node) { - for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) { - if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) { - dom.remove(node, true); - } - } - }); - } - }; - var markFragmentElements = function (fragment) { - var node = fragment; - while (node = node.walk()) { - if (node.type === 1) { - node.attr('data-mce-fragment', '1'); - } - } - }; - var umarkFragmentElements = function (elm) { - Tools.each(elm.getElementsByTagName('*'), function (elm) { - elm.removeAttribute('data-mce-fragment'); - }); - }; - var isPartOfFragment = function (node) { - return !!node.getAttribute('data-mce-fragment'); - }; - var canHaveChildren = function (editor, node) { - return node && !editor.schema.getShortEndedElements()[node.nodeName]; - }; - var moveSelectionToMarker = function (editor, marker) { - var parentEditableFalseElm, parentBlock, nextRng; - var dom = editor.dom, selection = editor.selection; - var node, node2; - var getContentEditableFalseParent = function (node) { - var root = editor.getBody(); - for (; node && node !== root; node = node.parentNode) { - if (editor.dom.getContentEditable(node) === 'false') { - return node; - } - } - return null; - }; - if (!marker) { - return; - } - editor.selection.scrollIntoView(marker); - parentEditableFalseElm = getContentEditableFalseParent(marker); - if (parentEditableFalseElm) { - dom.remove(marker); - selection.select(parentEditableFalseElm); - return; - } - var rng = dom.createRng(); - node = marker.previousSibling; - if (node && node.nodeType === 3) { - rng.setStart(node, node.nodeValue.length); - if (!Env.ie) { - node2 = marker.nextSibling; - if (node2 && node2.nodeType === 3) { - node.appendData(node2.data); - node2.parentNode.removeChild(node2); - } - } - } else { - rng.setStartBefore(marker); - rng.setEndBefore(marker); - } - var findNextCaretRng = function (rng) { - var caretPos = CaretPosition$1.fromRangeStart(rng); - var caretWalker = CaretWalker(editor.getBody()); - caretPos = caretWalker.next(caretPos); - if (caretPos) { - return caretPos.toRange(); - } - }; - parentBlock = dom.getParent(marker, dom.isBlock); - dom.remove(marker); - if (parentBlock && dom.isEmpty(parentBlock)) { - editor.$(parentBlock).empty(); - rng.setStart(parentBlock, 0); - rng.setEnd(parentBlock, 0); - if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) { - rng = nextRng; - dom.remove(parentBlock); - } else { - dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' })); - } - } - selection.setRng(rng); - }; - var insertHtmlAtCaret = function (editor, value, details) { - var parser, serializer, parentNode, rootNode, fragment, args; - var marker, rng, node, bookmarkHtml, merge; - var selection = editor.selection, dom = editor.dom; - if (/^ | $/.test(value)) { - value = trimOrPadLeftRight(selection.getRng(), value); - } - parser = editor.parser; - merge = details.merge; - serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema); - bookmarkHtml = '​'; - args = { - content: value, - format: 'html', - selection: true, - paste: details.paste - }; - args = editor.fire('BeforeSetContent', args); - if (args.isDefaultPrevented()) { - editor.fire('SetContent', { - content: args.content, - format: 'html', - selection: true, - paste: details.paste - }); - return; - } - value = args.content; - if (value.indexOf('{$caret}') === -1) { - value += '{$caret}'; - } - value = value.replace(/\{\$caret\}/, bookmarkHtml); - rng = selection.getRng(); - var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null); - var body = editor.getBody(); - if (caretElement === body && selection.isCollapsed()) { - if (dom.isBlock(body.firstChild) && canHaveChildren(editor, body.firstChild) && dom.isEmpty(body.firstChild)) { - rng = dom.createRng(); - rng.setStart(body.firstChild, 0); - rng.setEnd(body.firstChild, 0); - selection.setRng(rng); - } - } - if (!selection.isCollapsed()) { - editor.selection.setRng(RangeNormalizer.normalize(editor.selection.getRng())); - editor.getDoc().execCommand('Delete', false, null); - value = trimNbspAfterDeleteAndPadValue(editor.selection.getRng(), value); - } - parentNode = selection.getNode(); - var parserArgs = { - context: parentNode.nodeName.toLowerCase(), - data: details.data, - insert: true - }; - fragment = parser.parse(value, parserArgs); - if (details.paste === true && InsertList.isListFragment(editor.schema, fragment) && InsertList.isParentBlockLi(dom, parentNode)) { - rng = InsertList.insertAtCaret(serializer, dom, editor.selection.getRng(), fragment); - editor.selection.setRng(rng); - editor.fire('SetContent', args); - return; - } - markFragmentElements(fragment); - node = fragment.lastChild; - if (node.attr('id') === 'mce_marker') { - marker = node; - for (node = node.prev; node; node = node.walk(true)) { - if (node.type === 3 || !dom.isBlock(node.name)) { - if (editor.schema.isValidChild(node.parent.name, 'span')) { - node.parent.insert(marker, node, node.name === 'br'); - } - break; - } - } - } - editor._selectionOverrides.showBlockCaretContainer(parentNode); - if (!parserArgs.invalid) { - value = serializer.serialize(fragment); - validInsertion(editor, value, parentNode); - } else { - selectionSetContent(editor, bookmarkHtml); - parentNode = selection.getNode(); - rootNode = editor.getBody(); - if (parentNode.nodeType === 9) { - parentNode = node = rootNode; - } else { - node = parentNode; - } - while (node !== rootNode) { - parentNode = node; - node = node.parentNode; - } - value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode); - value = serializer.serialize(parser.parse(value.replace(//i, function () { - return serializer.serialize(fragment); - }))); - if (parentNode === rootNode) { - dom.setHTML(rootNode, value); - } else { - dom.setOuterHTML(parentNode, value); - } - } - reduceInlineTextElements(editor, merge); - moveSelectionToMarker(editor, dom.get('mce_marker')); - umarkFragmentElements(editor.getBody()); - trimBrsFromTableCell(editor.dom, editor.selection.getStart()); - editor.fire('SetContent', args); - editor.addVisual(); - }; - var processValue = function (value) { - var details; - if (typeof value !== 'string') { - details = Tools.extend({ - paste: value.paste, - data: { paste: value.paste } - }, value); - return { - content: value.content, - details: details - }; - } - return { - content: value, - details: {} - }; - }; - var insertAtCaret$1 = function (editor, value) { - var result = processValue(value); - insertHtmlAtCaret(editor, result.content, result.details); - }; - var InsertContent = { insertAtCaret: insertAtCaret$1 }; - - var strongRtl = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/; - var hasStrongRtl = function (text) { - return strongRtl.test(text); - }; - - var getBodySetting = function (editor, name, defaultValue) { - var value = editor.getParam(name, defaultValue); - if (value.indexOf('=') !== -1) { - var bodyObj = editor.getParam(name, '', 'hash'); - return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue; - } else { - return value; - } - }; - var getIframeAttrs = function (editor) { - return editor.getParam('iframe_attrs', {}); - }; - var getDocType = function (editor) { - return editor.getParam('doctype', ''); - }; - var getDocumentBaseUrl = function (editor) { - return editor.getParam('document_base_url', ''); - }; - var getBodyId = function (editor) { - return getBodySetting(editor, 'body_id', 'tinymce'); - }; - var getBodyClass = function (editor) { - return getBodySetting(editor, 'body_class', ''); - }; - var getContentSecurityPolicy = function (editor) { - return editor.getParam('content_security_policy', ''); - }; - var shouldPutBrInPre = function (editor) { - return editor.getParam('br_in_pre', true); - }; - var getForcedRootBlock = function (editor) { - if (editor.getParam('force_p_newlines', false)) { - return 'p'; - } - var block = editor.getParam('forced_root_block', 'p'); - return block === false ? '' : block; - }; - var getForcedRootBlockAttrs = function (editor) { - return editor.getParam('forced_root_block_attrs', {}); - }; - var getBrNewLineSelector = function (editor) { - return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption'); - }; - var getNoNewLineSelector = function (editor) { - return editor.getParam('no_newline_selector', ''); - }; - var shouldKeepStyles = function (editor) { - return editor.getParam('keep_styles', true); - }; - var shouldEndContainerOnEmptyBlock = function (editor) { - return editor.getParam('end_container_on_empty_block', false); - }; - var getFontStyleValues = function (editor) { - return Tools.explode(editor.getParam('font_size_style_values', '')); - }; - var getFontSizeClasses = function (editor) { - return Tools.explode(editor.getParam('font_size_classes', '')); - }; - var getImagesDataImgFilter = function (editor) { - return editor.getParam('images_dataimg_filter', constant(true), 'function'); - }; - var isAutomaticUploadsEnabled = function (editor) { - return editor.getParam('automatic_uploads', true, 'boolean'); - }; - var shouldReuseFileName = function (editor) { - return editor.getParam('images_reuse_filename', false, 'boolean'); - }; - var shouldReplaceBlobUris = function (editor) { - return editor.getParam('images_replace_blob_uris', true, 'boolean'); - }; - var getImageUploadUrl = function (editor) { - return editor.getParam('images_upload_url', '', 'string'); - }; - var getImageUploadBasePath = function (editor) { - return editor.getParam('images_upload_base_path', '', 'string'); - }; - var getImagesUploadCredentials = function (editor) { - return editor.getParam('images_upload_credentials', false, 'boolean'); - }; - var getImagesUploadHandler = function (editor) { - return editor.getParam('images_upload_handler', null, 'function'); - }; - var shouldUseContentCssCors = function (editor) { - return editor.getParam('content_css_cors', false, 'boolean'); - }; - var getInlineBoundarySelector = function (editor) { - return editor.getParam('inline_boundaries_selector', 'a[href],code,.mce-annotation', 'string'); - }; - var Settings = { - getIframeAttrs: getIframeAttrs, - getDocType: getDocType, - getDocumentBaseUrl: getDocumentBaseUrl, - getBodyId: getBodyId, - getBodyClass: getBodyClass, - getContentSecurityPolicy: getContentSecurityPolicy, - shouldPutBrInPre: shouldPutBrInPre, - getForcedRootBlock: getForcedRootBlock, - getForcedRootBlockAttrs: getForcedRootBlockAttrs, - getBrNewLineSelector: getBrNewLineSelector, - getNoNewLineSelector: getNoNewLineSelector, - shouldKeepStyles: shouldKeepStyles, - shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock, - getFontStyleValues: getFontStyleValues, - getFontSizeClasses: getFontSizeClasses, - getImagesDataImgFilter: getImagesDataImgFilter, - isAutomaticUploadsEnabled: isAutomaticUploadsEnabled, - shouldReuseFileName: shouldReuseFileName, - shouldReplaceBlobUris: shouldReplaceBlobUris, - getImageUploadUrl: getImageUploadUrl, - getImageUploadBasePath: getImageUploadBasePath, - getImagesUploadCredentials: getImagesUploadCredentials, - getImagesUploadHandler: getImagesUploadHandler, - shouldUseContentCssCors: shouldUseContentCssCors, - getInlineBoundarySelector: getInlineBoundarySelector - }; - - var isInlineTarget = function (editor, elm) { - return is$1(Element.fromDom(elm), Settings.getInlineBoundarySelector(editor)); - }; - var isRtl = function (element) { - return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent); - }; - var findInlineParents = function (isInlineTarget, rootNode, pos) { - return filter(DOMUtils$1.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget); - }; - var findRootInline = function (isInlineTarget, rootNode, pos) { - var parents = findInlineParents(isInlineTarget, rootNode, pos); - return Option.from(parents[parents.length - 1]); - }; - var hasSameParentBlock = function (rootNode, node1, node2) { - var block1 = getParentBlock(node1, rootNode); - var block2 = getParentBlock(node2, rootNode); - return block1 && block1 === block2; - }; - var isAtZwsp = function (pos) { - return isBeforeInline(pos) || isAfterInline(pos); - }; - var normalizePosition = function (forward, pos) { - if (!pos) { - return pos; - } - var container = pos.container(), offset = pos.offset(); - if (forward) { - if (isCaretContainerInline(container)) { - if (NodeType.isText(container.nextSibling)) { - return CaretPosition$1(container.nextSibling, 0); - } else { - return CaretPosition$1.after(container); - } - } else { - return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos; - } - } else { - if (isCaretContainerInline(container)) { - if (NodeType.isText(container.previousSibling)) { - return CaretPosition$1(container.previousSibling, container.previousSibling.data.length); - } else { - return CaretPosition$1.before(container); - } - } else { - return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos; - } - } - }; - var normalizeForwards = curry(normalizePosition, true); - var normalizeBackwards = curry(normalizePosition, false); - var InlineUtils = { - isInlineTarget: isInlineTarget, - findRootInline: findRootInline, - isRtl: isRtl, - isAtZwsp: isAtZwsp, - normalizePosition: normalizePosition, - normalizeForwards: normalizeForwards, - normalizeBackwards: normalizeBackwards, - hasSameParentBlock: hasSameParentBlock - }; - - var isBeforeRoot = function (rootNode) { - return function (elm) { - return eq(rootNode, Element.fromDom(elm.dom().parentNode)); - }; - }; - var getParentBlock$1 = function (rootNode, elm) { - return contains$3(rootNode, elm) ? closest(elm, function (element) { - return isTextBlock(element) || isListItem(element); - }, isBeforeRoot(rootNode)) : Option.none(); - }; - var placeCaretInEmptyBody = function (editor) { - var body = editor.getBody(); - var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body; - editor.selection.setCursorLocation(node, 0); - }; - var paddEmptyBody = function (editor) { - if (editor.dom.isEmpty(editor.getBody())) { - editor.setContent(''); - placeCaretInEmptyBody(editor); - } - }; - var willDeleteLastPositionInElement = function (forward, fromPos, elm) { - return lift2(CaretFinder.firstPositionIn(elm), CaretFinder.lastPositionIn(elm), function (firstPos, lastPos) { - var normalizedFirstPos = InlineUtils.normalizePosition(true, firstPos); - var normalizedLastPos = InlineUtils.normalizePosition(false, lastPos); - var normalizedFromPos = InlineUtils.normalizePosition(false, fromPos); - if (forward) { - return CaretFinder.nextPosition(elm, normalizedFromPos).map(function (nextPos) { - return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos); - }).getOr(false); - } else { - return CaretFinder.prevPosition(elm, normalizedFromPos).map(function (prevPos) { - return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos); - }).getOr(false); - } - }).getOr(true); - }; - var DeleteUtils = { - getParentBlock: getParentBlock$1, - paddEmptyBody: paddEmptyBody, - willDeleteLastPositionInElement: willDeleteLastPositionInElement - }; - - var ancestor$2 = function (scope, selector, isRoot) { - return ancestor$1(scope, selector, isRoot).isSome(); - }; - - var hasWhitespacePreserveParent = function (rootNode, node) { - var rootElement = Element.fromDom(rootNode); - var startNode = Element.fromDom(node); - return ancestor$2(startNode, 'pre,code', curry(eq, rootElement)); - }; - var isWhitespace = function (rootNode, node) { - return NodeType.isText(node) && /^[ \t\r\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false; - }; - var isNamedAnchor = function (node) { - return NodeType.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name'); - }; - var isContent = function (rootNode, node) { - return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node); - }; - var isBookmark = NodeType.hasAttribute('data-mce-bookmark'); - var isBogus$2 = NodeType.hasAttribute('data-mce-bogus'); - var isBogusAll$1 = NodeType.hasAttributeValue('data-mce-bogus', 'all'); - var isEmptyNode = function (targetNode) { - var walker, node, brCount = 0; - if (isContent(targetNode, targetNode)) { - return false; - } else { - node = targetNode.firstChild; - if (!node) { - return true; - } - walker = new TreeWalker(node, targetNode); - do { - if (isBogusAll$1(node)) { - node = walker.next(true); - continue; - } - if (isBogus$2(node)) { - node = walker.next(); - continue; - } - if (NodeType.isBr(node)) { - brCount++; - node = walker.next(); - continue; - } - if (isContent(targetNode, node)) { - return false; - } - node = walker.next(); - } while (node); - return brCount <= 1; - } - }; - var isEmpty$1 = function (elm) { - return isEmptyNode(elm.dom()); - }; - var Empty = { isEmpty: isEmpty$1 }; - - var BlockPosition = Immutable('block', 'position'); - var BlockBoundary = Immutable('from', 'to'); - var getBlockPosition = function (rootNode, pos) { - var rootElm = Element.fromDom(rootNode); - var containerElm = Element.fromDom(pos.container()); - return DeleteUtils.getParentBlock(rootElm, containerElm).map(function (block) { - return BlockPosition(block, pos); - }); - }; - var isDifferentBlocks = function (blockBoundary) { - return eq(blockBoundary.from().block(), blockBoundary.to().block()) === false; - }; - var hasSameParent = function (blockBoundary) { - return parent(blockBoundary.from().block()).bind(function (parent1) { - return parent(blockBoundary.to().block()).filter(function (parent2) { - return eq(parent1, parent2); - }); - }).isSome(); - }; - var isEditable = function (blockBoundary) { - return NodeType.isContentEditableFalse(blockBoundary.from().block().dom()) === false && NodeType.isContentEditableFalse(blockBoundary.to().block().dom()) === false; - }; - var skipLastBr = function (rootNode, forward, blockPosition) { - if (NodeType.isBr(blockPosition.position().getNode()) && Empty.isEmpty(blockPosition.block()) === false) { - return CaretFinder.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) { - if (lastPositionInBlock.isEqual(blockPosition.position())) { - return CaretFinder.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) { - return getBlockPosition(rootNode, to); - }); - } else { - return Option.some(blockPosition); - } - }).getOr(blockPosition); - } else { - return blockPosition; - } - }; - var readFromRange = function (rootNode, forward, rng) { - var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng)); - var toBlockPos = fromBlockPos.bind(function (blockPos) { - return CaretFinder.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) { - return getBlockPosition(rootNode, to).map(function (blockPos) { - return skipLastBr(rootNode, forward, blockPos); - }); - }); - }); - return lift2(fromBlockPos, toBlockPos, BlockBoundary).filter(function (blockBoundary) { - return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary); - }); - }; - var read$1 = function (rootNode, forward, rng) { - return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none(); - }; - var BlockMergeBoundary = { read: read$1 }; - - var dropLast = function (xs) { - return xs.slice(0, -1); - }; - var parentsUntil$1 = function (start, root, predicate) { - if (contains$3(root, start)) { - return dropLast(parents(start, function (elm) { - return predicate(elm) || eq(elm, root); - })); - } else { - return []; - } - }; - var parents$1 = function (start, root) { - return parentsUntil$1(start, root, constant(false)); - }; - var parentsAndSelf = function (start, root) { - return [start].concat(parents$1(start, root)); - }; - var Parents = { - parentsUntil: parentsUntil$1, - parents: parents$1, - parentsAndSelf: parentsAndSelf - }; - - var getChildrenUntilBlockBoundary = function (block) { - var children$1 = children(block); - return findIndex(children$1, isBlock).fold(function () { - return children$1; - }, function (index) { - return children$1.slice(0, index); - }); - }; - var extractChildren = function (block) { - var children = getChildrenUntilBlockBoundary(block); - each(children, remove$1); - return children; - }; - var removeEmptyRoot = function (rootNode, block) { - var parents = Parents.parentsAndSelf(block, rootNode); - return find(parents.reverse(), Empty.isEmpty).each(remove$1); - }; - var isEmptyBefore = function (el) { - return filter(prevSiblings(el), function (el) { - return !Empty.isEmpty(el); - }).length === 0; - }; - var nestedBlockMerge = function (rootNode, fromBlock, toBlock, insertionPoint) { - if (Empty.isEmpty(toBlock)) { - PaddingBr.fillWithPaddingBr(toBlock); - return CaretFinder.firstPositionIn(toBlock.dom()); - } - if (isEmptyBefore(insertionPoint) && Empty.isEmpty(fromBlock)) { - before(insertionPoint, Element.fromTag('br')); - } - var position = CaretFinder.prevPosition(toBlock.dom(), CaretPosition$1.before(insertionPoint.dom())); - each(extractChildren(fromBlock), function (child) { - before(insertionPoint, child); - }); - removeEmptyRoot(rootNode, fromBlock); - return position; - }; - var sidelongBlockMerge = function (rootNode, fromBlock, toBlock) { - if (Empty.isEmpty(toBlock)) { - remove$1(toBlock); - if (Empty.isEmpty(fromBlock)) { - PaddingBr.fillWithPaddingBr(fromBlock); - } - return CaretFinder.firstPositionIn(fromBlock.dom()); - } - var position = CaretFinder.lastPositionIn(toBlock.dom()); - each(extractChildren(fromBlock), function (child) { - append(toBlock, child); - }); - removeEmptyRoot(rootNode, fromBlock); - return position; - }; - var findInsertionPoint = function (toBlock, block) { - var parentsAndSelf = Parents.parentsAndSelf(block, toBlock); - return Option.from(parentsAndSelf[parentsAndSelf.length - 1]); - }; - var getInsertionPoint = function (fromBlock, toBlock) { - return contains$3(toBlock, fromBlock) ? findInsertionPoint(toBlock, fromBlock) : Option.none(); - }; - var trimBr = function (first, block) { - CaretFinder.positionIn(first, block.dom()).map(function (position) { - return position.getNode(); - }).map(Element.fromDom).filter(isBr).each(remove$1); - }; - var mergeBlockInto = function (rootNode, fromBlock, toBlock) { - trimBr(true, fromBlock); - trimBr(false, toBlock); - return getInsertionPoint(fromBlock, toBlock).fold(curry(sidelongBlockMerge, rootNode, fromBlock, toBlock), curry(nestedBlockMerge, rootNode, fromBlock, toBlock)); - }; - var mergeBlocks = function (rootNode, forward, block1, block2) { - return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2); - }; - var MergeBlocks = { mergeBlocks: mergeBlocks }; - - var backspaceDelete = function (editor, forward) { - var position; - var rootNode = Element.fromDom(editor.getBody()); - position = BlockMergeBoundary.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) { - return MergeBlocks.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block()); - }); - position.each(function (pos) { - editor.selection.setRng(pos.toRange()); - }); - return position.isSome(); - }; - var BlockBoundaryDelete = { backspaceDelete: backspaceDelete }; - - var deleteRangeMergeBlocks = function (rootNode, selection) { - var rng = selection.getRng(); - return lift2(DeleteUtils.getParentBlock(rootNode, Element.fromDom(rng.startContainer)), DeleteUtils.getParentBlock(rootNode, Element.fromDom(rng.endContainer)), function (block1, block2) { - if (eq(block1, block2) === false) { - rng.deleteContents(); - MergeBlocks.mergeBlocks(rootNode, true, block1, block2).each(function (pos) { - selection.setRng(pos.toRange()); - }); - return true; - } else { - return false; - } - }).getOr(false); - }; - var isRawNodeInTable = function (root, rawNode) { - var node = Element.fromDom(rawNode); - var isRoot = curry(eq, root); - return ancestor(node, isTableCell, isRoot).isSome(); - }; - var isSelectionInTable = function (root, rng) { - return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer); - }; - var isEverythingSelected = function (root, rng) { - var noPrevious = CaretFinder.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone(); - var noNext = CaretFinder.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone(); - return !isSelectionInTable(root, rng) && noPrevious && noNext; - }; - var emptyEditor = function (editor) { - editor.setContent(''); - editor.selection.setCursorLocation(); - return true; - }; - var deleteRange = function (editor) { - var rootNode = Element.fromDom(editor.getBody()); - var rng = editor.selection.getRng(); - return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection); - }; - var backspaceDelete$1 = function (editor, forward) { - return editor.selection.isCollapsed() ? false : deleteRange(editor); - }; - var BlockRangeDelete = { backspaceDelete: backspaceDelete$1 }; - - var generate$1 = function (cases) { - if (!isArray(cases)) { - throw new Error('cases must be an array'); - } - if (cases.length === 0) { - throw new Error('there must be at least one case'); - } - var constructors = []; - var adt = {}; - each(cases, function (acase, count) { - var keys$1 = keys(acase); - if (keys$1.length !== 1) { - throw new Error('one and only one name per case'); - } - var key = keys$1[0]; - var value = acase[key]; - if (adt[key] !== undefined) { - throw new Error('duplicate key detected:' + key); - } else if (key === 'cata') { - throw new Error('cannot have a case named cata (sorry)'); - } else if (!isArray(value)) { - throw new Error('case arguments must be an array'); - } - constructors.push(key); - adt[key] = function () { - var argLength = arguments.length; - if (argLength !== value.length) { - throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength); - } - var args = new Array(argLength); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } - var match = function (branches) { - var branchKeys = keys(branches); - if (constructors.length !== branchKeys.length) { - throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(',')); - } - var allReqd = forall(constructors, function (reqKey) { - return contains(branchKeys, reqKey); - }); - if (!allReqd) { - throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', ')); - } - return branches[key].apply(null, args); - }; - return { - fold: function () { - if (arguments.length !== cases.length) { - throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length); - } - var target = arguments[count]; - return target.apply(null, args); - }, - match: match, - log: function (label) { - domGlobals.console.log(label, { - constructors: constructors, - constructor: key, - params: args - }); - } - }; - }; - }); - return adt; - }; - var Adt = { generate: generate$1 }; - - var isBr$5 = function (pos) { - return getElementFromPosition(pos).exists(isBr); - }; - var findBr = function (forward, root, pos) { - var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock); - var scope = head(parentBlocks).getOr(root); - return CaretFinder.fromPosition(forward, scope.dom(), pos).filter(isBr$5); - }; - var isBeforeBr = function (root, pos) { - return getElementFromPosition(pos).exists(isBr) || findBr(true, root, pos).isSome(); - }; - var isAfterBr = function (root, pos) { - return getElementFromPrevPosition(pos).exists(isBr) || findBr(false, root, pos).isSome(); - }; - var findPreviousBr = curry(findBr, false); - var findNextBr = curry(findBr, true); - - var is$2 = function (expected) { - return function (actual) { - return expected === actual; - }; - }; - var isNbsp = is$2('\xA0'); - var isWhiteSpace$1 = function (chr) { - return /^[\r\n\t ]$/.test(chr); - }; - var isContent$1 = function (chr) { - return !isWhiteSpace$1(chr) && !isNbsp(chr); - }; - - var isChar = function (forward, predicate, pos) { - return Option.from(pos.container()).filter(NodeType.isText).exists(function (text) { - var delta = forward ? 0 : -1; - return predicate(text.data.charAt(pos.offset() + delta)); - }); - }; - var isBeforeSpace = curry(isChar, true, isWhiteSpace$1); - var isAfterSpace = curry(isChar, false, isWhiteSpace$1); - var isEmptyText = function (pos) { - var container = pos.container(); - return NodeType.isText(container) && container.data.length === 0; - }; - var isNextToContentEditableFalse = function (relativeOffset, caretPosition) { - var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition); - return NodeType.isContentEditableFalse(node) && !NodeType.isBogusAll(node); - }; - var isBeforeContentEditableFalse = curry(isNextToContentEditableFalse, 0); - var isAfterContentEditableFalse = curry(isNextToContentEditableFalse, -1); - var isNextToTable = function (relativeOffset, caretPosition) { - return NodeType.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition)); - }; - var isBeforeTable = curry(isNextToTable, 0); - var isAfterTable = curry(isNextToTable, -1); - - var isCompoundElement = function (node) { - return isTableCell(Element.fromDom(node)) || isListItem(Element.fromDom(node)); - }; - var DeleteAction = Adt.generate([ - { remove: ['element'] }, - { moveToElement: ['element'] }, - { moveToPosition: ['position'] } - ]); - var isAtContentEditableBlockCaret = function (forward, from) { - var elm = from.getNode(forward === false); - var caretLocation = forward ? 'after' : 'before'; - return NodeType.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation; - }; - var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) { - var inSameBlock = function (elm) { - return isInline(Element.fromDom(elm)) && !isInSameBlock(from, to, root); - }; - return getRelativeCefElm(!forward, from).fold(function () { - return getRelativeCefElm(forward, to).fold(constant(false), inSameBlock); - }, inSameBlock); - }; - var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) { - var toCefElm = to.getNode(forward === false); - return DeleteUtils.getParentBlock(Element.fromDom(root), Element.fromDom(from.getNode())).map(function (blockElm) { - return Empty.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm); - }).orThunk(function () { - return Option.some(DeleteAction.moveToElement(toCefElm)); - }); - }; - var findCefPosition = function (root, forward, from) { - return CaretFinder.fromPosition(forward, root, from).bind(function (to) { - if (isCompoundElement(to.getNode())) { - return Option.none(); - } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) { - return Option.none(); - } else if (forward && NodeType.isContentEditableFalse(to.getNode())) { - return deleteEmptyBlockOrMoveToCef(root, forward, from, to); - } else if (forward === false && NodeType.isContentEditableFalse(to.getNode(true))) { - return deleteEmptyBlockOrMoveToCef(root, forward, from, to); - } else if (forward && isAfterContentEditableFalse(from)) { - return Option.some(DeleteAction.moveToPosition(to)); - } else if (forward === false && isBeforeContentEditableFalse(from)) { - return Option.some(DeleteAction.moveToPosition(to)); - } else { - return Option.none(); - } - }); - }; - var getContentEditableBlockAction = function (forward, elm) { - if (forward && NodeType.isContentEditableFalse(elm.nextSibling)) { - return Option.some(DeleteAction.moveToElement(elm.nextSibling)); - } else if (forward === false && NodeType.isContentEditableFalse(elm.previousSibling)) { - return Option.some(DeleteAction.moveToElement(elm.previousSibling)); - } else { - return Option.none(); - } - }; - var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) { - return deleteAction.fold(function (elm) { - return Option.some(DeleteAction.remove(elm)); - }, function (elm) { - return Option.some(DeleteAction.moveToElement(elm)); - }, function (to) { - if (isInSameBlock(from, to, root)) { - return Option.none(); - } else { - return Option.some(DeleteAction.moveToPosition(to)); - } - }); - }; - var getContentEditableAction = function (root, forward, from) { - if (isAtContentEditableBlockCaret(forward, from)) { - return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () { - return findCefPosition(root, forward, from); - }, Option.some); - } else { - return findCefPosition(root, forward, from).bind(function (deleteAction) { - return skipMoveToActionFromInlineCefToContent(root, from, deleteAction); - }); - } - }; - var read$2 = function (root, forward, rng) { - var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng); - var from = CaretPosition$1.fromRangeStart(normalizedRange); - var rootElement = Element.fromDom(root); - if (forward === false && isAfterContentEditableFalse(from)) { - return Option.some(DeleteAction.remove(from.getNode(true))); - } else if (forward && isBeforeContentEditableFalse(from)) { - return Option.some(DeleteAction.remove(from.getNode())); - } else if (forward === false && isBeforeContentEditableFalse(from) && isAfterBr(rootElement, from)) { - return findPreviousBr(rootElement, from).map(function (br) { - return DeleteAction.remove(br.getNode()); - }); - } else if (forward && isAfterContentEditableFalse(from) && isBeforeBr(rootElement, from)) { - return findNextBr(rootElement, from).map(function (br) { - return DeleteAction.remove(br.getNode()); - }); - } else { - return getContentEditableAction(root, forward, from); - } - }; - - var isCollapsibleWhitespace = function (c) { - return ' \f\n\r\t\x0B'.indexOf(c) !== -1; - }; - var normalizeContent = function (content, isStartOfContent, isEndOfContent) { - var result = foldl(content.split(''), function (acc, c) { - if (isCollapsibleWhitespace(c) || c === '\xA0') { - if (acc.previousCharIsSpace || acc.str === '' && isStartOfContent || acc.str.length === content.length - 1 && isEndOfContent) { - return { - previousCharIsSpace: false, - str: acc.str + '\xA0' - }; - } else { - return { - previousCharIsSpace: true, - str: acc.str + ' ' - }; - } - } else { - return { - previousCharIsSpace: false, - str: acc.str + c - }; - } - }, { - previousCharIsSpace: false, - str: '' - }); - return result.str; - }; - var normalize$1 = function (node, offset, count) { - if (count === 0) { - return; - } - var whitespace = node.data.slice(offset, offset + count); - var isEndOfContent = offset + count >= node.data.length; - var isStartOfContent = offset === 0; - node.replaceData(offset, count, normalizeContent(whitespace, isStartOfContent, isEndOfContent)); - }; - var normalizeWhitespaceAfter = function (node, offset) { - var content = node.data.slice(offset); - var whitespaceCount = content.length - lTrim(content).length; - return normalize$1(node, offset, whitespaceCount); - }; - var normalizeWhitespaceBefore = function (node, offset) { - var content = node.data.slice(0, offset); - var whitespaceCount = content.length - rTrim(content).length; - return normalize$1(node, offset - whitespaceCount, whitespaceCount); - }; - var mergeTextNodes = function (prevNode, nextNode, normalizeWhitespace) { - var whitespaceOffset = rTrim(prevNode.data).length; - prevNode.appendData(nextNode.data); - remove$1(Element.fromDom(nextNode)); - if (normalizeWhitespace) { - normalizeWhitespaceAfter(prevNode, whitespaceOffset); - } - return prevNode; - }; - - var needsReposition = function (pos, elm) { - var container = pos.container(); - var offset = pos.offset(); - return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset(); - }; - var reposition = function (elm, pos) { - return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos; - }; - var beforeOrStartOf = function (node) { - return NodeType.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node); - }; - var afterOrEndOf = function (node) { - return NodeType.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node); - }; - var getPreviousSiblingCaretPosition = function (elm) { - if (isCaretCandidate(elm.previousSibling)) { - return Option.some(afterOrEndOf(elm.previousSibling)); - } else { - return elm.previousSibling ? CaretFinder.lastPositionIn(elm.previousSibling) : Option.none(); - } - }; - var getNextSiblingCaretPosition = function (elm) { - if (isCaretCandidate(elm.nextSibling)) { - return Option.some(beforeOrStartOf(elm.nextSibling)); - } else { - return elm.nextSibling ? CaretFinder.firstPositionIn(elm.nextSibling) : Option.none(); - } - }; - var findCaretPositionBackwardsFromElm = function (rootElement, elm) { - var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode); - return CaretFinder.prevPosition(rootElement, startPosition).fold(function () { - return CaretFinder.nextPosition(rootElement, CaretPosition$1.after(elm)); - }, Option.some); - }; - var findCaretPositionForwardsFromElm = function (rootElement, elm) { - return CaretFinder.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () { - return CaretFinder.prevPosition(rootElement, CaretPosition$1.before(elm)); - }, Option.some); - }; - var findCaretPositionBackwards = function (rootElement, elm) { - return getPreviousSiblingCaretPosition(elm).orThunk(function () { - return getNextSiblingCaretPosition(elm); - }).orThunk(function () { - return findCaretPositionBackwardsFromElm(rootElement, elm); - }); - }; - var findCaretPositionForward = function (rootElement, elm) { - return getNextSiblingCaretPosition(elm).orThunk(function () { - return getPreviousSiblingCaretPosition(elm); - }).orThunk(function () { - return findCaretPositionForwardsFromElm(rootElement, elm); - }); - }; - var findCaretPosition$1 = function (forward, rootElement, elm) { - return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm); - }; - var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) { - return findCaretPosition$1(forward, rootElement, elm).map(curry(reposition, elm)); - }; - var setSelection = function (editor, forward, pos) { - pos.fold(function () { - editor.focus(); - }, function (pos) { - editor.selection.setRng(pos.toRange(), forward); - }); - }; - var eqRawNode = function (rawNode) { - return function (elm) { - return elm.dom() === rawNode; - }; - }; - var isBlock$2 = function (editor, elm) { - return elm && editor.schema.getBlockElements().hasOwnProperty(name(elm)); - }; - var paddEmptyBlock = function (elm) { - if (Empty.isEmpty(elm)) { - var br = Element.fromHtml('
        '); - empty(elm); - append(elm, br); - return Option.some(CaretPosition$1.before(br.dom())); - } else { - return Option.none(); - } - }; - var deleteNormalized = function (elm, afterDeletePosOpt, normalizeWhitespace) { - var prevTextOpt = prevSibling(elm).filter(isText); - var nextTextOpt = nextSibling(elm).filter(isText); - remove$1(elm); - return lift3(prevTextOpt, nextTextOpt, afterDeletePosOpt, function (prev, next, pos) { - var prevNode = prev.dom(), nextNode = next.dom(); - var offset = prevNode.data.length; - mergeTextNodes(prevNode, nextNode, normalizeWhitespace); - return pos.container() === nextNode ? CaretPosition$1(prevNode, offset) : pos; - }).orThunk(function () { - if (normalizeWhitespace) { - prevTextOpt.each(function (elm) { - return normalizeWhitespaceBefore(elm.dom(), elm.dom().length); - }); - nextTextOpt.each(function (elm) { - return normalizeWhitespaceAfter(elm.dom(), 0); - }); - } - return afterDeletePosOpt; - }); - }; - var isInlineElement = function (editor, element) { - return has(editor.schema.getTextInlineElements(), name(element)); - }; - var deleteElement = function (editor, forward, elm, moveCaret) { - if (moveCaret === void 0) { - moveCaret = true; - } - var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom()); - var parentBlock = ancestor(elm, curry(isBlock$2, editor), eqRawNode(editor.getBody())); - var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos, isInlineElement(editor, elm)); - if (editor.dom.isEmpty(editor.getBody())) { - editor.setContent(''); - editor.selection.setCursorLocation(); - } else { - parentBlock.bind(paddEmptyBlock).fold(function () { - if (moveCaret) { - setSelection(editor, forward, normalizedAfterDeletePos); - } - }, function (paddPos) { - if (moveCaret) { - setSelection(editor, forward, Option.some(paddPos)); - } - }); - } - }; - var DeleteElement = { deleteElement: deleteElement }; - - var deleteElement$1 = function (editor, forward) { - return function (element) { - editor._selectionOverrides.hideFakeCaret(); - DeleteElement.deleteElement(editor, forward, Element.fromDom(element)); - return true; - }; - }; - var moveToElement = function (editor, forward) { - return function (element) { - var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element); - editor.selection.setRng(pos.toRange()); - return true; - }; - }; - var moveToPosition = function (editor) { - return function (pos) { - editor.selection.setRng(pos.toRange()); - return true; - }; - }; - var backspaceDeleteCaret = function (editor, forward) { - var result = read$2(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) { - return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor)); - }); - return result.getOr(false); - }; - var deleteOffscreenSelection = function (rootElement) { - each(descendants$1(rootElement, '.mce-offscreen-selection'), remove$1); - }; - var backspaceDeleteRange = function (editor, forward) { - var selectedElement = editor.selection.getNode(); - if (NodeType.isContentEditableFalse(selectedElement)) { - deleteOffscreenSelection(Element.fromDom(editor.getBody())); - DeleteElement.deleteElement(editor, forward, Element.fromDom(editor.selection.getNode())); - DeleteUtils.paddEmptyBody(editor); - return true; - } else { - return false; - } - }; - var getContentEditableRoot = function (root, node) { - while (node && node !== root) { - if (NodeType.isContentEditableTrue(node) || NodeType.isContentEditableFalse(node)) { - return node; - } - node = node.parentNode; - } - return null; - }; - var paddEmptyElement = function (editor) { - var br; - var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode()); - if (NodeType.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) { - br = editor.dom.create('br', { 'data-mce-bogus': '1' }); - editor.dom.setHTML(ceRoot, ''); - ceRoot.appendChild(br); - editor.selection.setRng(CaretPosition$1.before(br).toRange()); - } - return true; - }; - var backspaceDelete$2 = function (editor, forward) { - if (editor.selection.isCollapsed()) { - return backspaceDeleteCaret(editor, forward); - } else { - return backspaceDeleteRange(editor, forward); - } - }; - var CefDelete = { - backspaceDelete: backspaceDelete$2, - paddEmptyElement: paddEmptyElement - }; - - var isText$8 = NodeType.isText; - var startsWithCaretContainer$1 = function (node) { - return isText$8(node) && node.data[0] === Zwsp.ZWSP; - }; - var endsWithCaretContainer$1 = function (node) { - return isText$8(node) && node.data[node.data.length - 1] === Zwsp.ZWSP; - }; - var createZwsp = function (node) { - return node.ownerDocument.createTextNode(Zwsp.ZWSP); - }; - var insertBefore$1 = function (node) { - if (isText$8(node.previousSibling)) { - if (endsWithCaretContainer$1(node.previousSibling)) { - return node.previousSibling; - } else { - node.previousSibling.appendData(Zwsp.ZWSP); - return node.previousSibling; - } - } else if (isText$8(node)) { - if (startsWithCaretContainer$1(node)) { - return node; - } else { - node.insertData(0, Zwsp.ZWSP); - return node; - } - } else { - var newNode = createZwsp(node); - node.parentNode.insertBefore(newNode, node); - return newNode; - } - }; - var insertAfter$1 = function (node) { - if (isText$8(node.nextSibling)) { - if (startsWithCaretContainer$1(node.nextSibling)) { - return node.nextSibling; - } else { - node.nextSibling.insertData(0, Zwsp.ZWSP); - return node.nextSibling; - } - } else if (isText$8(node)) { - if (endsWithCaretContainer$1(node)) { - return node; - } else { - node.appendData(Zwsp.ZWSP); - return node; - } - } else { - var newNode = createZwsp(node); - if (node.nextSibling) { - node.parentNode.insertBefore(newNode, node.nextSibling); - } else { - node.parentNode.appendChild(newNode); - } - return newNode; - } - }; - var insertInline$1 = function (before, node) { - return before ? insertBefore$1(node) : insertAfter$1(node); - }; - var insertInlineBefore = curry(insertInline$1, true); - var insertInlineAfter = curry(insertInline$1, false); - - var insertInlinePos = function (pos, before) { - if (NodeType.isText(pos.container())) { - return insertInline$1(before, pos.container()); - } else { - return insertInline$1(before, pos.getNode()); - } - }; - var isPosCaretContainer = function (pos, caret) { - var caretNode = caret.get(); - return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode); - }; - var renderCaret = function (caret, location) { - return location.fold(function (element) { - CaretContainerRemove.remove(caret.get()); - var text = insertInlineBefore(element); - caret.set(text); - return Option.some(CaretPosition$1(text, text.length - 1)); - }, function (element) { - return CaretFinder.firstPositionIn(element).map(function (pos) { - if (!isPosCaretContainer(pos, caret)) { - CaretContainerRemove.remove(caret.get()); - var text = insertInlinePos(pos, true); - caret.set(text); - return CaretPosition$1(text, 1); - } else { - return CaretPosition$1(caret.get(), 1); - } - }); - }, function (element) { - return CaretFinder.lastPositionIn(element).map(function (pos) { - if (!isPosCaretContainer(pos, caret)) { - CaretContainerRemove.remove(caret.get()); - var text = insertInlinePos(pos, false); - caret.set(text); - return CaretPosition$1(text, text.length - 1); - } else { - return CaretPosition$1(caret.get(), caret.get().length - 1); - } - }); - }, function (element) { - CaretContainerRemove.remove(caret.get()); - var text = insertInlineAfter(element); - caret.set(text); - return Option.some(CaretPosition$1(text, 1)); - }); - }; - var BoundaryCaret = { renderCaret: renderCaret }; - - var evaluateUntil = function (fns, args) { - for (var i = 0; i < fns.length; i++) { - var result = fns[i].apply(null, args); - if (result.isSome()) { - return result; - } - } - return Option.none(); - }; - var LazyEvaluator = { evaluateUntil: evaluateUntil }; - - var Location = Adt.generate([ - { before: ['element'] }, - { start: ['element'] }, - { end: ['element'] }, - { after: ['element'] } - ]); - var rescope = function (rootNode, node) { - var parentBlock = getParentBlock(node, rootNode); - return parentBlock ? parentBlock : rootNode; - }; - var before$3 = function (isInlineTarget, rootNode, pos) { - var nPos = InlineUtils.normalizeForwards(pos); - var scope = rescope(rootNode, nPos.container()); - return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () { - return CaretFinder.nextPosition(scope, nPos).bind(curry(InlineUtils.findRootInline, isInlineTarget, scope)).map(function (inline) { - return Location.before(inline); - }); - }, Option.none); - }; - var isNotInsideFormatCaretContainer = function (rootNode, elm) { - return getParentCaretContainer(rootNode, elm) === null; - }; - var findInsideRootInline = function (isInlineTarget, rootNode, pos) { - return InlineUtils.findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode)); - }; - var start = function (isInlineTarget, rootNode, pos) { - var nPos = InlineUtils.normalizeBackwards(pos); - return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { - var prevPos = CaretFinder.prevPosition(inline, nPos); - return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none(); - }); - }; - var end = function (isInlineTarget, rootNode, pos) { - var nPos = InlineUtils.normalizeForwards(pos); - return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { - var nextPos = CaretFinder.nextPosition(inline, nPos); - return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none(); - }); - }; - var after$2 = function (isInlineTarget, rootNode, pos) { - var nPos = InlineUtils.normalizeBackwards(pos); - var scope = rescope(rootNode, nPos.container()); - return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () { - return CaretFinder.prevPosition(scope, nPos).bind(curry(InlineUtils.findRootInline, isInlineTarget, scope)).map(function (inline) { - return Location.after(inline); - }); - }, Option.none); - }; - var isValidLocation = function (location) { - return InlineUtils.isRtl(getElement(location)) === false; - }; - var readLocation = function (isInlineTarget, rootNode, pos) { - var location = LazyEvaluator.evaluateUntil([ - before$3, - start, - end, - after$2 - ], [ - isInlineTarget, - rootNode, - pos - ]); - return location.filter(isValidLocation); - }; - var getElement = function (location) { - return location.fold(identity, identity, identity, identity); - }; - var getName = function (location) { - return location.fold(constant('before'), constant('start'), constant('end'), constant('after')); - }; - var outside = function (location) { - return location.fold(Location.before, Location.before, Location.after, Location.after); - }; - var inside = function (location) { - return location.fold(Location.start, Location.start, Location.end, Location.end); - }; - var isEq$1 = function (location1, location2) { - return getName(location1) === getName(location2) && getElement(location1) === getElement(location2); - }; - var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) { - return lift2(InlineUtils.findRootInline(isInlineTarget, rootNode, from), InlineUtils.findRootInline(isInlineTarget, rootNode, to), function (fromInline, toInline) { - if (fromInline !== toInline && InlineUtils.hasSameParentBlock(rootNode, fromInline, toInline)) { - return Location.after(forward ? fromInline : toInline); - } else { - return location; - } - }).getOr(location); - }; - var skipNoMovement = function (fromLocation, toLocation) { - return fromLocation.fold(constant(true), function (fromLocation) { - return !isEq$1(fromLocation, toLocation); - }); - }; - var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) { - var from = InlineUtils.normalizePosition(forward, pos); - var to = CaretFinder.fromPosition(forward, rootNode, from).map(curry(InlineUtils.normalizePosition, forward)); - var location = to.fold(function () { - return fromLocation.map(outside); - }, function (to) { - return readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation)); - }); - return location.filter(isValidLocation); - }; - var findLocationSimple = function (forward, location) { - if (forward) { - return location.fold(compose(Option.some, Location.start), Option.none, compose(Option.some, Location.after), Option.none); - } else { - return location.fold(Option.none, compose(Option.some, Location.before), Option.none, compose(Option.some, Location.end)); - } - }; - var findLocation = function (forward, isInlineTarget, rootNode, pos) { - var from = InlineUtils.normalizePosition(forward, pos); - var fromLocation = readLocation(isInlineTarget, rootNode, from); - return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(function () { - return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos); - }); - }; - var BoundaryLocation = { - readLocation: readLocation, - findLocation: findLocation, - prevLocation: curry(findLocation, false), - nextLocation: curry(findLocation, true), - getElement: getElement, - outside: outside, - inside: inside - }; - - var hasSelectionModifyApi = function (editor) { - return isFunction(editor.selection.getSel().modify); - }; - var moveRel = function (forward, selection, pos) { - var delta = forward ? 1 : -1; - selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange()); - selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word'); - return true; - }; - var moveByWord = function (forward, editor) { - var rng = editor.selection.getRng(); - var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng); - if (!hasSelectionModifyApi(editor)) { - return false; - } else if (forward && isBeforeInline(pos)) { - return moveRel(true, editor.selection, pos); - } else if (!forward && isAfterInline(pos)) { - return moveRel(false, editor.selection, pos); - } else { - return false; - } - }; - var WordSelection = { - hasSelectionModifyApi: hasSelectionModifyApi, - moveByWord: moveByWord - }; - - var setCaretPosition = function (editor, pos) { - var rng = editor.dom.createRng(); - rng.setStart(pos.container(), pos.offset()); - rng.setEnd(pos.container(), pos.offset()); - editor.selection.setRng(rng); - }; - var isFeatureEnabled = function (editor) { - return editor.settings.inline_boundaries !== false; - }; - var setSelected = function (state, elm) { - if (state) { - elm.setAttribute('data-mce-selected', 'inline-boundary'); - } else { - elm.removeAttribute('data-mce-selected'); - } - }; - var renderCaretLocation = function (editor, caret, location) { - return BoundaryCaret.renderCaret(caret, location).map(function (pos) { - setCaretPosition(editor, pos); - return location; - }); - }; - var findLocation$1 = function (editor, caret, forward) { - var rootNode = editor.getBody(); - var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - var isInlineTarget = curry(InlineUtils.isInlineTarget, editor); - var location = BoundaryLocation.findLocation(forward, isInlineTarget, rootNode, from); - return location.bind(function (location) { - return renderCaretLocation(editor, caret, location); - }); - }; - var toggleInlines = function (isInlineTarget, dom, elms) { - var selectedInlines = filter(dom.select('*[data-mce-selected="inline-boundary"]'), isInlineTarget); - var targetInlines = filter(elms, isInlineTarget); - each(difference(selectedInlines, targetInlines), curry(setSelected, false)); - each(difference(targetInlines, selectedInlines), curry(setSelected, true)); - }; - var safeRemoveCaretContainer = function (editor, caret) { - if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) { - var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - if (CaretPosition$1.isTextPosition(pos) && InlineUtils.isAtZwsp(pos) === false) { - setCaretPosition(editor, CaretContainerRemove.removeAndReposition(caret.get(), pos)); - caret.set(null); - } - } - }; - var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) { - if (editor.selection.isCollapsed()) { - var inlines = filter(elms, isInlineTarget); - each(inlines, function (inline) { - var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) { - return renderCaretLocation(editor, caret, location); - }); - }); - } - }; - var move = function (editor, caret, forward) { - return function () { - return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false; - }; - }; - var moveWord = function (forward, editor, caret) { - return function () { - return isFeatureEnabled(editor) ? WordSelection.moveByWord(forward, editor) : false; - }; - }; - var setupSelectedState = function (editor) { - var caret = Cell(null); - var isInlineTarget = curry(InlineUtils.isInlineTarget, editor); - editor.on('NodeChange', function (e) { - if (isFeatureEnabled(editor)) { - toggleInlines(isInlineTarget, editor.dom, e.parents); - safeRemoveCaretContainer(editor, caret); - renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents); - } - }); - return caret; - }; - var moveNextWord = curry(moveWord, true); - var movePrevWord = curry(moveWord, false); - var BoundarySelection = { - move: move, - moveNextWord: moveNextWord, - movePrevWord: movePrevWord, - setupSelectedState: setupSelectedState, - setCaretPosition: setCaretPosition - }; - - var isFeatureEnabled$1 = function (editor) { - return editor.settings.inline_boundaries !== false; - }; - var rangeFromPositions = function (from, to) { - var range = domGlobals.document.createRange(); - range.setStart(from.container(), from.offset()); - range.setEnd(to.container(), to.offset()); - return range; - }; - var hasOnlyTwoOrLessPositionsLeft = function (elm) { - return lift2(CaretFinder.firstPositionIn(elm), CaretFinder.lastPositionIn(elm), function (firstPos, lastPos) { - var normalizedFirstPos = InlineUtils.normalizePosition(true, firstPos); - var normalizedLastPos = InlineUtils.normalizePosition(false, lastPos); - return CaretFinder.nextPosition(elm, normalizedFirstPos).map(function (pos) { - return pos.isEqual(normalizedLastPos); - }).getOr(true); - }).getOr(true); - }; - var setCaretLocation = function (editor, caret) { - return function (location) { - return BoundaryCaret.renderCaret(caret, location).map(function (pos) { - BoundarySelection.setCaretPosition(editor, pos); - return true; - }).getOr(false); - }; - }; - var deleteFromTo = function (editor, caret, from, to) { - var rootNode = editor.getBody(); - var isInlineTarget = curry(InlineUtils.isInlineTarget, editor); - editor.undoManager.ignore(function () { - editor.selection.setRng(rangeFromPositions(from, to)); - editor.execCommand('Delete'); - BoundaryLocation.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map(BoundaryLocation.inside).map(setCaretLocation(editor, caret)); - }); - editor.nodeChanged(); - }; - var rescope$1 = function (rootNode, node) { - var parentBlock = getParentBlock(node, rootNode); - return parentBlock ? parentBlock : rootNode; - }; - var backspaceDeleteCollapsed = function (editor, caret, forward, from) { - var rootNode = rescope$1(editor.getBody(), from.container()); - var isInlineTarget = curry(InlineUtils.isInlineTarget, editor); - var fromLocation = BoundaryLocation.readLocation(isInlineTarget, rootNode, from); - return fromLocation.bind(function (location) { - if (forward) { - return location.fold(constant(Option.some(BoundaryLocation.inside(location))), Option.none, constant(Option.some(BoundaryLocation.outside(location))), Option.none); - } else { - return location.fold(Option.none, constant(Option.some(BoundaryLocation.outside(location))), Option.none, constant(Option.some(BoundaryLocation.inside(location)))); - } - }).map(setCaretLocation(editor, caret)).getOrThunk(function () { - var toPosition = CaretFinder.navigate(forward, rootNode, from); - var toLocation = toPosition.bind(function (pos) { - return BoundaryLocation.readLocation(isInlineTarget, rootNode, pos); - }); - if (fromLocation.isSome() && toLocation.isSome()) { - return InlineUtils.findRootInline(isInlineTarget, rootNode, from).map(function (elm) { - if (hasOnlyTwoOrLessPositionsLeft(elm)) { - DeleteElement.deleteElement(editor, forward, Element.fromDom(elm)); - return true; - } else { - return false; - } - }).getOr(false); - } else { - return toLocation.bind(function (_) { - return toPosition.map(function (to) { - if (forward) { - deleteFromTo(editor, caret, from, to); - } else { - deleteFromTo(editor, caret, to, from); - } - return true; - }); - }).getOr(false); - } - }); - }; - var backspaceDelete$3 = function (editor, caret, forward) { - if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) { - var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - return backspaceDeleteCollapsed(editor, caret, forward, from); - } - return false; - }; - var InlineBoundaryDelete = { backspaceDelete: backspaceDelete$3 }; - - var tableCellRng = Immutable('start', 'end'); - var tableSelection = Immutable('rng', 'table', 'cells'); - var deleteAction = Adt.generate([ - { removeTable: ['element'] }, - { emptyCells: ['cells'] } - ]); - var isRootFromElement = function (root) { - return curry(eq, root); - }; - var getClosestCell = function (container, isRoot) { - return closest$1(Element.fromDom(container), 'td,th', isRoot); - }; - var getClosestTable = function (cell, isRoot) { - return ancestor$1(cell, 'table', isRoot); - }; - var isExpandedCellRng = function (cellRng) { - return eq(cellRng.start(), cellRng.end()) === false; - }; - var getTableFromCellRng = function (cellRng, isRoot) { - return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) { - return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) { - return eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none(); - }); - }); - }; - var getTableCells = function (table) { - return descendants$1(table, 'td,th'); - }; - var getCellRangeFromStartTable = function (cellRng, isRoot) { - return getClosestTable(cellRng.start(), isRoot).bind(function (table) { - return last(getTableCells(table)).map(function (endCell) { - return tableCellRng(cellRng.start(), endCell); - }); - }); - }; - var partialSelection = function (isRoot, rng) { - var startCell = getClosestCell(rng.startContainer, isRoot); - var endCell = getClosestCell(rng.endContainer, isRoot); - return rng.collapsed ? Option.none() : lift2(startCell, endCell, tableCellRng).fold(function () { - return startCell.fold(function () { - return endCell.bind(function (endCell) { - return getClosestTable(endCell, isRoot).bind(function (table) { - return head(getTableCells(table)).map(function (startCell) { - return tableCellRng(startCell, endCell); - }); - }); - }); - }, function (startCell) { - return getClosestTable(startCell, isRoot).bind(function (table) { - return last(getTableCells(table)).map(function (endCell) { - return tableCellRng(startCell, endCell); - }); - }); - }); - }, function (cellRng) { - return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot); - }); - }; - var isWithinSameTable = function (isRoot, cellRng) { - return getTableFromCellRng(cellRng, isRoot).isSome(); - }; - var getCellRng = function (rng, isRoot) { - var startCell = getClosestCell(rng.startContainer, isRoot); - var endCell = getClosestCell(rng.endContainer, isRoot); - return lift2(startCell, endCell, tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) { - return isWithinSameTable(isRoot, cellRng); - }).orThunk(function () { - return partialSelection(isRoot, rng); - }); - }; - var getTableSelectionFromCellRng = function (cellRng, isRoot) { - return getTableFromCellRng(cellRng, isRoot).map(function (table) { - return tableSelection(cellRng, table, getTableCells(table)); - }); - }; - var getTableSelectionFromRng = function (root, rng) { - var isRoot = isRootFromElement(root); - return getCellRng(rng, isRoot).bind(function (cellRng) { - return getTableSelectionFromCellRng(cellRng, isRoot); - }); - }; - var getCellIndex = function (cells, cell) { - return findIndex(cells, function (x) { - return eq(x, cell); - }); - }; - var getSelectedCells = function (tableSelection) { - return lift2(getCellIndex(tableSelection.cells(), tableSelection.rng().start()), getCellIndex(tableSelection.cells(), tableSelection.rng().end()), function (startIndex, endIndex) { - return tableSelection.cells().slice(startIndex, endIndex + 1); - }); - }; - var getAction = function (tableSelection) { - return getSelectedCells(tableSelection).map(function (selected) { - var cells = tableSelection.cells(); - return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected); - }); - }; - var getActionFromCells = function (cells) { - return deleteAction.emptyCells(cells); - }; - var getActionFromRange = function (root, rng) { - return getTableSelectionFromRng(root, rng).bind(getAction); - }; - var TableDeleteAction = { - getActionFromRange: getActionFromRange, - getActionFromCells: getActionFromCells - }; - - var getRanges = function (selection) { - var ranges = []; - if (selection) { - for (var i = 0; i < selection.rangeCount; i++) { - ranges.push(selection.getRangeAt(i)); - } - } - return ranges; - }; - var getSelectedNodes = function (ranges) { - return bind(ranges, function (range) { - var node = getSelectedNode(range); - return node ? [Element.fromDom(node)] : []; - }); - }; - var hasMultipleRanges = function (selection) { - return getRanges(selection).length > 1; - }; - var MultiRange = { - getRanges: getRanges, - getSelectedNodes: getSelectedNodes, - hasMultipleRanges: hasMultipleRanges - }; - - var getCellsFromRanges = function (ranges) { - return filter(MultiRange.getSelectedNodes(ranges), isTableCell); - }; - var getCellsFromElement = function (elm) { - var selectedCells = descendants$1(elm, 'td[data-mce-selected],th[data-mce-selected]'); - return selectedCells; - }; - var getCellsFromElementOrRanges = function (ranges, element) { - var selectedCells = getCellsFromElement(element); - var rangeCells = getCellsFromRanges(ranges); - return selectedCells.length > 0 ? selectedCells : rangeCells; - }; - var getCellsFromEditor = function (editor) { - return getCellsFromElementOrRanges(MultiRange.getRanges(editor.selection.getSel()), Element.fromDom(editor.getBody())); - }; - var TableCellSelection = { - getCellsFromRanges: getCellsFromRanges, - getCellsFromElement: getCellsFromElement, - getCellsFromElementOrRanges: getCellsFromElementOrRanges, - getCellsFromEditor: getCellsFromEditor - }; - - var emptyCells = function (editor, cells) { - each(cells, PaddingBr.fillWithPaddingBr); - editor.selection.setCursorLocation(cells[0].dom(), 0); - return true; - }; - var deleteTableElement = function (editor, table) { - DeleteElement.deleteElement(editor, false, table); - return true; - }; - var deleteCellRange = function (editor, rootElm, rng) { - return TableDeleteAction.getActionFromRange(rootElm, rng).map(function (action) { - return action.fold(curry(deleteTableElement, editor), curry(emptyCells, editor)); - }); - }; - var deleteCaptionRange = function (editor, caption) { - return emptyElement(editor, caption); - }; - var deleteTableRange = function (editor, rootElm, rng, startElm) { - return getParentCaption(rootElm, startElm).fold(function () { - return deleteCellRange(editor, rootElm, rng); - }, function (caption) { - return deleteCaptionRange(editor, caption); - }).getOr(false); - }; - var deleteRange$1 = function (editor, startElm) { - var rootNode = Element.fromDom(editor.getBody()); - var rng = editor.selection.getRng(); - var selectedCells = TableCellSelection.getCellsFromEditor(editor); - return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm); - }; - var getParentCell = function (rootElm, elm) { - return find(Parents.parentsAndSelf(elm, rootElm), isTableCell); - }; - var getParentCaption = function (rootElm, elm) { - return find(Parents.parentsAndSelf(elm, rootElm), function (elm) { - return name(elm) === 'caption'; - }); - }; - var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) { - return CaretFinder.navigate(forward, editor.getBody(), from).bind(function (to) { - return getParentCell(rootElm, Element.fromDom(to.getNode())).map(function (toCell) { - return eq(toCell, fromCell) === false; - }); - }); - }; - var emptyElement = function (editor, elm) { - PaddingBr.fillWithPaddingBr(elm); - editor.selection.setCursorLocation(elm.dom(), 0); - return Option.some(true); - }; - var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) { - return CaretFinder.firstPositionIn(fromCaption.dom()).bind(function (first) { - return CaretFinder.lastPositionIn(fromCaption.dom()).map(function (last) { - return forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first); - }); - }).getOr(true); - }; - var emptyCaretCaption = function (editor, elm) { - return emptyElement(editor, elm); - }; - var validateCaretCaption = function (rootElm, fromCaption, to) { - return getParentCaption(rootElm, Element.fromDom(to.getNode())).map(function (toCaption) { - return eq(toCaption, fromCaption) === false; - }); - }; - var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) { - return CaretFinder.navigate(forward, editor.getBody(), from).bind(function (to) { - return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to); - }).or(Option.some(true)); - }; - var deleteCaretCells = function (editor, forward, rootElm, startElm) { - var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - return getParentCell(rootElm, startElm).bind(function (fromCell) { - return Empty.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from); - }); - }; - var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) { - var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - return Empty.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from); - }; - var deleteCaret = function (editor, forward, startElm) { - var rootElm = Element.fromDom(editor.getBody()); - return getParentCaption(rootElm, startElm).fold(function () { - return deleteCaretCells(editor, forward, rootElm, startElm); - }, function (fromCaption) { - return deleteCaretCaption(editor, forward, rootElm, fromCaption); - }).getOr(false); - }; - var backspaceDelete$4 = function (editor, forward) { - var startElm = Element.fromDom(editor.selection.getStart(true)); - var cells = TableCellSelection.getCellsFromEditor(editor); - return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm); - }; - var TableDelete = { backspaceDelete: backspaceDelete$4 }; - - var isEq$2 = FormatUtils.isEq; - var matchesUnInheritedFormatSelector = function (ed, node, name) { - var formatList = ed.formatter.get(name); - if (formatList) { - for (var i = 0; i < formatList.length; i++) { - if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) { - return true; - } - } - } - return false; - }; - var matchParents = function (editor, node, name, vars) { - var root = editor.dom.getRoot(); - if (node === root) { - return false; - } - node = editor.dom.getParent(node, function (node) { - if (matchesUnInheritedFormatSelector(editor, node, name)) { - return true; - } - return node.parentNode === root || !!matchNode(editor, node, name, vars, true); - }); - return matchNode(editor, node, name, vars); - }; - var matchName = function (dom, node, format) { - if (isEq$2(node, format.inline)) { - return true; - } - if (isEq$2(node, format.block)) { - return true; - } - if (format.selector) { - return node.nodeType === 1 && dom.is(node, format.selector); - } - }; - var matchItems = function (dom, node, format, itemName, similar, vars) { - var key, value; - var items = format[itemName]; - var i; - if (format.onmatch) { - return format.onmatch(node, format, itemName); - } - if (items) { - if (typeof items.length === 'undefined') { - for (key in items) { - if (items.hasOwnProperty(key)) { - if (itemName === 'attributes') { - value = dom.getAttrib(node, key); - } else { - value = FormatUtils.getStyle(dom, node, key); - } - if (similar && !value && !format.exact) { - return; - } - if ((!similar || format.exact) && !isEq$2(value, FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(items[key], vars), key))) { - return; - } - } - } - } else { - for (i = 0; i < items.length; i++) { - if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : FormatUtils.getStyle(dom, node, items[i])) { - return format; - } - } - } - } - return format; - }; - var matchNode = function (ed, node, name, vars, similar) { - var formatList = ed.formatter.get(name); - var format, i, x, classes; - var dom = ed.dom; - if (formatList && node) { - for (i = 0; i < formatList.length; i++) { - format = formatList[i]; - if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) { - if (classes = format.classes) { - for (x = 0; x < classes.length; x++) { - if (!ed.dom.hasClass(node, classes[x])) { - return; - } - } - } - return format; - } - } - } - }; - var match = function (editor, name, vars, node) { - var startNode; - if (node) { - return matchParents(editor, node, name, vars); - } - node = editor.selection.getNode(); - if (matchParents(editor, node, name, vars)) { - return true; - } - startNode = editor.selection.getStart(); - if (startNode !== node) { - if (matchParents(editor, startNode, name, vars)) { - return true; - } - } - return false; - }; - var matchAll = function (editor, names, vars) { - var startElement; - var matchedFormatNames = []; - var checkedMap = {}; - startElement = editor.selection.getStart(); - editor.dom.getParent(startElement, function (node) { - var i, name; - for (i = 0; i < names.length; i++) { - name = names[i]; - if (!checkedMap[name] && matchNode(editor, node, name, vars)) { - checkedMap[name] = true; - matchedFormatNames.push(name); - } - } - }, editor.dom.getRoot()); - return matchedFormatNames; - }; - var canApply = function (editor, name) { - var formatList = editor.formatter.get(name); - var startNode, parents, i, x, selector; - var dom = editor.dom; - if (formatList) { - startNode = editor.selection.getStart(); - parents = FormatUtils.getParents(dom, startNode); - for (x = formatList.length - 1; x >= 0; x--) { - selector = formatList[x].selector; - if (!selector || formatList[x].defaultBlock) { - return true; - } - for (i = parents.length - 1; i >= 0; i--) { - if (dom.is(parents[i], selector)) { - return true; - } - } - } - } - return false; - }; - var MatchFormat = { - matchNode: matchNode, - matchName: matchName, - match: match, - matchAll: matchAll, - canApply: canApply, - matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector - }; - - var splitText = function (node, offset) { - return node.splitText(offset); - }; - var split$1 = function (rng) { - var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; - if (startContainer === endContainer && NodeType.isText(startContainer)) { - if (startOffset > 0 && startOffset < startContainer.nodeValue.length) { - endContainer = splitText(startContainer, startOffset); - startContainer = endContainer.previousSibling; - if (endOffset > startOffset) { - endOffset = endOffset - startOffset; - startContainer = endContainer = splitText(endContainer, endOffset).previousSibling; - endOffset = endContainer.nodeValue.length; - startOffset = 0; - } else { - endOffset = 0; - } - } - } else { - if (NodeType.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) { - startContainer = splitText(startContainer, startOffset); - startOffset = 0; - } - if (NodeType.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) { - endContainer = splitText(endContainer, endOffset).previousSibling; - endOffset = endContainer.nodeValue.length; - } - } - return { - startContainer: startContainer, - startOffset: startOffset, - endContainer: endContainer, - endOffset: endOffset - }; - }; - var SplitRange = { split: split$1 }; - - var ZWSP$1 = Zwsp.ZWSP, CARET_ID$1 = '_mce_caret'; - var importNode = function (ownerDocument, node) { - return ownerDocument.importNode(node, true); - }; - var getEmptyCaretContainers = function (node) { - var nodes = []; - while (node) { - if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) { - return []; - } - if (node.nodeType === 1) { - nodes.push(node); - } - node = node.firstChild; - } - return nodes; - }; - var isCaretContainerEmpty = function (node) { - return getEmptyCaretContainers(node).length > 0; - }; - var findFirstTextNode = function (node) { - var walker; - if (node) { - walker = new TreeWalker(node, node); - for (node = walker.current(); node; node = walker.next()) { - if (node.nodeType === 3) { - return node; - } - } - } - return null; - }; - var createCaretContainer = function (fill) { - var caretContainer = Element.fromTag('span'); - setAll(caretContainer, { - 'id': CARET_ID$1, - 'data-mce-bogus': '1', - 'data-mce-type': 'format-caret' - }); - if (fill) { - append(caretContainer, Element.fromText(ZWSP$1)); - } - return caretContainer; - }; - var trimZwspFromCaretContainer = function (caretContainerNode) { - var textNode = findFirstTextNode(caretContainerNode); - if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) { - textNode.deleteData(0, 1); - } - return textNode; - }; - var removeCaretContainerNode = function (editor, node, moveCaret) { - if (moveCaret === void 0) { - moveCaret = true; - } - var dom = editor.dom, selection = editor.selection; - if (isCaretContainerEmpty(node)) { - DeleteElement.deleteElement(editor, false, Element.fromDom(node), moveCaret); - } else { - var rng = selection.getRng(); - var block = dom.getParent(node, dom.isBlock); - var textNode = trimZwspFromCaretContainer(node); - if (rng.startContainer === textNode && rng.startOffset > 0) { - rng.setStart(textNode, rng.startOffset - 1); - } - if (rng.endContainer === textNode && rng.endOffset > 0) { - rng.setEnd(textNode, rng.endOffset - 1); - } - dom.remove(node, true); - if (block && dom.isEmpty(block)) { - PaddingBr.fillWithPaddingBr(Element.fromDom(block)); - } - selection.setRng(rng); - } - }; - var removeCaretContainer = function (editor, node, moveCaret) { - if (moveCaret === void 0) { - moveCaret = true; - } - var dom = editor.dom, selection = editor.selection; - if (!node) { - node = getParentCaretContainer(editor.getBody(), selection.getStart()); - if (!node) { - while (node = dom.get(CARET_ID$1)) { - removeCaretContainerNode(editor, node, false); - } - } - } else { - removeCaretContainerNode(editor, node, moveCaret); - } - }; - var insertCaretContainerNode = function (editor, caretContainer, formatNode) { - var dom = editor.dom, block = dom.getParent(formatNode, curry(FormatUtils.isTextBlock, editor)); - if (block && dom.isEmpty(block)) { - formatNode.parentNode.replaceChild(caretContainer, formatNode); - } else { - PaddingBr.removeTrailingBr(Element.fromDom(formatNode)); - if (dom.isEmpty(formatNode)) { - formatNode.parentNode.replaceChild(caretContainer, formatNode); - } else { - dom.insertAfter(caretContainer, formatNode); - } - } - }; - var appendNode = function (parentNode, node) { - parentNode.appendChild(node); - return node; - }; - var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) { - var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) { - return appendNode(parentNode, formatNode.cloneNode(false)); - }, caretContainer); - return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1)); - }; - var applyCaretFormat = function (editor, name, vars) { - var rng, caretContainer, textNode, offset, bookmark, container, text; - var selection = editor.selection; - rng = selection.getRng(true); - offset = rng.startOffset; - container = rng.startContainer; - text = container.nodeValue; - caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart()); - if (caretContainer) { - textNode = findFirstTextNode(caretContainer); - } - var wordcharRegex = /[^\s\u00a0\u00ad\u200b\ufeff]/; - if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) { - bookmark = selection.getBookmark(); - rng.collapse(true); - rng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name)); - rng = SplitRange.split(rng); - editor.formatter.apply(name, vars, rng); - selection.moveToBookmark(bookmark); - } else { - if (!caretContainer || textNode.nodeValue !== ZWSP$1) { - caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom()); - textNode = caretContainer.firstChild; - rng.insertNode(caretContainer); - offset = 1; - editor.formatter.apply(name, vars, caretContainer); - } else { - editor.formatter.apply(name, vars, caretContainer); - } - selection.setCursorLocation(textNode, offset); - } - }; - var removeCaretFormat = function (editor, name, vars, similar) { - var dom = editor.dom, selection = editor.selection; - var container, offset, bookmark; - var hasContentAfter, node, formatNode; - var parents = [], rng = selection.getRng(); - var caretContainer; - container = rng.startContainer; - offset = rng.startOffset; - node = container; - if (container.nodeType === 3) { - if (offset !== container.nodeValue.length) { - hasContentAfter = true; - } - node = node.parentNode; - } - while (node) { - if (MatchFormat.matchNode(editor, node, name, vars, similar)) { - formatNode = node; - break; - } - if (node.nextSibling) { - hasContentAfter = true; - } - parents.push(node); - node = node.parentNode; - } - if (!formatNode) { - return; - } - if (hasContentAfter) { - bookmark = selection.getBookmark(); - rng.collapse(true); - var expandedRng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name), true); - expandedRng = SplitRange.split(expandedRng); - editor.formatter.remove(name, vars, expandedRng); - selection.moveToBookmark(bookmark); - } else { - caretContainer = getParentCaretContainer(editor.getBody(), formatNode); - var newCaretContainer = createCaretContainer(false).dom(); - var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer); - if (caretContainer) { - insertCaretContainerNode(editor, newCaretContainer, caretContainer); - } else { - insertCaretContainerNode(editor, newCaretContainer, formatNode); - } - removeCaretContainerNode(editor, caretContainer, false); - selection.setCursorLocation(caretNode, 1); - if (dom.isEmpty(formatNode)) { - dom.remove(formatNode); - } - } - }; - var disableCaretContainer = function (editor, keyCode) { - var selection = editor.selection, body = editor.getBody(); - removeCaretContainer(editor, null, false); - if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) { - removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart())); - } - if (keyCode === 37 || keyCode === 39) { - removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart())); - } - }; - var setup$2 = function (editor) { - editor.on('mouseup keydown', function (e) { - disableCaretContainer(editor, e.keyCode); - }); - }; - var replaceWithCaretFormat = function (targetNode, formatNodes) { - var caretContainer = createCaretContainer(false); - var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom()); - before(Element.fromDom(targetNode), caretContainer); - remove$1(Element.fromDom(targetNode)); - return CaretPosition$1(innerMost, 0); - }; - var isFormatElement = function (editor, element) { - var inlineElements = editor.schema.getTextInlineElements(); - return inlineElements.hasOwnProperty(name(element)) && !isCaretNode(element.dom()) && !NodeType.isBogus(element.dom()); - }; - var isEmptyCaretFormatElement = function (element) { - return isCaretNode(element.dom()) && isCaretContainerEmpty(element.dom()); - }; - - var getParentInlines = function (rootElm, startElm) { - var parents = Parents.parentsAndSelf(startElm, rootElm); - return findIndex(parents, isBlock).fold(constant(parents), function (index) { - return parents.slice(0, index); - }); - }; - var hasOnlyOneChild$1 = function (elm) { - return children(elm).length === 1; - }; - var deleteLastPosition = function (forward, editor, target, parentInlines) { - var isFormatElement$1 = curry(isFormatElement, editor); - var formatNodes = map(filter(parentInlines, isFormatElement$1), function (elm) { - return elm.dom(); - }); - if (formatNodes.length === 0) { - DeleteElement.deleteElement(editor, forward, target); - } else { - var pos = replaceWithCaretFormat(target.dom(), formatNodes); - editor.selection.setRng(pos.toRange()); - } - }; - var deleteCaret$1 = function (editor, forward) { - var rootElm = Element.fromDom(editor.getBody()); - var startElm = Element.fromDom(editor.selection.getStart()); - var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1); - return last(parentInlines).map(function (target) { - var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - if (DeleteUtils.willDeleteLastPositionInElement(forward, fromPos, target.dom()) && !isEmptyCaretFormatElement(target)) { - deleteLastPosition(forward, editor, target, parentInlines); - return true; - } else { - return false; - } - }).getOr(false); - }; - var backspaceDelete$5 = function (editor, forward) { - return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false; - }; - var InlineFormatDelete = { backspaceDelete: backspaceDelete$5 }; - - var getPos$1 = function (elm) { - var x = 0, y = 0; - var offsetParent = elm; - while (offsetParent && offsetParent.nodeType) { - x += offsetParent.offsetLeft || 0; - y += offsetParent.offsetTop || 0; - offsetParent = offsetParent.offsetParent; - } - return { - x: x, - y: y - }; - }; - var fireScrollIntoViewEvent = function (editor, elm, alignToTop) { - var scrollEvent = { - elm: elm, - alignToTop: alignToTop - }; - editor.fire('scrollIntoView', scrollEvent); - return scrollEvent.isDefaultPrevented(); - }; - var scrollElementIntoView = function (editor, elm, alignToTop) { - var y, viewPort; - var dom = editor.dom; - var root = dom.getRoot(); - var viewPortY, viewPortH, offsetY = 0; - if (fireScrollIntoViewEvent(editor, elm, alignToTop)) { - return; - } - if (!NodeType.isElement(elm)) { - return; - } - if (alignToTop === false) { - offsetY = elm.offsetHeight; - } - if (root.nodeName !== 'BODY') { - var scrollContainer = editor.selection.getScrollContainer(); - if (scrollContainer) { - y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY; - viewPortH = scrollContainer.clientHeight; - viewPortY = scrollContainer.scrollTop; - if (y < viewPortY || y + 25 > viewPortY + viewPortH) { - scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25; - } - return; - } - } - viewPort = dom.getViewPort(editor.getWin()); - y = dom.getPos(elm).y + offsetY; - viewPortY = viewPort.y; - viewPortH = viewPort.h; - if (y < viewPort.y || y + 25 > viewPortY + viewPortH) { - editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25); - } - }; - var getViewPortRect = function (editor) { - if (editor.inline) { - return editor.getBody().getBoundingClientRect(); - } else { - var win = editor.getWin(); - return { - left: 0, - right: win.innerWidth, - top: 0, - bottom: win.innerHeight, - width: win.innerWidth, - height: win.innerHeight - }; - } - }; - var scrollBy = function (editor, dx, dy) { - if (editor.inline) { - editor.getBody().scrollLeft += dx; - editor.getBody().scrollTop += dy; - } else { - editor.getWin().scrollBy(dx, dy); - } - }; - var scrollRangeIntoView = function (editor, rng) { - head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) { - var bodyRect = getViewPortRect(editor); - var overflow = getOverflow(bodyRect, rngRect); - var margin = 4; - var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin; - var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin; - scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0); - }); - }; - var ScrollIntoView = { - scrollElementIntoView: scrollElementIntoView, - scrollRangeIntoView: scrollRangeIntoView - }; - - var isContentEditableTrue$2 = NodeType.isContentEditableTrue; - var isContentEditableFalse$6 = NodeType.isContentEditableFalse; - var showCaret = function (direction, editor, node, before, scrollIntoView) { - return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView); - }; - var getNodeRange = function (node) { - var rng = node.ownerDocument.createRange(); - rng.selectNode(node); - return rng; - }; - var selectNode = function (editor, node) { - var e = editor.fire('BeforeObjectSelected', { target: node }); - if (e.isDefaultPrevented()) { - return null; - } - return getNodeRange(node); - }; - var renderCaretAtRange = function (editor, range, scrollIntoView) { - var normalizedRange = normalizeRange(1, editor.getBody(), range); - var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange); - var caretPositionNode = caretPosition.getNode(); - if (isContentEditableFalse$6(caretPositionNode)) { - return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false); - } - var caretPositionBeforeNode = caretPosition.getNode(true); - if (isContentEditableFalse$6(caretPositionBeforeNode)) { - return showCaret(1, editor, caretPositionBeforeNode, false, false); - } - var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) { - return isContentEditableFalse$6(node) || isContentEditableTrue$2(node); - }); - if (isContentEditableFalse$6(ceRoot)) { - return showCaret(1, editor, ceRoot, false, scrollIntoView); - } - return null; - }; - var renderRangeCaret = function (editor, range, scrollIntoView) { - if (!range || !range.collapsed) { - return range; - } - var caretRange = renderCaretAtRange(editor, range, scrollIntoView); - if (caretRange) { - return caretRange; - } - return range; - }; - var moveToRange = function (editor, rng) { - editor.selection.setRng(rng); - ScrollIntoView.scrollRangeIntoView(editor, editor.selection.getRng()); - }; - - var trimEmptyTextNode$1 = function (dom, node) { - if (NodeType.isText(node) && node.data.length === 0) { - dom.remove(node); - } - }; - var deleteContentAndShowCaret = function (editor, range, node, direction, forward, peekCaretPosition) { - var caretRange = showCaret(direction, editor, peekCaretPosition.getNode(!forward), forward, true); - if (range.collapsed) { - var deleteRange = range.cloneRange(); - if (forward) { - deleteRange.setEnd(caretRange.startContainer, caretRange.startOffset); - } else { - deleteRange.setStart(caretRange.endContainer, caretRange.endOffset); - } - deleteRange.deleteContents(); - } else { - range.deleteContents(); - } - editor.selection.setRng(caretRange); - trimEmptyTextNode$1(editor.dom, node); - return true; - }; - var deleteCefBoundaryText = function (editor, forward) { - var range = editor.selection.getRng(); - if (!NodeType.isText(range.commonAncestorContainer)) { - return false; - } - var direction = forward ? HDirection.Forwards : HDirection.Backwards; - var caretWalker = CaretWalker(editor.getBody()); - var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next); - var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev); - var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition; - var isBeforeContentEditableFalseFn = forward ? isBeforeContentEditableFalse : isAfterContentEditableFalse; - var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); - var nextCaretPosition = InlineUtils.normalizePosition(forward, getNextPosFn(caretPosition)); - if (!nextCaretPosition) { - return false; - } else if (isBeforeContentEditableFalseFn(nextCaretPosition)) { - return deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, nextCaretPosition); - } - var peekCaretPosition = getNextPosFn(nextCaretPosition); - if (peekCaretPosition && isBeforeContentEditableFalseFn(peekCaretPosition)) { - if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) { - return deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, peekCaretPosition); - } - } - return false; - }; - var backspaceDelete$6 = function (editor, forward) { - return deleteCefBoundaryText(editor, forward); - }; - var CefBoundaryDelete = { backspaceDelete: backspaceDelete$6 }; - - var nativeCommand = function (editor, command) { - editor.getDoc().execCommand(command, false, null); - }; - var deleteCommand = function (editor) { - if (CefDelete.backspaceDelete(editor, false)) { - return; - } else if (CefBoundaryDelete.backspaceDelete(editor, false)) { - return; - } else if (InlineBoundaryDelete.backspaceDelete(editor, false)) { - return; - } else if (BlockBoundaryDelete.backspaceDelete(editor, false)) { - return; - } else if (TableDelete.backspaceDelete(editor)) { - return; - } else if (BlockRangeDelete.backspaceDelete(editor, false)) { - return; - } else if (InlineFormatDelete.backspaceDelete(editor, false)) { - return; - } else { - nativeCommand(editor, 'Delete'); - DeleteUtils.paddEmptyBody(editor); - } - }; - var forwardDeleteCommand = function (editor) { - if (CefDelete.backspaceDelete(editor, true)) { - return; - } else if (CefBoundaryDelete.backspaceDelete(editor, true)) { - return; - } else if (InlineBoundaryDelete.backspaceDelete(editor, true)) { - return; - } else if (BlockBoundaryDelete.backspaceDelete(editor, true)) { - return; - } else if (TableDelete.backspaceDelete(editor)) { - return; - } else if (BlockRangeDelete.backspaceDelete(editor, true)) { - return; - } else if (InlineFormatDelete.backspaceDelete(editor, true)) { - return; - } else { - nativeCommand(editor, 'ForwardDelete'); - } - }; - var DeleteCommands = { - deleteCommand: deleteCommand, - forwardDeleteCommand: forwardDeleteCommand - }; - - var getSpecifiedFontProp = function (propName, rootElm, elm) { - var getProperty = function (elm) { - return getRaw(elm, propName); - }; - var isRoot = function (elm) { - return eq(Element.fromDom(rootElm), elm); - }; - return closest(Element.fromDom(elm), function (elm) { - return getProperty(elm).isSome(); - }, isRoot).bind(getProperty); - }; - var round$1 = function (number, precision) { - var factor = Math.pow(10, precision); - return Math.round(number * factor) / factor; - }; - var toPt = function (fontSize, precision) { - if (/[0-9.]+px$/.test(fontSize)) { - return round$1(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt'; - } - return fontSize; - }; - var normalizeFontFamily = function (fontFamily) { - return fontFamily.replace(/[\'\"\\]/g, '').replace(/,\s+/g, ','); - }; - var getComputedFontProp = function (propName, elm) { - return Option.from(DOMUtils$1.DOM.getStyle(elm, propName, true)); - }; - var getFontProp = function (propName) { - return function (rootElm, elm) { - return Option.from(elm).map(Element.fromDom).filter(isElement).bind(function (element) { - return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom())); - }).getOr(''); - }; - }; - var FontInfo = { - getFontSize: getFontProp('font-size'), - getFontFamily: compose(normalizeFontFamily, getFontProp('font-family')), - toPt: toPt - }; - - var findFirstCaretElement = function (editor) { - return CaretFinder.firstPositionIn(editor.getBody()).map(function (caret) { - var container = caret.container(); - return NodeType.isText(container) ? container.parentNode : container; - }); - }; - var isRangeAtStartOfNode = function (rng, root) { - return rng.startContainer === root && rng.startOffset === 0; - }; - var getCaretElement = function (editor) { - return Option.from(editor.selection.getRng()).bind(function (rng) { - var root = editor.getBody(); - return isRangeAtStartOfNode(rng, root) ? Option.none() : Option.from(editor.selection.getStart(true)); - }); - }; - var fromFontSizeNumber = function (editor, value) { - if (/^[0-9\.]+$/.test(value)) { - var fontSizeNumber = parseInt(value, 10); - if (fontSizeNumber >= 1 && fontSizeNumber <= 7) { - var fontSizes = Settings.getFontStyleValues(editor); - var fontClasses = Settings.getFontSizeClasses(editor); - if (fontClasses) { - return fontClasses[fontSizeNumber - 1] || value; - } else { - return fontSizes[fontSizeNumber - 1] || value; - } - } else { - return value; - } - } else { - return value; - } - }; - var fontNameAction = function (editor, value) { - editor.formatter.toggle('fontname', { value: fromFontSizeNumber(editor, value) }); - editor.nodeChanged(); - }; - var fontNameQuery = function (editor) { - return getCaretElement(editor).fold(function () { - return findFirstCaretElement(editor).map(function (caretElement) { - return FontInfo.getFontFamily(editor.getBody(), caretElement); - }).getOr(''); - }, function (caretElement) { - return FontInfo.getFontFamily(editor.getBody(), caretElement); - }); - }; - var fontSizeAction = function (editor, value) { - editor.formatter.toggle('fontsize', { value: fromFontSizeNumber(editor, value) }); - editor.nodeChanged(); - }; - var fontSizeQuery = function (editor) { - return getCaretElement(editor).fold(function () { - return findFirstCaretElement(editor).map(function (caretElement) { - return FontInfo.getFontSize(editor.getBody(), caretElement); - }).getOr(''); - }, function (caretElement) { - return FontInfo.getFontSize(editor.getBody(), caretElement); - }); - }; - - var isEq$3 = function (rng1, rng2) { - return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset); - }; - var RangeCompare = { isEq: isEq$3 }; - - var findParent = function (node, rootNode, predicate) { - while (node && node !== rootNode) { - if (predicate(node)) { - return node; - } - node = node.parentNode; - } - return null; - }; - var hasParent = function (node, rootNode, predicate) { - return findParent(node, rootNode, predicate) !== null; - }; - var hasParentWithName = function (node, rootNode, name) { - return hasParent(node, rootNode, function (node) { - return node.nodeName === name; - }); - }; - var isTable$2 = function (node) { - return node && node.nodeName === 'TABLE'; - }; - var isTableCell$3 = function (node) { - return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); - }; - var isCeFalseCaretContainer = function (node, rootNode) { - return isCaretContainer(node) && hasParent(node, rootNode, isCaretNode) === false; - }; - var hasBrBeforeAfter = function (dom, node, left) { - var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot()); - while (node = walker[left ? 'prev' : 'next']()) { - if (NodeType.isBr(node)) { - return true; - } - } - }; - var isPrevNode = function (node, name) { - return node.previousSibling && node.previousSibling.nodeName === name; - }; - var hasContentEditableFalseParent = function (body, node) { - while (node && node !== body) { - if (NodeType.isContentEditableFalse(node)) { - return true; - } - node = node.parentNode; - } - return false; - }; - var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) { - var walker, lastInlineElement, parentBlockContainer; - var body = dom.getRoot(); - var node; - var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); - parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body; - if (left && NodeType.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) { - return Option.some(CaretPosition(startNode.parentNode, dom.nodeIndex(startNode))); - } - walker = new TreeWalker(startNode, parentBlockContainer); - while (node = walker[left ? 'prev' : 'next']()) { - if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) { - return Option.none(); - } - if (NodeType.isText(node) && node.nodeValue.length > 0) { - if (hasParentWithName(node, body, 'A') === false) { - return Option.some(CaretPosition(node, left ? node.nodeValue.length : 0)); - } - return Option.none(); - } - if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) { - return Option.none(); - } - lastInlineElement = node; - } - if (collapsed && lastInlineElement) { - return Option.some(CaretPosition(lastInlineElement, 0)); - } - return Option.none(); - }; - var normalizeEndPoint = function (dom, collapsed, start, rng) { - var container, offset, walker; - var body = dom.getRoot(); - var node, nonEmptyElementsMap; - var directionLeft, isAfterNode, normalized = false; - container = rng[(start ? 'start' : 'end') + 'Container']; - offset = rng[(start ? 'start' : 'end') + 'Offset']; - isAfterNode = NodeType.isElement(container) && offset === container.childNodes.length; - nonEmptyElementsMap = dom.schema.getNonEmptyElements(); - directionLeft = start; - if (isCaretContainer(container)) { - return Option.none(); - } - if (NodeType.isElement(container) && offset > container.childNodes.length - 1) { - directionLeft = false; - } - if (NodeType.isDocument(container)) { - container = body; - offset = 0; - } - if (container === body) { - if (directionLeft) { - node = container.childNodes[offset > 0 ? offset - 1 : 0]; - if (node) { - if (isCaretContainer(node)) { - return Option.none(); - } - if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) { - return Option.none(); - } - } - } - if (container.hasChildNodes()) { - offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1); - container = container.childNodes[offset]; - offset = NodeType.isText(container) && isAfterNode ? container.data.length : 0; - if (!collapsed && container === body.lastChild && isTable$2(container)) { - return Option.none(); - } - if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) { - return Option.none(); - } - if (container.hasChildNodes() && isTable$2(container) === false) { - node = container; - walker = new TreeWalker(container, body); - do { - if (NodeType.isContentEditableFalse(node) || isCaretContainer(node)) { - normalized = false; - break; - } - if (NodeType.isText(node) && node.nodeValue.length > 0) { - offset = directionLeft ? 0 : node.nodeValue.length; - container = node; - normalized = true; - break; - } - if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) { - offset = dom.nodeIndex(node); - container = node.parentNode; - if (!directionLeft) { - offset++; - } - normalized = true; - break; - } - } while (node = directionLeft ? walker.next() : walker.prev()); - } - } - } - if (collapsed) { - if (NodeType.isText(container) && offset === 0) { - findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) { - container = pos.container(); - offset = pos.offset(); - normalized = true; - }); - } - if (NodeType.isElement(container)) { - node = container.childNodes[offset]; - if (!node) { - node = container.childNodes[offset - 1]; - } - if (node && NodeType.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) { - findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) { - container = pos.container(); - offset = pos.offset(); - normalized = true; - }); - } - } - } - if (directionLeft && !collapsed && NodeType.isText(container) && offset === container.nodeValue.length) { - findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) { - container = pos.container(); - offset = pos.offset(); - normalized = true; - }); - } - return normalized ? Option.some(CaretPosition(container, offset)) : Option.none(); - }; - var normalize$2 = function (dom, rng) { - var collapsed = rng.collapsed, normRng = rng.cloneRange(); - var startPos = CaretPosition.fromRangeStart(rng); - normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) { - if (!collapsed || !CaretPosition.isAbove(startPos, pos)) { - normRng.setStart(pos.container(), pos.offset()); - } - }); - if (!collapsed) { - normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) { - normRng.setEnd(pos.container(), pos.offset()); - }); - } - if (collapsed) { - normRng.collapse(true); - } - return RangeCompare.isEq(rng, normRng) ? Option.none() : Option.some(normRng); - }; - var NormalizeRange = { normalize: normalize$2 }; - - var hasRightSideContent = function (schema, container, parentBlock) { - var walker = new TreeWalker(container, parentBlock); - var node; - var nonEmptyElementsMap = schema.getNonEmptyElements(); - while (node = walker.next()) { - if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) { - return true; - } - } - }; - var scrollToBr = function (dom, selection, brElm) { - var marker = dom.create('span', {}, ' '); - brElm.parentNode.insertBefore(marker, brElm); - selection.scrollIntoView(marker); - dom.remove(marker); - }; - var moveSelectionToBr = function (dom, selection, brElm, extraBr) { - var rng = dom.createRng(); - if (!extraBr) { - rng.setStartAfter(brElm); - rng.setEndAfter(brElm); - } else { - rng.setStartBefore(brElm); - rng.setEndBefore(brElm); - } - selection.setRng(rng); - }; - var insertBrAtCaret = function (editor, evt) { - var selection = editor.selection; - var dom = editor.dom; - var rng = selection.getRng(); - var brElm; - var extraBr; - NormalizeRange.normalize(dom, rng).each(function (normRng) { - rng.setStart(normRng.startContainer, normRng.startOffset); - rng.setEnd(normRng.endContainer, normRng.endOffset); - }); - var offset = rng.startOffset; - var container = rng.startContainer; - if (container.nodeType === 1 && container.hasChildNodes()) { - var isAfterLastNodeInContainer = offset > container.childNodes.length - 1; - container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; - if (isAfterLastNodeInContainer && container.nodeType === 3) { - offset = container.nodeValue.length; - } else { - offset = 0; - } - } - var parentBlock = dom.getParent(container, dom.isBlock); - var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; - var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; - var isControlKey = evt && evt.ctrlKey; - if (containerBlockName === 'LI' && !isControlKey) { - parentBlock = containerBlock; - } - if (container && container.nodeType === 3 && offset >= container.nodeValue.length) { - if (!hasRightSideContent(editor.schema, container, parentBlock)) { - brElm = dom.create('br'); - rng.insertNode(brElm); - rng.setStartAfter(brElm); - rng.setEndAfter(brElm); - extraBr = true; - } - } - brElm = dom.create('br'); - rangeInsertNode(dom, rng, brElm); - scrollToBr(dom, selection, brElm); - moveSelectionToBr(dom, selection, brElm, extraBr); - editor.undoManager.add(); - }; - var insertBrBefore = function (editor, inline) { - var br = Element.fromTag('br'); - before(Element.fromDom(inline), br); - editor.undoManager.add(); - }; - var insertBrAfter = function (editor, inline) { - if (!hasBrAfter(editor.getBody(), inline)) { - after(Element.fromDom(inline), Element.fromTag('br')); - } - var br = Element.fromTag('br'); - after(Element.fromDom(inline), br); - scrollToBr(editor.dom, editor.selection, br.dom()); - moveSelectionToBr(editor.dom, editor.selection, br.dom(), false); - editor.undoManager.add(); - }; - var isBeforeBr$1 = function (pos) { - return NodeType.isBr(pos.getNode()); - }; - var hasBrAfter = function (rootNode, startNode) { - if (isBeforeBr$1(CaretPosition$1.after(startNode))) { - return true; - } else { - return CaretFinder.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) { - return NodeType.isBr(pos.getNode()); - }).getOr(false); - } - }; - var isAnchorLink = function (elm) { - return elm && elm.nodeName === 'A' && 'href' in elm; - }; - var isInsideAnchor = function (location) { - return location.fold(constant(false), isAnchorLink, isAnchorLink, constant(false)); - }; - var readInlineAnchorLocation = function (editor) { - var isInlineTarget = curry(InlineUtils.isInlineTarget, editor); - var position = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor); - }; - var insertBrOutsideAnchor = function (editor, location) { - location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop); - }; - var insert = function (editor, evt) { - var anchorLocation = readInlineAnchorLocation(editor); - if (anchorLocation.isSome()) { - anchorLocation.each(curry(insertBrOutsideAnchor, editor)); - } else { - insertBrAtCaret(editor, evt); - } - }; - var InsertBr = { insert: insert }; - - var create$3 = Immutable('start', 'soffset', 'finish', 'foffset'); - var SimRange = { create: create$3 }; - - var adt = Adt.generate([ - { before: ['element'] }, - { - on: [ - 'element', - 'offset' - ] - }, - { after: ['element'] } - ]); - var cata = function (subject, onBefore, onOn, onAfter) { - return subject.fold(onBefore, onOn, onAfter); - }; - var getStart = function (situ) { - return situ.fold(identity, identity, identity); - }; - var before$4 = adt.before; - var on = adt.on; - var after$3 = adt.after; - var Situ = { - before: before$4, - on: on, - after: after$3, - cata: cata, - getStart: getStart - }; - - var adt$1 = Adt.generate([ - { domRange: ['rng'] }, - { - relative: [ - 'startSitu', - 'finishSitu' - ] - }, - { - exact: [ - 'start', - 'soffset', - 'finish', - 'foffset' - ] - } - ]); - var exactFromRange = function (simRange) { - return adt$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset()); - }; - var getStart$1 = function (selection) { - return selection.match({ - domRange: function (rng) { - return Element.fromDom(rng.startContainer); - }, - relative: function (startSitu, finishSitu) { - return Situ.getStart(startSitu); - }, - exact: function (start, soffset, finish, foffset) { - return start; - } - }); - }; - var domRange = adt$1.domRange; - var relative = adt$1.relative; - var exact = adt$1.exact; - var getWin = function (selection) { - var start = getStart$1(selection); - return defaultView(start); - }; - var range = SimRange.create; - var Selection = { - domRange: domRange, - relative: relative, - exact: exact, - exactFromRange: exactFromRange, - getWin: getWin, - range: range - }; - - var browser$3 = PlatformDetection$1.detect().browser; - var clamp = function (offset, element) { - var max = isText(element) ? get$4(element).length : children(element).length + 1; - if (offset > max) { - return max; - } else if (offset < 0) { - return 0; - } - return offset; - }; - var normalizeRng = function (rng) { - return Selection.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish())); - }; - var isOrContains = function (root, elm) { - return !NodeType.isRestrictedNode(elm.dom()) && (contains$3(root, elm) || eq(root, elm)); - }; - var isRngInRoot = function (root) { - return function (rng) { - return isOrContains(root, rng.start()) && isOrContains(root, rng.finish()); - }; - }; - var shouldStore = function (editor) { - return editor.inline === true || browser$3.isIE(); - }; - var nativeRangeToSelectionRange = function (r) { - return Selection.range(Element.fromDom(r.startContainer), r.startOffset, Element.fromDom(r.endContainer), r.endOffset); - }; - var readRange = function (win) { - var selection = win.getSelection(); - var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0)); - return rng.map(nativeRangeToSelectionRange); - }; - var getBookmark$2 = function (root) { - var win = defaultView(root); - return readRange(win.dom()).filter(isRngInRoot(root)); - }; - var validate = function (root, bookmark) { - return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng); - }; - var bookmarkToNativeRng = function (bookmark) { - var rng = domGlobals.document.createRange(); - try { - rng.setStart(bookmark.start().dom(), bookmark.soffset()); - rng.setEnd(bookmark.finish().dom(), bookmark.foffset()); - return Option.some(rng); - } catch (_) { - return Option.none(); - } - }; - var store = function (editor) { - var newBookmark = shouldStore(editor) ? getBookmark$2(Element.fromDom(editor.getBody())) : Option.none(); - editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; - }; - var storeNative = function (editor, rng) { - var root = Element.fromDom(editor.getBody()); - var range = shouldStore(editor) ? Option.from(rng) : Option.none(); - var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root)); - editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; - }; - var getRng = function (editor) { - var bookmark = editor.bookmark ? editor.bookmark : Option.none(); - return bookmark.bind(curry(validate, Element.fromDom(editor.getBody()))).bind(bookmarkToNativeRng); - }; - var restore = function (editor) { - getRng(editor).each(function (rng) { - editor.selection.setRng(rng); - }); - }; - var SelectionBookmark = { - store: store, - storeNative: storeNative, - readRange: readRange, - restore: restore, - getRng: getRng, - getBookmark: getBookmark$2, - validate: validate - }; - - var indentElement = function (dom, command, useMargin, value, unit, element) { - if (dom.getContentEditable(element) === 'false') { - return; - } - var indentStyleName = useMargin ? 'margin' : 'padding'; - indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName; - indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left'; - if (command === 'outdent') { - var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value); - dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : ''); - } else { - var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit; - dom.setStyle(element, indentStyleName, styleValue); - } - }; - var isListComponent = function (el) { - return isList(el) || isListItem(el); - }; - var parentIsListComponent = function (el) { - return parent(el).map(isListComponent).getOr(false); - }; - var getBlocksToIndent = function (editor) { - return filter(map(editor.selection.getSelectedBlocks(), Element.fromDom), function (el) { - return !isListComponent(el) && !parentIsListComponent(el); - }); - }; - var handle = function (editor, command) { - var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter; - var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0]; - var indentValue = parseInt(settings.indentation, 10); - var useMargin = editor.getParam('indent_use_margin', false); - if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) { - if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) { - formatter.apply('div'); - } - } - each(getBlocksToIndent(editor), function (block) { - indentElement(dom, command, useMargin, indentValue, indentUnit, block.dom()); - }); - }; - - var each$a = Tools.each, extend$2 = Tools.extend; - var map$3 = Tools.map, inArray$2 = Tools.inArray; - function EditorCommands (editor) { - var dom, selection, formatter; - var commands = { - state: {}, - exec: {}, - value: {} - }; - var settings = editor.settings, bookmark; - editor.on('PreInit', function () { - dom = editor.dom; - selection = editor.selection; - settings = editor.settings; - formatter = editor.formatter; - }); - var execCommand = function (command, ui, value, args) { - var func, customCommand, state = false; - if (editor.removed) { - return; - } - if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) { - editor.focus(); - } else { - SelectionBookmark.restore(editor); - } - args = editor.fire('BeforeExecCommand', { - command: command, - ui: ui, - value: value - }); - if (args.isDefaultPrevented()) { - return false; - } - customCommand = command.toLowerCase(); - if (func = commands.exec[customCommand]) { - func(customCommand, ui, value); - editor.fire('ExecCommand', { - command: command, - ui: ui, - value: value - }); - return true; - } - each$a(editor.plugins, function (p) { - if (p.execCommand && p.execCommand(command, ui, value)) { - editor.fire('ExecCommand', { - command: command, - ui: ui, - value: value - }); - state = true; - return false; - } - }); - if (state) { - return state; - } - if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) { - editor.fire('ExecCommand', { - command: command, - ui: ui, - value: value - }); - return true; - } - try { - state = editor.getDoc().execCommand(command, ui, value); - } catch (ex) { - } - if (state) { - editor.fire('ExecCommand', { - command: command, - ui: ui, - value: value - }); - return true; - } - return false; - }; - var queryCommandState = function (command) { - var func; - if (editor.quirks.isHidden() || editor.removed) { - return; - } - command = command.toLowerCase(); - if (func = commands.state[command]) { - return func(command); - } - try { - return editor.getDoc().queryCommandState(command); - } catch (ex) { - } - return false; - }; - var queryCommandValue = function (command) { - var func; - if (editor.quirks.isHidden() || editor.removed) { - return; - } - command = command.toLowerCase(); - if (func = commands.value[command]) { - return func(command); - } - try { - return editor.getDoc().queryCommandValue(command); - } catch (ex) { - } - }; - var addCommands = function (commandList, type) { - type = type || 'exec'; - each$a(commandList, function (callback, command) { - each$a(command.toLowerCase().split(','), function (command) { - commands[type][command] = callback; - }); - }); - }; - var addCommand = function (command, callback, scope) { - command = command.toLowerCase(); - commands.exec[command] = function (command, ui, value, args) { - return callback.call(scope || editor, ui, value, args); - }; - }; - var queryCommandSupported = function (command) { - command = command.toLowerCase(); - if (commands.exec[command]) { - return true; - } - try { - return editor.getDoc().queryCommandSupported(command); - } catch (ex) { - } - return false; - }; - var addQueryStateHandler = function (command, callback, scope) { - command = command.toLowerCase(); - commands.state[command] = function () { - return callback.call(scope || editor); - }; - }; - var addQueryValueHandler = function (command, callback, scope) { - command = command.toLowerCase(); - commands.value[command] = function () { - return callback.call(scope || editor); - }; - }; - var hasCustomCommand = function (command) { - command = command.toLowerCase(); - return !!commands.exec[command]; - }; - extend$2(this, { - execCommand: execCommand, - queryCommandState: queryCommandState, - queryCommandValue: queryCommandValue, - queryCommandSupported: queryCommandSupported, - addCommands: addCommands, - addCommand: addCommand, - addQueryStateHandler: addQueryStateHandler, - addQueryValueHandler: addQueryValueHandler, - hasCustomCommand: hasCustomCommand - }); - var execNativeCommand = function (command, ui, value) { - if (ui === undefined) { - ui = false; - } - if (value === undefined) { - value = null; - } - return editor.getDoc().execCommand(command, ui, value); - }; - var isFormatMatch = function (name) { - return formatter.match(name); - }; - var toggleFormat = function (name, value) { - formatter.toggle(name, value ? { value: value } : undefined); - editor.nodeChanged(); - }; - var storeSelection = function (type) { - bookmark = selection.getBookmark(type); - }; - var restoreSelection = function () { - selection.moveToBookmark(bookmark); - }; - addCommands({ - 'mceResetDesignMode,mceBeginUndoLevel': function () { - }, - 'mceEndUndoLevel,mceAddUndoLevel': function () { - editor.undoManager.add(); - }, - 'Cut,Copy,Paste': function (command) { - var doc = editor.getDoc(); - var failed; - try { - execNativeCommand(command); - } catch (ex) { - failed = true; - } - if (command === 'paste' && !doc.queryCommandEnabled(command)) { - failed = true; - } - if (failed || !doc.queryCommandSupported(command)) { - var msg = editor.translate('Your browser doesn\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.'); - if (Env.mac) { - msg = msg.replace(/Ctrl\+/g, '\u2318+'); - } - editor.notificationManager.open({ - text: msg, - type: 'error' - }); - } - }, - 'unlink': function () { - if (selection.isCollapsed()) { - var elm = editor.dom.getParent(editor.selection.getStart(), 'a'); - if (elm) { - editor.dom.remove(elm, true); - } - return; - } - formatter.remove('link'); - }, - 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) { - var align = command.substring(7); - if (align === 'full') { - align = 'justify'; - } - each$a('left,center,right,justify'.split(','), function (name) { - if (align !== name) { - formatter.remove('align' + name); - } - }); - if (align !== 'none') { - toggleFormat('align' + align); - } - }, - 'InsertUnorderedList,InsertOrderedList': function (command) { - var listElm, listParent; - execNativeCommand(command); - listElm = dom.getParent(selection.getNode(), 'ol,ul'); - if (listElm) { - listParent = listElm.parentNode; - if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { - storeSelection(); - dom.split(listParent, listElm); - restoreSelection(); - } - } - }, - 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { - toggleFormat(command); - }, - 'ForeColor,HiliteColor': function (command, ui, value) { - toggleFormat(command, value); - }, - 'FontName': function (command, ui, value) { - fontNameAction(editor, value); - }, - 'FontSize': function (command, ui, value) { - fontSizeAction(editor, value); - }, - 'RemoveFormat': function (command) { - formatter.remove(command); - }, - 'mceBlockQuote': function () { - toggleFormat('blockquote'); - }, - 'FormatBlock': function (command, ui, value) { - return toggleFormat(value || 'p'); - }, - 'mceCleanup': function () { - var bookmark = selection.getBookmark(); - editor.setContent(editor.getContent()); - selection.moveToBookmark(bookmark); - }, - 'mceRemoveNode': function (command, ui, value) { - var node = value || selection.getNode(); - if (node !== editor.getBody()) { - storeSelection(); - editor.dom.remove(node, true); - restoreSelection(); - } - }, - 'mceSelectNodeDepth': function (command, ui, value) { - var counter = 0; - dom.getParent(selection.getNode(), function (node) { - if (node.nodeType === 1 && counter++ === value) { - selection.select(node); - return false; - } - }, editor.getBody()); - }, - 'mceSelectNode': function (command, ui, value) { - selection.select(value); - }, - 'mceInsertContent': function (command, ui, value) { - InsertContent.insertAtCaret(editor, value); - }, - 'mceInsertRawHTML': function (command, ui, value) { - selection.setContent('tiny_mce_marker'); - var content = editor.getContent(); - editor.setContent(content.replace(/tiny_mce_marker/g, function () { - return value; - })); - }, - 'mceToggleFormat': function (command, ui, value) { - toggleFormat(value); - }, - 'mceSetContent': function (command, ui, value) { - editor.setContent(value); - }, - 'Indent,Outdent': function (command) { - handle(editor, command); - }, - 'mceRepaint': function () { - }, - 'InsertHorizontalRule': function () { - editor.execCommand('mceInsertContent', false, '


        '); - }, - 'mceToggleVisualAid': function () { - editor.hasVisual = !editor.hasVisual; - editor.addVisual(); - }, - 'mceReplaceContent': function (command, ui, value) { - editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({ format: 'text' }))); - }, - 'mceInsertLink': function (command, ui, value) { - var anchor; - if (typeof value === 'string') { - value = { href: value }; - } - anchor = dom.getParent(selection.getNode(), 'a'); - value.href = value.href.replace(' ', '%20'); - if (!anchor || !value.href) { - formatter.remove('link'); - } - if (value.href) { - formatter.apply('link', value, anchor); - } - }, - 'selectAll': function () { - var editingHost = dom.getParent(selection.getStart(), NodeType.isContentEditableTrue); - if (editingHost) { - var rng = dom.createRng(); - rng.selectNodeContents(editingHost); - selection.setRng(rng); - } - }, - 'delete': function () { - DeleteCommands.deleteCommand(editor); - }, - 'forwardDelete': function () { - DeleteCommands.forwardDeleteCommand(editor); - }, - 'mceNewDocument': function () { - editor.setContent(''); - }, - 'InsertLineBreak': function (command, ui, value) { - InsertBr.insert(editor, value); - return true; - } - }); - var alignStates = function (name) { - return function () { - var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks(); - var matches = map$3(nodes, function (node) { - return !!formatter.matchNode(node, name); - }); - return inArray$2(matches, true) !== -1; - }; - }; - addCommands({ - 'JustifyLeft': alignStates('alignleft'), - 'JustifyCenter': alignStates('aligncenter'), - 'JustifyRight': alignStates('alignright'), - 'JustifyFull': alignStates('alignjustify'), - 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { - return isFormatMatch(command); - }, - 'mceBlockQuote': function () { - return isFormatMatch('blockquote'); - }, - 'Outdent': function () { - var node; - if (settings.inline_styles) { - if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { - return true; - } - if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { - return true; - } - } - return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'); - }, - 'InsertUnorderedList,InsertOrderedList': function (command) { - var list = dom.getParent(selection.getNode(), 'ul,ol'); - return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL'); - } - }, 'state'); - addCommands({ - Undo: function () { - editor.undoManager.undo(); - }, - Redo: function () { - editor.undoManager.redo(); - } - }); - addQueryValueHandler('FontName', function () { - return fontNameQuery(editor); - }, this); - addQueryValueHandler('FontSize', function () { - return fontSizeQuery(editor); - }, this); - } - - var nativeEvents = Tools.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' '); - var Dispatcher = function (settings) { - var self = this; - var scope, bindings = {}, toggleEvent; - var returnFalse = function () { - return false; - }; - var returnTrue = function () { - return true; - }; - settings = settings || {}; - scope = settings.scope || self; - toggleEvent = settings.toggleEvent || returnFalse; - var fire = function (name, args) { - var handlers, i, l, callback; - name = name.toLowerCase(); - args = args || {}; - args.type = name; - if (!args.target) { - args.target = scope; - } - if (!args.preventDefault) { - args.preventDefault = function () { - args.isDefaultPrevented = returnTrue; - }; - args.stopPropagation = function () { - args.isPropagationStopped = returnTrue; - }; - args.stopImmediatePropagation = function () { - args.isImmediatePropagationStopped = returnTrue; - }; - args.isDefaultPrevented = returnFalse; - args.isPropagationStopped = returnFalse; - args.isImmediatePropagationStopped = returnFalse; - } - if (settings.beforeFire) { - settings.beforeFire(args); - } - handlers = bindings[name]; - if (handlers) { - for (i = 0, l = handlers.length; i < l; i++) { - callback = handlers[i]; - if (callback.once) { - off(name, callback.func); - } - if (args.isImmediatePropagationStopped()) { - args.stopPropagation(); - return args; - } - if (callback.func.call(scope, args) === false) { - args.preventDefault(); - return args; - } - } - } - return args; - }; - var on = function (name, callback, prepend, extra) { - var handlers, names, i; - if (callback === false) { - callback = returnFalse; - } - if (callback) { - callback = { func: callback }; - if (extra) { - Tools.extend(callback, extra); - } - names = name.toLowerCase().split(' '); - i = names.length; - while (i--) { - name = names[i]; - handlers = bindings[name]; - if (!handlers) { - handlers = bindings[name] = []; - toggleEvent(name, true); - } - if (prepend) { - handlers.unshift(callback); - } else { - handlers.push(callback); - } - } - } - return self; - }; - var off = function (name, callback) { - var i, handlers, bindingName, names, hi; - if (name) { - names = name.toLowerCase().split(' '); - i = names.length; - while (i--) { - name = names[i]; - handlers = bindings[name]; - if (!name) { - for (bindingName in bindings) { - toggleEvent(bindingName, false); - delete bindings[bindingName]; - } - return self; - } - if (handlers) { - if (!callback) { - handlers.length = 0; - } else { - hi = handlers.length; - while (hi--) { - if (handlers[hi].func === callback) { - handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1)); - bindings[name] = handlers; - } - } - } - if (!handlers.length) { - toggleEvent(name, false); - delete bindings[name]; - } - } - } - } else { - for (name in bindings) { - toggleEvent(name, false); - } - bindings = {}; - } - return self; - }; - var once = function (name, callback, prepend) { - return on(name, callback, prepend, { once: true }); - }; - var has = function (name) { - name = name.toLowerCase(); - return !(!bindings[name] || bindings[name].length === 0); - }; - self.fire = fire; - self.on = on; - self.off = off; - self.once = once; - self.has = has; - }; - Dispatcher.isNative = function (name) { - return !!nativeEvents[name.toLowerCase()]; - }; - - var getEventDispatcher = function (obj) { - if (!obj._eventDispatcher) { - obj._eventDispatcher = new Dispatcher({ - scope: obj, - toggleEvent: function (name, state) { - if (Dispatcher.isNative(name) && obj.toggleNativeEvent) { - obj.toggleNativeEvent(name, state); - } - } - }); - } - return obj._eventDispatcher; - }; - var Observable = { - fire: function (name, args, bubble) { - var self = this; - if (self.removed && name !== 'remove' && name !== 'detach') { - return args; - } - args = getEventDispatcher(self).fire(name, args, bubble); - if (bubble !== false && self.parent) { - var parent = self.parent(); - while (parent && !args.isPropagationStopped()) { - parent.fire(name, args, false); - parent = parent.parent(); - } - } - return args; - }, - on: function (name, callback, prepend) { - return getEventDispatcher(this).on(name, callback, prepend); - }, - off: function (name, callback) { - return getEventDispatcher(this).off(name, callback); - }, - once: function (name, callback) { - return getEventDispatcher(this).once(name, callback); - }, - hasEventListeners: function (name) { - return getEventDispatcher(this).has(name); - } - }; - - var firePreProcess = function (editor, args) { - return editor.fire('PreProcess', args); - }; - var firePostProcess = function (editor, args) { - return editor.fire('PostProcess', args); - }; - var fireRemove = function (editor) { - return editor.fire('remove'); - }; - var fireDetach = function (editor) { - return editor.fire('detach'); - }; - var fireSwitchMode = function (editor, mode) { - return editor.fire('SwitchMode', { mode: mode }); - }; - var fireObjectResizeStart = function (editor, target, width, height) { - editor.fire('ObjectResizeStart', { - target: target, - width: width, - height: height - }); - }; - var fireObjectResized = function (editor, target, width, height) { - editor.fire('ObjectResized', { - target: target, - width: width, - height: height - }); - }; - var Events = { - firePreProcess: firePreProcess, - firePostProcess: firePostProcess, - fireRemove: fireRemove, - fireDetach: fireDetach, - fireSwitchMode: fireSwitchMode, - fireObjectResizeStart: fireObjectResizeStart, - fireObjectResized: fireObjectResized - }; - - var setEditorCommandState = function (editor, cmd, state) { - try { - editor.getDoc().execCommand(cmd, false, state); - } catch (ex) { - } - }; - var toggleClass = function (elm, cls, state) { - if (has$2(elm, cls) && state === false) { - remove$4(elm, cls); - } else if (state) { - add$2(elm, cls); - } - }; - var toggleReadOnly = function (editor, state) { - toggleClass(Element.fromDom(editor.getBody()), 'mce-content-readonly', state); - if (state) { - editor.selection.controlSelection.hideResizeRect(); - editor.readonly = true; - editor.getBody().contentEditable = 'false'; - } else { - editor.readonly = false; - editor.getBody().contentEditable = 'true'; - setEditorCommandState(editor, 'StyleWithCSS', false); - setEditorCommandState(editor, 'enableInlineTableEditing', false); - setEditorCommandState(editor, 'enableObjectResizing', false); - editor.focus(); - editor.nodeChanged(); - } - }; - var setMode = function (editor, mode) { - if (mode === getMode(editor)) { - return; - } - if (editor.initialized) { - toggleReadOnly(editor, mode === 'readonly'); - } else { - editor.on('init', function () { - toggleReadOnly(editor, mode === 'readonly'); - }); - } - Events.fireSwitchMode(editor, mode); - }; - var getMode = function (editor) { - return editor.readonly ? 'readonly' : 'design'; - }; - var isReadOnly = function (editor) { - return editor.readonly === true; - }; - - var DOM$1 = DOMUtils$1.DOM; - var customEventRootDelegates; - var getEventTarget = function (editor, eventName) { - if (eventName === 'selectionchange') { - return editor.getDoc(); - } - if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) { - return editor.getDoc().documentElement; - } - if (editor.settings.event_root) { - if (!editor.eventRoot) { - editor.eventRoot = DOM$1.select(editor.settings.event_root)[0]; - } - return editor.eventRoot; - } - return editor.getBody(); - }; - var isListening = function (editor) { - return !editor.hidden && !editor.readonly; - }; - var fireEvent = function (editor, eventName, e) { - if (isListening(editor)) { - editor.fire(eventName, e); - } else if (isReadOnly(editor)) { - e.preventDefault(); - } - }; - var bindEventDelegate = function (editor, eventName) { - var eventRootElm, delegate; - if (!editor.delegates) { - editor.delegates = {}; - } - if (editor.delegates[eventName] || editor.removed) { - return; - } - eventRootElm = getEventTarget(editor, eventName); - if (editor.settings.event_root) { - if (!customEventRootDelegates) { - customEventRootDelegates = {}; - editor.editorManager.on('removeEditor', function () { - var name; - if (!editor.editorManager.activeEditor) { - if (customEventRootDelegates) { - for (name in customEventRootDelegates) { - editor.dom.unbind(getEventTarget(editor, name)); - } - customEventRootDelegates = null; - } - } - }); - } - if (customEventRootDelegates[eventName]) { - return; - } - delegate = function (e) { - var target = e.target; - var editors = editor.editorManager.get(); - var i = editors.length; - while (i--) { - var body = editors[i].getBody(); - if (body === target || DOM$1.isChildOf(target, body)) { - fireEvent(editors[i], eventName, e); - } - } - }; - customEventRootDelegates[eventName] = delegate; - DOM$1.bind(eventRootElm, eventName, delegate); - } else { - delegate = function (e) { - fireEvent(editor, eventName, e); - }; - DOM$1.bind(eventRootElm, eventName, delegate); - editor.delegates[eventName] = delegate; - } - }; - var EditorObservable = { - bindPendingEventDelegates: function () { - var self = this; - Tools.each(self._pendingNativeEvents, function (name) { - bindEventDelegate(self, name); - }); - }, - toggleNativeEvent: function (name, state) { - var self = this; - if (name === 'focus' || name === 'blur') { - return; - } - if (state) { - if (self.initialized) { - bindEventDelegate(self, name); - } else { - if (!self._pendingNativeEvents) { - self._pendingNativeEvents = [name]; - } else { - self._pendingNativeEvents.push(name); - } - } - } else if (self.initialized) { - self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); - delete self.delegates[name]; - } - }, - unbindAllNativeEvents: function () { - var self = this; - var body = self.getBody(); - var dom = self.dom; - var name; - if (self.delegates) { - for (name in self.delegates) { - self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); - } - delete self.delegates; - } - if (!self.inline && body && dom) { - body.onload = null; - dom.unbind(self.getWin()); - dom.unbind(self.getDoc()); - } - if (dom) { - dom.unbind(body); - dom.unbind(self.getContainer()); - } - } - }; - EditorObservable = Tools.extend({}, Observable, EditorObservable); - var EditorObservable$1 = EditorObservable; - - var sectionResult = Immutable('sections', 'settings'); - var detection = PlatformDetection$1.detect(); - var isTouch = detection.deviceType.isTouch(); - var mobilePlugins = [ - 'lists', - 'autolink', - 'autosave' - ]; - var defaultMobileSettings = { theme: 'mobile' }; - var normalizePlugins = function (plugins) { - var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins; - var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2); - return filter(trimmedPlugins, function (item) { - return item.length > 0; - }); - }; - var filterMobilePlugins = function (plugins) { - return filter(plugins, curry(contains, mobilePlugins)); - }; - var extractSections = function (keys, settings) { - var result = bifilter(settings, function (value, key) { - return contains(keys, key); - }); - return sectionResult(result.t, result.f); - }; - var getSection = function (sectionResult, name, defaults) { - var sections = sectionResult.sections(); - var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {}; - return Tools.extend({}, defaults, sectionSettings); - }; - var hasSection = function (sectionResult, name) { - return sectionResult.sections().hasOwnProperty(name); - }; - var getDefaultSettings = function (id, documentBaseUrl, editor) { - return { - id: id, - theme: 'modern', - delta_width: 0, - delta_height: 0, - popup_css: '', - plugins: '', - document_base_url: documentBaseUrl, - add_form_submit_trigger: true, - submit_patch: true, - add_unload_trigger: true, - convert_urls: true, - relative_urls: true, - remove_script_host: true, - object_resizing: true, - doctype: '', - visual: true, - 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%', - forced_root_block: 'p', - hidden_input: true, - render_ui: true, - indentation: '40px', - inline_styles: true, - convert_fonts_to_spans: true, - indent: 'simple', - indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', - indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', - entity_encoding: 'named', - url_converter: editor.convertURL, - url_converter_scope: editor, - ie7_compat: true - }; - }; - var getExternalPlugins = function (overrideSettings, settings) { - var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {}; - if (overrideSettings && overrideSettings.external_plugins) { - return Tools.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins); - } else { - return userDefinedExternalPlugins; - } - }; - var combinePlugins = function (forcedPlugins, plugins) { - return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins)); - }; - var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) { - var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins); - var plugins = normalizePlugins(settings.plugins); - var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins; - var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins); - return Tools.extend(settings, { plugins: combinedPlugins.join(' ') }); - }; - var isOnMobile = function (isTouchDevice, sectionResult) { - var isInline = sectionResult.settings().inline; - return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline; - }; - var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) { - var sectionResult = extractSections(['mobile'], settings); - var extendedSettings = Tools.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, { - validate: true, - content_editable: sectionResult.settings().inline, - external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings()) - }); - return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings); - }; - var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) { - var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor); - return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings); - }; - var getFiltered = function (predicate, editor, name) { - return Option.from(editor.settings[name]).filter(predicate); - }; - var getParamObject = function (value) { - var output = {}; - if (typeof value === 'string') { - each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) { - var arr = val.split('='); - if (arr.length > 1) { - output[Tools.trim(arr[0])] = Tools.trim(arr[1]); - } else { - output[Tools.trim(arr[0])] = Tools.trim(arr); - } - }); - } else { - output = value; - } - return output; - }; - var isArrayOf = function (p) { - return function (a) { - return isArray(a) && forall(a, p); - }; - }; - var getParam = function (editor, name, defaultVal, type) { - var value = name in editor.settings ? editor.settings[name] : defaultVal; - if (type === 'hash') { - return getParamObject(value); - } else if (type === 'string') { - return getFiltered(isString, editor, name).getOr(defaultVal); - } else if (type === 'number') { - return getFiltered(isNumber, editor, name).getOr(defaultVal); - } else if (type === 'boolean') { - return getFiltered(isBoolean, editor, name).getOr(defaultVal); - } else if (type === 'object') { - return getFiltered(isObject, editor, name).getOr(defaultVal); - } else if (type === 'array') { - return getFiltered(isArray, editor, name).getOr(defaultVal); - } else if (type === 'string[]') { - return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal); - } else if (type === 'function') { - return getFiltered(isFunction, editor, name).getOr(defaultVal); - } else { - return value; - } - }; - - var each$b = Tools.each, explode$2 = Tools.explode; - var keyCodeLookup = { - f1: 112, - f2: 113, - f3: 114, - f4: 115, - f5: 116, - f6: 117, - f7: 118, - f8: 119, - f9: 120, - f10: 121, - f11: 122, - f12: 123 - }; - var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access'); - function Shortcuts (editor) { - var self = this; - var shortcuts = {}; - var pendingPatterns = []; - var parseShortcut = function (pattern) { - var id, key; - var shortcut = {}; - each$b(explode$2(pattern, '+'), function (value) { - if (value in modifierNames) { - shortcut[value] = true; - } else { - if (/^[0-9]{2,}$/.test(value)) { - shortcut.keyCode = parseInt(value, 10); - } else { - shortcut.charCode = value.charCodeAt(0); - shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0); - } - } - }); - id = [shortcut.keyCode]; - for (key in modifierNames) { - if (shortcut[key]) { - id.push(key); - } else { - shortcut[key] = false; - } - } - shortcut.id = id.join(','); - if (shortcut.access) { - shortcut.alt = true; - if (Env.mac) { - shortcut.ctrl = true; - } else { - shortcut.shift = true; - } - } - if (shortcut.meta) { - if (Env.mac) { - shortcut.meta = true; - } else { - shortcut.ctrl = true; - shortcut.meta = false; - } - } - return shortcut; - }; - var createShortcut = function (pattern, desc, cmdFunc, scope) { - var shortcuts; - shortcuts = Tools.map(explode$2(pattern, '>'), parseShortcut); - shortcuts[shortcuts.length - 1] = Tools.extend(shortcuts[shortcuts.length - 1], { - func: cmdFunc, - scope: scope || editor - }); - return Tools.extend(shortcuts[0], { - desc: editor.translate(desc), - subpatterns: shortcuts.slice(1) - }); - }; - var hasModifier = function (e) { - return e.altKey || e.ctrlKey || e.metaKey; - }; - var isFunctionKey = function (e) { - return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123; - }; - var matchShortcut = function (e, shortcut) { - if (!shortcut) { - return false; - } - if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) { - return false; - } - if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) { - return false; - } - if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) { - e.preventDefault(); - return true; - } - return false; - }; - var executeShortcutAction = function (shortcut) { - return shortcut.func ? shortcut.func.call(shortcut.scope) : null; - }; - editor.on('keyup keypress keydown', function (e) { - if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) { - each$b(shortcuts, function (shortcut) { - if (matchShortcut(e, shortcut)) { - pendingPatterns = shortcut.subpatterns.slice(0); - if (e.type === 'keydown') { - executeShortcutAction(shortcut); - } - return true; - } - }); - if (matchShortcut(e, pendingPatterns[0])) { - if (pendingPatterns.length === 1) { - if (e.type === 'keydown') { - executeShortcutAction(pendingPatterns[0]); - } - } - pendingPatterns.shift(); - } - } - }); - self.add = function (pattern, desc, cmdFunc, scope) { - var cmd; - cmd = cmdFunc; - if (typeof cmdFunc === 'string') { - cmdFunc = function () { - editor.execCommand(cmd, false, null); - }; - } else if (Tools.isArray(cmd)) { - cmdFunc = function () { - editor.execCommand(cmd[0], cmd[1], cmd[2]); - }; - } - each$b(explode$2(Tools.trim(pattern.toLowerCase())), function (pattern) { - var shortcut = createShortcut(pattern, desc, cmdFunc, scope); - shortcuts[shortcut.id] = shortcut; - }); - return true; - }; - self.remove = function (pattern) { - var shortcut = createShortcut(pattern); - if (shortcuts[shortcut.id]) { - delete shortcuts[shortcut.id]; - return true; - } - return false; - }; - } - - var hasFocus = function (element) { - var doc = owner(element).dom(); - return element.dom() === doc.activeElement; - }; - var active = function (_doc) { - var doc = _doc !== undefined ? _doc.dom() : domGlobals.document; - return Option.from(doc.activeElement).map(Element.fromDom); - }; - var search = function (element) { - return active(owner(element)).filter(function (e) { - return element.dom().contains(e.dom()); - }); - }; - - var getContentEditableHost = function (editor, node) { - return editor.dom.getParent(node, function (node) { - return editor.dom.getContentEditable(node) === 'true'; - }); - }; - var getCollapsedNode = function (rng) { - return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element.fromDom) : Option.none(); - }; - var getFocusInElement = function (root, rng) { - return getCollapsedNode(rng).bind(function (node) { - if (isTableSection(node)) { - return Option.some(node); - } else if (contains$3(root, node) === false) { - return Option.some(root); - } else { - return Option.none(); - } - }); - }; - var normalizeSelection = function (editor, rng) { - getFocusInElement(Element.fromDom(editor.getBody()), rng).bind(function (elm) { - return CaretFinder.firstPositionIn(elm.dom()); - }).fold(function () { - editor.selection.normalize(); - return; - }, function (caretPos) { - return editor.selection.setRng(caretPos.toRange()); - }); - }; - var focusBody = function (body) { - if (body.setActive) { - try { - body.setActive(); - } catch (ex) { - body.focus(); - } - } else { - body.focus(); - } - }; - var hasElementFocus = function (elm) { - return hasFocus(elm) || search(elm).isSome(); - }; - var hasIframeFocus = function (editor) { - return editor.iframeElement && hasFocus(Element.fromDom(editor.iframeElement)); - }; - var hasInlineFocus = function (editor) { - var rawBody = editor.getBody(); - return rawBody && hasElementFocus(Element.fromDom(rawBody)); - }; - var hasFocus$1 = function (editor) { - return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor); - }; - var focusEditor = function (editor) { - var selection = editor.selection, contentEditable = editor.settings.content_editable; - var body = editor.getBody(); - var rng = selection.getRng(); - editor.quirks.refreshContentEditable(); - var contentEditableHost = getContentEditableHost(editor, selection.getNode()); - if (editor.$.contains(body, contentEditableHost)) { - focusBody(contentEditableHost); - normalizeSelection(editor, rng); - activateEditor(editor); - return; - } - if (editor.bookmark !== undefined && hasFocus$1(editor) === false) { - SelectionBookmark.getRng(editor).each(function (bookmarkRng) { - editor.selection.setRng(bookmarkRng); - rng = bookmarkRng; - }); - } - if (!contentEditable) { - if (!Env.opera) { - focusBody(body); - } - editor.getWin().focus(); - } - if (Env.gecko || contentEditable) { - focusBody(body); - normalizeSelection(editor, rng); - } - activateEditor(editor); - }; - var activateEditor = function (editor) { - return editor.editorManager.setActive(editor); - }; - var focus = function (editor, skipFocus) { - if (editor.removed) { - return; - } - skipFocus ? activateEditor(editor) : focusEditor(editor); - }; - var EditorFocus = { - focus: focus, - hasFocus: hasFocus$1 - }; - - var getProp = function (propName, elm) { - var rawElm = elm.dom(); - return rawElm[propName]; - }; - var getComputedSizeProp = function (propName, elm) { - return parseInt(get$1(elm, propName), 10); - }; - var getClientWidth = curry(getProp, 'clientWidth'); - var getClientHeight = curry(getProp, 'clientHeight'); - var getMarginTop = curry(getComputedSizeProp, 'margin-top'); - var getMarginLeft = curry(getComputedSizeProp, 'margin-left'); - var getBoundingClientRect$1 = function (elm) { - return elm.dom().getBoundingClientRect(); - }; - var isInsideElementContentArea = function (bodyElm, clientX, clientY) { - var clientWidth = getClientWidth(bodyElm); - var clientHeight = getClientHeight(bodyElm); - return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight; - }; - var transpose = function (inline, elm, clientX, clientY) { - var clientRect = getBoundingClientRect$1(elm); - var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0; - var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0; - var x = clientX - deltaX; - var y = clientY - deltaY; - return { - x: x, - y: y - }; - }; - var isXYInContentArea = function (editor, clientX, clientY) { - var bodyElm = Element.fromDom(editor.getBody()); - var targetElm = editor.inline ? bodyElm : documentElement(bodyElm); - var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY); - return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y); - }; - var fromDomSafe = function (node) { - return Option.from(node).map(Element.fromDom); - }; - var isEditorAttachedToDom = function (editor) { - var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer(); - return fromDomSafe(rawContainer).map(function (container) { - return contains$3(owner(container), container); - }).getOr(false); - }; - var EditorView = { - isXYInContentArea: isXYInContentArea, - isEditorAttachedToDom: isEditorAttachedToDom - }; - - function NotificationManagerImpl () { - var unimplemented = function () { - throw new Error('Theme did not provide a NotificationManager implementation.'); - }; - return { - open: unimplemented, - close: unimplemented, - reposition: unimplemented, - getArgs: unimplemented - }; - } - - function NotificationManager (editor) { - var notifications = []; - var getImplementation = function () { - var theme = editor.theme; - return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl(); - }; - var getTopNotification = function () { - return Option.from(notifications[0]); - }; - var isEqual = function (a, b) { - return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout; - }; - var reposition = function () { - if (notifications.length > 0) { - getImplementation().reposition(notifications); - } - }; - var addNotification = function (notification) { - notifications.push(notification); - }; - var closeNotification = function (notification) { - findIndex(notifications, function (otherNotification) { - return otherNotification === notification; - }).each(function (index) { - notifications.splice(index, 1); - }); - }; - var open = function (args) { - if (editor.removed || !EditorView.isEditorAttachedToDom(editor)) { - return; - } - return find(notifications, function (notification) { - return isEqual(getImplementation().getArgs(notification), args); - }).getOrThunk(function () { - editor.editorManager.setActive(editor); - var notification = getImplementation().open(args, function () { - closeNotification(notification); - reposition(); - }); - addNotification(notification); - reposition(); - return notification; - }); - }; - var close = function () { - getTopNotification().each(function (notification) { - getImplementation().close(notification); - closeNotification(notification); - reposition(); - }); - }; - var getNotifications = function () { - return notifications; - }; - var registerEvents = function (editor) { - editor.on('SkinLoaded', function () { - var serviceMessage = editor.settings.service_message; - if (serviceMessage) { - open({ - text: serviceMessage, - type: 'warning', - timeout: 0, - icon: '' - }); - } - }); - editor.on('ResizeEditor ResizeWindow', function () { - Delay.requestAnimationFrame(reposition); - }); - editor.on('remove', function () { - each(notifications.slice(), function (notification) { - getImplementation().close(notification); - }); - }); - }; - registerEvents(editor); - return { - open: open, - close: close, - getNotifications: getNotifications - }; - } - - function WindowManagerImpl () { - var unimplemented = function () { - throw new Error('Theme did not provide a WindowManager implementation.'); - }; - return { - open: unimplemented, - alert: unimplemented, - confirm: unimplemented, - close: unimplemented, - getParams: unimplemented, - setParams: unimplemented - }; - } - - function WindowManager (editor) { - var windows = []; - var getImplementation = function () { - var theme = editor.theme; - return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl(); - }; - var funcBind = function (scope, f) { - return function () { - return f ? f.apply(scope, arguments) : undefined; - }; - }; - var fireOpenEvent = function (win) { - editor.fire('OpenWindow', { win: win }); - }; - var fireCloseEvent = function (win) { - editor.fire('CloseWindow', { win: win }); - }; - var addWindow = function (win) { - windows.push(win); - fireOpenEvent(win); - }; - var closeWindow = function (win) { - findIndex(windows, function (otherWindow) { - return otherWindow === win; - }).each(function (index) { - windows.splice(index, 1); - fireCloseEvent(win); - if (windows.length === 0) { - editor.focus(); - } - }); - }; - var getTopWindow = function () { - return Option.from(windows[windows.length - 1]); - }; - var open = function (args, params) { - editor.editorManager.setActive(editor); - SelectionBookmark.store(editor); - var win = getImplementation().open(args, params, closeWindow); - addWindow(win); - return win; - }; - var alert = function (message, callback, scope) { - var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow); - addWindow(win); - }; - var confirm = function (message, callback, scope) { - var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow); - addWindow(win); - }; - var close = function () { - getTopWindow().each(function (win) { - getImplementation().close(win); - closeWindow(win); - }); - }; - var getParams = function () { - return getTopWindow().map(getImplementation().getParams).getOr(null); - }; - var setParams = function (params) { - getTopWindow().each(function (win) { - getImplementation().setParams(win, params); - }); - }; - var getWindows = function () { - return windows; - }; - editor.on('remove', function () { - each(windows.slice(0), function (win) { - getImplementation().close(win); - }); - }); - return { - windows: windows, - open: open, - alert: alert, - confirm: confirm, - close: close, - getParams: getParams, - setParams: setParams, - getWindows: getWindows - }; - } - - var data = {}; - var code = 'en'; - var I18n = { - setCode: function (newCode) { - if (newCode) { - code = newCode; - this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false; - } - }, - getCode: function () { - return code; - }, - rtl: false, - add: function (code, items) { - var langData = data[code]; - if (!langData) { - data[code] = langData = {}; - } - for (var name in items) { - langData[name] = items[name]; - } - this.setCode(code); - }, - translate: function (text) { - var langData = data[code] || {}; - var toString = function (obj) { - if (Tools.is(obj, 'function')) { - return Object.prototype.toString.call(obj); - } - return !isEmpty(obj) ? '' + obj : ''; - }; - var isEmpty = function (text) { - return text === '' || text === null || Tools.is(text, 'undefined'); - }; - var getLangData = function (text) { - text = toString(text); - return Tools.hasOwn(langData, text) ? toString(langData[text]) : text; - }; - if (isEmpty(text)) { - return ''; - } - if (Tools.is(text, 'object') && Tools.hasOwn(text, 'raw')) { - return toString(text.raw); - } - if (Tools.is(text, 'array')) { - var values_1 = text.slice(1); - text = getLangData(text[0]).replace(/\{([0-9]+)\}/g, function ($1, $2) { - return Tools.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1; - }); - } - return getLangData(text).replace(/{context:\w+}$/, ''); - }, - data: data - }; - - var PluginManager = AddOnManager.PluginManager; - var resolvePluginName = function (targetUrl, suffix) { - for (var name in PluginManager.urls) { - var matchUrl = PluginManager.urls[name] + '/plugin' + suffix + '.js'; - if (matchUrl === targetUrl) { - return name; - } - } - return null; - }; - var pluginUrlToMessage = function (editor, url) { - var plugin = resolvePluginName(url, editor.suffix); - return plugin ? I18n.translate([ - 'Failed to load plugin: {0} from url {1}', - plugin, - url - ]) : I18n.translate([ - 'Failed to load plugin url: {0}', - url - ]); - }; - var displayNotification = function (editor, message) { - editor.notificationManager.open({ - type: 'error', - text: message - }); - }; - var displayError = function (editor, message) { - if (editor._skinLoaded) { - displayNotification(editor, message); - } else { - editor.on('SkinLoaded', function () { - displayNotification(editor, message); - }); - } - }; - var uploadError = function (editor, message) { - displayError(editor, I18n.translate([ - 'Failed to upload image: {0}', - message - ])); - }; - var pluginLoadError = function (editor, url) { - displayError(editor, pluginUrlToMessage(editor, url)); - }; - var pluginInitError = function (editor, name, err) { - var message = I18n.translate([ - 'Failed to initialize plugin: {0}', - name - ]); - initError(message, err); - displayError(editor, message); - }; - var initError = function (message) { - var x = []; - for (var _i = 1; _i < arguments.length; _i++) { - x[_i - 1] = arguments[_i]; - } - var console = domGlobals.window.console; - if (console) { - if (console.error) { - console.error.apply(console, arguments); - } else { - console.log.apply(console, arguments); - } - } - }; - var ErrorReporter = { - pluginLoadError: pluginLoadError, - pluginInitError: pluginInitError, - uploadError: uploadError, - displayError: displayError, - initError: initError - }; - - var PluginManager$1 = AddOnManager.PluginManager; - - var ThemeManager = AddOnManager.ThemeManager; - - function XMLHttpRequest () { - var f = Global$1.getOrDie('XMLHttpRequest'); - return new f(); - } - - function Uploader (uploadStatus, settings) { - var pendingPromises = {}; - var pathJoin = function (path1, path2) { - if (path1) { - return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, ''); - } - return path2; - }; - var defaultHandler = function (blobInfo, success, failure, progress) { - var xhr, formData; - xhr = XMLHttpRequest(); - xhr.open('POST', settings.url); - xhr.withCredentials = settings.credentials; - xhr.upload.onprogress = function (e) { - progress(e.loaded / e.total * 100); - }; - xhr.onerror = function () { - failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); - }; - xhr.onload = function () { - var json; - if (xhr.status < 200 || xhr.status >= 300) { - failure('HTTP Error: ' + xhr.status); - return; - } - json = JSON.parse(xhr.responseText); - if (!json || typeof json.location !== 'string') { - failure('Invalid JSON: ' + xhr.responseText); - return; - } - success(pathJoin(settings.basePath, json.location)); - }; - formData = new domGlobals.FormData(); - formData.append('file', blobInfo.blob(), blobInfo.filename()); - xhr.send(formData); - }; - var noUpload = function () { - return new promiseObj(function (resolve) { - resolve([]); - }); - }; - var handlerSuccess = function (blobInfo, url) { - return { - url: url, - blobInfo: blobInfo, - status: true - }; - }; - var handlerFailure = function (blobInfo, error) { - return { - url: '', - blobInfo: blobInfo, - status: false, - error: error - }; - }; - var resolvePending = function (blobUri, result) { - Tools.each(pendingPromises[blobUri], function (resolve) { - resolve(result); - }); - delete pendingPromises[blobUri]; - }; - var uploadBlobInfo = function (blobInfo, handler, openNotification) { - uploadStatus.markPending(blobInfo.blobUri()); - return new promiseObj(function (resolve) { - var notification, progress; - var noop = function () { - }; - try { - var closeNotification_1 = function () { - if (notification) { - notification.close(); - progress = noop; - } - }; - var success = function (url) { - closeNotification_1(); - uploadStatus.markUploaded(blobInfo.blobUri(), url); - resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url)); - resolve(handlerSuccess(blobInfo, url)); - }; - var failure = function (error) { - closeNotification_1(); - uploadStatus.removeFailed(blobInfo.blobUri()); - resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error)); - resolve(handlerFailure(blobInfo, error)); - }; - progress = function (percent) { - if (percent < 0 || percent > 100) { - return; - } - if (!notification) { - notification = openNotification(); - } - notification.progressBar.value(percent); - }; - handler(blobInfo, success, failure, progress); - } catch (ex) { - resolve(handlerFailure(blobInfo, ex.message)); - } - }); - }; - var isDefaultHandler = function (handler) { - return handler === defaultHandler; - }; - var pendingUploadBlobInfo = function (blobInfo) { - var blobUri = blobInfo.blobUri(); - return new promiseObj(function (resolve) { - pendingPromises[blobUri] = pendingPromises[blobUri] || []; - pendingPromises[blobUri].push(resolve); - }); - }; - var uploadBlobs = function (blobInfos, openNotification) { - blobInfos = Tools.grep(blobInfos, function (blobInfo) { - return !uploadStatus.isUploaded(blobInfo.blobUri()); - }); - return promiseObj.all(Tools.map(blobInfos, function (blobInfo) { - return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification); - })); - }; - var upload = function (blobInfos, openNotification) { - return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification); - }; - if (isFunction(settings.handler) === false) { - settings.handler = defaultHandler; - } - return { upload: upload }; - } - - function FileReader () { - var f = Global$1.getOrDie('FileReader'); - return new f(); - } - - function Uint8Array (arr) { - var f = Global$1.getOrDie('Uint8Array'); - return new f(arr); - } - - var requestAnimationFrame$1 = function (callback) { - var f = Global$1.getOrDie('requestAnimationFrame'); - f(callback); - }; - var atob = function (base64) { - var f = Global$1.getOrDie('atob'); - return f(base64); - }; - var Window = { - atob: atob, - requestAnimationFrame: requestAnimationFrame$1 - }; - - var blobUriToBlob = function (url) { - return new promiseObj(function (resolve, reject) { - var rejectWithError = function () { - reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.'); - }; - try { - var xhr = XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.responseType = 'blob'; - xhr.onload = function () { - if (this.status === 200) { - resolve(this.response); - } else { - rejectWithError(); - } - }; - xhr.onerror = rejectWithError; - xhr.send(); - } catch (ex) { - rejectWithError(); - } - }); - }; - var parseDataUri = function (uri) { - var type, matches; - var uriParts = decodeURIComponent(uri).split(','); - matches = /data:([^;]+)/.exec(uriParts[0]); - if (matches) { - type = matches[1]; - } - return { - type: type, - data: uriParts[1] - }; - }; - var dataUriToBlob = function (uri) { - return new promiseObj(function (resolve) { - var str, arr, i; - var uriParts = parseDataUri(uri); - try { - str = Window.atob(uriParts.data); - } catch (e) { - resolve(new domGlobals.Blob([])); - return; - } - arr = Uint8Array(str.length); - for (i = 0; i < arr.length; i++) { - arr[i] = str.charCodeAt(i); - } - resolve(new domGlobals.Blob([arr], { type: uriParts.type })); - }); - }; - var uriToBlob = function (url) { - if (url.indexOf('blob:') === 0) { - return blobUriToBlob(url); - } - if (url.indexOf('data:') === 0) { - return dataUriToBlob(url); - } - return null; - }; - var blobToDataUri = function (blob) { - return new promiseObj(function (resolve) { - var reader = FileReader(); - reader.onloadend = function () { - resolve(reader.result); - }; - reader.readAsDataURL(blob); - }); - }; - var Conversions = { - uriToBlob: uriToBlob, - blobToDataUri: blobToDataUri, - parseDataUri: parseDataUri - }; - - var count = 0; - var uniqueId = function (prefix) { - return (prefix || 'blobid') + count++; - }; - var imageToBlobInfo = function (blobCache, img, resolve, reject) { - var base64, blobInfo; - if (img.src.indexOf('blob:') === 0) { - blobInfo = blobCache.getByUri(img.src); - if (blobInfo) { - resolve({ - image: img, - blobInfo: blobInfo - }); - } else { - Conversions.uriToBlob(img.src).then(function (blob) { - Conversions.blobToDataUri(blob).then(function (dataUri) { - base64 = Conversions.parseDataUri(dataUri).data; - blobInfo = blobCache.create(uniqueId(), blob, base64); - blobCache.add(blobInfo); - resolve({ - image: img, - blobInfo: blobInfo - }); - }); - }, function (err) { - reject(err); - }); - } - return; - } - base64 = Conversions.parseDataUri(img.src).data; - blobInfo = blobCache.findFirst(function (cachedBlobInfo) { - return cachedBlobInfo.base64() === base64; - }); - if (blobInfo) { - resolve({ - image: img, - blobInfo: blobInfo - }); - } else { - Conversions.uriToBlob(img.src).then(function (blob) { - blobInfo = blobCache.create(uniqueId(), blob, base64); - blobCache.add(blobInfo); - resolve({ - image: img, - blobInfo: blobInfo - }); - }, function (err) { - reject(err); - }); - } - }; - var getAllImages = function (elm) { - return elm ? from$1(elm.getElementsByTagName('img')) : []; - }; - function ImageScanner (uploadStatus, blobCache) { - var cachedPromises = {}; - var findAll = function (elm, predicate) { - var images; - if (!predicate) { - predicate = constant(true); - } - images = filter(getAllImages(elm), function (img) { - var src = img.src; - if (!Env.fileApi) { - return false; - } - if (img.hasAttribute('data-mce-bogus')) { - return false; - } - if (img.hasAttribute('data-mce-placeholder')) { - return false; - } - if (!src || src === Env.transparentSrc) { - return false; - } - if (src.indexOf('blob:') === 0) { - return !uploadStatus.isUploaded(src) && predicate(img); - } - if (src.indexOf('data:') === 0) { - return predicate(img); - } - return false; - }); - var promises = map(images, function (img) { - if (cachedPromises[img.src]) { - return new promiseObj(function (resolve) { - cachedPromises[img.src].then(function (imageInfo) { - if (typeof imageInfo === 'string') { - return imageInfo; - } - resolve({ - image: img, - blobInfo: imageInfo.blobInfo - }); - }); - }); - } - var newPromise = new promiseObj(function (resolve, reject) { - imageToBlobInfo(blobCache, img, resolve, reject); - }).then(function (result) { - delete cachedPromises[result.image.src]; - return result; - }).catch(function (error) { - delete cachedPromises[img.src]; - return error; - }); - cachedPromises[img.src] = newPromise; - return newPromise; - }); - return promiseObj.all(promises); - }; - return { findAll: findAll }; - } - - var count$1 = 0; - var seed = function () { - var rnd = function () { - return Math.round(Math.random() * 4294967295).toString(36); - }; - var now = new Date().getTime(); - return 's' + now.toString(36) + rnd() + rnd() + rnd(); - }; - var uuid = function (prefix) { - return prefix + count$1++ + seed(); - }; - var Uuid = { uuid: uuid }; - - function BlobCache () { - var cache = []; - var mimeToExt = function (mime) { - var mimes = { - 'image/jpeg': 'jpg', - 'image/jpg': 'jpg', - 'image/gif': 'gif', - 'image/png': 'png' - }; - return mimes[mime.toLowerCase()] || 'dat'; - }; - var create = function (o, blob, base64, filename) { - if (isString(o)) { - var id = o; - return toBlobInfo({ - id: id, - name: filename, - blob: blob, - base64: base64 - }); - } else if (isObject(o)) { - return toBlobInfo(o); - } else { - throw new Error('Unknown input type'); - } - }; - var toBlobInfo = function (o) { - var id, name; - if (!o.blob || !o.base64) { - throw new Error('blob and base64 representations of the image are required for BlobInfo to be created'); - } - id = o.id || Uuid.uuid('blobid'); - name = o.name || id; - return { - id: constant(id), - name: constant(name), - filename: constant(name + '.' + mimeToExt(o.blob.type)), - blob: constant(o.blob), - base64: constant(o.base64), - blobUri: constant(o.blobUri || URL.createObjectURL(o.blob)), - uri: constant(o.uri) - }; - }; - var add = function (blobInfo) { - if (!get(blobInfo.id())) { - cache.push(blobInfo); - } - }; - var get = function (id) { - return findFirst(function (cachedBlobInfo) { - return cachedBlobInfo.id() === id; - }); - }; - var findFirst = function (predicate) { - return filter(cache, predicate)[0]; - }; - var getByUri = function (blobUri) { - return findFirst(function (blobInfo) { - return blobInfo.blobUri() === blobUri; - }); - }; - var removeByUri = function (blobUri) { - cache = filter(cache, function (blobInfo) { - if (blobInfo.blobUri() === blobUri) { - URL.revokeObjectURL(blobInfo.blobUri()); - return false; - } - return true; - }); - }; - var destroy = function () { - each(cache, function (cachedBlobInfo) { - URL.revokeObjectURL(cachedBlobInfo.blobUri()); - }); - cache = []; - }; - return { - create: create, - add: add, - get: get, - getByUri: getByUri, - findFirst: findFirst, - removeByUri: removeByUri, - destroy: destroy - }; - } - - function UploadStatus () { - var PENDING = 1, UPLOADED = 2; - var blobUriStatuses = {}; - var createStatus = function (status, resultUri) { - return { - status: status, - resultUri: resultUri - }; - }; - var hasBlobUri = function (blobUri) { - return blobUri in blobUriStatuses; - }; - var getResultUri = function (blobUri) { - var result = blobUriStatuses[blobUri]; - return result ? result.resultUri : null; - }; - var isPending = function (blobUri) { - return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false; - }; - var isUploaded = function (blobUri) { - return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false; - }; - var markPending = function (blobUri) { - blobUriStatuses[blobUri] = createStatus(PENDING, null); - }; - var markUploaded = function (blobUri, resultUri) { - blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri); - }; - var removeFailed = function (blobUri) { - delete blobUriStatuses[blobUri]; - }; - var destroy = function () { - blobUriStatuses = {}; - }; - return { - hasBlobUri: hasBlobUri, - getResultUri: getResultUri, - isPending: isPending, - isUploaded: isUploaded, - markPending: markPending, - markUploaded: markUploaded, - removeFailed: removeFailed, - destroy: destroy - }; - } - - function EditorUpload (editor) { - var blobCache = BlobCache(); - var uploader, imageScanner; - var uploadStatus = UploadStatus(); - var urlFilters = []; - var aliveGuard = function (callback) { - return function (result) { - if (editor.selection) { - return callback(result); - } - return []; - }; - }; - var cacheInvalidator = function () { - return '?' + new Date().getTime(); - }; - var replaceString = function (content, search, replace) { - var index = 0; - do { - index = content.indexOf(search, index); - if (index !== -1) { - content = content.substring(0, index) + replace + content.substr(index + search.length); - index += replace.length - search.length + 1; - } - } while (index !== -1); - return content; - }; - var replaceImageUrl = function (content, targetUrl, replacementUrl) { - content = replaceString(content, 'src="' + targetUrl + '"', 'src="' + replacementUrl + '"'); - content = replaceString(content, 'data-mce-src="' + targetUrl + '"', 'data-mce-src="' + replacementUrl + '"'); - return content; - }; - var replaceUrlInUndoStack = function (targetUrl, replacementUrl) { - each(editor.undoManager.data, function (level) { - if (level.type === 'fragmented') { - level.fragments = map(level.fragments, function (fragment) { - return replaceImageUrl(fragment, targetUrl, replacementUrl); - }); - } else { - level.content = replaceImageUrl(level.content, targetUrl, replacementUrl); - } - }); - }; - var openNotification = function () { - return editor.notificationManager.open({ - text: editor.translate('Image uploading...'), - type: 'info', - timeout: -1, - progressBar: true - }); - }; - var replaceImageUri = function (image, resultUri) { - blobCache.removeByUri(image.src); - replaceUrlInUndoStack(image.src, resultUri); - editor.$(image).attr({ - 'src': Settings.shouldReuseFileName(editor) ? resultUri + cacheInvalidator() : resultUri, - 'data-mce-src': editor.convertURL(resultUri, 'src') - }); - }; - var uploadImages = function (callback) { - if (!uploader) { - uploader = Uploader(uploadStatus, { - url: Settings.getImageUploadUrl(editor), - basePath: Settings.getImageUploadBasePath(editor), - credentials: Settings.getImagesUploadCredentials(editor), - handler: Settings.getImagesUploadHandler(editor) - }); - } - return scanForImages().then(aliveGuard(function (imageInfos) { - var blobInfos; - blobInfos = map(imageInfos, function (imageInfo) { - return imageInfo.blobInfo; - }); - return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) { - var filteredResult = map(result, function (uploadInfo, index) { - var image = imageInfos[index].image; - if (uploadInfo.status && Settings.shouldReplaceBlobUris(editor)) { - replaceImageUri(image, uploadInfo.url); - } else if (uploadInfo.error) { - ErrorReporter.uploadError(editor, uploadInfo.error); - } - return { - element: image, - status: uploadInfo.status - }; - }); - if (callback) { - callback(filteredResult); - } - return filteredResult; - })); - })); - }; - var uploadImagesAuto = function (callback) { - if (Settings.isAutomaticUploadsEnabled(editor)) { - return uploadImages(callback); - } - }; - var isValidDataUriImage = function (imgElm) { - if (forall(urlFilters, function (filter) { - return filter(imgElm); - }) === false) { - return false; - } - if (imgElm.getAttribute('src').indexOf('data:') === 0) { - var dataImgFilter = Settings.getImagesDataImgFilter(editor); - return dataImgFilter(imgElm); - } - return true; - }; - var addFilter = function (filter) { - urlFilters.push(filter); - }; - var scanForImages = function () { - if (!imageScanner) { - imageScanner = ImageScanner(uploadStatus, blobCache); - } - return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) { - result = filter(result, function (resultItem) { - if (typeof resultItem === 'string') { - ErrorReporter.displayError(editor, resultItem); - return false; - } - return true; - }); - each(result, function (resultItem) { - replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri()); - resultItem.image.src = resultItem.blobInfo.blobUri(); - resultItem.image.removeAttribute('data-mce-src'); - }); - return result; - })); - }; - var destroy = function () { - blobCache.destroy(); - uploadStatus.destroy(); - imageScanner = uploader = null; - }; - var replaceBlobUris = function (content) { - return content.replace(/src="(blob:[^"]+)"/g, function (match, blobUri) { - var resultUri = uploadStatus.getResultUri(blobUri); - if (resultUri) { - return 'src="' + resultUri + '"'; - } - var blobInfo = blobCache.getByUri(blobUri); - if (!blobInfo) { - blobInfo = foldl(editor.editorManager.get(), function (result, editor) { - return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri); - }, null); - } - if (blobInfo) { - var blob = blobInfo.blob(); - return 'src="data:' + blob.type + ';base64,' + blobInfo.base64() + '"'; - } - return match; - }); - }; - editor.on('setContent', function () { - if (Settings.isAutomaticUploadsEnabled(editor)) { - uploadImagesAuto(); - } else { - scanForImages(); - } - }); - editor.on('RawSaveContent', function (e) { - e.content = replaceBlobUris(e.content); - }); - editor.on('getContent', function (e) { - if (e.source_view || e.format === 'raw') { - return; - } - e.content = replaceBlobUris(e.content); - }); - editor.on('PostRender', function () { - editor.parser.addNodeFilter('img', function (images) { - each(images, function (img) { - var src = img.attr('src'); - if (blobCache.getByUri(src)) { - return; - } - var resultUri = uploadStatus.getResultUri(src); - if (resultUri) { - img.attr('src', resultUri); - } - }); - }); - }); - return { - blobCache: blobCache, - addFilter: addFilter, - uploadImages: uploadImages, - uploadImagesAuto: uploadImagesAuto, - scanForImages: scanForImages, - destroy: destroy - }; - } - - var isBlockElement = function (blockElements, node) { - return blockElements.hasOwnProperty(node.nodeName); - }; - var isValidTarget = function (blockElements, node) { - if (NodeType.isText(node)) { - return true; - } else if (NodeType.isElement(node)) { - return !isBlockElement(blockElements, node) && !Bookmarks.isBookmarkNode(node); - } else { - return false; - } - }; - var hasBlockParent = function (blockElements, root, node) { - return exists(Parents.parents(Element.fromDom(node), Element.fromDom(root)), function (elm) { - return isBlockElement(blockElements, elm.dom()); - }); - }; - var shouldRemoveTextNode = function (blockElements, node) { - if (NodeType.isText(node)) { - if (node.nodeValue.length === 0) { - return true; - } else if (/^\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) { - return true; - } - } - return false; - }; - var addRootBlocks = function (editor) { - var settings = editor.settings, dom = editor.dom, selection = editor.selection; - var schema = editor.schema, blockElements = schema.getBlockElements(); - var node = selection.getStart(); - var rootNode = editor.getBody(); - var rng; - var startContainer, startOffset, endContainer, endOffset, rootBlockNode; - var tempNode, wrapped, restoreSelection; - var rootNodeName, forcedRootBlock; - forcedRootBlock = settings.forced_root_block; - if (!node || !NodeType.isElement(node) || !forcedRootBlock) { - return; - } - rootNodeName = rootNode.nodeName.toLowerCase(); - if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) { - return; - } - rng = selection.getRng(); - startContainer = rng.startContainer; - startOffset = rng.startOffset; - endContainer = rng.endContainer; - endOffset = rng.endOffset; - restoreSelection = EditorFocus.hasFocus(editor); - node = rootNode.firstChild; - while (node) { - if (isValidTarget(blockElements, node)) { - if (shouldRemoveTextNode(blockElements, node)) { - tempNode = node; - node = node.nextSibling; - dom.remove(tempNode); - continue; - } - if (!rootBlockNode) { - rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs); - node.parentNode.insertBefore(rootBlockNode, node); - wrapped = true; - } - tempNode = node; - node = node.nextSibling; - rootBlockNode.appendChild(tempNode); - } else { - rootBlockNode = null; - node = node.nextSibling; - } - } - if (wrapped && restoreSelection) { - rng.setStart(startContainer, startOffset); - rng.setEnd(endContainer, endOffset); - selection.setRng(rng); - editor.nodeChanged(); - } - }; - var setup$3 = function (editor) { - if (editor.settings.forced_root_block) { - editor.on('NodeChange', curry(addRootBlocks, editor)); - } - }; - var ForceBlocks = { setup: setup$3 }; - - var getStartNode = function (rng) { - var sc = rng.startContainer, so = rng.startOffset; - if (NodeType.isText(sc)) { - return so === 0 ? Option.some(Element.fromDom(sc)) : Option.none(); - } else { - return Option.from(sc.childNodes[so]).map(Element.fromDom); - } - }; - var getEndNode = function (rng) { - var ec = rng.endContainer, eo = rng.endOffset; - if (NodeType.isText(ec)) { - return eo === ec.data.length ? Option.some(Element.fromDom(ec)) : Option.none(); - } else { - return Option.from(ec.childNodes[eo - 1]).map(Element.fromDom); - } - }; - var getFirstChildren = function (node) { - return firstChild(node).fold(constant([node]), function (child) { - return [node].concat(getFirstChildren(child)); - }); - }; - var getLastChildren$1 = function (node) { - return lastChild(node).fold(constant([node]), function (child) { - if (name(child) === 'br') { - return prevSibling(child).map(function (sibling) { - return [node].concat(getLastChildren$1(sibling)); - }).getOr([]); - } else { - return [node].concat(getLastChildren$1(child)); - } - }); - }; - var hasAllContentsSelected = function (elm, rng) { - return lift2(getStartNode(rng), getEndNode(rng), function (startNode, endNode) { - var start = find(getFirstChildren(elm), curry(eq, startNode)); - var end = find(getLastChildren$1(elm), curry(eq, endNode)); - return start.isSome() && end.isSome(); - }).getOr(false); - }; - var moveEndPoint$1 = function (dom, rng, node, start) { - var root = node, walker = new TreeWalker(node, root); - var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); - do { - if (node.nodeType === 3 && Tools.trim(node.nodeValue).length !== 0) { - if (start) { - rng.setStart(node, 0); - } else { - rng.setEnd(node, node.nodeValue.length); - } - return; - } - if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) { - if (start) { - rng.setStartBefore(node); - } else { - if (node.nodeName === 'BR') { - rng.setEndBefore(node); - } else { - rng.setEndAfter(node); - } - } - return; - } - if (Env.ie && Env.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) { - if (start) { - rng.setStart(node, 0); - } else { - rng.setEnd(node, 0); - } - return; - } - } while (node = start ? walker.next() : walker.prev()); - if (root.nodeName === 'BODY') { - if (start) { - rng.setStart(root, 0); - } else { - rng.setEnd(root, root.childNodes.length); - } - } - }; - var hasAnyRanges = function (editor) { - var sel = editor.selection.getSel(); - return sel && sel.rangeCount > 0; - }; - - function NodeChange (editor) { - var lastRng, lastPath = []; - var isSameElementPath = function (startElm) { - var i, currentPath; - currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm); - if (currentPath.length === lastPath.length) { - for (i = currentPath.length; i >= 0; i--) { - if (currentPath[i] !== lastPath[i]) { - break; - } - } - if (i === -1) { - lastPath = currentPath; - return true; - } - } - lastPath = currentPath; - return false; - }; - if (!('onselectionchange' in editor.getDoc())) { - editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) { - var nativeRng, fakeRng; - nativeRng = editor.selection.getRng(); - fakeRng = { - startContainer: nativeRng.startContainer, - startOffset: nativeRng.startOffset, - endContainer: nativeRng.endContainer, - endOffset: nativeRng.endOffset - }; - if (e.type === 'nodechange' || !RangeCompare.isEq(fakeRng, lastRng)) { - editor.fire('SelectionChange'); - } - lastRng = fakeRng; - }); - } - editor.on('contextmenu', function () { - editor.fire('SelectionChange'); - }); - editor.on('SelectionChange', function () { - var startElm = editor.selection.getStart(true); - if (!startElm || !Env.range && editor.selection.isCollapsed()) { - return; - } - if (hasAnyRanges(editor) && !isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) { - editor.nodeChanged({ selectionChange: true }); - } - }); - editor.on('MouseUp', function (e) { - if (!e.isDefaultPrevented() && hasAnyRanges(editor)) { - if (editor.selection.getNode().nodeName === 'IMG') { - Delay.setEditorTimeout(editor, function () { - editor.nodeChanged(); - }); - } else { - editor.nodeChanged(); - } - } - }); - this.nodeChanged = function (args) { - var selection = editor.selection; - var node, parents, root; - if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) { - root = editor.getBody(); - node = selection.getStart(true) || root; - if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) { - node = root; - } - parents = []; - editor.dom.getParent(node, function (node) { - if (node === root) { - return true; - } - parents.push(node); - }); - args = args || {}; - args.element = node; - args.parents = parents; - editor.fire('NodeChange', args); - } - }; - } - - var VK = { - BACKSPACE: 8, - DELETE: 46, - DOWN: 40, - ENTER: 13, - LEFT: 37, - RIGHT: 39, - SPACEBAR: 32, - TAB: 9, - UP: 38, - END: 35, - HOME: 36, - modifierPressed: function (e) { - return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e); - }, - metaKeyPressed: function (e) { - return Env.mac ? e.metaKey : e.ctrlKey && !e.altKey; - } - }; - - var getNodeClientRects = function (node) { - var toArrayWithNode = function (clientRects) { - return map(clientRects, function (clientRect) { - clientRect = clone$1(clientRect); - clientRect.node = node; - return clientRect; - }); - }; - if (NodeType.isElement(node)) { - return toArrayWithNode(node.getClientRects()); - } - if (NodeType.isText(node)) { - var rng = node.ownerDocument.createRange(); - rng.setStart(node, 0); - rng.setEnd(node, node.data.length); - return toArrayWithNode(rng.getClientRects()); - } - }; - var getClientRects = function (node) { - return foldl(node, function (result, node) { - return result.concat(getNodeClientRects(node)); - }, []); - }; - - var VDirection; - (function (VDirection) { - VDirection[VDirection['Up'] = -1] = 'Up'; - VDirection[VDirection['Down'] = 1] = 'Down'; - }(VDirection || (VDirection = {}))); - var findUntil = function (direction, root, predicateFn, node) { - while (node = findNode(node, direction, isEditableCaretCandidate, root)) { - if (predicateFn(node)) { - return; - } - } - }; - var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) { - var line = 0, node; - var result = []; - var targetClientRect; - var add = function (node) { - var i, clientRect, clientRects; - clientRects = getClientRects([node]); - if (direction === -1) { - clientRects = clientRects.reverse(); - } - for (i = 0; i < clientRects.length; i++) { - clientRect = clientRects[i]; - if (isBeflowFn(clientRect, targetClientRect)) { - continue; - } - if (result.length > 0 && isAboveFn(clientRect, ArrUtils.last(result))) { - line++; - } - clientRect.line = line; - if (predicateFn(clientRect)) { - return true; - } - result.push(clientRect); - } - }; - targetClientRect = ArrUtils.last(caretPosition.getClientRects()); - if (!targetClientRect) { - return result; - } - node = caretPosition.getNode(); - add(node); - findUntil(direction, root, add, node); - return result; - }; - var aboveLineNumber = function (lineNumber, clientRect) { - return clientRect.line > lineNumber; - }; - var isLineNumber = function (lineNumber, clientRect) { - return clientRect.line === lineNumber; - }; - var upUntil = curry(walkUntil, VDirection.Up, isAbove, isBelow); - var downUntil = curry(walkUntil, VDirection.Down, isBelow, isAbove); - var positionsUntil = function (direction, root, predicateFn, node) { - var caretWalker = CaretWalker(root); - var walkFn, isBelowFn, isAboveFn, caretPosition; - var result = []; - var line = 0, clientRect, targetClientRect; - var getClientRect = function (caretPosition) { - if (direction === 1) { - return ArrUtils.last(caretPosition.getClientRects()); - } - return ArrUtils.last(caretPosition.getClientRects()); - }; - if (direction === 1) { - walkFn = caretWalker.next; - isBelowFn = isBelow; - isAboveFn = isAbove; - caretPosition = CaretPosition$1.after(node); - } else { - walkFn = caretWalker.prev; - isBelowFn = isAbove; - isAboveFn = isBelow; - caretPosition = CaretPosition$1.before(node); - } - targetClientRect = getClientRect(caretPosition); - do { - if (!caretPosition.isVisible()) { - continue; - } - clientRect = getClientRect(caretPosition); - if (isAboveFn(clientRect, targetClientRect)) { - continue; - } - if (result.length > 0 && isBelowFn(clientRect, ArrUtils.last(result))) { - line++; - } - clientRect = clone$1(clientRect); - clientRect.position = caretPosition; - clientRect.line = line; - if (predicateFn(clientRect)) { - return result; - } - result.push(clientRect); - } while (caretPosition = walkFn(caretPosition)); - return result; - }; - var isAboveLine = function (lineNumber) { - return function (clientRect) { - return aboveLineNumber(lineNumber, clientRect); - }; - }; - var isLine = function (lineNumber) { - return function (clientRect) { - return isLineNumber(lineNumber, clientRect); - }; - }; - - var isContentEditableFalse$7 = NodeType.isContentEditableFalse; - var findNode$1 = findNode; - var distanceToRectLeft = function (clientRect, clientX) { - return Math.abs(clientRect.left - clientX); - }; - var distanceToRectRight = function (clientRect, clientX) { - return Math.abs(clientRect.right - clientX); - }; - var isInside = function (clientX, clientRect) { - return clientX >= clientRect.left && clientX <= clientRect.right; - }; - var findClosestClientRect = function (clientRects, clientX) { - return ArrUtils.reduce(clientRects, function (oldClientRect, clientRect) { - var oldDistance, newDistance; - oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX)); - newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX)); - if (isInside(clientX, clientRect)) { - return clientRect; - } - if (isInside(clientX, oldClientRect)) { - return oldClientRect; - } - if (newDistance === oldDistance && isContentEditableFalse$7(clientRect.node)) { - return clientRect; - } - if (newDistance < oldDistance) { - return clientRect; - } - return oldClientRect; - }); - }; - var walkUntil$1 = function (direction, root, predicateFn, node) { - while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) { - if (predicateFn(node)) { - return; - } - } - }; - var findLineNodeRects = function (root, targetNodeRect) { - var clientRects = []; - var collect = function (checkPosFn, node) { - var lineRects; - lineRects = filter(getClientRects([node]), function (clientRect) { - return !checkPosFn(clientRect, targetNodeRect); - }); - clientRects = clientRects.concat(lineRects); - return lineRects.length === 0; - }; - clientRects.push(targetNodeRect); - walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node); - walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node); - return clientRects; - }; - var getFakeCaretTargets = function (root) { - return filter(from$1(root.getElementsByTagName('*')), isFakeCaretTarget); - }; - var caretInfo = function (clientRect, clientX) { - return { - node: clientRect.node, - before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX) - }; - }; - var closestCaret = function (root, clientX, clientY) { - var closestNodeRect; - var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root)); - var targetNodeRects = filter(contentEditableFalseNodeRects, function (rect) { - return clientY >= rect.top && clientY <= rect.bottom; - }); - closestNodeRect = findClosestClientRect(targetNodeRects, clientX); - if (closestNodeRect) { - closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX); - if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) { - return caretInfo(closestNodeRect, clientX); - } - } - return null; - }; - - var isXYWithinRange = function (clientX, clientY, range) { - if (range.collapsed) { - return false; - } - if (Env.ie && Env.ie <= 11 && range.startOffset === range.endOffset - 1 && range.startContainer === range.endContainer) { - var elm = range.startContainer.childNodes[range.startOffset]; - if (NodeType.isElement(elm)) { - return exists(elm.getClientRects(), function (rect) { - return containsXY(rect, clientX, clientY); - }); - } - } - return exists(range.getClientRects(), function (rect) { - return containsXY(rect, clientX, clientY); - }); - }; - var RangePoint = { isXYWithinRange: isXYWithinRange }; - - var getAbsolutePosition = function (elm) { - var doc, docElem, win, clientRect; - clientRect = elm.getBoundingClientRect(); - doc = elm.ownerDocument; - docElem = doc.documentElement; - win = doc.defaultView; - return { - top: clientRect.top + win.pageYOffset - docElem.clientTop, - left: clientRect.left + win.pageXOffset - docElem.clientLeft - }; - }; - var getBodyPosition = function (editor) { - return editor.inline ? getAbsolutePosition(editor.getBody()) : { - left: 0, - top: 0 - }; - }; - var getScrollPosition = function (editor) { - var body = editor.getBody(); - return editor.inline ? { - left: body.scrollLeft, - top: body.scrollTop - } : { - left: 0, - top: 0 - }; - }; - var getBodyScroll = function (editor) { - var body = editor.getBody(), docElm = editor.getDoc().documentElement; - var inlineScroll = { - left: body.scrollLeft, - top: body.scrollTop - }; - var iframeScroll = { - left: body.scrollLeft || docElm.scrollLeft, - top: body.scrollTop || docElm.scrollTop - }; - return editor.inline ? inlineScroll : iframeScroll; - }; - var getMousePosition = function (editor, event) { - if (event.target.ownerDocument !== editor.getDoc()) { - var iframePosition = getAbsolutePosition(editor.getContentAreaContainer()); - var scrollPosition = getBodyScroll(editor); - return { - left: event.pageX - iframePosition.left + scrollPosition.left, - top: event.pageY - iframePosition.top + scrollPosition.top - }; - } - return { - left: event.pageX, - top: event.pageY - }; - }; - var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) { - return { - pageX: mousePosition.left - bodyPosition.left + scrollPosition.left, - pageY: mousePosition.top - bodyPosition.top + scrollPosition.top - }; - }; - var calc = function (editor, event) { - return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event)); - }; - var MousePosition = { calc: calc }; - - var isContentEditableFalse$8 = NodeType.isContentEditableFalse, isContentEditableTrue$3 = NodeType.isContentEditableTrue; - var isDraggable = function (rootElm, elm) { - return isContentEditableFalse$8(elm) && elm !== rootElm; - }; - var isValidDropTarget = function (editor, targetElement, dragElement) { - if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) { - return false; - } - if (isContentEditableFalse$8(targetElement)) { - return false; - } - return true; - }; - var cloneElement = function (elm) { - var cloneElm = elm.cloneNode(true); - cloneElm.removeAttribute('data-mce-selected'); - return cloneElm; - }; - var createGhost = function (editor, elm, width, height) { - var clonedElm = elm.cloneNode(true); - editor.dom.setStyles(clonedElm, { - width: width, - height: height - }); - editor.dom.setAttrib(clonedElm, 'data-mce-selected', null); - var ghostElm = editor.dom.create('div', { - 'class': 'mce-drag-container', - 'data-mce-bogus': 'all', - 'unselectable': 'on', - 'contenteditable': 'false' - }); - editor.dom.setStyles(ghostElm, { - position: 'absolute', - opacity: 0.5, - overflow: 'hidden', - border: 0, - padding: 0, - margin: 0, - width: width, - height: height - }); - editor.dom.setStyles(clonedElm, { - margin: 0, - boxSizing: 'border-box' - }); - ghostElm.appendChild(clonedElm); - return ghostElm; - }; - var appendGhostToBody = function (ghostElm, bodyElm) { - if (ghostElm.parentNode !== bodyElm) { - bodyElm.appendChild(ghostElm); - } - }; - var moveGhost = function (ghostElm, position, width, height, maxX, maxY) { - var overflowX = 0, overflowY = 0; - ghostElm.style.left = position.pageX + 'px'; - ghostElm.style.top = position.pageY + 'px'; - if (position.pageX + width > maxX) { - overflowX = position.pageX + width - maxX; - } - if (position.pageY + height > maxY) { - overflowY = position.pageY + height - maxY; - } - ghostElm.style.width = width - overflowX + 'px'; - ghostElm.style.height = height - overflowY + 'px'; - }; - var removeElement = function (elm) { - if (elm && elm.parentNode) { - elm.parentNode.removeChild(elm); - } - }; - var isLeftMouseButtonPressed = function (e) { - return e.button === 0; - }; - var hasDraggableElement = function (state) { - return state.element; - }; - var applyRelPos = function (state, position) { - return { - pageX: position.pageX - state.relX, - pageY: position.pageY + 5 - }; - }; - var start$1 = function (state, editor) { - return function (e) { - if (isLeftMouseButtonPressed(e)) { - var ceElm = find(editor.dom.getParents(e.target), Predicate.or(isContentEditableFalse$8, isContentEditableTrue$3)).getOr(null); - if (isDraggable(editor.getBody(), ceElm)) { - var elmPos = editor.dom.getPos(ceElm); - var bodyElm = editor.getBody(); - var docElm = editor.getDoc().documentElement; - state.element = ceElm; - state.screenX = e.screenX; - state.screenY = e.screenY; - state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2; - state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2; - state.relX = e.pageX - elmPos.x; - state.relY = e.pageY - elmPos.y; - state.width = ceElm.offsetWidth; - state.height = ceElm.offsetHeight; - state.ghost = createGhost(editor, ceElm, state.width, state.height); - } - } - }; - }; - var move$1 = function (state, editor) { - var throttledPlaceCaretAt = Delay.throttle(function (clientX, clientY) { - editor._selectionOverrides.hideFakeCaret(); - editor.selection.placeCaretAt(clientX, clientY); - }, 0); - return function (e) { - var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY)); - if (hasDraggableElement(state) && !state.dragging && movement > 10) { - var args = editor.fire('dragstart', { target: state.element }); - if (args.isDefaultPrevented()) { - return; - } - state.dragging = true; - editor.focus(); - } - if (state.dragging) { - var targetPos = applyRelPos(state, MousePosition.calc(editor, e)); - appendGhostToBody(state.ghost, editor.getBody()); - moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY); - throttledPlaceCaretAt(e.clientX, e.clientY); - } - }; - }; - var getRawTarget = function (selection) { - var rng = selection.getSel().getRangeAt(0); - var startContainer = rng.startContainer; - return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer; - }; - var drop = function (state, editor) { - return function (e) { - if (state.dragging) { - if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) { - var targetClone_1 = cloneElement(state.element); - var args = editor.fire('drop', { - targetClone: targetClone_1, - clientX: e.clientX, - clientY: e.clientY - }); - if (!args.isDefaultPrevented()) { - targetClone_1 = args.targetClone; - editor.undoManager.transact(function () { - removeElement(state.element); - editor.insertContent(editor.dom.getOuterHTML(targetClone_1)); - editor._selectionOverrides.hideFakeCaret(); - }); - } - } - } - removeDragState(state); - }; - }; - var stop = function (state, editor) { - return function () { - if (state.dragging) { - editor.fire('dragend'); - } - removeDragState(state); - }; - }; - var removeDragState = function (state) { - state.dragging = false; - state.element = null; - removeElement(state.ghost); - }; - var bindFakeDragEvents = function (editor) { - var state = {}; - var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument; - pageDom = DOMUtils$1.DOM; - rootDocument = domGlobals.document; - dragStartHandler = start$1(state, editor); - dragHandler = move$1(state, editor); - dropHandler = drop(state, editor); - dragEndHandler = stop(state, editor); - editor.on('mousedown', dragStartHandler); - editor.on('mousemove', dragHandler); - editor.on('mouseup', dropHandler); - pageDom.bind(rootDocument, 'mousemove', dragHandler); - pageDom.bind(rootDocument, 'mouseup', dragEndHandler); - editor.on('remove', function () { - pageDom.unbind(rootDocument, 'mousemove', dragHandler); - pageDom.unbind(rootDocument, 'mouseup', dragEndHandler); - }); - }; - var blockIeDrop = function (editor) { - editor.on('drop', function (e) { - var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null; - if (isContentEditableFalse$8(realTarget) || isContentEditableFalse$8(editor.dom.getContentEditableParent(realTarget))) { - e.preventDefault(); - } - }); - }; - var init = function (editor) { - bindFakeDragEvents(editor); - blockIeDrop(editor); - }; - var DragDropOverrides = { init: init }; - - var setup$4 = function (editor) { - var renderFocusCaret = first(function () { - if (!editor.removed) { - var rng = editor.selection.getRng(); - if (rng.collapsed) { - var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false); - editor.selection.setRng(caretRange); - } - } - }, 0); - editor.on('focus', function () { - renderFocusCaret.throttle(); - }); - editor.on('blur', function () { - renderFocusCaret.cancel(); - }); - }; - var CefFocus = { setup: setup$4 }; - - var isContentEditableTrue$4 = NodeType.isContentEditableTrue; - var isContentEditableFalse$9 = NodeType.isContentEditableFalse; - var getContentEditableRoot$1 = function (editor, node) { - var root = editor.getBody(); - while (node && node !== root) { - if (isContentEditableTrue$4(node) || isContentEditableFalse$9(node)) { - return node; - } - node = node.parentNode; - } - return null; - }; - var SelectionOverrides = function (editor) { - var isBlock = function (node) { - return editor.dom.isBlock(node); - }; - var rootNode = editor.getBody(); - var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () { - return EditorFocus.hasFocus(editor); - }); - var realSelectionId = 'sel-' + editor.dom.uniqueId(); - var selectedContentEditableNode; - var isFakeSelectionElement = function (elm) { - return editor.dom.hasClass(elm, 'mce-offscreen-selection'); - }; - var getRealSelectionElement = function () { - var container = editor.dom.get(realSelectionId); - return container ? container.getElementsByTagName('*')[0] : container; - }; - var setRange = function (range) { - if (range) { - editor.selection.setRng(range); - } - }; - var getRange = function () { - return editor.selection.getRng(); - }; - var showCaret = function (direction, node, before, scrollIntoView) { - if (scrollIntoView === void 0) { - scrollIntoView = true; - } - var e; - e = editor.fire('ShowCaret', { - target: node, - direction: direction, - before: before - }); - if (e.isDefaultPrevented()) { - return null; - } - if (scrollIntoView) { - editor.selection.scrollIntoView(node, direction === -1); - } - return fakeCaret.show(before, node); - }; - var getNormalizedRangeEndPoint = function (direction, range) { - range = normalizeRange(direction, rootNode, range); - if (direction === -1) { - return CaretPosition$1.fromRangeStart(range); - } - return CaretPosition$1.fromRangeEnd(range); - }; - var showBlockCaretContainer = function (blockCaretContainer) { - if (blockCaretContainer.hasAttribute('data-mce-caret')) { - showCaretContainerBlock(blockCaretContainer); - setRange(getRange()); - editor.selection.scrollIntoView(blockCaretContainer[0]); - } - }; - var registerEvents = function () { - editor.on('mouseup', function (e) { - var range = getRange(); - if (range.collapsed && EditorView.isXYInContentArea(editor, e.clientX, e.clientY)) { - setRange(renderCaretAtRange(editor, range, false)); - } - }); - editor.on('click', function (e) { - var contentEditableRoot; - contentEditableRoot = getContentEditableRoot$1(editor, e.target); - if (contentEditableRoot) { - if (isContentEditableFalse$9(contentEditableRoot)) { - e.preventDefault(); - editor.focus(); - } - if (isContentEditableTrue$4(contentEditableRoot)) { - if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) { - removeContentEditableSelection(); - } - } - } - }); - editor.on('blur NewBlock', function () { - removeContentEditableSelection(); - }); - editor.on('ResizeWindow FullscreenStateChanged', function () { - return fakeCaret.reposition(); - }); - var handleTouchSelect = function (editor) { - var moved = false; - editor.on('touchstart', function () { - moved = false; - }); - editor.on('touchmove', function () { - moved = true; - }); - editor.on('touchend', function (e) { - var contentEditableRoot = getContentEditableRoot$1(editor, e.target); - if (isContentEditableFalse$9(contentEditableRoot)) { - if (!moved) { - e.preventDefault(); - setContentEditableSelection(selectNode(editor, contentEditableRoot)); - } - } - }); - }; - var hasNormalCaretPosition = function (elm) { - var caretWalker = CaretWalker(elm); - if (!elm.firstChild) { - return false; - } - var startPos = CaretPosition$1.before(elm.firstChild); - var newPos = caretWalker.next(startPos); - return newPos && !isBeforeContentEditableFalse(newPos) && !isAfterContentEditableFalse(newPos); - }; - var isInSameBlock = function (node1, node2) { - var block1 = editor.dom.getParent(node1, editor.dom.isBlock); - var block2 = editor.dom.getParent(node2, editor.dom.isBlock); - return block1 === block2; - }; - var hasBetterMouseTarget = function (targetNode, caretNode) { - var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock); - var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock); - if (targetBlock && editor.dom.isChildOf(targetBlock, caretBlock) && isContentEditableFalse$9(getContentEditableRoot$1(editor, targetBlock)) === false) { - return true; - } - return targetBlock && !isInSameBlock(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock); - }; - handleTouchSelect(editor); - editor.on('mousedown', function (e) { - var contentEditableRoot; - var targetElm = e.target; - if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) { - return; - } - if (EditorView.isXYInContentArea(editor, e.clientX, e.clientY) === false) { - return; - } - contentEditableRoot = getContentEditableRoot$1(editor, targetElm); - if (contentEditableRoot) { - if (isContentEditableFalse$9(contentEditableRoot)) { - e.preventDefault(); - setContentEditableSelection(selectNode(editor, contentEditableRoot)); - } else { - removeContentEditableSelection(); - if (!(isContentEditableTrue$4(contentEditableRoot) && e.shiftKey) && !RangePoint.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) { - hideFakeCaret(); - editor.selection.placeCaretAt(e.clientX, e.clientY); - } - } - } else if (isFakeCaretTarget(targetElm) === false) { - removeContentEditableSelection(); - hideFakeCaret(); - var caretInfo = closestCaret(rootNode, e.clientX, e.clientY); - if (caretInfo) { - if (!hasBetterMouseTarget(e.target, caretInfo.node)) { - e.preventDefault(); - var range = showCaret(1, caretInfo.node, caretInfo.before, false); - editor.getBody().focus(); - setRange(range); - } - } - } - }); - editor.on('keypress', function (e) { - if (VK.modifierPressed(e)) { - return; - } - switch (e.keyCode) { - default: - if (isContentEditableFalse$9(editor.selection.getNode())) { - e.preventDefault(); - } - break; - } - }); - editor.on('getSelectionRange', function (e) { - var rng = e.range; - if (selectedContentEditableNode) { - if (!selectedContentEditableNode.parentNode) { - selectedContentEditableNode = null; - return; - } - rng = rng.cloneRange(); - rng.selectNode(selectedContentEditableNode); - e.range = rng; - } - }); - editor.on('setSelectionRange', function (e) { - e.range = normalizeShortEndedElementSelection(e.range); - var rng = setContentEditableSelection(e.range, e.forward); - if (rng) { - e.range = rng; - } - }); - var isPasteBin = function (node) { - return node.id === 'mcepastebin'; - }; - editor.on('AfterSetSelectionRange', function (e) { - var rng = e.range; - if (!isRangeInCaretContainer(rng) && !isPasteBin(rng.startContainer.parentNode)) { - hideFakeCaret(); - } - if (!isFakeSelectionElement(rng.startContainer.parentNode)) { - removeContentEditableSelection(); - } - }); - editor.on('copy', function (e) { - var clipboardData = e.clipboardData; - if (!e.isDefaultPrevented() && e.clipboardData && !Env.ie) { - var realSelectionElement = getRealSelectionElement(); - if (realSelectionElement) { - e.preventDefault(); - clipboardData.clearData(); - clipboardData.setData('text/html', realSelectionElement.outerHTML); - clipboardData.setData('text/plain', realSelectionElement.outerText); - } - } - }); - DragDropOverrides.init(editor); - CefFocus.setup(editor); - }; - var addCss = function () { - var styles = editor.contentStyles, rootClass = '.mce-content-body'; - styles.push(fakeCaret.getCss()); - styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}'); - }; - var isWithinCaretContainer = function (node) { - return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node); - }; - var isRangeInCaretContainer = function (rng) { - return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer); - }; - var normalizeShortEndedElementSelection = function (rng) { - var shortEndedElements = editor.schema.getShortEndedElements(); - var newRng = editor.dom.createRng(); - var startContainer = rng.startContainer; - var startOffset = rng.startOffset; - var endContainer = rng.endContainer; - var endOffset = rng.endOffset; - if (has(shortEndedElements, startContainer.nodeName.toLowerCase())) { - if (startOffset === 0) { - newRng.setStartBefore(startContainer); - } else { - newRng.setStartAfter(startContainer); - } - } else { - newRng.setStart(startContainer, startOffset); - } - if (has(shortEndedElements, endContainer.nodeName.toLowerCase())) { - if (endOffset === 0) { - newRng.setEndBefore(endContainer); - } else { - newRng.setEndAfter(endContainer); - } - } else { - newRng.setEnd(endContainer, endOffset); - } - return newRng; - }; - var setContentEditableSelection = function (range, forward) { - var node; - var $ = editor.$; - var dom = editor.dom; - var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone; - if (!range) { - return null; - } - if (range.collapsed) { - if (!isRangeInCaretContainer(range)) { - if (forward === false) { - caretPosition = getNormalizedRangeEndPoint(-1, range); - if (isFakeCaretTarget(caretPosition.getNode(true))) { - return showCaret(-1, caretPosition.getNode(true), false, false); - } - if (isFakeCaretTarget(caretPosition.getNode())) { - return showCaret(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); - } - } else { - caretPosition = getNormalizedRangeEndPoint(1, range); - if (isFakeCaretTarget(caretPosition.getNode())) { - return showCaret(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); - } - if (isFakeCaretTarget(caretPosition.getNode(true))) { - return showCaret(1, caretPosition.getNode(true), false, false); - } - } - } - return null; - } - startContainer = range.startContainer; - startOffset = range.startOffset; - endOffset = range.endOffset; - if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) { - startContainer = startContainer.parentNode; - startOffset = dom.nodeIndex(startContainer); - startContainer = startContainer.parentNode; - } - if (startContainer.nodeType !== 1) { - return null; - } - if (endOffset === startOffset + 1 && startContainer === range.endContainer) { - node = startContainer.childNodes[startOffset]; - } - if (!isContentEditableFalse$9(node)) { - return null; - } - targetClone = origTargetClone = node.cloneNode(true); - e = editor.fire('ObjectSelected', { - target: node, - targetClone: targetClone - }); - if (e.isDefaultPrevented()) { - return null; - } - $realSelectionContainer = descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () { - return $([]); - }, function (elm) { - return $([elm.dom()]); - }); - targetClone = e.targetClone; - if ($realSelectionContainer.length === 0) { - $realSelectionContainer = $('
        ').attr('id', realSelectionId); - $realSelectionContainer.appendTo(editor.getBody()); - } - range = editor.dom.createRng(); - if (targetClone === origTargetClone && Env.ie) { - $realSelectionContainer.empty().append('

        \xA0

        ').append(targetClone); - range.setStartAfter($realSelectionContainer[0].firstChild.firstChild); - range.setEndAfter(targetClone); - } else { - $realSelectionContainer.empty().append('\xA0').append(targetClone).append('\xA0'); - range.setStart($realSelectionContainer[0].firstChild, 1); - range.setEnd($realSelectionContainer[0].lastChild, 0); - } - $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y }); - $realSelectionContainer[0].focus(); - sel = editor.selection.getSel(); - sel.removeAllRanges(); - sel.addRange(range); - each(descendants$1(Element.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) { - remove(elm, 'data-mce-selected'); - }); - node.setAttribute('data-mce-selected', '1'); - selectedContentEditableNode = node; - hideFakeCaret(); - return range; - }; - var removeContentEditableSelection = function () { - if (selectedContentEditableNode) { - selectedContentEditableNode.removeAttribute('data-mce-selected'); - descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$1); - selectedContentEditableNode = null; - } - descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$1); - selectedContentEditableNode = null; - }; - var destroy = function () { - fakeCaret.destroy(); - selectedContentEditableNode = null; - }; - var hideFakeCaret = function () { - fakeCaret.hide(); - }; - if (Env.ceFalse) { - registerEvents(); - addCss(); - } - return { - showCaret: showCaret, - showBlockCaretContainer: showBlockCaretContainer, - hideFakeCaret: hideFakeCaret, - destroy: destroy - }; - }; - - var isValidPrefixAttrName = function (name) { - return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0; - }; - var trimComments = function (text) { - var sanitizedText = text; - while (/'; - } - return ''; - }; - var createFragment$1 = function (html) { - var frag, node, container; - container = domGlobals.document.createElement('div'); - frag = domGlobals.document.createDocumentFragment(); - if (html) { - container.innerHTML = html; - } - while (node = container.firstChild) { - frag.appendChild(node); - } - return frag; - }; - var insertAt = function (elm, html, index) { - var fragment = createFragment$1(html); - if (elm.hasChildNodes() && index < elm.childNodes.length) { - var target = elm.childNodes[index]; - target.parentNode.insertBefore(fragment, target); - } else { - elm.appendChild(fragment); - } - }; - var removeAt = function (elm, index) { - if (elm.hasChildNodes() && index < elm.childNodes.length) { - var target = elm.childNodes[index]; - target.parentNode.removeChild(target); - } - }; - var applyDiff = function (diff, elm) { - var index = 0; - each(diff, function (action) { - if (action[0] === Diff.KEEP) { - index++; - } else if (action[0] === Diff.INSERT) { - insertAt(elm, action[1], index); - index++; - } else if (action[0] === Diff.DELETE) { - removeAt(elm, index); - } - }); - }; - var read$3 = function (elm) { - return filter(map(from$1(elm.childNodes), getOuterHtml), function (item) { - return item.length > 0; - }); - }; - var write = function (fragments, elm) { - var currentFragments = map(from$1(elm.childNodes), getOuterHtml); - applyDiff(Diff.diff(currentFragments, fragments), elm); - return elm; - }; - var Fragments = { - read: read$3, - write: write - }; - - var undoLevelDocument = Cell(Option.none()); - var lazyTempDocument = function () { - return undoLevelDocument.get().getOrThunk(function () { - var doc = domGlobals.document.implementation.createHTMLDocument('undo'); - undoLevelDocument.set(Option.some(doc)); - return doc; - }); - }; - var hasIframes = function (html) { - return html.indexOf('') !== -1; - }; - var createFragmentedLevel = function (fragments) { - return { - type: 'fragmented', - fragments: fragments, - content: '', - bookmark: null, - beforeBookmark: null - }; - }; - var createCompleteLevel = function (content) { - return { - type: 'complete', - fragments: null, - content: content, - bookmark: null, - beforeBookmark: null - }; - }; - var createFromEditor = function (editor) { - var fragments, content, trimmedFragments; - fragments = Fragments.read(editor.getBody()); - trimmedFragments = bind(fragments, function (html) { - var trimmed = TrimHtml.trimInternal(editor.serializer, html); - return trimmed.length > 0 ? [trimmed] : []; - }); - content = trimmedFragments.join(''); - return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content); - }; - var applyToEditor = function (editor, level, before) { - if (level.type === 'fragmented') { - Fragments.write(level.fragments, editor.getBody()); - } else { - editor.setContent(level.content, { format: 'raw' }); - } - editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark); - }; - var getLevelContent = function (level) { - return level.type === 'fragmented' ? level.fragments.join('') : level.content; - }; - var getCleanLevelContent = function (level) { - var elm = Element.fromTag('body', lazyTempDocument()); - set$1(elm, getLevelContent(level)); - each(descendants$1(elm, '*[data-mce-bogus]'), unwrap); - return get$3(elm); - }; - var hasEqualContent = function (level1, level2) { - return getLevelContent(level1) === getLevelContent(level2); - }; - var hasEqualCleanedContent = function (level1, level2) { - return getCleanLevelContent(level1) === getCleanLevelContent(level2); - }; - var isEq$4 = function (level1, level2) { - if (!level1 || !level2) { - return false; - } else if (hasEqualContent(level1, level2)) { - return true; - } else { - return hasEqualCleanedContent(level1, level2); - } - }; - var Levels = { - createFragmentedLevel: createFragmentedLevel, - createCompleteLevel: createCompleteLevel, - createFromEditor: createFromEditor, - applyToEditor: applyToEditor, - isEq: isEq$4 - }; - - function UndoManager (editor) { - var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0; - var isUnlocked = function () { - return locks === 0; - }; - var setTyping = function (typing) { - if (isUnlocked()) { - self.typing = typing; - } - }; - var setDirty = function (state) { - editor.setDirty(state); - }; - var addNonTypingUndoLevel = function (e) { - setTyping(false); - self.add({}, e); - }; - var endTyping = function () { - if (self.typing) { - setTyping(false); - self.add(); - } - }; - editor.on('init', function () { - self.add(); - }); - editor.on('BeforeExecCommand', function (e) { - var cmd = e.command; - if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { - endTyping(); - self.beforeChange(); - } - }); - editor.on('ExecCommand', function (e) { - var cmd = e.command; - if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { - addNonTypingUndoLevel(e); - } - }); - editor.on('ObjectResizeStart Cut', function () { - self.beforeChange(); - }); - editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel); - editor.on('DragEnd', addNonTypingUndoLevel); - editor.on('KeyUp', function (e) { - var keyCode = e.keyCode; - if (e.isDefaultPrevented()) { - return; - } - if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) { - addNonTypingUndoLevel(); - editor.nodeChanged(); - } - if (keyCode === 46 || keyCode === 8) { - editor.nodeChanged(); - } - if (isFirstTypedCharacter && self.typing && Levels.isEq(Levels.createFromEditor(editor), data[0]) === false) { - if (editor.isDirty() === false) { - setDirty(true); - editor.fire('change', { - level: data[0], - lastLevel: null - }); - } - editor.fire('TypingUndo'); - isFirstTypedCharacter = false; - editor.nodeChanged(); - } - }); - editor.on('KeyDown', function (e) { - var keyCode = e.keyCode; - if (e.isDefaultPrevented()) { - return; - } - if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) { - if (self.typing) { - addNonTypingUndoLevel(e); - } - return; - } - var modKey = e.ctrlKey && !e.altKey || e.metaKey; - if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) { - self.beforeChange(); - setTyping(true); - self.add({}, e); - isFirstTypedCharacter = true; - } - }); - editor.on('MouseDown', function (e) { - if (self.typing) { - addNonTypingUndoLevel(e); - } - }); - var isInsertReplacementText = function (event) { - return event.inputType === 'insertReplacementText'; - }; - var isInsertTextDataNull = function (event) { - return event.inputType === 'insertText' && event.data === null; - }; - editor.on('input', function (e) { - if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) { - addNonTypingUndoLevel(e); - } - }); - editor.addShortcut('meta+z', '', 'Undo'); - editor.addShortcut('meta+y,meta+shift+z', '', 'Redo'); - editor.on('AddUndo Undo Redo ClearUndos', function (e) { - if (!e.isDefaultPrevented()) { - editor.nodeChanged(); - } - }); - self = { - data: data, - typing: false, - beforeChange: function () { - if (isUnlocked()) { - beforeBookmark = GetBookmark.getUndoBookmark(editor.selection); - } - }, - add: function (level, event) { - var i; - var settings = editor.settings; - var lastLevel, currentLevel; - currentLevel = Levels.createFromEditor(editor); - level = level || {}; - level = Tools.extend(level, currentLevel); - if (isUnlocked() === false || editor.removed) { - return null; - } - lastLevel = data[index]; - if (editor.fire('BeforeAddUndo', { - level: level, - lastLevel: lastLevel, - originalEvent: event - }).isDefaultPrevented()) { - return null; - } - if (lastLevel && Levels.isEq(lastLevel, level)) { - return null; - } - if (data[index]) { - data[index].beforeBookmark = beforeBookmark; - } - if (settings.custom_undo_redo_levels) { - if (data.length > settings.custom_undo_redo_levels) { - for (i = 0; i < data.length - 1; i++) { - data[i] = data[i + 1]; - } - data.length--; - index = data.length; - } - } - level.bookmark = GetBookmark.getUndoBookmark(editor.selection); - if (index < data.length - 1) { - data.length = index + 1; - } - data.push(level); - index = data.length - 1; - var args = { - level: level, - lastLevel: lastLevel, - originalEvent: event - }; - editor.fire('AddUndo', args); - if (index > 0) { - setDirty(true); - editor.fire('change', args); - } - return level; - }, - undo: function () { - var level; - if (self.typing) { - self.add(); - self.typing = false; - setTyping(false); - } - if (index > 0) { - level = data[--index]; - Levels.applyToEditor(editor, level, true); - setDirty(true); - editor.fire('undo', { level: level }); - } - return level; - }, - redo: function () { - var level; - if (index < data.length - 1) { - level = data[++index]; - Levels.applyToEditor(editor, level, false); - setDirty(true); - editor.fire('redo', { level: level }); - } - return level; - }, - clear: function () { - data = []; - index = 0; - self.typing = false; - self.data = data; - editor.fire('ClearUndos'); - }, - hasUndo: function () { - return index > 0 || self.typing && data[0] && !Levels.isEq(Levels.createFromEditor(editor), data[0]); - }, - hasRedo: function () { - return index < data.length - 1 && !self.typing; - }, - transact: function (callback) { - endTyping(); - self.beforeChange(); - self.ignore(callback); - return self.add(); - }, - ignore: function (callback) { - try { - locks++; - callback(); - } finally { - locks--; - } - }, - extra: function (callback1, callback2) { - var lastLevel, bookmark; - if (self.transact(callback1)) { - bookmark = data[index].bookmark; - lastLevel = data[index - 1]; - Levels.applyToEditor(editor, lastLevel, true); - if (self.transact(callback2)) { - data[index - 1].beforeBookmark = bookmark; - } - } - } - }; - return self; - } - - var postProcessHooks = {}, filter$2 = ArrUtils.filter, each$c = ArrUtils.each; - var addPostProcessHook = function (name, hook) { - var hooks = postProcessHooks[name]; - if (!hooks) { - postProcessHooks[name] = hooks = []; - } - postProcessHooks[name].push(hook); - }; - var postProcess = function (name, editor) { - each$c(postProcessHooks[name], function (hook) { - hook(editor); - }); - }; - addPostProcessHook('pre', function (editor) { - var rng = editor.selection.getRng(); - var isPre, blocks; - var hasPreSibling = function (pre) { - return isPre(pre.previousSibling) && ArrUtils.indexOf(blocks, pre.previousSibling) !== -1; - }; - var joinPre = function (pre1, pre2) { - DomQuery(pre2).remove(); - DomQuery(pre1).append('

        ').append(pre2.childNodes); - }; - isPre = NodeType.matchNodeNames('pre'); - if (!rng.collapsed) { - blocks = editor.selection.getSelectedBlocks(); - each$c(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) { - joinPre(pre.previousSibling, pre); - }); - } - }); - var Hooks = { postProcess: postProcess }; - - var MCE_ATTR_RE = /^(src|href|style)$/; - var each$d = Tools.each; - var isEq$5 = FormatUtils.isEq; - var isTableCell$4 = function (node) { - return /^(TH|TD)$/.test(node.nodeName); - }; - var isChildOfInlineParent = function (dom, node, parent) { - return dom.isChildOf(node, parent) && node !== parent && !dom.isBlock(parent); - }; - var getContainer = function (ed, rng, start) { - var container, offset, lastIdx; - container = rng[start ? 'startContainer' : 'endContainer']; - offset = rng[start ? 'startOffset' : 'endOffset']; - if (NodeType.isElement(container)) { - lastIdx = container.childNodes.length - 1; - if (!start && offset) { - offset--; - } - container = container.childNodes[offset > lastIdx ? lastIdx : offset]; - } - if (NodeType.isText(container) && start && offset >= container.nodeValue.length) { - container = new TreeWalker(container, ed.getBody()).next() || container; - } - if (NodeType.isText(container) && !start && offset === 0) { - container = new TreeWalker(container, ed.getBody()).prev() || container; - } - return container; - }; - var wrap$2 = function (dom, node, name, attrs) { - var wrapper = dom.create(name, attrs); - node.parentNode.insertBefore(wrapper, node); - wrapper.appendChild(node); - return wrapper; - }; - var wrapWithSiblings = function (dom, node, next, name, attrs) { - var start = Element.fromDom(node); - var wrapper = Element.fromDom(dom.create(name, attrs)); - var siblings = next ? nextSiblings(start) : prevSiblings(start); - append$1(wrapper, siblings); - if (next) { - before(start, wrapper); - prepend(wrapper, start); - } else { - after(start, wrapper); - append(wrapper, start); - } - return wrapper.dom(); - }; - var matchName$1 = function (dom, node, format) { - if (isEq$5(node, format.inline)) { - return true; - } - if (isEq$5(node, format.block)) { - return true; - } - if (format.selector) { - return NodeType.isElement(node) && dom.is(node, format.selector); - } - }; - var isColorFormatAndAnchor = function (node, format) { - return format.links && node.tagName === 'A'; - }; - var find$3 = function (dom, node, next, inc) { - node = FormatUtils.getNonWhiteSpaceSibling(node, next, inc); - return !node || (node.nodeName === 'BR' || dom.isBlock(node)); - }; - var removeNode$1 = function (ed, node, format) { - var parentNode = node.parentNode; - var rootBlockElm; - var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block; - if (format.block) { - if (!forcedRootBlock) { - if (dom.isBlock(node) && !dom.isBlock(parentNode)) { - if (!find$3(dom, node, false) && !find$3(dom, node.firstChild, true, 1)) { - node.insertBefore(dom.create('br'), node.firstChild); - } - if (!find$3(dom, node, true) && !find$3(dom, node.lastChild, false, 1)) { - node.appendChild(dom.create('br')); - } - } - } else { - if (parentNode === dom.getRoot()) { - if (!format.list_block || !isEq$5(node, format.list_block)) { - each$d(Tools.grep(node.childNodes), function (node) { - if (FormatUtils.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) { - if (!rootBlockElm) { - rootBlockElm = wrap$2(dom, node, forcedRootBlock); - dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs); - } else { - rootBlockElm.appendChild(node); - } - } else { - rootBlockElm = 0; - } - }); - } - } - } - } - if (format.selector && format.inline && !isEq$5(format.inline, node)) { - return; - } - dom.remove(node, 1); - }; - var removeFormat = function (ed, format, vars, node, compareNode) { - var i, attrs, stylesModified; - var dom = ed.dom; - if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) { - return false; - } - if (format.remove !== 'all') { - each$d(format.styles, function (value, name) { - value = FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(value, vars), name); - if (typeof name === 'number') { - name = value; - compareNode = 0; - } - if (format.remove_similar || (!compareNode || isEq$5(FormatUtils.getStyle(dom, compareNode, name), value))) { - dom.setStyle(node, name, ''); - } - stylesModified = 1; - }); - if (stylesModified && dom.getAttrib(node, 'style') === '') { - node.removeAttribute('style'); - node.removeAttribute('data-mce-style'); - } - each$d(format.attributes, function (value, name) { - var valueOut; - value = FormatUtils.replaceVars(value, vars); - if (typeof name === 'number') { - name = value; - compareNode = 0; - } - if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) { - if (name === 'class') { - value = dom.getAttrib(node, name); - if (value) { - valueOut = ''; - each$d(value.split(/\s+/), function (cls) { - if (/mce\-\w+/.test(cls)) { - valueOut += (valueOut ? ' ' : '') + cls; - } - }); - if (valueOut) { - dom.setAttrib(node, name, valueOut); - return; - } - } - } - if (name === 'class') { - node.removeAttribute('className'); - } - if (MCE_ATTR_RE.test(name)) { - node.removeAttribute('data-mce-' + name); - } - node.removeAttribute(name); - } - }); - each$d(format.classes, function (value) { - value = FormatUtils.replaceVars(value, vars); - if (!compareNode || dom.hasClass(compareNode, value)) { - dom.removeClass(node, value); - } - }); - attrs = dom.getAttribs(node); - for (i = 0; i < attrs.length; i++) { - var attrName = attrs[i].nodeName; - if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) { - return false; - } - } - } - if (format.remove !== 'none') { - removeNode$1(ed, node, format); - return true; - } - }; - var findFormatRoot = function (editor, container, name, vars, similar) { - var formatRoot; - each$d(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent) { - var format; - if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') { - format = MatchFormat.matchNode(editor, parent, name, vars, similar); - if (format && format.split !== false) { - formatRoot = parent; - } - } - }); - return formatRoot; - }; - var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) { - var parent, clone, lastClone, firstClone, i, formatRootParent; - var dom = editor.dom; - if (formatRoot) { - formatRootParent = formatRoot.parentNode; - for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) { - clone = dom.clone(parent, false); - for (i = 0; i < formatList.length; i++) { - if (removeFormat(editor, formatList[i], vars, clone, clone)) { - clone = 0; - break; - } - } - if (clone) { - if (lastClone) { - clone.appendChild(lastClone); - } - if (!firstClone) { - firstClone = clone; - } - lastClone = clone; - } - } - if (split && (!format.mixed || !dom.isBlock(formatRoot))) { - container = dom.split(formatRoot, container); - } - if (lastClone) { - target.parentNode.insertBefore(lastClone, target); - firstClone.appendChild(target); - } - } - return container; - }; - var remove$6 = function (ed, name, vars, node, similar) { - var formatList = ed.formatter.get(name), format = formatList[0]; - var bookmark, rng, contentEditable = true; - var dom = ed.dom; - var selection = ed.selection; - var splitToFormatRoot = function (container) { - var formatRoot = findFormatRoot(ed, container, name, vars, similar); - return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars); - }; - var isRemoveBookmarkNode = function (node) { - return Bookmarks.isBookmarkNode(node) && NodeType.isElement(node) && (node.id === '_start' || node.id === '_end'); - }; - var process = function (node) { - var children, i, l, lastContentEditable, hasContentEditableState; - if (NodeType.isElement(node) && dom.getContentEditable(node)) { - lastContentEditable = contentEditable; - contentEditable = dom.getContentEditable(node) === 'true'; - hasContentEditableState = true; - } - children = Tools.grep(node.childNodes); - if (contentEditable && !hasContentEditableState) { - for (i = 0, l = formatList.length; i < l; i++) { - if (removeFormat(ed, formatList[i], vars, node, node)) { - break; - } - } - } - if (format.deep) { - if (children.length) { - for (i = 0, l = children.length; i < l; i++) { - process(children[i]); - } - if (hasContentEditableState) { - contentEditable = lastContentEditable; - } - } - } - }; - var unwrap = function (start) { - var node = dom.get(start ? '_start' : '_end'); - var out = node[start ? 'firstChild' : 'lastChild']; - if (isRemoveBookmarkNode(out)) { - out = out[start ? 'firstChild' : 'lastChild']; - } - if (NodeType.isText(out) && out.data.length === 0) { - out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling; - } - dom.remove(node, true); - return out; - }; - var removeRngStyle = function (rng) { - var startContainer, endContainer; - var commonAncestorContainer = rng.commonAncestorContainer; - rng = ExpandRange.expandRng(ed, rng, formatList, true); - if (format.split) { - rng = SplitRange.split(rng); - startContainer = getContainer(ed, rng, true); - endContainer = getContainer(ed, rng); - if (startContainer !== endContainer) { - if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) { - if (startContainer.nodeName === 'TR') { - startContainer = startContainer.firstChild.firstChild || startContainer; - } else { - startContainer = startContainer.firstChild || startContainer; - } - } - if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) { - endContainer = endContainer.firstChild || endContainer; - } - if (isChildOfInlineParent(dom, startContainer, endContainer)) { - var marker = Option.from(startContainer.firstChild).getOr(startContainer); - splitToFormatRoot(wrapWithSiblings(dom, marker, true, 'span', { - 'id': '_start', - 'data-mce-type': 'bookmark' - })); - unwrap(true); - return; - } - if (isChildOfInlineParent(dom, endContainer, startContainer)) { - var marker = Option.from(endContainer.lastChild).getOr(endContainer); - splitToFormatRoot(wrapWithSiblings(dom, marker, false, 'span', { - 'id': '_end', - 'data-mce-type': 'bookmark' - })); - unwrap(false); - return; - } - startContainer = wrap$2(dom, startContainer, 'span', { - 'id': '_start', - 'data-mce-type': 'bookmark' - }); - endContainer = wrap$2(dom, endContainer, 'span', { - 'id': '_end', - 'data-mce-type': 'bookmark' - }); - splitToFormatRoot(startContainer); - splitToFormatRoot(endContainer); - startContainer = unwrap(true); - endContainer = unwrap(); - } else { - startContainer = endContainer = splitToFormatRoot(startContainer); - } - rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer; - rng.startOffset = dom.nodeIndex(startContainer); - rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer; - rng.endOffset = dom.nodeIndex(endContainer) + 1; - } - RangeWalk.walk(dom, rng, function (nodes) { - each$d(nodes, function (node) { - process(node); - if (NodeType.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && FormatUtils.getTextDecoration(dom, node.parentNode) === 'underline') { - removeFormat(ed, { - deep: false, - exact: true, - inline: 'span', - styles: { textDecoration: 'underline' } - }, null, node); - } - }); - }); - }; - if (node) { - if (node.nodeType) { - rng = dom.createRng(); - rng.setStartBefore(node); - rng.setEndAfter(node); - removeRngStyle(rng); - } else { - removeRngStyle(node); - } - return; - } - if (dom.getContentEditable(selection.getNode()) === 'false') { - node = selection.getNode(); - for (var i = 0, l = formatList.length; i < l; i++) { - if (formatList[i].ceFalseOverride) { - if (removeFormat(ed, formatList[i], vars, node, node)) { - break; - } - } - } - return; - } - if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { - bookmark = GetBookmark.getPersistentBookmark(ed.selection, true); - removeRngStyle(selection.getRng()); - selection.moveToBookmark(bookmark); - if (format.inline && MatchFormat.match(ed, name, vars, selection.getStart())) { - FormatUtils.moveStart(dom, selection, selection.getRng()); - } - ed.nodeChanged(); - } else { - removeCaretFormat(ed, name, vars, similar); - } - }; - var RemoveFormat = { - removeFormat: removeFormat, - remove: remove$6 - }; - - var each$e = Tools.each; - var isElementNode = function (node) { - return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node); - }; - var findElementSibling = function (node, siblingName) { - var sibling; - for (sibling = node; sibling; sibling = sibling[siblingName]) { - if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) { - return node; - } - if (sibling.nodeType === 1 && !Bookmarks.isBookmarkNode(sibling)) { - return sibling; - } - } - return node; - }; - var mergeSiblingsNodes = function (dom, prev, next) { - var sibling, tmpSibling; - var elementUtils = new ElementUtils(dom); - if (prev && next) { - prev = findElementSibling(prev, 'previousSibling'); - next = findElementSibling(next, 'nextSibling'); - if (elementUtils.compare(prev, next)) { - for (sibling = prev.nextSibling; sibling && sibling !== next;) { - tmpSibling = sibling; - sibling = sibling.nextSibling; - prev.appendChild(tmpSibling); - } - dom.remove(next); - Tools.each(Tools.grep(next.childNodes), function (node) { - prev.appendChild(node); - }); - return prev; - } - } - return next; - }; - var processChildElements = function (node, filter, process) { - each$e(node.childNodes, function (node) { - if (isElementNode(node)) { - if (filter(node)) { - process(node); - } - if (node.hasChildNodes()) { - processChildElements(node, filter, process); - } - } - }); - }; - var hasStyle = function (dom, name) { - return curry(function (name, node) { - return !!(node && FormatUtils.getStyle(dom, node, name)); - }, name); - }; - var applyStyle = function (dom, name, value) { - return curry(function (name, value, node) { - dom.setStyle(node, name, value); - if (node.getAttribute('style') === '') { - node.removeAttribute('style'); - } - unwrapEmptySpan(dom, node); - }, name, value); - }; - var unwrapEmptySpan = function (dom, node) { - if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) { - dom.remove(node, true); - } - }; - var processUnderlineAndColor = function (dom, node) { - var textDecoration; - if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { - textDecoration = FormatUtils.getTextDecoration(dom, node.parentNode); - if (dom.getStyle(node, 'color') && textDecoration) { - dom.setStyle(node, 'text-decoration', textDecoration); - } else if (dom.getStyle(node, 'text-decoration') === textDecoration) { - dom.setStyle(node, 'text-decoration', null); - } - } - }; - var mergeUnderlineAndColor = function (dom, format, vars, node) { - if (format.styles.color || format.styles.textDecoration) { - Tools.walk(node, curry(processUnderlineAndColor, dom), 'childNodes'); - processUnderlineAndColor(dom, node); - } - }; - var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) { - if (format.styles && format.styles.backgroundColor) { - processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', FormatUtils.replaceVars(format.styles.backgroundColor, vars))); - } - }; - var mergeSubSup = function (dom, format, vars, node) { - if (format.inline === 'sub' || format.inline === 'sup') { - processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', '')); - dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true); - } - }; - var mergeSiblings = function (dom, format, vars, node) { - if (node && format.merge_siblings !== false) { - node = mergeSiblingsNodes(dom, FormatUtils.getNonWhiteSpaceSibling(node), node); - node = mergeSiblingsNodes(dom, node, FormatUtils.getNonWhiteSpaceSibling(node, true)); - } - }; - var clearChildStyles = function (dom, format, node) { - if (format.clear_child_styles) { - var selector = format.links ? '*:not(a)' : '*'; - each$e(dom.select(selector, node), function (node) { - if (isElementNode(node)) { - each$e(format.styles, function (value, name) { - dom.setStyle(node, name, ''); - }); - } - }); - } - }; - var mergeWithChildren = function (editor, formatList, vars, node) { - each$e(formatList, function (format) { - each$e(editor.dom.select(format.inline, node), function (child) { - if (!isElementNode(child)) { - return; - } - RemoveFormat.removeFormat(editor, format, vars, child, format.exact ? child : null); - }); - clearChildStyles(editor.dom, format, node); - }); - }; - var mergeWithParents = function (editor, format, name, vars, node) { - if (MatchFormat.matchNode(editor, node.parentNode, name, vars)) { - if (RemoveFormat.removeFormat(editor, format, vars, node)) { - return; - } - } - if (format.merge_with_parents) { - editor.dom.getParent(node.parentNode, function (parent) { - if (MatchFormat.matchNode(editor, parent, name, vars)) { - RemoveFormat.removeFormat(editor, format, vars, node); - return true; - } - }); - } - }; - var MergeFormats = { - mergeWithChildren: mergeWithChildren, - mergeUnderlineAndColor: mergeUnderlineAndColor, - mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize, - mergeSubSup: mergeSubSup, - mergeSiblings: mergeSiblings, - mergeWithParents: mergeWithParents - }; - - var each$f = Tools.each; - var isElementNode$1 = function (node) { - return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node); - }; - var applyFormat = function (ed, name, vars, node) { - var formatList = ed.formatter.get(name); - var format = formatList[0]; - var bookmark, rng; - var isCollapsed = !node && ed.selection.isCollapsed(); - var dom = ed.dom, selection = ed.selection; - var setElementFormat = function (elm, fmt) { - fmt = fmt || format; - if (elm) { - if (fmt.onformat) { - fmt.onformat(elm, fmt, vars, node); - } - each$f(fmt.styles, function (value, name) { - dom.setStyle(elm, name, FormatUtils.replaceVars(value, vars)); - }); - if (fmt.styles) { - var styleVal = dom.getAttrib(elm, 'style'); - if (styleVal) { - elm.setAttribute('data-mce-style', styleVal); - } - } - each$f(fmt.attributes, function (value, name) { - dom.setAttrib(elm, name, FormatUtils.replaceVars(value, vars)); - }); - each$f(fmt.classes, function (value) { - value = FormatUtils.replaceVars(value, vars); - if (!dom.hasClass(elm, value)) { - dom.addClass(elm, value); - } - }); - } - }; - var applyNodeStyle = function (formatList, node) { - var found = false; - if (!format.selector) { - return false; - } - each$f(formatList, function (format) { - if ('collapsed' in format && format.collapsed !== isCollapsed) { - return; - } - if (dom.is(node, format.selector) && !isCaretNode(node)) { - setElementFormat(node, format); - found = true; - return false; - } - }); - return found; - }; - var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) { - var newWrappers = []; - var wrapName, wrapElm, contentEditable = true; - wrapName = format.inline || format.block; - wrapElm = dom.create(wrapName); - setElementFormat(wrapElm); - RangeWalk.walk(dom, rng, function (nodes) { - var currentWrapElm; - var process = function (node) { - var nodeName, parentName, hasContentEditableState, lastContentEditable; - lastContentEditable = contentEditable; - nodeName = node.nodeName.toLowerCase(); - parentName = node.parentNode.nodeName.toLowerCase(); - if (node.nodeType === 1 && dom.getContentEditable(node)) { - lastContentEditable = contentEditable; - contentEditable = dom.getContentEditable(node) === 'true'; - hasContentEditableState = true; - } - if (FormatUtils.isEq(nodeName, 'br')) { - currentWrapElm = 0; - if (format.block) { - dom.remove(node); - } - return; - } - if (format.wrapper && MatchFormat.matchNode(ed, node, name, vars)) { - currentWrapElm = 0; - return; - } - if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && FormatUtils.isTextBlock(ed, nodeName) && FormatUtils.isValid(ed, parentName, wrapName)) { - node = dom.rename(node, wrapName); - setElementFormat(node); - newWrappers.push(node); - currentWrapElm = 0; - return; - } - if (format.selector) { - var found = applyNodeStyle(formatList, node); - if (!format.inline || found) { - currentWrapElm = 0; - return; - } - } - if (contentEditable && !hasContentEditableState && FormatUtils.isValid(ed, wrapName, nodeName) && FormatUtils.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !dom.isBlock(node))) { - if (!currentWrapElm) { - currentWrapElm = dom.clone(wrapElm, false); - node.parentNode.insertBefore(currentWrapElm, node); - newWrappers.push(currentWrapElm); - } - currentWrapElm.appendChild(node); - } else { - currentWrapElm = 0; - each$f(Tools.grep(node.childNodes), process); - if (hasContentEditableState) { - contentEditable = lastContentEditable; - } - currentWrapElm = 0; - } - }; - each$f(nodes, process); - }); - if (format.links === true) { - each$f(newWrappers, function (node) { - var process = function (node) { - if (node.nodeName === 'A') { - setElementFormat(node, format); - } - each$f(Tools.grep(node.childNodes), process); - }; - process(node); - }); - } - each$f(newWrappers, function (node) { - var childCount; - var getChildCount = function (node) { - var count = 0; - each$f(node.childNodes, function (node) { - if (!FormatUtils.isWhiteSpaceNode(node) && !Bookmarks.isBookmarkNode(node)) { - count++; - } - }); - return count; - }; - var getChildElementNode = function (root) { - var child = false; - each$f(root.childNodes, function (node) { - if (isElementNode$1(node)) { - child = node; - return false; - } - }); - return child; - }; - var mergeStyles = function (node) { - var child, clone; - child = getChildElementNode(node); - if (child && !Bookmarks.isBookmarkNode(child) && MatchFormat.matchName(dom, child, format)) { - clone = dom.clone(child, false); - setElementFormat(clone); - dom.replace(clone, node, true); - dom.remove(child, 1); - } - return clone || node; - }; - childCount = getChildCount(node); - if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) { - dom.remove(node, 1); - return; - } - if (format.inline || format.wrapper) { - if (!format.exact && childCount === 1) { - node = mergeStyles(node); - } - MergeFormats.mergeWithChildren(ed, formatList, vars, node); - MergeFormats.mergeWithParents(ed, format, name, vars, node); - MergeFormats.mergeBackgroundColorAndFontSize(dom, format, vars, node); - MergeFormats.mergeSubSup(dom, format, vars, node); - MergeFormats.mergeSiblings(dom, format, vars, node); - } - }); - }; - if (dom.getContentEditable(selection.getNode()) === 'false') { - node = selection.getNode(); - for (var i = 0, l = formatList.length; i < l; i++) { - if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) { - setElementFormat(node, formatList[i]); - return; - } - } - return; - } - if (format) { - if (node) { - if (node.nodeType) { - if (!applyNodeStyle(formatList, node)) { - rng = dom.createRng(); - rng.setStartBefore(node); - rng.setEndAfter(node); - applyRngStyle(dom, ExpandRange.expandRng(ed, rng, formatList), null, true); - } - } else { - applyRngStyle(dom, node, null, true); - } - } else { - if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { - var curSelNode = ed.selection.getNode(); - if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) { - applyFormat(ed, formatList[0].defaultBlock); - } - ed.selection.setRng(RangeNormalizer.normalize(ed.selection.getRng())); - bookmark = GetBookmark.getPersistentBookmark(ed.selection, true); - applyRngStyle(dom, ExpandRange.expandRng(ed, selection.getRng(), formatList)); - if (format.styles) { - MergeFormats.mergeUnderlineAndColor(dom, format, vars, curSelNode); - } - selection.moveToBookmark(bookmark); - FormatUtils.moveStart(dom, selection, selection.getRng()); - ed.nodeChanged(); - } else { - applyCaretFormat(ed, name, vars); - } - } - Hooks.postProcess(name, ed); - } - }; - var ApplyFormat = { applyFormat: applyFormat }; - - var each$g = Tools.each; - var setup$5 = function (formatChangeData, editor) { - var currentFormats = {}; - formatChangeData.set({}); - editor.on('NodeChange', function (e) { - var parents = FormatUtils.getParents(editor.dom, e.element); - var matchedFormats = {}; - parents = Tools.grep(parents, function (node) { - return node.nodeType === 1 && !node.getAttribute('data-mce-bogus'); - }); - each$g(formatChangeData.get(), function (callbacks, format) { - each$g(parents, function (node) { - if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) { - if (!currentFormats[format]) { - each$g(callbacks, function (callback) { - callback(true, { - node: node, - format: format, - parents: parents - }); - }); - currentFormats[format] = callbacks; - } - matchedFormats[format] = callbacks; - return false; - } - if (MatchFormat.matchesUnInheritedFormatSelector(editor, node, format)) { - return false; - } - }); - }); - each$g(currentFormats, function (callbacks, format) { - if (!matchedFormats[format]) { - delete currentFormats[format]; - each$g(callbacks, function (callback) { - callback(false, { - node: e.element, - format: format, - parents: parents - }); - }); - } - }); - }); - }; - var addListeners = function (formatChangeData, formats, callback, similar) { - var formatChangeItems = formatChangeData.get(); - each$g(formats.split(','), function (format) { - if (!formatChangeItems[format]) { - formatChangeItems[format] = []; - formatChangeItems[format].similar = similar; - } - formatChangeItems[format].push(callback); - }); - formatChangeData.set(formatChangeItems); - }; - var formatChanged = function (editor, formatChangeState, formats, callback, similar) { - if (formatChangeState.get() === null) { - setup$5(formatChangeState, editor); - } - addListeners(formatChangeState, formats, callback, similar); - }; - var FormatChanged = { formatChanged: formatChanged }; - - var get$5 = function (dom) { - var formats = { - valigntop: [{ - selector: 'td,th', - styles: { verticalAlign: 'top' } - }], - valignmiddle: [{ - selector: 'td,th', - styles: { verticalAlign: 'middle' } - }], - valignbottom: [{ - selector: 'td,th', - styles: { verticalAlign: 'bottom' } - }], - alignleft: [ - { - selector: 'figure.image', - collapsed: false, - classes: 'align-left', - ceFalseOverride: true, - preview: 'font-family font-size' - }, - { - selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', - styles: { textAlign: 'left' }, - inherit: false, - preview: false, - defaultBlock: 'div' - }, - { - selector: 'img,table', - collapsed: false, - styles: { float: 'left' }, - preview: 'font-family font-size' - } - ], - aligncenter: [ - { - selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', - styles: { textAlign: 'center' }, - inherit: false, - preview: 'font-family font-size', - defaultBlock: 'div' - }, - { - selector: 'figure.image', - collapsed: false, - classes: 'align-center', - ceFalseOverride: true, - preview: 'font-family font-size' - }, - { - selector: 'img', - collapsed: false, - styles: { - display: 'block', - marginLeft: 'auto', - marginRight: 'auto' - }, - preview: false - }, - { - selector: 'table', - collapsed: false, - styles: { - marginLeft: 'auto', - marginRight: 'auto' - }, - preview: 'font-family font-size' - } - ], - alignright: [ - { - selector: 'figure.image', - collapsed: false, - classes: 'align-right', - ceFalseOverride: true, - preview: 'font-family font-size' - }, - { - selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', - styles: { textAlign: 'right' }, - inherit: false, - preview: 'font-family font-size', - defaultBlock: 'div' - }, - { - selector: 'img,table', - collapsed: false, - styles: { float: 'right' }, - preview: 'font-family font-size' - } - ], - alignjustify: [{ - selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', - styles: { textAlign: 'justify' }, - inherit: false, - defaultBlock: 'div', - preview: 'font-family font-size' - }], - 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' }, - links: true, - remove_similar: true, - clear_child_styles: true - }, - hilitecolor: { - inline: 'span', - styles: { backgroundColor: '%value' }, - links: true, - remove_similar: true, - clear_child_styles: true - }, - fontname: { - inline: 'span', - toggle: false, - styles: { fontFamily: '%value' }, - clear_child_styles: true - }, - fontsize: { - inline: 'span', - toggle: false, - styles: { fontSize: '%value' }, - clear_child_styles: true - }, - fontsize_class: { - inline: 'span', - attributes: { class: '%value' } - }, - blockquote: { - block: 'blockquote', - wrapper: 1, - remove: 'all' - }, - subscript: { inline: 'sub' }, - superscript: { inline: 'sup' }, - code: { inline: 'code' }, - link: { - inline: 'a', - selector: 'a', - remove: 'all', - split: true, - deep: true, - onmatch: function () { - return true; - }, - onformat: function (elm, fmt, vars) { - Tools.each(vars, function (value, key) { - dom.setAttrib(elm, key, value); - }); - } - }, - removeformat: [ - { - selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins', - 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 - } - ] - }; - Tools.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function (name) { - formats[name] = { - block: name, - remove: 'all' - }; - }); - return formats; - }; - var DefaultFormats = { get: get$5 }; - - function FormatRegistry (editor) { - var formats = {}; - var get = function (name) { - return name ? formats[name] : formats; - }; - var register = function (name, format) { - if (name) { - if (typeof name !== 'string') { - Tools.each(name, function (format, name) { - register(name, format); - }); - } else { - format = format.length ? format : [format]; - Tools.each(format, function (format) { - if (typeof format.deep === 'undefined') { - format.deep = !format.selector; - } - if (typeof format.split === 'undefined') { - format.split = !format.selector || format.inline; - } - if (typeof format.remove === 'undefined' && format.selector && !format.inline) { - format.remove = 'none'; - } - if (format.selector && format.inline) { - format.mixed = true; - format.block_expand = true; - } - if (typeof format.classes === 'string') { - format.classes = format.classes.split(/\s+/); - } - }); - formats[name] = format; - } - } - }; - var unregister = function (name) { - if (name && formats[name]) { - delete formats[name]; - } - return formats; - }; - register(DefaultFormats.get(editor.dom)); - register(editor.settings.formats); - return { - get: get, - register: register, - unregister: unregister - }; - } - - var each$h = Tools.each; - var dom = DOMUtils$1.DOM; - var parsedSelectorToHtml = function (ancestry, editor) { - var elm, item, fragment; - var schema = editor && editor.schema || Schema({}); - var decorate = function (elm, item) { - if (item.classes.length) { - dom.addClass(elm, item.classes.join(' ')); - } - dom.setAttribs(elm, item.attrs); - }; - var createElement = function (sItem) { - var elm; - item = typeof sItem === 'string' ? { - name: sItem, - classes: [], - attrs: {} - } : sItem; - elm = dom.create(item.name); - decorate(elm, item); - return elm; - }; - var getRequiredParent = function (elm, candidate) { - var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm; - var elmRule = schema.getElementRule(name); - var parentsRequired = elmRule && elmRule.parentsRequired; - if (parentsRequired && parentsRequired.length) { - return candidate && Tools.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0]; - } else { - return false; - } - }; - var wrapInHtml = function (elm, ancestry, siblings) { - var parent, parentCandidate, parentRequired; - var ancestor = ancestry.length > 0 && ancestry[0]; - var ancestorName = ancestor && ancestor.name; - parentRequired = getRequiredParent(elm, ancestorName); - if (parentRequired) { - if (ancestorName === parentRequired) { - parentCandidate = ancestry[0]; - ancestry = ancestry.slice(1); - } else { - parentCandidate = parentRequired; - } - } else if (ancestor) { - parentCandidate = ancestry[0]; - ancestry = ancestry.slice(1); - } else if (!siblings) { - return elm; - } - if (parentCandidate) { - parent = createElement(parentCandidate); - parent.appendChild(elm); - } - if (siblings) { - if (!parent) { - parent = dom.create('div'); - parent.appendChild(elm); - } - Tools.each(siblings, function (sibling) { - var siblingElm = createElement(sibling); - parent.insertBefore(siblingElm, elm); - }); - } - return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings); - }; - if (ancestry && ancestry.length) { - item = ancestry[0]; - elm = createElement(item); - fragment = dom.create('div'); - fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings)); - return fragment; - } else { - return ''; - } - }; - var selectorToHtml = function (selector, editor) { - return parsedSelectorToHtml(parseSelector(selector), editor); - }; - var parseSelectorItem = function (item) { - var tagName; - var obj = { - classes: [], - attrs: {} - }; - item = obj.selector = Tools.trim(item); - if (item !== '*') { - tagName = item.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function ($0, $1, $2, $3, $4) { - switch ($1) { - case '#': - obj.attrs.id = $2; - break; - case '.': - obj.classes.push($2); - break; - case ':': - if (Tools.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) { - obj.attrs[$2] = $2; - } - break; - } - if ($3 === '[') { - var m = $4.match(/([\w\-]+)(?:\=\"([^\"]+))?/); - if (m) { - obj.attrs[m[1]] = m[2]; - } - } - return ''; - }); - } - obj.name = tagName || 'div'; - return obj; - }; - var parseSelector = function (selector) { - if (!selector || typeof selector !== 'string') { - return []; - } - selector = selector.split(/\s*,\s*/)[0]; - selector = selector.replace(/\s*(~\+|~|\+|>)\s*/g, '$1'); - return Tools.map(selector.split(/(?:>|\s+(?![^\[\]]+\]))/), function (item) { - var siblings = Tools.map(item.split(/(?:~\+|~|\+)/), parseSelectorItem); - var obj = siblings.pop(); - if (siblings.length) { - obj.siblings = siblings; - } - return obj; - }).reverse(); - }; - var getCssText = function (editor, format) { - var name, previewFrag, previewElm, items; - var previewCss = '', parentFontSize, previewStyles; - previewStyles = editor.settings.preview_styles; - if (previewStyles === false) { - return ''; - } - if (typeof previewStyles !== 'string') { - previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow'; - } - var removeVars = function (val) { - return val.replace(/%(\w+)/g, ''); - }; - if (typeof format === 'string') { - format = editor.formatter.get(format); - if (!format) { - return; - } - format = format[0]; - } - if ('preview' in format) { - previewStyles = format.preview; - if (previewStyles === false) { - return ''; - } - } - name = format.block || format.inline || 'span'; - items = parseSelector(format.selector); - if (items.length) { - if (!items[0].name) { - items[0].name = name; - } - name = format.selector; - previewFrag = parsedSelectorToHtml(items, editor); - } else { - previewFrag = parsedSelectorToHtml([name], editor); - } - previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild; - each$h(format.styles, function (value, name) { - value = removeVars(value); - if (value) { - dom.setStyle(previewElm, name, value); - } - }); - each$h(format.attributes, function (value, name) { - value = removeVars(value); - if (value) { - dom.setAttrib(previewElm, name, value); - } - }); - each$h(format.classes, function (value) { - value = removeVars(value); - if (!dom.hasClass(previewElm, value)) { - dom.addClass(previewElm, value); - } - }); - editor.fire('PreviewFormats'); - dom.setStyles(previewFrag, { - position: 'absolute', - left: -65535 - }); - editor.getBody().appendChild(previewFrag); - parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true); - parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0; - each$h(previewStyles.split(' '), function (name) { - var value = dom.getStyle(previewElm, name, true); - if (name === 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) { - value = dom.getStyle(editor.getBody(), name, true); - if (dom.toHex(value).toLowerCase() === '#ffffff') { - return; - } - } - if (name === 'color') { - if (dom.toHex(value).toLowerCase() === '#000000') { - return; - } - } - if (name === 'font-size') { - if (/em|%$/.test(value)) { - if (parentFontSize === 0) { - return; - } - var numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1); - value = numValue * parentFontSize + 'px'; - } - } - if (name === 'border' && value) { - previewCss += 'padding:0 2px;'; - } - previewCss += name + ':' + value + ';'; - }); - editor.fire('AfterPreviewFormats'); - dom.remove(previewFrag); - return previewCss; - }; - var Preview = { - getCssText: getCssText, - parseSelector: parseSelector, - selectorToHtml: selectorToHtml - }; - - var toggle = function (editor, formats, name, vars, node) { - var fmt = formats.get(name); - if (MatchFormat.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) { - RemoveFormat.remove(editor, name, vars, node); - } else { - ApplyFormat.applyFormat(editor, name, vars, node); - } - }; - var ToggleFormat = { toggle: toggle }; - - var setup$6 = function (editor) { - editor.addShortcut('meta+b', '', 'Bold'); - editor.addShortcut('meta+i', '', 'Italic'); - editor.addShortcut('meta+u', '', 'Underline'); - for (var i = 1; i <= 6; i++) { - editor.addShortcut('access+' + i, '', [ - 'FormatBlock', - false, - 'h' + i - ]); - } - editor.addShortcut('access+7', '', [ - 'FormatBlock', - false, - 'p' - ]); - editor.addShortcut('access+8', '', [ - 'FormatBlock', - false, - 'div' - ]); - editor.addShortcut('access+9', '', [ - 'FormatBlock', - false, - 'address' - ]); - }; - var FormatShortcuts = { setup: setup$6 }; - - function Formatter (editor) { - var formats = FormatRegistry(editor); - var formatChangeState = Cell(null); - FormatShortcuts.setup(editor); - setup$2(editor); - return { - get: formats.get, - register: formats.register, - unregister: formats.unregister, - apply: curry(ApplyFormat.applyFormat, editor), - remove: curry(RemoveFormat.remove, editor), - toggle: curry(ToggleFormat.toggle, editor, formats), - match: curry(MatchFormat.match, editor), - matchAll: curry(MatchFormat.matchAll, editor), - matchNode: curry(MatchFormat.matchNode, editor), - canApply: curry(MatchFormat.canApply, editor), - formatChanged: curry(FormatChanged.formatChanged, editor, formatChangeState), - getCssText: curry(Preview.getCssText, editor) - }; - } - - var hasOwnProperty$2 = Object.prototype.hasOwnProperty; - var shallow$1 = function (old, nu) { - return nu; - }; - var baseMerge = function (merger) { - return function () { - var objects = new Array(arguments.length); - for (var i = 0; i < objects.length; i++) { - objects[i] = arguments[i]; - } - if (objects.length === 0) { - throw new Error('Can\'t merge zero objects'); - } - var ret = {}; - for (var j = 0; j < objects.length; j++) { - var curObject = objects[j]; - for (var key in curObject) { - if (hasOwnProperty$2.call(curObject, key)) { - ret[key] = merger(ret[key], curObject[key]); - } - } - } - return ret; - }; - }; - var merge = baseMerge(shallow$1); - - var register = function (htmlParser, settings, dom) { - htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) { - var i = nodes.length, node; - while (i--) { - node = nodes[i]; - node.attr('tabindex', node.attributes.map['data-mce-tabindex']); - node.attr(name, null); - } - }); - htmlParser.addAttributeFilter('src,href,style', function (nodes, name) { - var i = nodes.length, node, value; - var internalName = 'data-mce-' + name; - var urlConverter = settings.url_converter; - var urlConverterScope = settings.url_converter_scope; - while (i--) { - node = nodes[i]; - value = node.attributes.map[internalName]; - if (value !== undefined) { - node.attr(name, value.length > 0 ? value : null); - node.attr(internalName, null); - } else { - value = node.attributes.map[name]; - if (name === 'style') { - value = dom.serializeStyle(dom.parseStyle(value), node.name); - } else if (urlConverter) { - value = urlConverter.call(urlConverterScope, value, name, node.name); - } - node.attr(name, value.length > 0 ? value : null); - } - } - }); - htmlParser.addAttributeFilter('class', function (nodes) { - var i = nodes.length, node, value; - while (i--) { - node = nodes[i]; - value = node.attr('class'); - if (value) { - value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ''); - node.attr('class', value.length > 0 ? value : null); - } - } - }); - htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) { - var i = nodes.length, node; - while (i--) { - node = nodes[i]; - if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) { - var hasChildren = Option.from(node.firstChild).exists(function (firstChild) { - return !Zwsp.isZwsp(firstChild.value); - }); - if (hasChildren) { - node.unwrap(); - } else { - node.remove(); - } - } - } - }); - htmlParser.addNodeFilter('noscript', function (nodes) { - var i = nodes.length, node; - while (i--) { - node = nodes[i].firstChild; - if (node) { - node.value = Entities.decode(node.value); - } - } - }); - htmlParser.addNodeFilter('script,style', function (nodes, name) { - var i = nodes.length, node, value, type; - var trim = function (value) { - return value.replace(/()/g, '\n').replace(/^[\r\n]*|[\r\n]*$/g, '').replace(/^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, ''); - }; - while (i--) { - node = nodes[i]; - value = node.firstChild ? node.firstChild.value : ''; - if (name === 'script') { - type = node.attr('type'); - if (type) { - node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\-/, '')); - } - if (settings.element_format === 'xhtml' && value.length > 0) { - node.firstChild.value = '// '; - } - } else { - if (settings.element_format === 'xhtml' && value.length > 0) { - node.firstChild.value = ''; - } - } - } - }); - htmlParser.addNodeFilter('#comment', function (nodes) { - var i = nodes.length, node; - while (i--) { - node = nodes[i]; - if (node.value.indexOf('[CDATA[') === 0) { - node.name = '#cdata'; - node.type = 4; - node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, ''); - } else if (node.value.indexOf('mce:protected ') === 0) { - node.name = '#text'; - node.type = 3; - node.raw = true; - node.value = unescape(node.value).substr(14); - } - } - }); - htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) { - var i = nodes.length, node; - while (i--) { - node = nodes[i]; - if (node.type === 7) { - node.remove(); - } else if (node.type === 1) { - if (name === 'input' && !('type' in node.attributes.map)) { - node.attr('type', 'text'); - } - } - } - }); - htmlParser.addAttributeFilter('data-mce-type', function (nodes) { - each(nodes, function (node) { - if (node.attr('data-mce-type') === 'format-caret') { - if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) { - node.remove(); - } else { - node.unwrap(); - } - } - }); - }); - htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) { - var i = nodes.length; - while (i--) { - nodes[i].attr(name, null); - } - }); - }; - var trimTrailingBr = function (rootNode) { - var brNode1, brNode2; - var isBr = function (node) { - return node && node.name === 'br'; - }; - brNode1 = rootNode.lastChild; - if (isBr(brNode1)) { - brNode2 = brNode1.prev; - if (isBr(brNode2)) { - brNode1.remove(); - brNode2.remove(); - } - } - }; - var DomSerializerFilters = { - register: register, - trimTrailingBr: trimTrailingBr - }; - - var preProcess = function (editor, node, args) { - var impl, doc, oldDoc; - var dom = editor.dom; - node = node.cloneNode(true); - impl = domGlobals.document.implementation; - if (impl.createHTMLDocument) { - doc = impl.createHTMLDocument(''); - Tools.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) { - doc.body.appendChild(doc.importNode(node, true)); - }); - if (node.nodeName !== 'BODY') { - node = doc.body.firstChild; - } else { - node = doc.body; - } - oldDoc = dom.doc; - dom.doc = doc; - } - Events.firePreProcess(editor, merge(args, { node: node })); - if (oldDoc) { - dom.doc = oldDoc; - } - return node; - }; - var shouldFireEvent = function (editor, args) { - return editor && editor.hasEventListeners('PreProcess') && !args.no_events; - }; - var process = function (editor, node, args) { - return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node; - }; - var DomSerializerPreProcess = { process: process }; - - var removeAttrs = function (node, names) { - each(names, function (name) { - node.attr(name, null); - }); - }; - var addFontToSpansFilter = function (domParser, styles, fontSizes) { - domParser.addNodeFilter('font', function (nodes) { - each(nodes, function (node) { - var props = styles.parse(node.attr('style')); - var color = node.attr('color'); - var face = node.attr('face'); - var size = node.attr('size'); - if (color) { - props.color = color; - } - if (face) { - props['font-family'] = face; - } - if (size) { - props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1]; - } - node.name = 'span'; - node.attr('style', styles.serialize(props)); - removeAttrs(node, [ - 'color', - 'face', - 'size' - ]); - }); - }); - }; - var addStrikeToSpanFilter = function (domParser, styles) { - domParser.addNodeFilter('strike', function (nodes) { - each(nodes, function (node) { - var props = styles.parse(node.attr('style')); - props['text-decoration'] = 'line-through'; - node.name = 'span'; - node.attr('style', styles.serialize(props)); - }); - }); - }; - var addFilters = function (domParser, settings) { - var styles = Styles(); - if (settings.convert_fonts_to_spans) { - addFontToSpansFilter(domParser, styles, Tools.explode(settings.font_size_legacy_values)); - } - addStrikeToSpanFilter(domParser, styles); - }; - var register$1 = function (domParser, settings) { - if (settings.inline_styles) { - addFilters(domParser, settings); - } - }; - var LegacyFilter = { register: register$1 }; - - var whiteSpaceRegExp$3 = /^[ \t\r\n]*$/; - var typeLookup = { - '#text': 3, - '#comment': 8, - '#cdata': 4, - '#pi': 7, - '#doctype': 10, - '#document-fragment': 11 - }; - var walk$2 = function (node, root, prev) { - var sibling; - var parent; - var startName = prev ? 'lastChild' : 'firstChild'; - var siblingName = prev ? 'prev' : 'next'; - if (node[startName]) { - return node[startName]; - } - if (node !== root) { - sibling = node[siblingName]; - if (sibling) { - return sibling; - } - for (parent = node.parent; parent && parent !== root; parent = parent.parent) { - sibling = parent[siblingName]; - if (sibling) { - return sibling; - } - } - } - }; - var Node$1 = function () { - function Node(name, type) { - this.name = name; - this.type = type; - if (type === 1) { - this.attributes = []; - this.attributes.map = {}; - } - } - Node.create = function (name, attrs) { - var node, attrName; - node = new Node(name, typeLookup[name] || 1); - if (attrs) { - for (attrName in attrs) { - node.attr(attrName, attrs[attrName]); - } - } - return node; - }; - Node.prototype.replace = function (node) { - var self = this; - if (node.parent) { - node.remove(); - } - self.insert(node, self); - self.remove(); - return self; - }; - Node.prototype.attr = function (name, value) { - var self = this; - var attrs, i; - if (typeof name !== 'string') { - for (i in name) { - self.attr(i, name[i]); - } - return self; - } - if (attrs = self.attributes) { - if (value !== undefined) { - if (value === null) { - if (name in attrs.map) { - delete attrs.map[name]; - i = attrs.length; - while (i--) { - if (attrs[i].name === name) { - attrs = attrs.splice(i, 1); - return self; - } - } - } - return self; - } - if (name in attrs.map) { - i = attrs.length; - while (i--) { - if (attrs[i].name === name) { - attrs[i].value = value; - break; - } - } - } else { - attrs.push({ - name: name, - value: value - }); - } - attrs.map[name] = value; - return self; - } - return attrs.map[name]; - } - }; - Node.prototype.clone = function () { - var self = this; - var clone = new Node(self.name, self.type); - var i, l, selfAttrs, selfAttr, cloneAttrs; - if (selfAttrs = self.attributes) { - cloneAttrs = []; - cloneAttrs.map = {}; - for (i = 0, l = selfAttrs.length; i < l; i++) { - selfAttr = selfAttrs[i]; - if (selfAttr.name !== 'id') { - cloneAttrs[cloneAttrs.length] = { - name: selfAttr.name, - value: selfAttr.value - }; - cloneAttrs.map[selfAttr.name] = selfAttr.value; - } - } - clone.attributes = cloneAttrs; - } - clone.value = self.value; - clone.shortEnded = self.shortEnded; - return clone; - }; - Node.prototype.wrap = function (wrapper) { - var self = this; - self.parent.insert(wrapper, self); - wrapper.append(self); - return self; - }; - Node.prototype.unwrap = function () { - var self = this; - var node, next; - for (node = self.firstChild; node;) { - next = node.next; - self.insert(node, self, true); - node = next; - } - self.remove(); - }; - Node.prototype.remove = function () { - var self = this, parent = self.parent, next = self.next, prev = self.prev; - if (parent) { - if (parent.firstChild === self) { - parent.firstChild = next; - if (next) { - next.prev = null; - } - } else { - prev.next = next; - } - if (parent.lastChild === self) { - parent.lastChild = prev; - if (prev) { - prev.next = null; - } - } else { - next.prev = prev; - } - self.parent = self.next = self.prev = null; - } - return self; - }; - Node.prototype.append = function (node) { - var self = this; - var last; - if (node.parent) { - node.remove(); - } - last = self.lastChild; - if (last) { - last.next = node; - node.prev = last; - self.lastChild = node; - } else { - self.lastChild = self.firstChild = node; - } - node.parent = self; - return node; - }; - Node.prototype.insert = function (node, refNode, before) { - var parent; - if (node.parent) { - node.remove(); - } - parent = refNode.parent || this; - if (before) { - if (refNode === parent.firstChild) { - parent.firstChild = node; - } else { - refNode.prev.next = node; - } - node.prev = refNode.prev; - node.next = refNode; - refNode.prev = node; - } else { - if (refNode === parent.lastChild) { - parent.lastChild = node; - } else { - refNode.next.prev = node; - } - node.next = refNode.next; - node.prev = refNode; - refNode.next = node; - } - node.parent = parent; - return node; - }; - Node.prototype.getAll = function (name) { - var self = this; - var node; - var collection = []; - for (node = self.firstChild; node; node = walk$2(node, self)) { - if (node.name === name) { - collection.push(node); - } - } - return collection; - }; - Node.prototype.empty = function () { - var self = this; - var nodes, i, node; - if (self.firstChild) { - nodes = []; - for (node = self.firstChild; node; node = walk$2(node, self)) { - nodes.push(node); - } - i = nodes.length; - while (i--) { - node = nodes[i]; - node.parent = node.firstChild = node.lastChild = node.next = node.prev = null; - } - } - self.firstChild = self.lastChild = null; - return self; - }; - Node.prototype.isEmpty = function (elements, whitespace, predicate) { - var self = this; - var node = self.firstChild, i, name; - whitespace = whitespace || {}; - if (node) { - do { - if (node.type === 1) { - if (node.attributes.map['data-mce-bogus']) { - continue; - } - if (elements[node.name]) { - return false; - } - i = node.attributes.length; - while (i--) { - name = node.attributes[i].name; - if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) { - return false; - } - } - } - if (node.type === 8) { - return false; - } - if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) { - return false; - } - if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) { - return false; - } - if (predicate && predicate(node)) { - return false; - } - } while (node = walk$2(node, self)); - } - return true; - }; - Node.prototype.walk = function (prev) { - return walk$2(this, null, prev); - }; - return Node; - }(); - - var paddEmptyNode = function (settings, args, blockElements, node) { - var brPreferred = settings.padd_empty_with_br || args.insert; - if (brPreferred && blockElements[node.name]) { - node.empty().append(new Node$1('br', 1)).shortEnded = true; - } else { - node.empty().append(new Node$1('#text', 3)).value = '\xA0'; - } - }; - var isPaddedWithNbsp = function (node) { - return hasOnlyChild(node, '#text') && node.firstChild.value === '\xA0'; - }; - var hasOnlyChild = function (node, name) { - return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name; - }; - var isPadded = function (schema, node) { - var rule = schema.getElementRule(node.name); - return rule && rule.paddEmpty; - }; - var isEmpty$2 = function (schema, nonEmptyElements, whitespaceElements, node) { - return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) { - return isPadded(schema, node); - }); - }; - var isLineBreakNode = function (node, blockElements) { - return node && (blockElements[node.name] || node.name === 'br'); - }; - - var register$2 = function (parser, settings) { - var schema = parser.schema; - if (settings.remove_trailing_brs) { - parser.addNodeFilter('br', function (nodes, _, args) { - var i; - var l = nodes.length; - var node; - var blockElements = Tools.extend({}, schema.getBlockElements()); - var nonEmptyElements = schema.getNonEmptyElements(); - var parent, lastParent, prev, prevName; - var whiteSpaceElements = schema.getWhiteSpaceElements(); - var elementRule, textNode; - blockElements.body = 1; - for (i = 0; i < l; i++) { - node = nodes[i]; - parent = node.parent; - if (blockElements[node.parent.name] && node === parent.lastChild) { - prev = node.prev; - while (prev) { - prevName = prev.name; - if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') { - if (prevName !== 'br') { - break; - } - if (prevName === 'br') { - node = null; - break; - } - } - prev = prev.prev; - } - if (node) { - node.remove(); - if (isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, parent)) { - elementRule = schema.getElementRule(parent.name); - if (elementRule) { - if (elementRule.removeEmpty) { - parent.remove(); - } else if (elementRule.paddEmpty) { - paddEmptyNode(settings, args, blockElements, parent); - } - } - } - } - } else { - lastParent = node; - while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) { - lastParent = parent; - if (blockElements[parent.name]) { - break; - } - parent = parent.parent; - } - if (lastParent === parent && settings.padd_empty_with_br !== true) { - textNode = new Node$1('#text', 3); - textNode.value = '\xA0'; - node.replace(textNode); - } - } - } - }); - } - parser.addAttributeFilter('href', function (nodes) { - var i = nodes.length, node; - var appendRel = function (rel) { - var parts = rel.split(' ').filter(function (p) { - return p.length > 0; - }); - return parts.concat(['noopener']).sort().join(' '); - }; - var addNoOpener = function (rel) { - var newRel = rel ? Tools.trim(rel) : ''; - if (!/\b(noopener)\b/g.test(newRel)) { - return appendRel(newRel); - } else { - return newRel; - } - }; - if (!settings.allow_unsafe_link_target) { - while (i--) { - node = nodes[i]; - if (node.name === 'a' && node.attr('target') === '_blank') { - node.attr('rel', addNoOpener(node.attr('rel'))); - } - } - } - }); - if (!settings.allow_html_in_named_anchor) { - parser.addAttributeFilter('id,name', function (nodes) { - var i = nodes.length, sibling, prevSibling, parent, node; - while (i--) { - node = nodes[i]; - if (node.name === 'a' && node.firstChild && !node.attr('href')) { - parent = node.parent; - sibling = node.lastChild; - do { - prevSibling = sibling.prev; - parent.insert(sibling, node); - sibling = prevSibling; - } while (sibling); - } - } - }); - } - if (settings.fix_list_elements) { - parser.addNodeFilter('ul,ol', function (nodes) { - var i = nodes.length, node, parentNode; - while (i--) { - node = nodes[i]; - parentNode = node.parent; - if (parentNode.name === 'ul' || parentNode.name === 'ol') { - if (node.prev && node.prev.name === 'li') { - node.prev.append(node); - } else { - var li = new Node$1('li', 1); - li.attr('style', 'list-style-type: none'); - node.wrap(li); - } - } - } - }); - } - if (settings.validate && schema.getValidClasses()) { - parser.addAttributeFilter('class', function (nodes) { - var i = nodes.length, node, classList, ci, className, classValue; - var validClasses = schema.getValidClasses(); - var validClassesMap, valid; - while (i--) { - node = nodes[i]; - classList = node.attr('class').split(' '); - classValue = ''; - for (ci = 0; ci < classList.length; ci++) { - className = classList[ci]; - valid = false; - validClassesMap = validClasses['*']; - if (validClassesMap && validClassesMap[className]) { - valid = true; - } - validClassesMap = validClasses[node.name]; - if (!valid && validClassesMap && validClassesMap[className]) { - valid = true; - } - if (valid) { - if (classValue) { - classValue += ' '; - } - classValue += className; - } - } - if (!classValue.length) { - classValue = null; - } - node.attr('class', classValue); - } - }); - } - }; - - var makeMap$4 = Tools.makeMap, each$i = Tools.each, explode$3 = Tools.explode, extend$3 = Tools.extend; - function DomParser (settings, schema) { - if (schema === void 0) { - schema = Schema(); - } - var nodeFilters = {}; - var attributeFilters = []; - var matchedNodes = {}; - var matchedAttributes = {}; - settings = settings || {}; - settings.validate = 'validate' in settings ? settings.validate : true; - settings.root_name = settings.root_name || 'body'; - var fixInvalidChildren = function (nodes) { - var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i; - var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode; - nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table'); - nonEmptyElements = schema.getNonEmptyElements(); - whitespaceElements = schema.getWhiteSpaceElements(); - textBlockElements = schema.getTextBlockElements(); - specialElements = schema.getSpecialElements(); - for (ni = 0; ni < nodes.length; ni++) { - node = nodes[ni]; - if (!node.parent || node.fixed) { - continue; - } - if (textBlockElements[node.name] && node.parent.name === 'li') { - sibling = node.next; - while (sibling) { - if (textBlockElements[sibling.name]) { - sibling.name = 'li'; - sibling.fixed = true; - node.parent.insert(sibling, node.parent); - } else { - break; - } - sibling = sibling.next; - } - node.unwrap(node); - continue; - } - parents = [node]; - for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) { - parents.push(parent); - } - if (parent && parents.length > 1) { - parents.reverse(); - newParent = currentNode = filterNode(parents[0].clone()); - for (i = 0; i < parents.length - 1; i++) { - if (schema.isValidChild(currentNode.name, parents[i].name)) { - tempNode = filterNode(parents[i].clone()); - currentNode.append(tempNode); - } else { - tempNode = currentNode; - } - for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) { - nextNode = childNode.next; - tempNode.append(childNode); - childNode = nextNode; - } - currentNode = tempNode; - } - if (!isEmpty$2(schema, nonEmptyElements, whitespaceElements, newParent)) { - parent.insert(newParent, parents[0], true); - parent.insert(node, newParent); - } else { - parent.insert(node, parents[0], true); - } - parent = parents[0]; - if (isEmpty$2(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) { - parent.empty().remove(); - } - } else if (node.parent) { - if (node.name === 'li') { - sibling = node.prev; - if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { - sibling.append(node); - continue; - } - sibling = node.next; - if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { - sibling.insert(node, sibling.firstChild, true); - continue; - } - node.wrap(filterNode(new Node$1('ul', 1))); - continue; - } - if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) { - node.wrap(filterNode(new Node$1('div', 1))); - } else { - if (specialElements[node.name]) { - node.empty().remove(); - } else { - node.unwrap(); - } - } - } - } - }; - var filterNode = function (node) { - var i, name, list; - name = node.name; - if (name in nodeFilters) { - list = matchedNodes[name]; - if (list) { - list.push(node); - } else { - matchedNodes[name] = [node]; - } - } - i = attributeFilters.length; - while (i--) { - name = attributeFilters[i].name; - if (name in node.attributes.map) { - list = matchedAttributes[name]; - if (list) { - list.push(node); - } else { - matchedAttributes[name] = [node]; - } - } - } - return node; - }; - var addNodeFilter = function (name, callback) { - each$i(explode$3(name), function (name) { - var list = nodeFilters[name]; - if (!list) { - nodeFilters[name] = list = []; - } - list.push(callback); - }); - }; - var getNodeFilters = function () { - var out = []; - for (var name in nodeFilters) { - if (nodeFilters.hasOwnProperty(name)) { - out.push({ - name: name, - callbacks: nodeFilters[name] - }); - } - } - return out; - }; - var addAttributeFilter = function (name, callback) { - each$i(explode$3(name), function (name) { - var i; - for (i = 0; i < attributeFilters.length; i++) { - if (attributeFilters[i].name === name) { - attributeFilters[i].callbacks.push(callback); - return; - } - } - attributeFilters.push({ - name: name, - callbacks: [callback] - }); - }); - }; - var getAttributeFilters = function () { - return [].concat(attributeFilters); - }; - var parse = function (html, args) { - var parser, nodes, i, l, fi, fl, list, name; - var blockElements; - var invalidChildren = []; - var isInWhiteSpacePreservedElement; - var node; - args = args || {}; - matchedNodes = {}; - matchedAttributes = {}; - blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements()); - var nonEmptyElements = schema.getNonEmptyElements(); - var children = schema.children; - var validate = settings.validate; - var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block; - var whiteSpaceElements = schema.getWhiteSpaceElements(); - var startWhiteSpaceRegExp = /^[ \t\r\n]+/; - var endWhiteSpaceRegExp = /[ \t\r\n]+$/; - var allWhiteSpaceRegExp = /[ \t\r\n]+/g; - var isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/; - isInWhiteSpacePreservedElement = whiteSpaceElements.hasOwnProperty(args.context) || whiteSpaceElements.hasOwnProperty(settings.root_name); - var addRootBlocks = function () { - var node = rootNode.firstChild, next, rootBlockNode; - var trim = function (rootBlockNode) { - if (rootBlockNode) { - node = rootBlockNode.firstChild; - if (node && node.type === 3) { - node.value = node.value.replace(startWhiteSpaceRegExp, ''); - } - node = rootBlockNode.lastChild; - if (node && node.type === 3) { - node.value = node.value.replace(endWhiteSpaceRegExp, ''); - } - } - }; - if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) { - return; - } - while (node) { - next = node.next; - if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) { - if (!rootBlockNode) { - rootBlockNode = createNode(rootBlockName, 1); - rootBlockNode.attr(settings.forced_root_block_attrs); - rootNode.insert(rootBlockNode, node); - rootBlockNode.append(node); - } else { - rootBlockNode.append(node); - } - } else { - trim(rootBlockNode); - rootBlockNode = null; - } - node = next; - } - trim(rootBlockNode); - }; - var createNode = function (name, type) { - var node = new Node$1(name, type); - var list; - if (name in nodeFilters) { - list = matchedNodes[name]; - if (list) { - list.push(node); - } else { - matchedNodes[name] = [node]; - } - } - return node; - }; - var removeWhitespaceBefore = function (node) { - var textNode, textNodeNext, textVal, sibling; - var blockElements = schema.getBlockElements(); - for (textNode = node.prev; textNode && textNode.type === 3;) { - textVal = textNode.value.replace(endWhiteSpaceRegExp, ''); - if (textVal.length > 0) { - textNode.value = textVal; - return; - } - textNodeNext = textNode.next; - if (textNodeNext) { - if (textNodeNext.type === 3 && textNodeNext.value.length) { - textNode = textNode.prev; - continue; - } - if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') { - textNode = textNode.prev; - continue; - } - } - sibling = textNode.prev; - textNode.remove(); - textNode = sibling; - } - }; - var cloneAndExcludeBlocks = function (input) { - var name; - var output = {}; - for (name in input) { - if (name !== 'li' && name !== 'p') { - output[name] = input[name]; - } - } - return output; - }; - parser = SaxParser$1({ - validate: validate, - allow_script_urls: settings.allow_script_urls, - allow_conditional_comments: settings.allow_conditional_comments, - self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()), - cdata: function (text) { - node.append(createNode('#cdata', 4)).value = text; - }, - text: function (text, raw) { - var textNode; - if (!isInWhiteSpacePreservedElement) { - text = text.replace(allWhiteSpaceRegExp, ' '); - if (isLineBreakNode(node.lastChild, blockElements)) { - text = text.replace(startWhiteSpaceRegExp, ''); - } - } - if (text.length !== 0) { - textNode = createNode('#text', 3); - textNode.raw = !!raw; - node.append(textNode).value = text; - } - }, - comment: function (text) { - node.append(createNode('#comment', 8)).value = text; - }, - pi: function (name, text) { - node.append(createNode(name, 7)).value = text; - removeWhitespaceBefore(node); - }, - doctype: function (text) { - var newNode; - newNode = node.append(createNode('#doctype', 10)); - newNode.value = text; - removeWhitespaceBefore(node); - }, - start: function (name, attrs, empty) { - var newNode, attrFiltersLen, elementRule, attrName, parent; - elementRule = validate ? schema.getElementRule(name) : {}; - if (elementRule) { - newNode = createNode(elementRule.outputName || name, 1); - newNode.attributes = attrs; - newNode.shortEnded = empty; - node.append(newNode); - parent = children[node.name]; - if (parent && children[newNode.name] && !parent[newNode.name]) { - invalidChildren.push(newNode); - } - attrFiltersLen = attributeFilters.length; - while (attrFiltersLen--) { - attrName = attributeFilters[attrFiltersLen].name; - if (attrName in attrs.map) { - list = matchedAttributes[attrName]; - if (list) { - list.push(newNode); - } else { - matchedAttributes[attrName] = [newNode]; - } - } - } - if (blockElements[name]) { - removeWhitespaceBefore(newNode); - } - if (!empty) { - node = newNode; - } - if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { - isInWhiteSpacePreservedElement = true; - } - } - }, - end: function (name) { - var textNode, elementRule, text, sibling, tempNode; - elementRule = validate ? schema.getElementRule(name) : {}; - if (elementRule) { - if (blockElements[name]) { - if (!isInWhiteSpacePreservedElement) { - textNode = node.firstChild; - if (textNode && textNode.type === 3) { - text = textNode.value.replace(startWhiteSpaceRegExp, ''); - if (text.length > 0) { - textNode.value = text; - textNode = textNode.next; - } else { - sibling = textNode.next; - textNode.remove(); - textNode = sibling; - while (textNode && textNode.type === 3) { - text = textNode.value; - sibling = textNode.next; - if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { - textNode.remove(); - textNode = sibling; - } - textNode = sibling; - } - } - } - textNode = node.lastChild; - if (textNode && textNode.type === 3) { - text = textNode.value.replace(endWhiteSpaceRegExp, ''); - if (text.length > 0) { - textNode.value = text; - textNode = textNode.prev; - } else { - sibling = textNode.prev; - textNode.remove(); - textNode = sibling; - while (textNode && textNode.type === 3) { - text = textNode.value; - sibling = textNode.prev; - if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { - textNode.remove(); - textNode = sibling; - } - textNode = sibling; - } - } - } - } - } - if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { - isInWhiteSpacePreservedElement = false; - } - if (elementRule.removeEmpty && isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node)) { - if (!node.attributes.map.name && !node.attr('id')) { - tempNode = node.parent; - if (blockElements[node.name]) { - node.empty().remove(); - } else { - node.unwrap(); - } - node = tempNode; - return; - } - } - if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node))) { - paddEmptyNode(settings, args, blockElements, node); - } - node = node.parent; - } - } - }, schema); - var rootNode = node = new Node$1(args.context || settings.root_name, 11); - parser.parse(html); - if (validate && invalidChildren.length) { - if (!args.context) { - fixInvalidChildren(invalidChildren); - } else { - args.invalid = true; - } - } - if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) { - addRootBlocks(); - } - if (!args.invalid) { - for (name in matchedNodes) { - list = nodeFilters[name]; - nodes = matchedNodes[name]; - fi = nodes.length; - while (fi--) { - if (!nodes[fi].parent) { - nodes.splice(fi, 1); - } - } - for (i = 0, l = list.length; i < l; i++) { - list[i](nodes, name, args); - } - } - for (i = 0, l = attributeFilters.length; i < l; i++) { - list = attributeFilters[i]; - if (list.name in matchedAttributes) { - nodes = matchedAttributes[list.name]; - fi = nodes.length; - while (fi--) { - if (!nodes[fi].parent) { - nodes.splice(fi, 1); - } - } - for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) { - list.callbacks[fi](nodes, list.name, args); - } - } - } - } - return rootNode; - }; - var exports = { - schema: schema, - addAttributeFilter: addAttributeFilter, - getAttributeFilters: getAttributeFilters, - addNodeFilter: addNodeFilter, - getNodeFilters: getNodeFilters, - filterNode: filterNode, - parse: parse - }; - register$2(exports, settings); - LegacyFilter.register(exports, settings); - return exports; - } - - var addTempAttr = function (htmlParser, tempAttrs, name) { - if (Tools.inArray(tempAttrs, name) === -1) { - htmlParser.addAttributeFilter(name, function (nodes, name) { - var i = nodes.length; - while (i--) { - nodes[i].attr(name, null); - } - }); - tempAttrs.push(name); - } - }; - var postProcess$1 = function (editor, args, content) { - if (!args.no_events && editor) { - var outArgs = Events.firePostProcess(editor, merge(args, { content: content })); - return outArgs.content; - } else { - return content; - } - }; - var getHtmlFromNode = function (dom, node, args) { - var html = Zwsp.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)); - return args.selection || isWsPreserveElement(Element.fromDom(node)) ? html : Tools.trim(html); - }; - var parseHtml = function (htmlParser, html, args) { - var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args; - var rootNode = htmlParser.parse(html, parserArgs); - DomSerializerFilters.trimTrailingBr(rootNode); - return rootNode; - }; - var serializeNode = function (settings, schema, node) { - var htmlSerializer = HtmlSerializer(settings, schema); - return htmlSerializer.serialize(node); - }; - var toHtml = function (editor, settings, schema, rootNode, args) { - var content = serializeNode(settings, schema, rootNode); - return postProcess$1(editor, args, content); - }; - function DomSerializer (settings, editor) { - var dom, schema, htmlParser; - var tempAttrs = ['data-mce-selected']; - dom = editor && editor.dom ? editor.dom : DOMUtils$1.DOM; - schema = editor && editor.schema ? editor.schema : Schema(settings); - settings.entity_encoding = settings.entity_encoding || 'named'; - settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true; - htmlParser = DomParser(settings, schema); - DomSerializerFilters.register(htmlParser, settings, dom); - var serialize = function (node, parserArgs) { - var args = merge({ format: 'html' }, parserArgs ? parserArgs : {}); - var targetNode = DomSerializerPreProcess.process(editor, node, args); - var html = getHtmlFromNode(dom, targetNode, args); - var rootNode = parseHtml(htmlParser, html, args); - return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args); - }; - return { - schema: schema, - addNodeFilter: htmlParser.addNodeFilter, - addAttributeFilter: htmlParser.addAttributeFilter, - serialize: serialize, - addRules: function (rules) { - schema.addValidElements(rules); - }, - setRules: function (rules) { - schema.setValidElements(rules); - }, - addTempAttr: curry(addTempAttr, htmlParser, tempAttrs), - getTempAttrs: function () { - return tempAttrs; - } - }; - } - - function DomSerializer$1 (settings, editor) { - var domSerializer = DomSerializer(settings, editor); - return { - schema: domSerializer.schema, - addNodeFilter: domSerializer.addNodeFilter, - addAttributeFilter: domSerializer.addAttributeFilter, - serialize: domSerializer.serialize, - addRules: domSerializer.addRules, - setRules: domSerializer.setRules, - addTempAttr: domSerializer.addTempAttr, - getTempAttrs: domSerializer.getTempAttrs - }; - } - - function BookmarkManager(selection) { - return { - getBookmark: curry(Bookmarks.getBookmark, selection), - moveToBookmark: curry(Bookmarks.moveToBookmark, selection) - }; - } - (function (BookmarkManager) { - BookmarkManager.isBookmarkNode = Bookmarks.isBookmarkNode; - }(BookmarkManager || (BookmarkManager = {}))); - var BookmarkManager$1 = BookmarkManager; - - var isContentEditableFalse$a = NodeType.isContentEditableFalse; - var isContentEditableTrue$5 = NodeType.isContentEditableTrue; - var getContentEditableRoot$2 = function (root, node) { - while (node && node !== root) { - if (isContentEditableTrue$5(node) || isContentEditableFalse$a(node)) { - return node; - } - node = node.parentNode; - } - return null; - }; - var ControlSelection = function (selection, editor) { - var dom = editor.dom, each = Tools.each; - var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle; - var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted; - var width, height; - var editableDoc = editor.getDoc(), rootDocument = domGlobals.document; - var abs = Math.abs, round = Math.round, rootElement = editor.getBody(); - var startScrollWidth, startScrollHeight; - resizeHandles = { - nw: [ - 0, - 0, - -1, - -1 - ], - ne: [ - 1, - 0, - 1, - -1 - ], - se: [ - 1, - 1, - 1, - 1 - ], - sw: [ - 0, - 1, - -1, - 1 - ] - }; - var rootClass = '.mce-content-body'; - editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + (Env.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}'); - var isImage = function (elm) { - return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image')); - }; - var isEventOnImageOutsideRange = function (evt, range) { - return isImage(evt.target) && !RangePoint.isXYWithinRange(evt.clientX, evt.clientY, range); - }; - var contextMenuSelectImage = function (evt) { - var target = evt.target; - if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) { - editor.selection.select(target); - } - }; - var getResizeTarget = function (elm) { - return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm; - }; - var isResizable = function (elm) { - var selector = editor.settings.object_resizing; - if (selector === false || Env.iOS) { - return false; - } - if (typeof selector !== 'string') { - selector = 'table,img,figure.image,div'; - } - if (elm.getAttribute('data-mce-resize') === 'false') { - return false; - } - if (elm === editor.getBody()) { - return false; - } - return is$1(Element.fromDom(elm), selector); - }; - var resizeGhostElement = function (e) { - var deltaX, deltaY, proportional; - var resizeHelperX, resizeHelperY; - deltaX = e.screenX - startX; - deltaY = e.screenY - startY; - width = deltaX * selectedHandle[2] + startW; - height = deltaY * selectedHandle[3] + startH; - width = width < 5 ? 5 : width; - height = height < 5 ? 5 : height; - if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) { - proportional = !VK.modifierPressed(e); - } else { - proportional = VK.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0; - } - if (proportional) { - if (abs(deltaX) > abs(deltaY)) { - height = round(width * ratio); - width = round(height / ratio); - } else { - width = round(height / ratio); - height = round(width * ratio); - } - } - dom.setStyles(getResizeTarget(selectedElmGhost), { - width: width, - height: height - }); - resizeHelperX = selectedHandle.startPos.x + deltaX; - resizeHelperY = selectedHandle.startPos.y + deltaY; - resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0; - resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0; - dom.setStyles(resizeHelper, { - left: resizeHelperX, - top: resizeHelperY, - display: 'block' - }); - resizeHelper.innerHTML = width + ' × ' + height; - if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) { - dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width)); - } - if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) { - dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height)); - } - deltaX = rootElement.scrollWidth - startScrollWidth; - deltaY = rootElement.scrollHeight - startScrollHeight; - if (deltaX + deltaY !== 0) { - dom.setStyles(resizeHelper, { - left: resizeHelperX - deltaX, - top: resizeHelperY - deltaY - }); - } - if (!resizeStarted) { - Events.fireObjectResizeStart(editor, selectedElm, startW, startH); - resizeStarted = true; - } - }; - var endGhostResize = function () { - resizeStarted = false; - var setSizeProp = function (name, value) { - if (value) { - if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) { - dom.setStyle(getResizeTarget(selectedElm), name, value); - } else { - dom.setAttrib(getResizeTarget(selectedElm), name, value); - } - } - }; - setSizeProp('width', width); - setSizeProp('height', height); - dom.unbind(editableDoc, 'mousemove', resizeGhostElement); - dom.unbind(editableDoc, 'mouseup', endGhostResize); - if (rootDocument !== editableDoc) { - dom.unbind(rootDocument, 'mousemove', resizeGhostElement); - dom.unbind(rootDocument, 'mouseup', endGhostResize); - } - dom.remove(selectedElmGhost); - dom.remove(resizeHelper); - showResizeRect(selectedElm); - Events.fireObjectResized(editor, selectedElm, width, height); - dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style')); - editor.nodeChanged(); - }; - var showResizeRect = function (targetElm) { - var position, targetWidth, targetHeight, e, rect; - hideResizeRect(); - unbindResizeHandleEvents(); - position = dom.getPos(targetElm, rootElement); - selectedElmX = position.x; - selectedElmY = position.y; - rect = targetElm.getBoundingClientRect(); - targetWidth = rect.width || rect.right - rect.left; - targetHeight = rect.height || rect.bottom - rect.top; - if (selectedElm !== targetElm) { - selectedElm = targetElm; - width = height = 0; - } - e = editor.fire('ObjectSelected', { target: targetElm }); - if (isResizable(targetElm) && !e.isDefaultPrevented()) { - each(resizeHandles, function (handle, name) { - var handleElm; - var startDrag = function (e) { - startX = e.screenX; - startY = e.screenY; - startW = getResizeTarget(selectedElm).clientWidth; - startH = getResizeTarget(selectedElm).clientHeight; - ratio = startH / startW; - selectedHandle = handle; - handle.startPos = { - x: targetWidth * handle[0] + selectedElmX, - y: targetHeight * handle[1] + selectedElmY - }; - startScrollWidth = rootElement.scrollWidth; - startScrollHeight = rootElement.scrollHeight; - selectedElmGhost = selectedElm.cloneNode(true); - dom.addClass(selectedElmGhost, 'mce-clonedresizable'); - dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all'); - selectedElmGhost.contentEditable = false; - selectedElmGhost.unSelectabe = true; - dom.setStyles(selectedElmGhost, { - left: selectedElmX, - top: selectedElmY, - margin: 0 - }); - selectedElmGhost.removeAttribute('data-mce-selected'); - rootElement.appendChild(selectedElmGhost); - dom.bind(editableDoc, 'mousemove', resizeGhostElement); - dom.bind(editableDoc, 'mouseup', endGhostResize); - if (rootDocument !== editableDoc) { - dom.bind(rootDocument, 'mousemove', resizeGhostElement); - dom.bind(rootDocument, 'mouseup', endGhostResize); - } - resizeHelper = dom.add(rootElement, 'div', { - 'class': 'mce-resize-helper', - 'data-mce-bogus': 'all' - }, startW + ' × ' + startH); - }; - handleElm = dom.get('mceResizeHandle' + name); - if (handleElm) { - dom.remove(handleElm); - } - handleElm = dom.add(rootElement, 'div', { - 'id': 'mceResizeHandle' + name, - 'data-mce-bogus': 'all', - 'class': 'mce-resizehandle', - 'unselectable': true, - 'style': 'cursor:' + name + '-resize; margin:0; padding:0' - }); - if (Env.ie === 11) { - handleElm.contentEditable = false; - } - dom.bind(handleElm, 'mousedown', function (e) { - e.stopImmediatePropagation(); - e.preventDefault(); - startDrag(e); - }); - handle.elm = handleElm; - dom.setStyles(handleElm, { - left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2, - top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2 - }); - }); - } else { - hideResizeRect(); - } - selectedElm.setAttribute('data-mce-selected', '1'); - }; - var hideResizeRect = function () { - var name, handleElm; - unbindResizeHandleEvents(); - if (selectedElm) { - selectedElm.removeAttribute('data-mce-selected'); - } - for (name in resizeHandles) { - handleElm = dom.get('mceResizeHandle' + name); - if (handleElm) { - dom.unbind(handleElm); - dom.remove(handleElm); - } - } - }; - var updateResizeRect = function (e) { - var startElm, controlElm; - var isChildOrEqual = function (node, parent) { - if (node) { - do { - if (node === parent) { - return true; - } - } while (node = node.parentNode); - } - }; - if (resizeStarted || editor.removed) { - return; - } - each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) { - img.removeAttribute('data-mce-selected'); - }); - controlElm = e.type === 'mousedown' ? e.target : selection.getNode(); - controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0]; - if (isChildOrEqual(controlElm, rootElement)) { - disableGeckoResize(); - startElm = selection.getStart(true); - if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) { - showResizeRect(controlElm); - return; - } - } - hideResizeRect(); - }; - var isWithinContentEditableFalse = function (elm) { - return isContentEditableFalse$a(getContentEditableRoot$2(editor.getBody(), elm)); - }; - var unbindResizeHandleEvents = function () { - for (var name in resizeHandles) { - var handle = resizeHandles[name]; - if (handle.elm) { - dom.unbind(handle.elm); - delete handle.elm; - } - } - }; - var disableGeckoResize = function () { - try { - editor.getDoc().execCommand('enableObjectResizing', false, false); - } catch (ex) { - } - }; - editor.on('init', function () { - disableGeckoResize(); - if (Env.ie && Env.ie >= 11) { - editor.on('mousedown click', function (e) { - var target = e.target, nodeName = target.nodeName; - if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) { - if (e.button !== 2) { - editor.selection.select(target, nodeName === 'TABLE'); - } - if (e.type === 'mousedown') { - editor.nodeChanged(); - } - } - }); - editor.dom.bind(rootElement, 'mscontrolselect', function (e) { - var delayedSelect = function (node) { - Delay.setEditorTimeout(editor, function () { - editor.selection.select(node); - }); - }; - if (isWithinContentEditableFalse(e.target)) { - e.preventDefault(); - delayedSelect(e.target); - return; - } - if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) { - e.preventDefault(); - if (e.target.tagName === 'IMG') { - delayedSelect(e.target); - } - } - }); - } - var throttledUpdateResizeRect = Delay.throttle(function (e) { - if (!editor.composing) { - updateResizeRect(e); - } - }); - editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect); - editor.on('keyup compositionend', function (e) { - if (selectedElm && selectedElm.nodeName === 'TABLE') { - throttledUpdateResizeRect(e); - } - }); - editor.on('hide blur', hideResizeRect); - editor.on('contextmenu', contextMenuSelectImage); - }); - editor.on('remove', unbindResizeHandleEvents); - var destroy = function () { - selectedElm = selectedElmGhost = null; - }; - return { - isResizable: isResizable, - showResizeRect: showResizeRect, - hideResizeRect: hideResizeRect, - updateResizeRect: updateResizeRect, - destroy: destroy - }; - }; - - var hasCeProperty = function (node) { - return NodeType.isContentEditableTrue(node) || NodeType.isContentEditableFalse(node); - }; - var findParent$1 = function (node, rootNode, predicate) { - while (node && node !== rootNode) { - if (predicate(node)) { - return node; - } - node = node.parentNode; - } - return null; - }; - var findClosestIeRange = function (clientX, clientY, doc) { - var element, rng, rects; - element = doc.elementFromPoint(clientX, clientY); - rng = doc.body.createTextRange(); - if (!element || element.tagName === 'HTML') { - element = doc.body; - } - rng.moveToElementText(element); - rects = Tools.toArray(rng.getClientRects()); - rects = rects.sort(function (a, b) { - a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY)); - b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY)); - return a - b; - }); - if (rects.length > 0) { - clientY = (rects[0].bottom + rects[0].top) / 2; - try { - rng.moveToPoint(clientX, clientY); - rng.collapse(true); - return rng; - } catch (ex) { - } - } - return null; - }; - var moveOutOfContentEditableFalse = function (rng, rootNode) { - var parentElement = rng && rng.parentElement ? rng.parentElement() : null; - return NodeType.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng; - }; - var fromPoint$1 = function (clientX, clientY, doc) { - var rng, point; - var pointDoc = doc; - if (pointDoc.caretPositionFromPoint) { - point = pointDoc.caretPositionFromPoint(clientX, clientY); - if (point) { - rng = doc.createRange(); - rng.setStart(point.offsetNode, point.offset); - rng.collapse(true); - } - } else if (doc.caretRangeFromPoint) { - rng = doc.caretRangeFromPoint(clientX, clientY); - } else if (pointDoc.body.createTextRange) { - rng = pointDoc.body.createTextRange(); - try { - rng.moveToPoint(clientX, clientY); - rng.collapse(true); - } catch (ex) { - rng = findClosestIeRange(clientX, clientY, doc); - } - return moveOutOfContentEditableFalse(rng, doc.body); - } - return rng; - }; - var CaretRangeFromPoint = { fromPoint: fromPoint$1 }; - - var processRanges = function (editor, ranges) { - return map(ranges, function (range) { - var evt = editor.fire('GetSelectionRange', { range: range }); - return evt.range !== range ? evt.range : range; - }); - }; - var EventProcessRanges = { processRanges: processRanges }; - - var fromElements = function (elements, scope) { - var doc = scope || domGlobals.document; - var fragment = doc.createDocumentFragment(); - each(elements, function (element) { - fragment.appendChild(element.dom()); - }); - return Element.fromDom(fragment); - }; - - var tableModel = Immutable('element', 'width', 'rows'); - var tableRow = Immutable('element', 'cells'); - var cellPosition = Immutable('x', 'y'); - var getSpan = function (td, key) { - var value = parseInt(get(td, key), 10); - return isNaN(value) ? 1 : value; - }; - var fillout = function (table, x, y, tr, td) { - var rowspan = getSpan(td, 'rowspan'); - var colspan = getSpan(td, 'colspan'); - var rows = table.rows(); - for (var y2 = y; y2 < y + rowspan; y2++) { - if (!rows[y2]) { - rows[y2] = tableRow(deep(tr), []); - } - for (var x2 = x; x2 < x + colspan; x2++) { - var cells = rows[y2].cells(); - cells[x2] = y2 === y && x2 === x ? td : shallow(td); - } - } - }; - var cellExists = function (table, x, y) { - var rows = table.rows(); - var cells = rows[y] ? rows[y].cells() : []; - return !!cells[x]; - }; - var skipCellsX = function (table, x, y) { - while (cellExists(table, x, y)) { - x++; - } - return x; - }; - var getWidth = function (rows) { - return foldl(rows, function (acc, row) { - return row.cells().length > acc ? row.cells().length : acc; - }, 0); - }; - var findElementPos = function (table, element) { - var rows = table.rows(); - for (var y = 0; y < rows.length; y++) { - var cells = rows[y].cells(); - for (var x = 0; x < cells.length; x++) { - if (eq(cells[x], element)) { - return Option.some(cellPosition(x, y)); - } - } - } - return Option.none(); - }; - var extractRows = function (table, sx, sy, ex, ey) { - var newRows = []; - var rows = table.rows(); - for (var y = sy; y <= ey; y++) { - var cells = rows[y].cells(); - var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1); - newRows.push(tableRow(rows[y].element(), slice)); - } - return newRows; - }; - var subTable = function (table, startPos, endPos) { - var sx = startPos.x(), sy = startPos.y(); - var ex = endPos.x(), ey = endPos.y(); - var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy); - return tableModel(table.element(), getWidth(newRows), newRows); - }; - var createDomTable = function (table, rows) { - var tableElement = shallow(table.element()); - var tableBody = Element.fromTag('tbody'); - append$1(tableBody, rows); - append(tableElement, tableBody); - return tableElement; - }; - var modelRowsToDomRows = function (table) { - return map(table.rows(), function (row) { - var cells = map(row.cells(), function (cell) { - var td = deep(cell); - remove(td, 'colspan'); - remove(td, 'rowspan'); - return td; - }); - var tr = shallow(row.element()); - append$1(tr, cells); - return tr; - }); - }; - var fromDom$1 = function (tableElm) { - var table = tableModel(shallow(tableElm), 0, []); - each(descendants$1(tableElm, 'tr'), function (tr, y) { - each(descendants$1(tr, 'td,th'), function (td, x) { - fillout(table, skipCellsX(table, x, y), y, tr, td); - }); - }); - return tableModel(table.element(), getWidth(table.rows()), table.rows()); - }; - var toDom = function (table) { - return createDomTable(table, modelRowsToDomRows(table)); - }; - var subsection = function (table, startElement, endElement) { - return findElementPos(table, startElement).bind(function (startPos) { - return findElementPos(table, endElement).map(function (endPos) { - return subTable(table, startPos, endPos); - }); - }); - }; - var SimpleTableModel = { - fromDom: fromDom$1, - toDom: toDom, - subsection: subsection - }; - - var findParentListContainer = function (parents) { - return find(parents, function (elm) { - return name(elm) === 'ul' || name(elm) === 'ol'; - }); - }; - var getFullySelectedListWrappers = function (parents, rng) { - return find(parents, function (elm) { - return name(elm) === 'li' && hasAllContentsSelected(elm, rng); - }).fold(constant([]), function (li) { - return findParentListContainer(parents).map(function (listCont) { - return [ - Element.fromTag('li'), - Element.fromTag(name(listCont)) - ]; - }).getOr([]); - }); - }; - var wrap$3 = function (innerElm, elms) { - var wrapped = foldl(elms, function (acc, elm) { - append(elm, acc); - return elm; - }, innerElm); - return elms.length > 0 ? fromElements([wrapped]) : wrapped; - }; - var directListWrappers = function (commonAnchorContainer) { - if (isListItem(commonAnchorContainer)) { - return parent(commonAnchorContainer).filter(isList).fold(constant([]), function (listElm) { - return [ - commonAnchorContainer, - listElm - ]; - }); - } else { - return isList(commonAnchorContainer) ? [commonAnchorContainer] : []; - } - }; - var getWrapElements = function (rootNode, rng) { - var commonAnchorContainer = Element.fromDom(rng.commonAncestorContainer); - var parents = Parents.parentsAndSelf(commonAnchorContainer, rootNode); - var wrapElements = filter(parents, function (elm) { - return isInline(elm) || isHeading(elm); - }); - var listWrappers = getFullySelectedListWrappers(parents, rng); - var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer)); - return map(allWrappers, shallow); - }; - var emptyFragment = function () { - return fromElements([]); - }; - var getFragmentFromRange = function (rootNode, rng) { - return wrap$3(Element.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng)); - }; - var getParentTable = function (rootElm, cell) { - return ancestor$1(cell, 'table', curry(eq, rootElm)); - }; - var getTableFragment = function (rootNode, selectedTableCells) { - return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) { - var firstCell = selectedTableCells[0]; - var lastCell = selectedTableCells[selectedTableCells.length - 1]; - var fullTableModel = SimpleTableModel.fromDom(tableElm); - return SimpleTableModel.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) { - return fromElements([SimpleTableModel.toDom(sectionedTableModel)]); - }); - }).getOrThunk(emptyFragment); - }; - var getSelectionFragment = function (rootNode, ranges) { - return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]); - }; - var read$4 = function (rootNode, ranges) { - var selectedCells = TableCellSelection.getCellsFromElementOrRanges(ranges, rootNode); - return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges); - }; - var FragmentReader = { read: read$4 }; - - var getTextContent = function (editor) { - return Option.from(editor.selection.getRng()).map(function (rng) { - var bin = editor.dom.add(editor.getBody(), 'div', { - 'data-mce-bogus': 'all', - 'style': 'overflow: hidden; opacity: 0;' - }, rng.cloneContents()); - var text = Zwsp.trim(bin.innerText); - editor.dom.remove(bin); - return text; - }).getOr(''); - }; - var getHtmlContent = function (editor, args) { - var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body'); - var sel = editor.selection.getSel(); - var fragment; - var ranges = EventProcessRanges.processRanges(editor, MultiRange.getRanges(sel)); - fragment = args.contextual ? FragmentReader.read(Element.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents(); - if (fragment) { - tmpElm.appendChild(fragment); - } - return editor.selection.serializer.serialize(tmpElm, args); - }; - var getContent = function (editor, args) { - if (args === void 0) { - args = {}; - } - args.get = true; - args.format = args.format || 'html'; - args.selection = true; - args = editor.fire('BeforeGetContent', args); - if (args.isDefaultPrevented()) { - editor.fire('GetContent', args); - return args.content; - } - if (args.format === 'text') { - return getTextContent(editor); - } else { - args.getInner = true; - var content = getHtmlContent(editor, args); - if (args.format === 'tree') { - return content; - } else { - args.content = editor.selection.isCollapsed() ? '' : content; - editor.fire('GetContent', args); - return args.content; - } - } - }; - var GetSelectionContent = { getContent: getContent }; - - var setupArgs = function (args, content) { - return __assign(__assign({ format: 'html' }, args), { - set: true, - selection: true, - content: content - }); - }; - var cleanContent = function (editor, args) { - if (args.format !== 'raw') { - var node = editor.parser.parse(args.content, __assign({ - isRootContent: true, - forced_root_block: false - }, args)); - return HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(node); - } else { - return args.content; - } - }; - var setContent = function (editor, content, args) { - var contentArgs = setupArgs(args, content); - var rng = editor.selection.getRng(), caretNode; - var doc = editor.getDoc(); - var frag, temp; - if (!contentArgs.no_events) { - contentArgs = editor.fire('BeforeSetContent', contentArgs); - if (contentArgs.isDefaultPrevented()) { - editor.fire('SetContent', contentArgs); - return; - } - } - content = cleanContent(editor, contentArgs); - if (rng.insertNode) { - content += '_'; - if (rng.startContainer === doc && rng.endContainer === doc) { - doc.body.innerHTML = content; - } else { - rng.deleteContents(); - if (doc.body.childNodes.length === 0) { - doc.body.innerHTML = content; - } else { - if (rng.createContextualFragment) { - rng.insertNode(rng.createContextualFragment(content)); - } else { - frag = doc.createDocumentFragment(); - temp = doc.createElement('div'); - frag.appendChild(temp); - temp.outerHTML = content; - rng.insertNode(frag); - } - } - } - caretNode = editor.dom.get('__caret'); - rng = doc.createRange(); - rng.setStartBefore(caretNode); - rng.setEndBefore(caretNode); - editor.selection.setRng(rng); - editor.dom.remove('__caret'); - try { - editor.selection.setRng(rng); - } catch (ex) { - } - } else { - var anyRng = rng; - if (anyRng.item) { - doc.execCommand('Delete', false, null); - anyRng = editor.selection.getRng(); - } - if (/^\s+/.test(content)) { - anyRng.pasteHTML('_' + content); - editor.dom.remove('__mce_tmp'); - } else { - anyRng.pasteHTML(content); - } - } - if (!contentArgs.no_events) { - editor.fire('SetContent', contentArgs); - } - }; - var SetSelectionContent = { setContent: setContent }; - - var getEndpointElement = function (root, rng, start, real, resolve) { - var container = start ? rng.startContainer : rng.endContainer; - var offset = start ? rng.startOffset : rng.endOffset; - return Option.from(container).map(Element.fromDom).map(function (elm) { - return !real || !rng.collapsed ? child(elm, resolve(elm, offset)).getOr(elm) : elm; - }).bind(function (elm) { - return isElement(elm) ? Option.some(elm) : parent(elm); - }).map(function (elm) { - return elm.dom(); - }).getOr(root); - }; - var getStart$2 = function (root, rng, real) { - return getEndpointElement(root, rng, true, real, function (elm, offset) { - return Math.min(childNodesCount(elm), offset); - }); - }; - var getEnd = function (root, rng, real) { - return getEndpointElement(root, rng, false, real, function (elm, offset) { - return offset > 0 ? offset - 1 : offset; - }); - }; - var skipEmptyTextNodes = function (node, forwards) { - var orig = node; - while (node && NodeType.isText(node) && node.length === 0) { - node = forwards ? node.nextSibling : node.previousSibling; - } - return node || orig; - }; - var getNode$1 = function (root, rng) { - var elm, startContainer, endContainer, startOffset, endOffset; - if (!rng) { - return root; - } - startContainer = rng.startContainer; - endContainer = rng.endContainer; - startOffset = rng.startOffset; - endOffset = rng.endOffset; - elm = rng.commonAncestorContainer; - if (!rng.collapsed) { - if (startContainer === endContainer) { - if (endOffset - startOffset < 2) { - if (startContainer.hasChildNodes()) { - elm = startContainer.childNodes[startOffset]; - } - } - } - if (startContainer.nodeType === 3 && endContainer.nodeType === 3) { - if (startContainer.length === startOffset) { - startContainer = skipEmptyTextNodes(startContainer.nextSibling, true); - } else { - startContainer = startContainer.parentNode; - } - if (endOffset === 0) { - endContainer = skipEmptyTextNodes(endContainer.previousSibling, false); - } else { - endContainer = endContainer.parentNode; - } - if (startContainer && startContainer === endContainer) { - return startContainer; - } - } - } - if (elm && elm.nodeType === 3) { - return elm.parentNode; - } - return elm; - }; - var getSelectedBlocks = function (dom, rng, startElm, endElm) { - var node, root; - var selectedBlocks = []; - root = dom.getRoot(); - startElm = dom.getParent(startElm || getStart$2(root, rng, rng.collapsed), dom.isBlock); - endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock); - if (startElm && startElm !== root) { - selectedBlocks.push(startElm); - } - if (startElm && endElm && startElm !== endElm) { - node = startElm; - var walker = new TreeWalker(startElm, root); - while ((node = walker.next()) && node !== endElm) { - if (dom.isBlock(node)) { - selectedBlocks.push(node); - } - } - } - if (endElm && startElm !== endElm && endElm !== root) { - selectedBlocks.push(endElm); - } - return selectedBlocks; - }; - var select$1 = function (dom, node, content) { - return Option.from(node).map(function (node) { - var idx = dom.nodeIndex(node); - var rng = dom.createRng(); - rng.setStart(node.parentNode, idx); - rng.setEnd(node.parentNode, idx + 1); - if (content) { - moveEndPoint$1(dom, rng, node, true); - moveEndPoint$1(dom, rng, node, false); - } - return rng; - }); - }; - - var each$j = Tools.each; - var isNativeIeSelection = function (rng) { - return !!rng.select; - }; - var isAttachedToDom = function (node) { - return !!(node && node.ownerDocument) && contains$3(Element.fromDom(node.ownerDocument), Element.fromDom(node)); - }; - var isValidRange = function (rng) { - if (!rng) { - return false; - } else if (isNativeIeSelection(rng)) { - return true; - } else { - return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer); - } - }; - var Selection$1 = function (dom, win, serializer, editor) { - var bookmarkManager, controlSelection; - var selectedRange, explicitRange, selectorChangedData; - var setCursorLocation = function (node, offset) { - var rng = dom.createRng(); - if (!node) { - moveEndPoint$1(dom, rng, editor.getBody(), true); - setRng(rng); - } else { - rng.setStart(node, offset); - rng.setEnd(node, offset); - setRng(rng); - collapse(false); - } - }; - var getContent = function (args) { - return GetSelectionContent.getContent(editor, args); - }; - var setContent = function (content, args) { - return SetSelectionContent.setContent(editor, content, args); - }; - var getStart = function (real) { - return getStart$2(editor.getBody(), getRng(), real); - }; - var getEnd$1 = function (real) { - return getEnd(editor.getBody(), getRng(), real); - }; - var getBookmark = function (type, normalized) { - return bookmarkManager.getBookmark(type, normalized); - }; - var moveToBookmark = function (bookmark) { - return bookmarkManager.moveToBookmark(bookmark); - }; - var select = function (node, content) { - select$1(dom, node, content).each(setRng); - return node; - }; - var isCollapsed = function () { - var rng = getRng(), sel = getSel(); - if (!rng || rng.item) { - return false; - } - if (rng.compareEndPoints) { - return rng.compareEndPoints('StartToEnd', rng) === 0; - } - return !sel || rng.collapsed; - }; - var collapse = function (toStart) { - var rng = getRng(); - rng.collapse(!!toStart); - setRng(rng); - }; - var getSel = function () { - return win.getSelection ? win.getSelection() : win.document.selection; - }; - var getRng = function () { - var selection, rng, elm, doc; - var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) { - try { - return sourceRange.compareBoundaryPoints(how, destinationRange); - } catch (ex) { - return -1; - } - }; - if (!win) { - return null; - } - doc = win.document; - if (typeof doc === 'undefined' || doc === null) { - return null; - } - if (editor.bookmark !== undefined && EditorFocus.hasFocus(editor) === false) { - var bookmark = SelectionBookmark.getRng(editor); - if (bookmark.isSome()) { - return bookmark.map(function (r) { - return EventProcessRanges.processRanges(editor, [r])[0]; - }).getOr(doc.createRange()); - } - } - try { - if ((selection = getSel()) && !NodeType.isRestrictedNode(selection.anchorNode)) { - if (selection.rangeCount > 0) { - rng = selection.getRangeAt(0); - } else { - rng = selection.createRange ? selection.createRange() : doc.createRange(); - } - } - } catch (ex) { - } - rng = EventProcessRanges.processRanges(editor, [rng])[0]; - if (!rng) { - rng = doc.createRange ? doc.createRange() : doc.body.createTextRange(); - } - if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) { - elm = dom.getRoot(); - rng.setStart(elm, 0); - rng.setEnd(elm, 0); - } - if (selectedRange && explicitRange) { - if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) { - rng = explicitRange; - } else { - selectedRange = null; - explicitRange = null; - } - } - return rng; - }; - var setRng = function (rng, forward) { - var sel, node, evt; - if (!isValidRange(rng)) { - return; - } - var ieRange = isNativeIeSelection(rng) ? rng : null; - if (ieRange) { - explicitRange = null; - try { - ieRange.select(); - } catch (ex) { - } - return; - } - sel = getSel(); - evt = editor.fire('SetSelectionRange', { - range: rng, - forward: forward - }); - rng = evt.range; - if (sel) { - explicitRange = rng; - try { - sel.removeAllRanges(); - sel.addRange(rng); - } catch (ex) { - } - if (forward === false && sel.extend) { - sel.collapse(rng.endContainer, rng.endOffset); - sel.extend(rng.startContainer, rng.startOffset); - } - selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null; - } - if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !Env.ie) { - if (rng.endOffset - rng.startOffset < 2) { - if (rng.startContainer.hasChildNodes()) { - node = rng.startContainer.childNodes[rng.startOffset]; - if (node && node.tagName === 'IMG') { - sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset); - if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) { - sel.setBaseAndExtent(node, 0, node, 1); - } - } - } - } - } - editor.fire('AfterSetSelectionRange', { - range: rng, - forward: forward - }); - }; - var setNode = function (elm) { - setContent(dom.getOuterHTML(elm)); - return elm; - }; - var getNode = function () { - return getNode$1(editor.getBody(), getRng()); - }; - var getSelectedBlocks$1 = function (startElm, endElm) { - return getSelectedBlocks(dom, getRng(), startElm, endElm); - }; - var isForward = function () { - var sel = getSel(); - var anchorRange, focusRange; - if (!sel || !sel.anchorNode || !sel.focusNode) { - return true; - } - anchorRange = dom.createRng(); - anchorRange.setStart(sel.anchorNode, sel.anchorOffset); - anchorRange.collapse(true); - focusRange = dom.createRng(); - focusRange.setStart(sel.focusNode, sel.focusOffset); - focusRange.collapse(true); - return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0; - }; - var normalize = function () { - var rng = getRng(); - var sel = getSel(); - if (!MultiRange.hasMultipleRanges(sel) && hasAnyRanges(editor)) { - var normRng = NormalizeRange.normalize(dom, rng); - normRng.each(function (normRng) { - setRng(normRng, isForward()); - }); - return normRng.getOr(rng); - } - return rng; - }; - var selectorChanged = function (selector, callback) { - var currentSelectors; - if (!selectorChangedData) { - selectorChangedData = {}; - currentSelectors = {}; - editor.on('NodeChange', function (e) { - var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {}; - each$j(selectorChangedData, function (callbacks, selector) { - each$j(parents, function (node) { - if (dom.is(node, selector)) { - if (!currentSelectors[selector]) { - each$j(callbacks, function (callback) { - callback(true, { - node: node, - selector: selector, - parents: parents - }); - }); - currentSelectors[selector] = callbacks; - } - matchedSelectors[selector] = callbacks; - return false; - } - }); - }); - each$j(currentSelectors, function (callbacks, selector) { - if (!matchedSelectors[selector]) { - delete currentSelectors[selector]; - each$j(callbacks, function (callback) { - callback(false, { - node: node, - selector: selector, - parents: parents - }); - }); - } - }); - }); - } - if (!selectorChangedData[selector]) { - selectorChangedData[selector] = []; - } - selectorChangedData[selector].push(callback); - return exports; - }; - var getScrollContainer = function () { - var scrollContainer; - var node = dom.getRoot(); - while (node && node.nodeName !== 'BODY') { - if (node.scrollHeight > node.clientHeight) { - scrollContainer = node; - break; - } - node = node.parentNode; - } - return scrollContainer; - }; - var scrollIntoView = function (elm, alignToTop) { - return ScrollIntoView.scrollElementIntoView(editor, elm, alignToTop); - }; - var placeCaretAt = function (clientX, clientY) { - return setRng(CaretRangeFromPoint.fromPoint(clientX, clientY, editor.getDoc())); - }; - var getBoundingClientRect = function () { - var rng = getRng(); - return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect(); - }; - var destroy = function () { - win = selectedRange = explicitRange = null; - controlSelection.destroy(); - }; - var exports = { - bookmarkManager: null, - controlSelection: null, - dom: dom, - win: win, - serializer: serializer, - editor: editor, - collapse: collapse, - setCursorLocation: setCursorLocation, - getContent: getContent, - setContent: setContent, - getBookmark: getBookmark, - moveToBookmark: moveToBookmark, - select: select, - isCollapsed: isCollapsed, - isForward: isForward, - setNode: setNode, - getNode: getNode, - getSel: getSel, - setRng: setRng, - getRng: getRng, - getStart: getStart, - getEnd: getEnd$1, - getSelectedBlocks: getSelectedBlocks$1, - normalize: normalize, - selectorChanged: selectorChanged, - getScrollContainer: getScrollContainer, - scrollIntoView: scrollIntoView, - placeCaretAt: placeCaretAt, - getBoundingClientRect: getBoundingClientRect, - destroy: destroy - }; - bookmarkManager = BookmarkManager$1(exports); - controlSelection = ControlSelection(exports, editor); - exports.bookmarkManager = bookmarkManager; - exports.controlSelection = controlSelection; - return exports; - }; - - var BreakType; - (function (BreakType) { - BreakType[BreakType['Br'] = 0] = 'Br'; - BreakType[BreakType['Block'] = 1] = 'Block'; - BreakType[BreakType['Wrap'] = 2] = 'Wrap'; - BreakType[BreakType['Eol'] = 3] = 'Eol'; - }(BreakType || (BreakType = {}))); - var flip = function (direction, positions) { - return direction === HDirection.Backwards ? positions.reverse() : positions; - }; - var walk$3 = function (direction, caretWalker, pos) { - return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos); - }; - var getBreakType = function (scope, direction, currentPos, nextPos) { - if (NodeType.isBr(nextPos.getNode(direction === HDirection.Forwards))) { - return BreakType.Br; - } else if (isInSameBlock(currentPos, nextPos) === false) { - return BreakType.Block; - } else { - return BreakType.Wrap; - } - }; - var getPositionsUntil = function (predicate, direction, scope, start) { - var caretWalker = CaretWalker(scope); - var currentPos = start, nextPos; - var positions = []; - while (currentPos) { - nextPos = walk$3(direction, caretWalker, currentPos); - if (!nextPos) { - break; - } - if (NodeType.isBr(nextPos.getNode(false))) { - if (direction === HDirection.Forwards) { - return { - positions: flip(direction, positions).concat([nextPos]), - breakType: BreakType.Br, - breakAt: Option.some(nextPos) - }; - } else { - return { - positions: flip(direction, positions), - breakType: BreakType.Br, - breakAt: Option.some(nextPos) - }; - } - } - if (!nextPos.isVisible()) { - currentPos = nextPos; - continue; - } - if (predicate(currentPos, nextPos)) { - var breakType = getBreakType(scope, direction, currentPos, nextPos); - return { - positions: flip(direction, positions), - breakType: breakType, - breakAt: Option.some(nextPos) - }; - } - positions.push(nextPos); - currentPos = nextPos; - } - return { - positions: flip(direction, positions), - breakType: BreakType.Eol, - breakAt: Option.none() - }; - }; - var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) { - return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) { - var positions = getPositionsUntilBreak(scope, pos).positions; - return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions); - }).getOr([]); - }; - var findClosestHorizontalPositionFromPoint = function (positions, x) { - return foldl(positions, function (acc, newPos) { - return acc.fold(function () { - return Option.some(newPos); - }, function (lastPos) { - return lift2(head(lastPos.getClientRects()), head(newPos.getClientRects()), function (lastRect, newRect) { - var lastDist = Math.abs(x - lastRect.left); - var newDist = Math.abs(x - newRect.left); - return newDist <= lastDist ? newPos : lastPos; - }).or(acc); - }); - }, Option.none()); - }; - var findClosestHorizontalPosition = function (positions, pos) { - return head(pos.getClientRects()).bind(function (targetRect) { - return findClosestHorizontalPositionFromPoint(positions, targetRect.left); - }); - }; - var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1); - var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1); - var isAtFirstLine = function (scope, pos) { - return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone(); - }; - var isAtLastLine = function (scope, pos) { - return getPositionsUntilNextLine(scope, pos).breakAt.isNone(); - }; - var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine); - var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine); - var getFirstLinePositions = function (scope) { - return CaretFinder.firstPositionIn(scope).map(function (pos) { - return [pos].concat(getPositionsUntilNextLine(scope, pos).positions); - }).getOr([]); - }; - var getLastLinePositions = function (scope) { - return CaretFinder.lastPositionIn(scope).map(function (pos) { - return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos); - }).getOr([]); - }; - - var isContentEditableFalse$b = NodeType.isContentEditableFalse; - var getSelectedNode$1 = getSelectedNode; - var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) { - var forwards = direction === HDirection.Forwards; - var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse : isAfterContentEditableFalse; - if (!range.collapsed) { - var node = getSelectedNode$1(range); - if (isContentEditableFalse$b(node)) { - return showCaret(direction, editor, node, direction === HDirection.Backwards, true); - } - } - var rangeIsInContainerBlock = isRangeInCaretContainerBlock(range); - var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); - if (isBeforeContentEditableFalseFn(caretPosition)) { - return selectNode(editor, caretPosition.getNode(!forwards)); - } - var nextCaretPosition = InlineUtils.normalizePosition(forwards, getNextPosFn(caretPosition)); - if (!nextCaretPosition) { - if (rangeIsInContainerBlock) { - return range; - } - return null; - } - if (isBeforeContentEditableFalseFn(nextCaretPosition)) { - return showCaret(direction, editor, nextCaretPosition.getNode(!forwards), forwards, true); - } - var peekCaretPosition = getNextPosFn(nextCaretPosition); - if (peekCaretPosition && isBeforeContentEditableFalseFn(peekCaretPosition)) { - if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) { - return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true); - } - } - if (rangeIsInContainerBlock) { - return renderRangeCaret(editor, nextCaretPosition.toRange(), true); - } - return null; - }; - var moveToCeFalseVertically = function (direction, editor, walkerFn, range) { - var caretPosition, linePositions, nextLinePositions; - var closestNextLineRect, caretClientRect, clientX; - var dist1, dist2, contentEditableFalseNode; - contentEditableFalseNode = getSelectedNode$1(range); - caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); - linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition); - nextLinePositions = filter(linePositions, isLine(1)); - caretClientRect = ArrUtils.last(caretPosition.getClientRects()); - if (isBeforeContentEditableFalse(caretPosition) || isBeforeTable(caretPosition)) { - contentEditableFalseNode = caretPosition.getNode(); - } - if (isAfterContentEditableFalse(caretPosition) || isAfterTable(caretPosition)) { - contentEditableFalseNode = caretPosition.getNode(true); - } - if (!caretClientRect) { - return null; - } - clientX = caretClientRect.left; - closestNextLineRect = findClosestClientRect(nextLinePositions, clientX); - if (closestNextLineRect) { - if (isContentEditableFalse$b(closestNextLineRect.node)) { - dist1 = Math.abs(clientX - closestNextLineRect.left); - dist2 = Math.abs(clientX - closestNextLineRect.right); - return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true); - } - } - if (contentEditableFalseNode) { - var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode); - closestNextLineRect = findClosestClientRect(filter(caretPositions, isLine(1)), clientX); - if (closestNextLineRect) { - return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); - } - closestNextLineRect = ArrUtils.last(filter(caretPositions, isLine(0))); - if (closestNextLineRect) { - return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); - } - } - }; - var createTextBlock = function (editor) { - var textBlock = editor.dom.create(Settings.getForcedRootBlock(editor)); - if (!Env.ie || Env.ie >= 11) { - textBlock.innerHTML = '
        '; - } - return textBlock; - }; - var exitPreBlock = function (editor, direction, range) { - var pre, caretPos, newBlock; - var caretWalker = CaretWalker(editor.getBody()); - var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next); - var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev); - if (range.collapsed && editor.settings.forced_root_block) { - pre = editor.dom.getParent(range.startContainer, 'PRE'); - if (!pre) { - return; - } - if (direction === 1) { - caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); - } else { - caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); - } - if (!caretPos) { - newBlock = createTextBlock(editor); - if (direction === 1) { - editor.$(pre).after(newBlock); - } else { - editor.$(pre).before(newBlock); - } - editor.selection.select(newBlock, true); - editor.selection.collapse(); - } - } - }; - var getHorizontalRange = function (editor, forward) { - var caretWalker = CaretWalker(editor.getBody()); - var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next); - var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev); - var newRange; - var direction = forward ? HDirection.Forwards : HDirection.Backwards; - var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition; - var range = editor.selection.getRng(); - newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range); - if (newRange) { - return newRange; - } - newRange = exitPreBlock(editor, direction, range); - if (newRange) { - return newRange; - } - return null; - }; - var getVerticalRange = function (editor, down) { - var newRange; - var direction = down ? 1 : -1; - var walkerFn = down ? downUntil : upUntil; - var range = editor.selection.getRng(); - newRange = moveToCeFalseVertically(direction, editor, walkerFn, range); - if (newRange) { - return newRange; - } - newRange = exitPreBlock(editor, direction, range); - if (newRange) { - return newRange; - } - return null; - }; - var moveH = function (editor, forward) { - return function () { - var newRng = getHorizontalRange(editor, forward); - if (newRng) { - moveToRange(editor, newRng); - return true; - } else { - return false; - } - }; - }; - var moveV = function (editor, down) { - return function () { - var newRng = getVerticalRange(editor, down); - if (newRng) { - moveToRange(editor, newRng); - return true; - } else { - return false; - } - }; - }; - var isCefPosition = function (forward) { - return function (pos) { - return forward ? isAfterContentEditableFalse(pos) : isBeforeContentEditableFalse(pos); - }; - }; - var moveToLineEndPoint = function (editor, forward) { - return function () { - var from = forward ? CaretPosition$1.fromRangeEnd(editor.selection.getRng()) : CaretPosition$1.fromRangeStart(editor.selection.getRng()); - var result = forward ? getPositionsUntilNextLine(editor.getBody(), from) : getPositionsUntilPreviousLine(editor.getBody(), from); - var to = forward ? last(result.positions) : head(result.positions); - return to.filter(isCefPosition(forward)).fold(constant(false), function (pos) { - editor.selection.setRng(pos.toRange()); - return true; - }); - }; - }; - - var deflate = function (rect, delta) { - return { - left: rect.left - delta, - top: rect.top - delta, - right: rect.right + delta * 2, - bottom: rect.bottom + delta * 2, - width: rect.width + delta, - height: rect.height + delta - }; - }; - var getCorners = function (getYAxisValue, tds) { - return bind(tds, function (td) { - var rect = deflate(clone$1(td.getBoundingClientRect()), -1); - return [ - { - x: rect.left, - y: getYAxisValue(rect), - cell: td - }, - { - x: rect.right, - y: getYAxisValue(rect), - cell: td - } - ]; - }); - }; - var findClosestCorner = function (corners, x, y) { - return foldl(corners, function (acc, newCorner) { - return acc.fold(function () { - return Option.some(newCorner); - }, function (oldCorner) { - var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y)); - var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y)); - return Option.some(newDist < oldDist ? newCorner : oldCorner); - }); - }, Option.none()); - }; - var getClosestCell$1 = function (getYAxisValue, isTargetCorner, table, x, y) { - var cells = descendants$1(Element.fromDom(table), 'td,th,caption').map(function (e) { - return e.dom(); - }); - var corners = filter(getCorners(getYAxisValue, cells), function (corner) { - return isTargetCorner(corner, y); - }); - return findClosestCorner(corners, x, y).map(function (corner) { - return corner.cell; - }); - }; - var getBottomValue = function (rect) { - return rect.bottom; - }; - var getTopValue = function (rect) { - return rect.top; - }; - var isAbove$1 = function (corner, y) { - return corner.y < y; - }; - var isBelow$1 = function (corner, y) { - return corner.y > y; - }; - var getClosestCellAbove = curry(getClosestCell$1, getBottomValue, isAbove$1); - var getClosestCellBelow = curry(getClosestCell$1, getTopValue, isBelow$1); - var findClosestPositionInAboveCell = function (table, pos) { - return head(pos.getClientRects()).bind(function (rect) { - return getClosestCellAbove(table, rect.left, rect.top); - }).bind(function (cell) { - return findClosestHorizontalPosition(getLastLinePositions(cell), pos); - }); - }; - var findClosestPositionInBelowCell = function (table, pos) { - return last(pos.getClientRects()).bind(function (rect) { - return getClosestCellBelow(table, rect.left, rect.top); - }).bind(function (cell) { - return findClosestHorizontalPosition(getFirstLinePositions(cell), pos); - }); - }; - - var hasNextBreak = function (getPositionsUntil, scope, lineInfo) { - return lineInfo.breakAt.map(function (breakPos) { - return getPositionsUntil(scope, breakPos).breakAt.isSome(); - }).getOr(false); - }; - var startsWithWrapBreak = function (lineInfo) { - return lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0; - }; - var startsWithBrBreak = function (lineInfo) { - return lineInfo.breakType === BreakType.Br && lineInfo.positions.length === 1; - }; - var isAtTableCellLine = function (getPositionsUntil, scope, pos) { - var lineInfo = getPositionsUntil(scope, pos); - if (startsWithWrapBreak(lineInfo) || !NodeType.isBr(pos.getNode()) && startsWithBrBreak(lineInfo)) { - return !hasNextBreak(getPositionsUntil, scope, lineInfo); - } else { - return lineInfo.breakAt.isNone(); - } - }; - var isAtFirstTableCellLine = curry(isAtTableCellLine, getPositionsUntilPreviousLine); - var isAtLastTableCellLine = curry(isAtTableCellLine, getPositionsUntilNextLine); - var isCaretAtStartOrEndOfTable = function (forward, rng, table) { - var caretPos = CaretPosition$1.fromRangeStart(rng); - return CaretFinder.positionIn(!forward, table).map(function (pos) { - return pos.isEqual(caretPos); - }).getOr(false); - }; - var navigateHorizontally = function (editor, forward, table, td) { - var rng = editor.selection.getRng(); - var direction = forward ? 1 : -1; - if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) { - var newRng = showCaret(direction, editor, table, !forward, true); - moveToRange(editor, newRng); - return true; - } - return false; - }; - var getClosestAbovePosition = function (root, table, start) { - return findClosestPositionInAboveCell(table, start).orThunk(function () { - return head(start.getClientRects()).bind(function (rect) { - return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left); - }); - }).getOr(CaretPosition$1.before(table)); - }; - var getClosestBelowPosition = function (root, table, start) { - return findClosestPositionInBelowCell(table, start).orThunk(function () { - return head(start.getClientRects()).bind(function (rect) { - return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left); - }); - }).getOr(CaretPosition$1.after(table)); - }; - var getTable = function (previous, pos) { - var node = pos.getNode(previous); - return NodeType.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none(); - }; - var renderBlock = function (down, editor, table, pos) { - var forcedRootBlock = Settings.getForcedRootBlock(editor); - if (forcedRootBlock) { - editor.undoManager.transact(function () { - var element = Element.fromTag(forcedRootBlock); - setAll(element, Settings.getForcedRootBlockAttrs(editor)); - append(element, Element.fromTag('br')); - if (down) { - after(Element.fromDom(table), element); - } else { - before(Element.fromDom(table), element); - } - var rng = editor.dom.createRng(); - rng.setStart(element.dom(), 0); - rng.setEnd(element.dom(), 0); - moveToRange(editor, rng); - }); - } else { - moveToRange(editor, pos.toRange()); - } - }; - var moveCaret = function (editor, down, pos) { - var table = down ? getTable(true, pos) : getTable(false, pos); - var last = down === false; - table.fold(function () { - return moveToRange(editor, pos.toRange()); - }, function (table) { - return CaretFinder.positionIn(last, editor.getBody()).filter(function (lastPos) { - return lastPos.isEqual(pos); - }).fold(function () { - return moveToRange(editor, pos.toRange()); - }, function (_) { - return renderBlock(down, editor, table, pos); - }); - }); - }; - var navigateVertically = function (editor, down, table, td) { - var rng = editor.selection.getRng(); - var pos = CaretPosition$1.fromRangeStart(rng); - var root = editor.getBody(); - if (!down && isAtFirstTableCellLine(td, pos)) { - var newPos = getClosestAbovePosition(root, table, pos); - moveCaret(editor, down, newPos); - return true; - } else if (down && isAtLastTableCellLine(td, pos)) { - var newPos = getClosestBelowPosition(root, table, pos); - moveCaret(editor, down, newPos); - return true; - } else { - return false; - } - }; - var moveH$1 = function (editor, forward) { - return function () { - return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { - return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { - return navigateHorizontally(editor, forward, table); - }); - }).getOr(false); - }; - }; - var moveV$1 = function (editor, forward) { - return function () { - return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { - return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { - return navigateVertically(editor, forward, table, td); - }); - }).getOr(false); - }; - }; - - var isTarget = function (node) { - return contains(['figcaption'], name(node)); - }; - var rangeBefore = function (target) { - var rng = domGlobals.document.createRange(); - rng.setStartBefore(target.dom()); - rng.setEndBefore(target.dom()); - return rng; - }; - var insertElement = function (root, elm, forward) { - if (forward) { - append(root, elm); - } else { - prepend(root, elm); - } - }; - var insertBr = function (root, forward) { - var br = Element.fromTag('br'); - insertElement(root, br, forward); - return rangeBefore(br); - }; - var insertBlock$1 = function (root, forward, blockName, attrs) { - var block = Element.fromTag(blockName); - var br = Element.fromTag('br'); - setAll(block, attrs); - append(block, br); - insertElement(root, block, forward); - return rangeBefore(br); - }; - var insertEmptyLine = function (root, rootBlockName, attrs, forward) { - if (rootBlockName === '') { - return insertBr(root, forward); - } else { - return insertBlock$1(root, forward, rootBlockName, attrs); - } - }; - var getClosestTargetBlock = function (pos, root) { - var isRoot = curry(eq, root); - return closest(Element.fromDom(pos.container()), isBlock, isRoot).filter(isTarget); - }; - var isAtFirstOrLastLine = function (root, forward, pos) { - return forward ? isAtLastLine(root.dom(), pos) : isAtFirstLine(root.dom(), pos); - }; - var moveCaretToNewEmptyLine = function (editor, forward) { - var root = Element.fromDom(editor.getBody()); - var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - var rootBlock = Settings.getForcedRootBlock(editor); - var rootBlockAttrs = Settings.getForcedRootBlockAttrs(editor); - return getClosestTargetBlock(pos, root).exists(function () { - if (isAtFirstOrLastLine(root, forward, pos)) { - var rng = insertEmptyLine(root, rootBlock, rootBlockAttrs, forward); - editor.selection.setRng(rng); - return true; - } else { - return false; - } - }); - }; - var moveV$2 = function (editor, forward) { - return function () { - if (editor.selection.isCollapsed()) { - return moveCaretToNewEmptyLine(editor, forward); - } else { - return false; - } - }; - }; - - var defaultPatterns = function (patterns) { - return map(patterns, function (pattern) { - return merge({ - shiftKey: false, - altKey: false, - ctrlKey: false, - metaKey: false, - keyCode: 0, - action: noop - }, pattern); - }); - }; - var matchesEvent = function (pattern, evt) { - return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey; - }; - var match$1 = function (patterns, evt) { - return bind(defaultPatterns(patterns), function (pattern) { - return matchesEvent(pattern, evt) ? [pattern] : []; - }); - }; - var action = function (f) { - var x = []; - for (var _i = 1; _i < arguments.length; _i++) { - x[_i - 1] = arguments[_i]; - } - var args = Array.prototype.slice.call(arguments, 1); - return function () { - return f.apply(null, args); - }; - }; - var execute = function (patterns, evt) { - return find(match$1(patterns, evt), function (pattern) { - return pattern.action(); - }); - }; - var MatchKeys = { - match: match$1, - action: action, - execute: execute - }; - - var executeKeydownOverride = function (editor, caret, evt) { - var os = PlatformDetection$1.detect().os; - MatchKeys.execute([ - { - keyCode: VK.RIGHT, - action: moveH(editor, true) - }, - { - keyCode: VK.LEFT, - action: moveH(editor, false) - }, - { - keyCode: VK.UP, - action: moveV(editor, false) - }, - { - keyCode: VK.DOWN, - action: moveV(editor, true) - }, - { - keyCode: VK.RIGHT, - action: moveH$1(editor, true) - }, - { - keyCode: VK.LEFT, - action: moveH$1(editor, false) - }, - { - keyCode: VK.UP, - action: moveV$1(editor, false) - }, - { - keyCode: VK.DOWN, - action: moveV$1(editor, true) - }, - { - keyCode: VK.RIGHT, - action: BoundarySelection.move(editor, caret, true) - }, - { - keyCode: VK.LEFT, - action: BoundarySelection.move(editor, caret, false) - }, - { - keyCode: VK.RIGHT, - ctrlKey: !os.isOSX(), - altKey: os.isOSX(), - action: BoundarySelection.moveNextWord(editor, caret) - }, - { - keyCode: VK.LEFT, - ctrlKey: !os.isOSX(), - altKey: os.isOSX(), - action: BoundarySelection.movePrevWord(editor, caret) - }, - { - keyCode: VK.UP, - action: moveV$2(editor, false) - }, - { - keyCode: VK.DOWN, - action: moveV$2(editor, true) - } - ], evt).each(function (_) { - evt.preventDefault(); - }); - }; - var setup$7 = function (editor, caret) { - editor.on('keydown', function (evt) { - if (evt.isDefaultPrevented() === false) { - executeKeydownOverride(editor, caret, evt); - } - }); - }; - var ArrowKeys = { setup: setup$7 }; - - var executeKeydownOverride$1 = function (editor, caret, evt) { - MatchKeys.execute([ - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(CefDelete.backspaceDelete, editor, false) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(CefDelete.backspaceDelete, editor, true) - }, - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(CefBoundaryDelete.backspaceDelete, editor, false) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(CefBoundaryDelete.backspaceDelete, editor, true) - }, - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(InlineBoundaryDelete.backspaceDelete, editor, caret, false) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(InlineBoundaryDelete.backspaceDelete, editor, caret, true) - }, - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(TableDelete.backspaceDelete, editor, false) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(TableDelete.backspaceDelete, editor, true) - }, - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, false) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, true) - }, - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, false) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, true) - }, - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, false) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, true) - } - ], evt).each(function (_) { - evt.preventDefault(); - }); - }; - var executeKeyupOverride = function (editor, evt) { - MatchKeys.execute([ - { - keyCode: VK.BACKSPACE, - action: MatchKeys.action(CefDelete.paddEmptyElement, editor) - }, - { - keyCode: VK.DELETE, - action: MatchKeys.action(CefDelete.paddEmptyElement, editor) - } - ], evt); - }; - var setup$8 = function (editor, caret) { - editor.on('keydown', function (evt) { - if (evt.isDefaultPrevented() === false) { - executeKeydownOverride$1(editor, caret, evt); - } - }); - editor.on('keyup', function (evt) { - if (evt.isDefaultPrevented() === false) { - executeKeyupOverride(editor, evt); - } - }); - }; - var DeleteBackspaceKeys = { setup: setup$8 }; - - var firstNonWhiteSpaceNodeSibling = function (node) { - while (node) { - if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\r\n\s]/.test(node.data)) { - return node; - } - node = node.nextSibling; - } - }; - var moveToCaretPosition = function (editor, root) { - var walker, node, rng, lastNode = root, tempElm; - var dom = editor.dom; - var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements(); - if (!root) { - return; - } - if (/^(LI|DT|DD)$/.test(root.nodeName)) { - var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild); - if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) { - root.insertBefore(dom.doc.createTextNode('\xA0'), root.firstChild); - } - } - rng = dom.createRng(); - root.normalize(); - if (root.hasChildNodes()) { - walker = new TreeWalker(root, root); - while (node = walker.current()) { - if (NodeType.isText(node)) { - rng.setStart(node, 0); - rng.setEnd(node, 0); - break; - } - if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) { - rng.setStartBefore(node); - rng.setEndBefore(node); - break; - } - lastNode = node; - node = walker.next(); - } - if (!node) { - rng.setStart(lastNode, 0); - rng.setEnd(lastNode, 0); - } - } else { - if (NodeType.isBr(root)) { - if (root.nextSibling && dom.isBlock(root.nextSibling)) { - rng.setStartBefore(root); - rng.setEndBefore(root); - } else { - rng.setStartAfter(root); - rng.setEndAfter(root); - } - } else { - rng.setStart(root, 0); - rng.setEnd(root, 0); - } - } - editor.selection.setRng(rng); - dom.remove(tempElm); - editor.selection.scrollIntoView(root); - }; - var getEditableRoot = function (dom, node) { - var root = dom.getRoot(); - var parent, editableRoot; - parent = node; - while (parent !== root && dom.getContentEditable(parent) !== 'false') { - if (dom.getContentEditable(parent) === 'true') { - editableRoot = parent; - } - parent = parent.parentNode; - } - return parent !== root ? editableRoot : root; - }; - var getParentBlock$2 = function (editor) { - return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock)); - }; - var getParentBlockName = function (editor) { - return getParentBlock$2(editor).fold(constant(''), function (parentBlock) { - return parentBlock.nodeName.toUpperCase(); - }); - }; - var isListItemParentBlock = function (editor) { - return getParentBlock$2(editor).filter(function (elm) { - return isListItem(Element.fromDom(elm)); - }).isSome(); - }; - var NewLineUtils = { - moveToCaretPosition: moveToCaretPosition, - getEditableRoot: getEditableRoot, - getParentBlock: getParentBlock$2, - getParentBlockName: getParentBlockName, - isListItemParentBlock: isListItemParentBlock - }; - - var hasFirstChild = function (elm, name) { - return elm.firstChild && elm.firstChild.nodeName === name; - }; - var hasParent$1 = function (elm, parentName) { - return elm && elm.parentNode && elm.parentNode.nodeName === parentName; - }; - var isListBlock = function (elm) { - return elm && /^(OL|UL|LI)$/.test(elm.nodeName); - }; - var isNestedList = function (elm) { - return isListBlock(elm) && isListBlock(elm.parentNode); - }; - var getContainerBlock = function (containerBlock) { - var containerBlockParent = containerBlock.parentNode; - if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) { - return containerBlockParent; - } - return containerBlock; - }; - var isFirstOrLastLi = function (containerBlock, parentBlock, first) { - var node = containerBlock[first ? 'firstChild' : 'lastChild']; - while (node) { - if (NodeType.isElement(node)) { - break; - } - node = node[first ? 'nextSibling' : 'previousSibling']; - } - return node === parentBlock; - }; - var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) { - var dom = editor.dom; - var rng = editor.selection.getRng(); - if (containerBlock === editor.getBody()) { - return; - } - if (isNestedList(containerBlock)) { - newBlockName = 'LI'; - } - var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR'); - if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) { - if (hasParent$1(containerBlock, 'LI')) { - dom.insertAfter(newBlock, getContainerBlock(containerBlock)); - } else { - dom.replace(newBlock, containerBlock); - } - } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) { - if (hasParent$1(containerBlock, 'LI')) { - dom.insertAfter(newBlock, getContainerBlock(containerBlock)); - newBlock.appendChild(dom.doc.createTextNode(' ')); - newBlock.appendChild(containerBlock); - } else { - containerBlock.parentNode.insertBefore(newBlock, containerBlock); - } - } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) { - dom.insertAfter(newBlock, getContainerBlock(containerBlock)); - } else { - containerBlock = getContainerBlock(containerBlock); - var tmpRng = rng.cloneRange(); - tmpRng.setStartAfter(parentBlock); - tmpRng.setEndAfter(containerBlock); - var fragment = tmpRng.extractContents(); - if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) { - newBlock = fragment.firstChild; - dom.insertAfter(fragment, containerBlock); - } else { - dom.insertAfter(fragment, containerBlock); - dom.insertAfter(newBlock, containerBlock); - } - } - dom.remove(parentBlock); - NewLineUtils.moveToCaretPosition(editor, newBlock); - }; - var InsertLi = { insert: insert$1 }; - - var trimZwsp = function (fragment) { - each(descendants(Element.fromDom(fragment), isText), function (text) { - var rawNode = text.dom(); - rawNode.nodeValue = Zwsp.trim(rawNode.nodeValue); - }); - }; - var isEmptyAnchor = function (dom, elm) { - return elm && elm.nodeName === 'A' && dom.isEmpty(elm); - }; - var isTableCell$5 = function (node) { - return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); - }; - var emptyBlock = function (elm) { - elm.innerHTML = '
        '; - }; - var containerAndSiblingName = function (container, nodeName) { - return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName; - }; - var canSplitBlock = function (dom, node) { - return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true'; - }; - var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) { - var node = block; - var firstChilds = []; - var i; - if (!node) { - return; - } - while (node = node.firstChild) { - if (dom.isBlock(node)) { - return; - } - if (NodeType.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) { - firstChilds.push(node); - } - } - i = firstChilds.length; - while (i--) { - node = firstChilds[i]; - if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') { - dom.remove(node); - } else { - if (isEmptyAnchor(dom, node)) { - dom.remove(node); - } - } - } - }; - var normalizeZwspOffset = function (start, container, offset) { - if (NodeType.isText(container) === false) { - return offset; - } else if (start) { - return offset === 1 && container.data.charAt(offset - 1) === Zwsp.ZWSP ? 0 : offset; - } else { - return offset === container.data.length - 1 && container.data.charAt(offset) === Zwsp.ZWSP ? container.data.length : offset; - } - }; - var includeZwspInRange = function (rng) { - var newRng = rng.cloneRange(); - newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset)); - newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset)); - return newRng; - }; - var trimLeadingLineBreaks = function (node) { - do { - if (NodeType.isText(node)) { - node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, ''); - } - node = node.firstChild; - } while (node); - }; - var getEditableRoot$1 = function (dom, node) { - var root = dom.getRoot(); - var parent, editableRoot; - parent = node; - while (parent !== root && dom.getContentEditable(parent) !== 'false') { - if (dom.getContentEditable(parent) === 'true') { - editableRoot = parent; - } - parent = parent.parentNode; - } - return parent !== root ? editableRoot : root; - }; - var applyAttributes = function (editor, node, forcedRootBlockAttrs) { - Option.from(forcedRootBlockAttrs.style).map(editor.dom.parseStyle).each(function (attrStyles) { - var currentStyles = getAllRaw(Element.fromDom(node)); - var newStyles = __assign(__assign({}, currentStyles), attrStyles); - editor.dom.setStyles(node, newStyles); - }); - var attrClassesOpt = Option.from(forcedRootBlockAttrs.class).map(function (attrClasses) { - return attrClasses.split(/\s+/); - }); - var currentClassesOpt = Option.from(node.className).map(function (currentClasses) { - return filter(currentClasses.split(/\s+/), function (clazz) { - return clazz !== ''; - }); - }); - lift2(attrClassesOpt, currentClassesOpt, function (attrClasses, currentClasses) { - var filteredClasses = filter(currentClasses, function (clazz) { - return !contains(attrClasses, clazz); - }); - var newClasses = __spreadArrays(attrClasses, filteredClasses); - editor.dom.setAttrib(node, 'class', newClasses.join(' ')); - }); - var appliedAttrs = [ - 'style', - 'class' - ]; - var remainingAttrs = bifilter(forcedRootBlockAttrs, function (_, attrs) { - return !contains(appliedAttrs, attrs); - }).t; - editor.dom.setAttribs(node, remainingAttrs); - }; - var setForcedBlockAttrs = function (editor, node) { - var forcedRootBlockName = Settings.getForcedRootBlock(editor); - if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) { - var forcedRootBlockAttrs = Settings.getForcedRootBlockAttrs(editor); - applyAttributes(editor, node, forcedRootBlockAttrs); - } - }; - var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) { - var newBlock, parentBlock, startNode, node, next, rootBlockName; - var blockName = newBlockName || 'P'; - var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container); - parentBlock = dom.getParent(container, dom.isBlock); - if (!parentBlock || !canSplitBlock(dom, parentBlock)) { - parentBlock = parentBlock || editableRoot; - if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) { - rootBlockName = parentBlock.nodeName.toLowerCase(); - } else { - rootBlockName = parentBlock.parentNode.nodeName.toLowerCase(); - } - if (!parentBlock.hasChildNodes()) { - newBlock = dom.create(blockName); - setForcedBlockAttrs(editor, newBlock); - parentBlock.appendChild(newBlock); - rng.setStart(newBlock, 0); - rng.setEnd(newBlock, 0); - return newBlock; - } - node = container; - while (node.parentNode !== parentBlock) { - node = node.parentNode; - } - while (node && !dom.isBlock(node)) { - startNode = node; - node = node.previousSibling; - } - if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) { - newBlock = dom.create(blockName); - setForcedBlockAttrs(editor, newBlock); - startNode.parentNode.insertBefore(newBlock, startNode); - node = startNode; - while (node && !dom.isBlock(node)) { - next = node.nextSibling; - newBlock.appendChild(node); - node = next; - } - rng.setStart(container, offset); - rng.setEnd(container, offset); - } - } - return container; - }; - var addBrToBlockIfNeeded = function (dom, block) { - var lastChild; - block.normalize(); - lastChild = block.lastChild; - if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) { - dom.add(block, 'br'); - } - }; - var insert$2 = function (editor, evt) { - var tmpRng, editableRoot, container, offset, parentBlock, shiftKey; - var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer; - var dom = editor.dom; - var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(); - var rng = editor.selection.getRng(); - var createNewBlock = function (name) { - var node = container, block, clonedNode, caretNode; - var textInlineElements = schema.getTextInlineElements(); - if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') { - block = dom.create(name || newBlockName); - } else { - block = parentBlock.cloneNode(false); - } - caretNode = block; - if (Settings.shouldKeepStyles(editor) === false) { - dom.setAttrib(block, 'style', null); - dom.setAttrib(block, 'class', null); - } else { - do { - if (textInlineElements[node.nodeName]) { - if (isCaretNode(node) || Bookmarks.isBookmarkNode(node)) { - continue; - } - clonedNode = node.cloneNode(false); - dom.setAttrib(clonedNode, 'id', ''); - if (block.hasChildNodes()) { - clonedNode.appendChild(block.firstChild); - block.appendChild(clonedNode); - } else { - caretNode = clonedNode; - block.appendChild(clonedNode); - } - } - } while ((node = node.parentNode) && node !== editableRoot); - } - setForcedBlockAttrs(editor, block); - emptyBlock(caretNode); - return block; - }; - var isCaretAtStartOrEndOfBlock = function (start) { - var walker, node, name, normalizedOffset; - normalizedOffset = normalizeZwspOffset(start, container, offset); - if (NodeType.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) { - return false; - } - if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) { - return true; - } - if (start && NodeType.isElement(container) && container === parentBlock.firstChild) { - return true; - } - if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) { - return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start; - } - walker = new TreeWalker(container, parentBlock); - if (NodeType.isText(container)) { - if (start && normalizedOffset === 0) { - walker.prev(); - } else if (!start && normalizedOffset === container.nodeValue.length) { - walker.next(); - } - } - while (node = walker.current()) { - if (NodeType.isElement(node)) { - if (!node.getAttribute('data-mce-bogus')) { - name = node.nodeName.toLowerCase(); - if (nonEmptyElementsMap[name] && name !== 'br') { - return false; - } - } - } else if (NodeType.isText(node) && !/^[ \t\r\n]*$/.test(node.nodeValue)) { - return false; - } - if (start) { - walker.prev(); - } else { - walker.next(); - } - } - return true; - }; - var insertNewBlockAfter = function () { - if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') { - newBlock = createNewBlock(newBlockName); - } else { - newBlock = createNewBlock(); - } - if (Settings.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) { - newBlock = dom.split(containerBlock, parentBlock); - } else { - dom.insertAfter(newBlock, parentBlock); - } - NewLineUtils.moveToCaretPosition(editor, newBlock); - }; - NormalizeRange.normalize(dom, rng).each(function (normRng) { - rng.setStart(normRng.startContainer, normRng.startOffset); - rng.setEnd(normRng.endContainer, normRng.endOffset); - }); - container = rng.startContainer; - offset = rng.startOffset; - newBlockName = Settings.getForcedRootBlock(editor); - shiftKey = evt.shiftKey; - if (NodeType.isElement(container) && container.hasChildNodes()) { - isAfterLastNodeInContainer = offset > container.childNodes.length - 1; - container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; - if (isAfterLastNodeInContainer && NodeType.isText(container)) { - offset = container.nodeValue.length; - } else { - offset = 0; - } - } - editableRoot = getEditableRoot$1(dom, container); - if (!editableRoot) { - return; - } - if (newBlockName && !shiftKey || !newBlockName && shiftKey) { - container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset); - } - parentBlock = dom.getParent(container, dom.isBlock); - containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; - parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; - containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; - if (containerBlockName === 'LI' && !evt.ctrlKey) { - parentBlock = containerBlock; - containerBlock = containerBlock.parentNode; - parentBlockName = containerBlockName; - } - if (/^(LI|DT|DD)$/.test(parentBlockName)) { - if (dom.isEmpty(parentBlock)) { - InsertLi.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName); - return; - } - } - if (newBlockName && parentBlock === editor.getBody()) { - return; - } - newBlockName = newBlockName || 'P'; - if (isCaretContainerBlock(parentBlock)) { - newBlock = showCaretContainerBlock(parentBlock); - if (dom.isEmpty(parentBlock)) { - emptyBlock(parentBlock); - } - setForcedBlockAttrs(editor, newBlock); - NewLineUtils.moveToCaretPosition(editor, newBlock); - } else if (isCaretAtStartOrEndOfBlock()) { - insertNewBlockAfter(); - } else if (isCaretAtStartOrEndOfBlock(true)) { - newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock); - NewLineUtils.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock); - } else { - tmpRng = includeZwspInRange(rng).cloneRange(); - tmpRng.setEndAfter(parentBlock); - fragment = tmpRng.extractContents(); - trimZwsp(fragment); - trimLeadingLineBreaks(fragment); - newBlock = fragment.firstChild; - dom.insertAfter(fragment, parentBlock); - trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock); - addBrToBlockIfNeeded(dom, parentBlock); - if (dom.isEmpty(parentBlock)) { - emptyBlock(parentBlock); - } - newBlock.normalize(); - if (dom.isEmpty(newBlock)) { - dom.remove(newBlock); - insertNewBlockAfter(); - } else { - setForcedBlockAttrs(editor, newBlock); - NewLineUtils.moveToCaretPosition(editor, newBlock); - } - } - dom.setAttrib(newBlock, 'id', ''); - editor.fire('NewBlock', { newBlock: newBlock }); - }; - var InsertBlock = { insert: insert$2 }; - - var matchesSelector = function (editor, selector) { - return NewLineUtils.getParentBlock(editor).filter(function (parentBlock) { - return selector.length > 0 && is$1(Element.fromDom(parentBlock), selector); - }).isSome(); - }; - var shouldInsertBr = function (editor) { - return matchesSelector(editor, Settings.getBrNewLineSelector(editor)); - }; - var shouldBlockNewLine = function (editor) { - return matchesSelector(editor, Settings.getNoNewLineSelector(editor)); - }; - var ContextSelectors = { - shouldInsertBr: shouldInsertBr, - shouldBlockNewLine: shouldBlockNewLine - }; - - var newLineAction = Adt.generate([ - { br: [] }, - { block: [] }, - { none: [] } - ]); - var shouldBlockNewLine$1 = function (editor, shiftKey) { - return ContextSelectors.shouldBlockNewLine(editor); - }; - var isBrMode = function (requiredState) { - return function (editor, shiftKey) { - var brMode = Settings.getForcedRootBlock(editor) === ''; - return brMode === requiredState; - }; - }; - var inListBlock = function (requiredState) { - return function (editor, shiftKey) { - return NewLineUtils.isListItemParentBlock(editor) === requiredState; - }; - }; - var inBlock = function (blockName, requiredState) { - return function (editor, shiftKey) { - var state = NewLineUtils.getParentBlockName(editor) === blockName.toUpperCase(); - return state === requiredState; - }; - }; - var inPreBlock = function (requiredState) { - return inBlock('pre', requiredState); - }; - var inSummaryBlock = function () { - return inBlock('summary', true); - }; - var shouldPutBrInPre$1 = function (requiredState) { - return function (editor, shiftKey) { - return Settings.shouldPutBrInPre(editor) === requiredState; - }; - }; - var inBrContext = function (editor, shiftKey) { - return ContextSelectors.shouldInsertBr(editor); - }; - var hasShiftKey = function (editor, shiftKey) { - return shiftKey; - }; - var canInsertIntoEditableRoot = function (editor) { - var forcedRootBlock = Settings.getForcedRootBlock(editor); - var rootEditable = NewLineUtils.getEditableRoot(editor.dom, editor.selection.getStart()); - return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P'); - }; - var match$2 = function (predicates, action) { - return function (editor, shiftKey) { - var isMatch = foldl(predicates, function (res, p) { - return res && p(editor, shiftKey); - }, true); - return isMatch ? Option.some(action) : Option.none(); - }; - }; - var getAction$1 = function (editor, evt) { - return LazyEvaluator.evaluateUntil([ - match$2([shouldBlockNewLine$1], newLineAction.none()), - match$2([inSummaryBlock()], newLineAction.br()), - match$2([ - inPreBlock(true), - shouldPutBrInPre$1(false), - hasShiftKey - ], newLineAction.br()), - match$2([ - inPreBlock(true), - shouldPutBrInPre$1(false) - ], newLineAction.block()), - match$2([ - inPreBlock(true), - shouldPutBrInPre$1(true), - hasShiftKey - ], newLineAction.block()), - match$2([ - inPreBlock(true), - shouldPutBrInPre$1(true) - ], newLineAction.br()), - match$2([ - inListBlock(true), - hasShiftKey - ], newLineAction.br()), - match$2([inListBlock(true)], newLineAction.block()), - match$2([ - isBrMode(true), - hasShiftKey, - canInsertIntoEditableRoot - ], newLineAction.block()), - match$2([isBrMode(true)], newLineAction.br()), - match$2([inBrContext], newLineAction.br()), - match$2([ - isBrMode(false), - hasShiftKey - ], newLineAction.br()), - match$2([canInsertIntoEditableRoot], newLineAction.block()) - ], [ - editor, - evt.shiftKey - ]).getOr(newLineAction.none()); - }; - var NewLineAction = { getAction: getAction$1 }; - - var insert$3 = function (editor, evt) { - NewLineAction.getAction(editor, evt).fold(function () { - InsertBr.insert(editor, evt); - }, function () { - InsertBlock.insert(editor, evt); - }, noop); - }; - var InsertNewLine = { insert: insert$3 }; - - var endTypingLevel = function (undoManager) { - if (undoManager.typing) { - undoManager.typing = false; - undoManager.add(); - } - }; - var handleEnterKeyEvent = function (editor, event) { - if (event.isDefaultPrevented()) { - return; - } - event.preventDefault(); - endTypingLevel(editor.undoManager); - editor.undoManager.transact(function () { - if (editor.selection.isCollapsed() === false) { - editor.execCommand('Delete'); - } - InsertNewLine.insert(editor, event); - }); - }; - var setup$9 = function (editor) { - editor.on('keydown', function (event) { - if (event.keyCode === VK.ENTER) { - handleEnterKeyEvent(editor, event); - } - }); - }; - var EnterKey = { setup: setup$9 }; - - var insertTextAtPosition = function (text, pos) { - var container = pos.container(); - var offset = pos.offset(); - if (NodeType.isText(container)) { - container.insertData(offset, text); - return Option.some(CaretPosition(container, offset + text.length)); - } else { - return getElementFromPosition(pos).map(function (elm) { - var textNode = Element.fromText(text); - if (pos.isAtEnd()) { - after(elm, textNode); - } else { - before(elm, textNode); - } - return CaretPosition(textNode.dom(), text.length); - }); - } - }; - var insertNbspAtPosition = curry(insertTextAtPosition, '\xA0'); - var insertSpaceAtPosition = curry(insertTextAtPosition, ' '); - - var navigateIgnoreEmptyTextNodes = function (forward, root, from) { - return CaretFinder.navigateIgnore(forward, root, from, isEmptyText); - }; - var getClosestBlock = function (root, pos) { - return find(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock); - }; - var isAtBeforeAfterBlockBoundary = function (forward, root, pos) { - return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) { - return getClosestBlock(root, pos).fold(function () { - return isInSameBlock(newPos, pos, root.dom()) === false; - }, function (fromBlock) { - return isInSameBlock(newPos, pos, root.dom()) === false && contains$3(fromBlock, Element.fromDom(newPos.container())); - }); - }); - }; - var isAtBlockBoundary = function (forward, root, pos) { - return getClosestBlock(root, pos).fold(function () { - return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) { - return isInSameBlock(newPos, pos, root.dom()) === false; - }); - }, function (parent) { - return navigateIgnoreEmptyTextNodes(forward, parent.dom(), pos).isNone(); - }); - }; - var isAtStartOfBlock = curry(isAtBlockBoundary, false); - var isAtEndOfBlock = curry(isAtBlockBoundary, true); - var isBeforeBlock = curry(isAtBeforeAfterBlockBoundary, false); - var isAfterBlock = curry(isAtBeforeAfterBlockBoundary, true); - - var nbsp = '\xA0'; - var isInMiddleOfText = function (pos) { - return CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd(); - }; - var getClosestBlock$1 = function (root, pos) { - var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock); - return head(parentBlocks).getOr(root); - }; - var hasSpaceBefore = function (root, pos) { - if (isInMiddleOfText(pos)) { - return isAfterSpace(pos); - } else { - return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock$1(root, pos).dom(), pos).exists(isAfterSpace); - } - }; - var hasSpaceAfter = function (root, pos) { - if (isInMiddleOfText(pos)) { - return isBeforeSpace(pos); - } else { - return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock$1(root, pos).dom(), pos).exists(isBeforeSpace); - } - }; - var isPreValue = function (value) { - return contains([ - 'pre', - 'pre-wrap' - ], value); - }; - var isInPre = function (pos) { - return getElementFromPosition(pos).bind(function (elm) { - return closest(elm, isElement); - }).exists(function (elm) { - return isPreValue(get$1(elm, 'white-space')); - }); - }; - var isAtBeginningOfBody = function (root, pos) { - return CaretFinder.prevPosition(root.dom(), pos).isNone(); - }; - var isAtEndOfBody = function (root, pos) { - return CaretFinder.nextPosition(root.dom(), pos).isNone(); - }; - var isAtLineBoundary = function (root, pos) { - return isAtBeginningOfBody(root, pos) || isAtEndOfBody(root, pos) || isAtStartOfBlock(root, pos) || isAtEndOfBlock(root, pos) || isAfterBr(root, pos) || isBeforeBr(root, pos); - }; - var needsToHaveNbsp = function (root, pos) { - if (isInPre(pos)) { - return false; - } else { - return isAtLineBoundary(root, pos) || hasSpaceBefore(root, pos) || hasSpaceAfter(root, pos); - } - }; - var needsToBeNbspLeft = function (root, pos) { - if (isInPre(pos)) { - return false; - } else { - return isAtStartOfBlock(root, pos) || isBeforeBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos); - } - }; - var leanRight = function (pos) { - var container = pos.container(); - var offset = pos.offset(); - if (NodeType.isText(container) && offset < container.data.length) { - return CaretPosition(container, offset + 1); - } else { - return pos; - } - }; - var needsToBeNbspRight = function (root, pos) { - var afterPos = leanRight(pos); - if (isInPre(afterPos)) { - return false; - } else { - return isAtEndOfBlock(root, afterPos) || isAfterBlock(root, afterPos) || isBeforeBr(root, afterPos) || hasSpaceAfter(root, afterPos); - } - }; - var needsToBeNbsp = function (root, pos) { - return needsToBeNbspLeft(root, pos) || needsToBeNbspRight(root, pos); - }; - var isNbspAt = function (text, offset) { - return isNbsp(text.charAt(offset)); - }; - var hasNbsp = function (pos) { - var container = pos.container(); - return NodeType.isText(container) && contains$2(container.data, nbsp); - }; - var normalizeNbspMiddle = function (text) { - var chars = text.split(''); - return map(chars, function (chr, i) { - if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent$1(chars[i - 1]) && isContent$1(chars[i + 1])) { - return ' '; - } else { - return chr; - } - }).join(''); - }; - var normalizeNbspAtStart = function (root, node) { - var text = node.data; - var firstPos = CaretPosition(node, 0); - if (isNbspAt(text, 0) && !needsToBeNbsp(root, firstPos)) { - node.data = ' ' + text.slice(1); - return true; - } else { - return false; - } - }; - var normalizeNbspInMiddleOfTextNode = function (node) { - var text = node.data; - var newText = normalizeNbspMiddle(text); - if (newText !== text) { - node.data = newText; - return true; - } else { - return false; - } - }; - var normalizeNbspAtEnd = function (root, node) { - var text = node.data; - var lastPos = CaretPosition(node, text.length - 1); - if (isNbspAt(text, text.length - 1) && !needsToBeNbsp(root, lastPos)) { - node.data = text.slice(0, -1) + ' '; - return true; - } else { - return false; - } - }; - var normalizeNbsps = function (root, pos) { - return Option.some(pos).filter(hasNbsp).bind(function (pos) { - var container = pos.container(); - var normalized = normalizeNbspAtStart(root, container) || normalizeNbspInMiddleOfTextNode(container) || normalizeNbspAtEnd(root, container); - return normalized ? Option.some(pos) : Option.none(); - }); - }; - var normalizeNbspsInEditor = function (editor) { - var root = Element.fromDom(editor.getBody()); - if (editor.selection.isCollapsed()) { - normalizeNbsps(root, CaretPosition.fromRangeStart(editor.selection.getRng())).each(function (pos) { - editor.selection.setRng(pos.toRange()); - }); - } - }; - - var locationToCaretPosition = function (root) { - return function (location) { - return location.fold(function (element) { - return CaretFinder.prevPosition(root.dom(), CaretPosition$1.before(element)); - }, function (element) { - return CaretFinder.firstPositionIn(element); - }, function (element) { - return CaretFinder.lastPositionIn(element); - }, function (element) { - return CaretFinder.nextPosition(root.dom(), CaretPosition$1.after(element)); - }); - }; - }; - var insertInlineBoundarySpaceOrNbsp = function (root, pos) { - return function (checkPos) { - return needsToHaveNbsp(root, checkPos) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos); - }; - }; - var setSelection$1 = function (editor) { - return function (pos) { - editor.selection.setRng(pos.toRange()); - editor.nodeChanged(); - return true; - }; - }; - var insertSpaceOrNbspAtSelection = function (editor) { - var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - var root = Element.fromDom(editor.getBody()); - if (editor.selection.isCollapsed()) { - var isInlineTarget = curry(InlineUtils.isInlineTarget, editor); - var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng()); - return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).bind(insertInlineBoundarySpaceOrNbsp(root, pos)).exists(setSelection$1(editor)); - } else { - return false; - } - }; - - var executeKeydownOverride$2 = function (editor, evt) { - MatchKeys.execute([{ - keyCode: VK.SPACEBAR, - action: MatchKeys.action(insertSpaceOrNbspAtSelection, editor) - }], evt).each(function (_) { - evt.preventDefault(); - }); - }; - var setup$a = function (editor) { - editor.on('keydown', function (evt) { - if (evt.isDefaultPrevented() === false) { - executeKeydownOverride$2(editor, evt); - } - }); - }; - var SpaceKey = { setup: setup$a }; - - var findBlockCaretContainer = function (editor) { - return descendant(Element.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) { - return elm.dom(); - }); - }; - var removeIeControlRect = function (editor) { - editor.selection.setRng(editor.selection.getRng()); - }; - var showBlockCaretContainer = function (editor, blockCaretContainer) { - if (blockCaretContainer.hasAttribute('data-mce-caret')) { - showCaretContainerBlock(blockCaretContainer); - removeIeControlRect(editor); - editor.selection.scrollIntoView(blockCaretContainer); - } - }; - var handleBlockContainer = function (editor, e) { - var blockCaretContainer = findBlockCaretContainer(editor); - if (!blockCaretContainer) { - return; - } - if (e.type === 'compositionstart') { - e.preventDefault(); - e.stopPropagation(); - showBlockCaretContainer(editor, blockCaretContainer); - return; - } - if (hasContent(blockCaretContainer)) { - showBlockCaretContainer(editor, blockCaretContainer); - editor.undoManager.add(); - } - }; - var setup$b = function (editor) { - editor.on('keyup compositionstart', curry(handleBlockContainer, editor)); - }; - var CaretContainerInput = { setup: setup$b }; - - var browser$4 = PlatformDetection$1.detect().browser; - var setupIeInput = function (editor) { - var keypressThrotter = first(function () { - if (!editor.composing) { - normalizeNbspsInEditor(editor); - } - }, 0); - if (browser$4.isIE()) { - editor.on('keypress', function (e) { - keypressThrotter.throttle(); - }); - editor.on('remove', function (e) { - keypressThrotter.cancel(); - }); - } - }; - var setup$c = function (editor) { - setupIeInput(editor); - editor.on('input', function (e) { - if (e.isComposing === false) { - normalizeNbspsInEditor(editor); - } - }); - }; - - var executeKeydownOverride$3 = function (editor, evt) { - MatchKeys.execute([ - { - keyCode: VK.END, - action: moveToLineEndPoint(editor, true) - }, - { - keyCode: VK.HOME, - action: moveToLineEndPoint(editor, false) - } - ], evt).each(function (_) { - evt.preventDefault(); - }); - }; - var setup$d = function (editor) { - editor.on('keydown', function (evt) { - if (evt.isDefaultPrevented() === false) { - executeKeydownOverride$3(editor, evt); - } - }); - }; - var HomeEndKeys = { setup: setup$d }; - - var setup$e = function (editor) { - var caret = BoundarySelection.setupSelectedState(editor); - CaretContainerInput.setup(editor); - ArrowKeys.setup(editor, caret); - DeleteBackspaceKeys.setup(editor, caret); - EnterKey.setup(editor); - SpaceKey.setup(editor); - setup$c(editor); - HomeEndKeys.setup(editor); - }; - var KeyboardOverrides = { setup: setup$e }; - - function Quirks (editor) { - var each = Tools.each; - var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser; - var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit; - var mceInternalUrlPrefix = 'data:text/mce-internal,'; - var mceInternalDataType = isIE ? 'Text' : 'URL'; - var setEditorCommandState = function (cmd, state) { - try { - editor.getDoc().execCommand(cmd, false, state); - } catch (ex) { - } - }; - var isDefaultPrevented = function (e) { - return e.isDefaultPrevented(); - }; - var setMceInternalContent = function (e) { - var selectionHtml, internalContent; - if (e.dataTransfer) { - if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') { - selection.select(e.target); - } - selectionHtml = editor.selection.getContent(); - if (selectionHtml.length > 0) { - internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml); - e.dataTransfer.setData(mceInternalDataType, internalContent); - } - } - }; - var getMceInternalContent = function (e) { - var internalContent; - if (e.dataTransfer) { - internalContent = e.dataTransfer.getData(mceInternalDataType); - if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) { - internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(','); - return { - id: unescape(internalContent[0]), - html: unescape(internalContent[1]) - }; - } - } - return null; - }; - var insertClipboardContents = function (content, internal) { - if (editor.queryCommandSupported('mceInsertClipboardContent')) { - editor.execCommand('mceInsertClipboardContent', false, { - content: content, - internal: internal - }); - } else { - editor.execCommand('mceInsertContent', false, content); - } - }; - var emptyEditorWhenDeleting = function () { - var serializeRng = function (rng) { - var body = dom.create('body'); - var contents = rng.cloneContents(); - body.appendChild(contents); - return selection.serializer.serialize(body, { format: 'html' }); - }; - var allContentsSelected = function (rng) { - var selection = serializeRng(rng); - var allRng = dom.createRng(); - allRng.selectNode(editor.getBody()); - var allSelection = serializeRng(allRng); - return selection === allSelection; - }; - editor.on('keydown', function (e) { - var keyCode = e.keyCode; - var isCollapsed, body; - if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) { - isCollapsed = editor.selection.isCollapsed(); - body = editor.getBody(); - if (isCollapsed && !dom.isEmpty(body)) { - return; - } - if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) { - return; - } - e.preventDefault(); - editor.setContent(''); - if (body.firstChild && dom.isBlock(body.firstChild)) { - editor.selection.setCursorLocation(body.firstChild, 0); - } else { - editor.selection.setCursorLocation(body, 0); - } - editor.nodeChanged(); - } - }); - }; - var selectAll = function () { - editor.shortcuts.add('meta+a', null, 'SelectAll'); - }; - var inputMethodFocus = function () { - if (!editor.settings.content_editable) { - dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) { - var rng; - if (e.target === editor.getDoc().documentElement) { - rng = selection.getRng(); - editor.getBody().focus(); - if (e.type === 'mousedown') { - if (isCaretContainer(rng.startContainer)) { - return; - } - selection.placeCaretAt(e.clientX, e.clientY); - } else { - selection.setRng(rng); - } - } - }); - } - }; - var removeHrOnBackspace = function () { - editor.on('keydown', function (e) { - if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { - if (!editor.getBody().getElementsByTagName('hr').length) { - return; - } - if (selection.isCollapsed() && selection.getRng().startOffset === 0) { - var node = selection.getNode(); - var previousSibling = node.previousSibling; - if (node.nodeName === 'HR') { - dom.remove(node); - e.preventDefault(); - return; - } - if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') { - dom.remove(previousSibling); - e.preventDefault(); - } - } - } - }); - }; - var focusBody = function () { - if (!domGlobals.Range.prototype.getClientRects) { - editor.on('mousedown', function (e) { - if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') { - var body_1 = editor.getBody(); - body_1.blur(); - Delay.setEditorTimeout(editor, function () { - body_1.focus(); - }); - } - }); - } - }; - var selectControlElements = function () { - editor.on('click', function (e) { - var target = e.target; - if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') { - e.preventDefault(); - editor.selection.select(target); - editor.nodeChanged(); - } - if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) { - e.preventDefault(); - selection.select(target); - } - }); - }; - var removeStylesWhenDeletingAcrossBlockElements = function () { - var getAttributeApplyFunction = function () { - var template = dom.getAttribs(selection.getStart().cloneNode(false)); - return function () { - var target = selection.getStart(); - if (target !== editor.getBody()) { - dom.setAttrib(target, 'style', null); - each(template, function (attr) { - target.setAttributeNode(attr.cloneNode(true)); - }); - } - }; - }; - var isSelectionAcrossElements = function () { - return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock); - }; - editor.on('keypress', function (e) { - var applyAttributes; - if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) { - applyAttributes = getAttributeApplyFunction(); - editor.getDoc().execCommand('delete', false, null); - applyAttributes(); - e.preventDefault(); - return false; - } - }); - dom.bind(editor.getDoc(), 'cut', function (e) { - var applyAttributes; - if (!isDefaultPrevented(e) && isSelectionAcrossElements()) { - applyAttributes = getAttributeApplyFunction(); - Delay.setEditorTimeout(editor, function () { - applyAttributes(); - }); - } - }); - }; - var disableBackspaceIntoATable = function () { - editor.on('keydown', function (e) { - if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { - if (selection.isCollapsed() && selection.getRng().startOffset === 0) { - var previousSibling = selection.getNode().previousSibling; - if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') { - e.preventDefault(); - return false; - } - } - } - }); - }; - var removeBlockQuoteOnBackSpace = function () { - editor.on('keydown', function (e) { - var rng, container, offset, root, parent; - if (isDefaultPrevented(e) || e.keyCode !== VK.BACKSPACE) { - return; - } - rng = selection.getRng(); - container = rng.startContainer; - offset = rng.startOffset; - root = dom.getRoot(); - parent = container; - if (!rng.collapsed || offset !== 0) { - return; - } - while (parent && parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) { - parent = parent.parentNode; - } - if (parent.tagName === 'BLOCKQUOTE') { - editor.formatter.toggle('blockquote', null, parent); - rng = dom.createRng(); - rng.setStart(container, 0); - rng.setEnd(container, 0); - selection.setRng(rng); - } - }); - }; - var setGeckoEditingOptions = function () { - var setOpts = function () { - setEditorCommandState('StyleWithCSS', false); - setEditorCommandState('enableInlineTableEditing', false); - if (!settings.object_resizing) { - setEditorCommandState('enableObjectResizing', false); - } - }; - if (!settings.readonly) { - editor.on('BeforeExecCommand MouseDown', setOpts); - } - }; - var addBrAfterLastLinks = function () { - var fixLinks = function () { - each(dom.select('a'), function (node) { - var parentNode = node.parentNode; - var root = dom.getRoot(); - if (parentNode.lastChild === node) { - while (parentNode && !dom.isBlock(parentNode)) { - if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) { - return; - } - parentNode = parentNode.parentNode; - } - dom.add(parentNode, 'br', { 'data-mce-bogus': 1 }); - } - }); - }; - editor.on('SetContent ExecCommand', function (e) { - if (e.type === 'setcontent' || e.command === 'mceInsertLink') { - fixLinks(); - } - }); - }; - var setDefaultBlockType = function () { - if (settings.forced_root_block) { - editor.on('init', function () { - setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block); - }); - } - }; - var normalizeSelection = function () { - editor.on('keyup focusin mouseup', function (e) { - if (!VK.modifierPressed(e)) { - selection.normalize(); - } - }, true); - }; - var showBrokenImageIcon = function () { - editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}'); - }; - var restoreFocusOnKeyDown = function () { - if (!editor.inline) { - editor.on('keydown', function () { - if (domGlobals.document.activeElement === domGlobals.document.body) { - editor.getWin().focus(); - } - }); - } - }; - var bodyHeight = function () { - if (!editor.inline) { - editor.contentStyles.push('body {min-height: 150px}'); - editor.on('click', function (e) { - var rng; - if (e.target.nodeName === 'HTML') { - if (Env.ie > 11) { - editor.getBody().focus(); - return; - } - rng = editor.selection.getRng(); - editor.getBody().focus(); - editor.selection.setRng(rng); - editor.selection.normalize(); - editor.nodeChanged(); - } - }); - } - }; - var blockCmdArrowNavigation = function () { - if (Env.mac) { - editor.on('keydown', function (e) { - if (VK.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) { - e.preventDefault(); - editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary'); - } - }); - } - }; - var disableAutoUrlDetect = function () { - setEditorCommandState('AutoUrlDetect', false); - }; - var tapLinksAndImages = function () { - editor.on('click', function (e) { - var elm = e.target; - do { - if (elm.tagName === 'A') { - e.preventDefault(); - return; - } - } while (elm = elm.parentNode); - }); - editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}'); - }; - var blockFormSubmitInsideEditor = function () { - editor.on('init', function () { - editor.dom.bind(editor.getBody(), 'submit', function (e) { - e.preventDefault(); - }); - }); - }; - var removeAppleInterchangeBrs = function () { - parser.addNodeFilter('br', function (nodes) { - var i = nodes.length; - while (i--) { - if (nodes[i].attr('class') === 'Apple-interchange-newline') { - nodes[i].remove(); - } - } - }); - }; - var ieInternalDragAndDrop = function () { - editor.on('dragstart', function (e) { - setMceInternalContent(e); - }); - editor.on('drop', function (e) { - if (!isDefaultPrevented(e)) { - var internalContent = getMceInternalContent(e); - if (internalContent && internalContent.id !== editor.id) { - e.preventDefault(); - var rng = CaretRangeFromPoint.fromPoint(e.x, e.y, editor.getDoc()); - selection.setRng(rng); - insertClipboardContents(internalContent.html, true); - } - } - }); - }; - var refreshContentEditable = function () { - }; - var isHidden = function () { - var sel; - if (!isGecko || editor.removed) { - return 0; - } - sel = editor.selection.getSel(); - return !sel || !sel.rangeCount || sel.rangeCount === 0; - }; - removeBlockQuoteOnBackSpace(); - emptyEditorWhenDeleting(); - if (!Env.windowsPhone) { - normalizeSelection(); - } - if (isWebKit) { - inputMethodFocus(); - selectControlElements(); - setDefaultBlockType(); - blockFormSubmitInsideEditor(); - disableBackspaceIntoATable(); - removeAppleInterchangeBrs(); - if (Env.iOS) { - restoreFocusOnKeyDown(); - bodyHeight(); - tapLinksAndImages(); - } else { - selectAll(); - } - } - if (Env.ie >= 11) { - bodyHeight(); - disableBackspaceIntoATable(); - } - if (Env.ie) { - selectAll(); - disableAutoUrlDetect(); - ieInternalDragAndDrop(); - } - if (isGecko) { - removeHrOnBackspace(); - focusBody(); - removeStylesWhenDeletingAcrossBlockElements(); - setGeckoEditingOptions(); - addBrAfterLastLinks(); - showBrokenImageIcon(); - blockCmdArrowNavigation(); - disableBackspaceIntoATable(); - } - return { - refreshContentEditable: refreshContentEditable, - isHidden: isHidden - }; - } - - var isTextBlockNode = function (node) { - return NodeType.isElement(node) && isTextBlock(Element.fromDom(node)); - }; - var normalizeSelection$1 = function (editor) { - var rng = editor.selection.getRng(); - var startPos = CaretPosition.fromRangeStart(rng); - var endPos = CaretPosition.fromRangeEnd(rng); - if (CaretPosition.isElementPosition(startPos)) { - var container = startPos.container(); - if (isTextBlockNode(container)) { - CaretFinder.firstPositionIn(container).each(function (pos) { - return rng.setStart(pos.container(), pos.offset()); - }); - } - } - if (CaretPosition.isElementPosition(endPos)) { - var container = startPos.container(); - if (isTextBlockNode(container)) { - CaretFinder.lastPositionIn(container).each(function (pos) { - return rng.setEnd(pos.container(), pos.offset()); - }); - } - } - editor.selection.setRng(RangeNormalizer.normalize(rng)); - }; - var setup$f = function (editor) { - editor.on('click', function (e) { - if (e.detail >= 3) { - normalizeSelection$1(editor); - } - }); - }; - - var preventSummaryToggle = function (editor) { - editor.on('click', function (e) { - if (editor.dom.getParent(e.target, 'details')) { - e.preventDefault(); - } - }); - }; - var filterDetails = function (editor) { - editor.parser.addNodeFilter('details', function (elms) { - each(elms, function (details) { - details.attr('data-mce-open', details.attr('open')); - details.attr('open', 'open'); - }); - }); - editor.serializer.addNodeFilter('details', function (elms) { - each(elms, function (details) { - var open = details.attr('data-mce-open'); - details.attr('open', isString(open) ? open : null); - details.attr('data-mce-open', null); - }); - }); - }; - var setup$g = function (editor) { - preventSummaryToggle(editor); - filterDetails(editor); - }; - - var DOM$2 = DOMUtils$1.DOM; - var appendStyle = function (editor, text) { - var head = Element.fromDom(editor.getDoc().head); - var tag = Element.fromTag('style'); - set(tag, 'type', 'text/css'); - append(tag, Element.fromText(text)); - append(head, tag); - }; - var createParser = function (editor) { - var parser = DomParser(editor.settings, editor.schema); - parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name) { - var i = nodes.length, node; - var dom = editor.dom; - var value, internalName; - while (i--) { - node = nodes[i]; - value = node.attr(name); - internalName = 'data-mce-' + name; - if (!node.attributes.map[internalName]) { - if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) { - continue; - } - if (name === 'style') { - value = dom.serializeStyle(dom.parseStyle(value), node.name); - if (!value.length) { - value = null; - } - node.attr(internalName, value); - node.attr(name, value); - } else if (name === 'tabindex') { - node.attr(internalName, value); - node.attr(name, null); - } else { - node.attr(internalName, editor.convertURL(value, name, node.name)); - } - } - } - }); - parser.addNodeFilter('script', function (nodes) { - var i = nodes.length, node, type; - while (i--) { - node = nodes[i]; - type = node.attr('type') || 'no/type'; - if (type.indexOf('mce-') !== 0) { - node.attr('type', 'mce-' + type); - } - } - }); - parser.addNodeFilter('#cdata', function (nodes) { - var i = nodes.length, node; - while (i--) { - node = nodes[i]; - node.type = 8; - node.name = '#comment'; - node.value = '[CDATA[' + node.value + ']]'; - } - }); - parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) { - var i = nodes.length, node; - var nonEmptyElements = editor.schema.getNonEmptyElements(); - while (i--) { - node = nodes[i]; - if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) { - node.append(new Node$1('br', 1)).shortEnded = true; - } - } - }); - return parser; - }; - var autoFocus = function (editor) { - if (editor.settings.auto_focus) { - Delay.setEditorTimeout(editor, function () { - var focusEditor; - if (editor.settings.auto_focus === true) { - focusEditor = editor; - } else { - focusEditor = editor.editorManager.get(editor.settings.auto_focus); - } - if (!focusEditor.destroyed) { - focusEditor.focus(); - } - }, 100); - } - }; - var initEditor = function (editor) { - editor.bindPendingEventDelegates(); - editor.initialized = true; - editor.fire('init'); - editor.focus(true); - editor.nodeChanged({ initial: true }); - editor.execCallback('init_instance_callback', editor); - autoFocus(editor); - }; - var getStyleSheetLoader = function (editor) { - return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader; - }; - var initContentBody = function (editor, skipWrite) { - var settings = editor.settings; - var targetElm = editor.getElement(); - var doc = editor.getDoc(), body, contentCssText; - if (!settings.inline) { - editor.getElement().style.visibility = editor.orgVisibility; - } - if (!skipWrite && !settings.content_editable) { - doc.open(); - doc.write(editor.iframeHTML); - doc.close(); - } - if (settings.content_editable) { - editor.on('remove', function () { - var bodyEl = this.getBody(); - DOM$2.removeClass(bodyEl, 'mce-content-body'); - DOM$2.removeClass(bodyEl, 'mce-edit-focus'); - DOM$2.setAttrib(bodyEl, 'contentEditable', null); - }); - DOM$2.addClass(targetElm, 'mce-content-body'); - editor.contentDocument = doc = settings.content_document || domGlobals.document; - editor.contentWindow = settings.content_window || domGlobals.window; - editor.bodyElement = targetElm; - settings.content_document = settings.content_window = null; - settings.root_name = targetElm.nodeName.toLowerCase(); - } - body = editor.getBody(); - body.disabled = true; - editor.readonly = settings.readonly; - if (!editor.readonly) { - if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') { - body.style.position = 'relative'; - } - body.contentEditable = editor.getParam('content_editable_state', true); - } - body.disabled = false; - editor.editorUpload = EditorUpload(editor); - editor.schema = Schema(settings); - editor.dom = DOMUtils$1(doc, { - keep_values: true, - url_converter: editor.convertURL, - url_converter_scope: editor, - hex_colors: settings.force_hex_style_colors, - class_filter: settings.class_filter, - update_styles: true, - root_element: editor.inline ? editor.getBody() : null, - collect: settings.content_editable, - schema: editor.schema, - contentCssCors: Settings.shouldUseContentCssCors(editor), - onSetAttrib: function (e) { - editor.fire('SetAttrib', e); - } - }); - editor.parser = createParser(editor); - editor.serializer = DomSerializer$1(settings, editor); - editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor); - editor.annotator = Annotator(editor); - editor.formatter = Formatter(editor); - editor.undoManager = UndoManager(editor); - editor._nodeChangeDispatcher = new NodeChange(editor); - editor._selectionOverrides = SelectionOverrides(editor); - setup$g(editor); - setup$f(editor); - KeyboardOverrides.setup(editor); - ForceBlocks.setup(editor); - editor.fire('PreInit'); - if (!settings.browser_spellcheck && !settings.gecko_spellcheck) { - doc.body.spellcheck = false; - DOM$2.setAttrib(body, 'spellcheck', 'false'); - } - editor.quirks = Quirks(editor); - editor.fire('PostRender'); - if (settings.directionality) { - body.dir = settings.directionality; - } - if (settings.nowrap) { - body.style.whiteSpace = 'nowrap'; - } - if (settings.protect) { - editor.on('BeforeSetContent', function (e) { - Tools.each(settings.protect, function (pattern) { - e.content = e.content.replace(pattern, function (str) { - return ''; - }); - }); - }); - } - editor.on('SetContent', function () { - editor.addVisual(editor.getBody()); - }); - editor.load({ - initial: true, - format: 'html' - }); - editor.startContent = editor.getContent({ format: 'raw' }); - editor.on('compositionstart compositionend', function (e) { - editor.composing = e.type === 'compositionstart'; - }); - if (editor.contentStyles.length > 0) { - contentCssText = ''; - Tools.each(editor.contentStyles, function (style) { - contentCssText += style + '\r\n'; - }); - editor.dom.addStyle(contentCssText); - } - getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) { - initEditor(editor); - }, function (urls) { - initEditor(editor); - }); - if (settings.content_style) { - appendStyle(editor, settings.content_style); - } - }; - var InitContentBody = { initContentBody: initContentBody }; - - var DOM$3 = DOMUtils$1.DOM; - var relaxDomain = function (editor, ifr) { - if (domGlobals.document.domain !== domGlobals.window.location.hostname && Env.ie && Env.ie < 12) { - var bodyUuid = Uuid.uuid('mce'); - editor[bodyUuid] = function () { - InitContentBody.initContentBody(editor); - }; - var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain="' + domGlobals.document.domain + '";' + 'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()'; - DOM$3.setAttrib(ifr, 'src', domainRelaxUrl); - return true; - } - return false; - }; - var normalizeHeight = function (height) { - var normalizedHeight = typeof height === 'number' ? height + 'px' : height; - return normalizedHeight ? normalizedHeight : ''; - }; - var createIframeElement = function (id, title, height, customAttrs) { - var iframe = Element.fromTag('iframe'); - setAll(iframe, customAttrs); - setAll(iframe, { - id: id + '_ifr', - frameBorder: '0', - allowTransparency: 'true', - title: title - }); - setAll$1(iframe, { - width: '100%', - height: normalizeHeight(height), - display: 'block' - }); - return iframe; - }; - var getIframeHtml = function (editor) { - var bodyId, bodyClass, iframeHTML; - iframeHTML = Settings.getDocType(editor) + ''; - if (Settings.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) { - iframeHTML += ''; - } - iframeHTML += ''; - bodyId = Settings.getBodyId(editor); - bodyClass = Settings.getBodyClass(editor); - if (Settings.getContentSecurityPolicy(editor)) { - iframeHTML += ''; - } - iframeHTML += '
        '; - return iframeHTML; - }; - var createIframe = function (editor, o) { - var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help'); - var ifr = createIframeElement(editor.id, title, o.height, Settings.getIframeAttrs(editor)).dom(); - ifr.onload = function () { - ifr.onload = null; - editor.fire('load'); - }; - var isDomainRelaxed = relaxDomain(editor, ifr); - editor.contentAreaContainer = o.iframeContainer; - editor.iframeElement = ifr; - editor.iframeHTML = getIframeHtml(editor); - DOM$3.add(o.iframeContainer, ifr); - return isDomainRelaxed; - }; - var init$1 = function (editor, boxInfo) { - var isDomainRelaxed = createIframe(editor, boxInfo); - if (boxInfo.editorContainer) { - DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay; - editor.hidden = DOM$3.isHidden(boxInfo.editorContainer); - } - editor.getElement().style.display = 'none'; - DOM$3.setAttrib(editor.id, 'aria-hidden', 'true'); - if (!isDomainRelaxed) { - InitContentBody.initContentBody(editor); - } - }; - var InitIframe = { init: init$1 }; - - var DOM$4 = DOMUtils$1.DOM; - var initPlugin = function (editor, initializedPlugins, plugin) { - var Plugin = PluginManager$1.get(plugin); - var pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, ''); - plugin = Tools.trim(plugin); - if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) { - Tools.each(PluginManager$1.dependencies(plugin), function (dep) { - initPlugin(editor, initializedPlugins, dep); - }); - if (editor.plugins[plugin]) { - return; - } - try { - var pluginInstance = new Plugin(editor, pluginUrl, editor.$); - editor.plugins[plugin] = pluginInstance; - if (pluginInstance.init) { - pluginInstance.init(editor, pluginUrl); - initializedPlugins.push(plugin); - } - } catch (e) { - ErrorReporter.pluginInitError(editor, plugin, e); - } - } - }; - var trimLegacyPrefix = function (name) { - return name.replace(/^\-/, ''); - }; - var initPlugins = function (editor) { - var initializedPlugins = []; - Tools.each(editor.settings.plugins.split(/[ ,]/), function (name) { - initPlugin(editor, initializedPlugins, trimLegacyPrefix(name)); - }); - }; - var initTheme = function (editor) { - var Theme; - var theme = editor.settings.theme; - if (isString(theme)) { - editor.settings.theme = trimLegacyPrefix(theme); - Theme = ThemeManager.get(theme); - editor.theme = new Theme(editor, ThemeManager.urls[theme]); - if (editor.theme.init) { - editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\/$/, ''), editor.$); - } - } else { - editor.theme = {}; - } - }; - var renderFromLoadedTheme = function (editor) { - var w, h, minHeight, re, info; - var settings = editor.settings; - var elm = editor.getElement(); - w = settings.width || DOM$4.getStyle(elm, 'width') || '100%'; - h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight; - minHeight = settings.min_height || 100; - re = /^[0-9\.]+(|px)$/i; - if (re.test('' + w)) { - w = Math.max(parseInt(w, 10), 100); - } - if (re.test('' + h)) { - h = Math.max(parseInt(h, 10), minHeight); - } - info = editor.theme.renderUI({ - targetNode: elm, - width: w, - height: h, - deltaWidth: settings.delta_width, - deltaHeight: settings.delta_height - }); - if (!settings.content_editable) { - h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : ''); - if (h < minHeight) { - h = minHeight; - } - } - info.height = h; - return info; - }; - var renderFromThemeFunc = function (editor) { - var info; - var elm = editor.getElement(); - info = editor.settings.theme(editor, elm); - if (info.editorContainer.nodeType) { - info.editorContainer.id = info.editorContainer.id || editor.id + '_parent'; - } - if (info.iframeContainer && info.iframeContainer.nodeType) { - info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer'; - } - info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight; - return info; - }; - var createThemeFalseResult = function (element) { - return { - editorContainer: element, - iframeContainer: element - }; - }; - var renderThemeFalseIframe = function (targetElement) { - var iframeContainer = DOM$4.create('div'); - DOM$4.insertAfter(iframeContainer, targetElement); - return createThemeFalseResult(iframeContainer); - }; - var renderThemeFalse = function (editor) { - var targetElement = editor.getElement(); - return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement); - }; - var renderThemeUi = function (editor) { - var settings = editor.settings, elm = editor.getElement(); - editor.orgDisplay = elm.style.display; - if (isString(settings.theme)) { - return renderFromLoadedTheme(editor); - } else if (isFunction(settings.theme)) { - return renderFromThemeFunc(editor); - } else { - return renderThemeFalse(editor); - } - }; - var init$2 = function (editor) { - var settings = editor.settings; - var elm = editor.getElement(); - var boxInfo; - editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl; - editor.editorManager.i18n.setCode(settings.language); - settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area')); - editor.fire('ScriptsLoaded'); - initTheme(editor); - initPlugins(editor); - boxInfo = renderThemeUi(editor); - editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null; - if (settings.content_css) { - Tools.each(Tools.explode(settings.content_css), function (u) { - editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u)); - }); - } - if (settings.content_editable) { - return InitContentBody.initContentBody(editor); - } else { - return InitIframe.init(editor, boxInfo); - } - }; - var Init = { init: init$2 }; - - var DOM$5 = DOMUtils$1.DOM; - var hasSkipLoadPrefix = function (name) { - return name.charAt(0) === '-'; - }; - var loadLanguage = function (scriptLoader, editor) { - var settings = editor.settings; - if (settings.language && settings.language !== 'en' && !settings.language_url) { - settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js'; - } - if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) { - scriptLoader.add(settings.language_url); - } - }; - var loadTheme = function (scriptLoader, editor, suffix, callback) { - var settings = editor.settings, theme = settings.theme; - if (isString(theme)) { - if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) { - var themeUrl = settings.theme_url; - if (themeUrl) { - ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl)); - } else { - ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js'); - } - } - scriptLoader.loadQueue(function () { - ThemeManager.waitFor(theme, callback); - }); - } else { - callback(); - } - }; - var loadPlugins = function (settings, suffix) { - if (Tools.isArray(settings.plugins)) { - settings.plugins = settings.plugins.join(' '); - } - Tools.each(settings.external_plugins, function (url, name) { - PluginManager$1.load(name, url); - settings.plugins += ' ' + name; - }); - Tools.each(settings.plugins.split(/[ ,]/), function (plugin) { - plugin = Tools.trim(plugin); - if (plugin && !PluginManager$1.urls[plugin]) { - if (hasSkipLoadPrefix(plugin)) { - plugin = plugin.substr(1, plugin.length); - var dependencies = PluginManager$1.dependencies(plugin); - Tools.each(dependencies, function (dep) { - var defaultSettings = { - prefix: 'plugins/', - resource: dep, - suffix: '/plugin' + suffix + '.js' - }; - dep = PluginManager$1.createUrl(defaultSettings, dep); - PluginManager$1.load(dep.resource, dep); - }); - } else { - PluginManager$1.load(plugin, { - prefix: 'plugins/', - resource: plugin, - suffix: '/plugin' + suffix + '.js' - }); - } - } - }); - }; - var loadScripts = function (editor, suffix) { - var scriptLoader = ScriptLoader.ScriptLoader; - loadTheme(scriptLoader, editor, suffix, function () { - loadLanguage(scriptLoader, editor); - loadPlugins(editor.settings, suffix); - scriptLoader.loadQueue(function () { - if (!editor.removed) { - Init.init(editor); - } - }, editor, function (urls) { - ErrorReporter.pluginLoadError(editor, urls[0]); - if (!editor.removed) { - Init.init(editor); - } - }); - }); - }; - var render = function (editor) { - var settings = editor.settings, id = editor.id; - var readyHandler = function () { - DOM$5.unbind(domGlobals.window, 'ready', readyHandler); - editor.render(); - }; - if (!EventUtils.Event.domLoaded) { - DOM$5.bind(domGlobals.window, 'ready', readyHandler); - return; - } - if (!editor.getElement()) { - return; - } - if (!Env.contentEditable) { - return; - } - if (!settings.inline) { - editor.orgVisibility = editor.getElement().style.visibility; - editor.getElement().style.visibility = 'hidden'; - } else { - editor.inline = true; - } - var form = editor.getElement().form || DOM$5.getParent(id, 'form'); - if (form) { - editor.formElement = form; - if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) { - DOM$5.insertAfter(DOM$5.create('input', { - type: 'hidden', - name: id - }), id); - editor.hasHiddenInput = true; - } - editor.formEventDelegate = function (e) { - editor.fire(e.type, e); - }; - DOM$5.bind(form, 'submit reset', editor.formEventDelegate); - editor.on('reset', function () { - editor.setContent(editor.startContent, { format: 'raw' }); - }); - if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) { - form._mceOldSubmit = form.submit; - form.submit = function () { - editor.editorManager.triggerSave(); - editor.setDirty(false); - return form._mceOldSubmit(form); - }; - } - } - editor.windowManager = WindowManager(editor); - editor.notificationManager = NotificationManager(editor); - if (settings.encoding === 'xml') { - editor.on('GetContent', function (e) { - if (e.save) { - e.content = DOM$5.encode(e.content); - } - }); - } - if (settings.add_form_submit_trigger) { - editor.on('submit', function () { - if (editor.initialized) { - editor.save(); - } - }); - } - if (settings.add_unload_trigger) { - editor._beforeUnload = function () { - if (editor.initialized && !editor.destroyed && !editor.isHidden()) { - editor.save({ - format: 'raw', - no_events: true, - set_dirty: false - }); - } - }; - editor.editorManager.on('BeforeUnload', editor._beforeUnload); - } - editor.editorManager.add(editor); - loadScripts(editor, editor.suffix); - }; - var Render = { render: render }; - - var add$4 = function (editor, name, settings) { - var sidebars = editor.sidebars ? editor.sidebars : []; - sidebars.push({ - name: name, - settings: settings - }); - editor.sidebars = sidebars; - }; - var Sidebar = { add: add$4 }; - - var each$k = Tools.each, trim$4 = Tools.trim; - var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' '); - var DEFAULT_PORTS = { - ftp: 21, - http: 80, - https: 443, - mailto: 25 - }; - var URI = function (url, settings) { - var self = this; - var baseUri, baseUrl; - url = trim$4(url); - settings = self.settings = settings || {}; - baseUri = settings.base_uri; - if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) { - self.source = url; - return; - } - var isProtocolRelative = url.indexOf('//') === 0; - if (url.indexOf('/') === 0 && !isProtocolRelative) { - url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url; - } - if (!/^[\w\-]*:?\/\//.test(url)) { - baseUrl = settings.base_uri ? settings.base_uri.path : new URI(domGlobals.document.location.href).directory; - if (settings.base_uri.protocol == '') { - url = '//mce_host' + self.toAbsPath(baseUrl, url); - } else { - url = /([^#?]*)([#?]?.*)/.exec(url); - url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, url[1]) + url[2]; - } - } - url = url.replace(/@@/g, '(mce_at)'); - url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url); - each$k(queryParts, function (v, i) { - var part = url[i]; - if (part) { - part = part.replace(/\(mce_at\)/g, '@@'); - } - self[v] = part; - }); - if (baseUri) { - if (!self.protocol) { - self.protocol = baseUri.protocol; - } - if (!self.userInfo) { - self.userInfo = baseUri.userInfo; - } - if (!self.port && self.host === 'mce_host') { - self.port = baseUri.port; - } - if (!self.host || self.host === 'mce_host') { - self.host = baseUri.host; - } - self.source = ''; - } - if (isProtocolRelative) { - self.protocol = ''; - } - }; - URI.prototype = { - setPath: function (path) { - var self = this; - path = /^(.*?)\/?(\w+)?$/.exec(path); - self.path = path[0]; - self.directory = path[1]; - self.file = path[2]; - self.source = ''; - self.getURI(); - }, - toRelative: function (uri) { - var self = this; - var output; - if (uri === './') { - return uri; - } - uri = new URI(uri, { base_uri: self }); - if (uri.host !== 'mce_host' && self.host !== uri.host && uri.host || self.port !== uri.port || self.protocol !== uri.protocol && uri.protocol !== '') { - return uri.getURI(); - } - var tu = self.getURI(), uu = uri.getURI(); - if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) { - return tu; - } - output = self.toRelPath(self.path, uri.path); - if (uri.query) { - output += '?' + uri.query; - } - if (uri.anchor) { - output += '#' + uri.anchor; - } - return output; - }, - toAbsolute: function (uri, noHost) { - uri = new URI(uri, { base_uri: this }); - return uri.getURI(noHost && this.isSameOrigin(uri)); - }, - isSameOrigin: function (uri) { - if (this.host == uri.host && this.protocol == uri.protocol) { - if (this.port == uri.port) { - return true; - } - var defaultPort = DEFAULT_PORTS[this.protocol]; - if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) { - return true; - } - } - return false; - }, - toRelPath: function (base, path) { - var items, breakPoint = 0, out = '', i, l; - base = base.substring(0, base.lastIndexOf('/')); - base = base.split('/'); - items = path.split('/'); - if (base.length >= items.length) { - for (i = 0, l = base.length; i < l; i++) { - if (i >= items.length || base[i] !== items[i]) { - breakPoint = i + 1; - break; - } - } - } - if (base.length < items.length) { - for (i = 0, l = items.length; i < l; i++) { - if (i >= base.length || base[i] !== items[i]) { - breakPoint = i + 1; - break; - } - } - } - if (breakPoint === 1) { - return path; - } - for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) { - out += '../'; - } - for (i = breakPoint - 1, l = items.length; i < l; i++) { - if (i !== breakPoint - 1) { - out += '/' + items[i]; - } else { - out += items[i]; - } - } - return out; - }, - toAbsPath: function (base, path) { - var i, nb = 0, o = [], tr, outPath; - tr = /\/$/.test(path) ? '/' : ''; - base = base.split('/'); - path = path.split('/'); - each$k(base, function (k) { - if (k) { - o.push(k); - } - }); - base = o; - for (i = path.length - 1, o = []; i >= 0; i--) { - if (path[i].length === 0 || path[i] === '.') { - continue; - } - if (path[i] === '..') { - nb++; - continue; - } - if (nb > 0) { - nb--; - continue; - } - o.push(path[i]); - } - i = base.length - nb; - if (i <= 0) { - outPath = o.reverse().join('/'); - } else { - outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/'); - } - if (outPath.indexOf('/') !== 0) { - outPath = '/' + outPath; - } - if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) { - outPath += tr; - } - return outPath; - }, - getURI: function (noProtoHost) { - var s; - var self = this; - if (!self.source || noProtoHost) { - s = ''; - if (!noProtoHost) { - if (self.protocol) { - s += self.protocol + '://'; - } else { - s += '//'; - } - if (self.userInfo) { - s += self.userInfo + '@'; - } - if (self.host) { - s += self.host; - } - if (self.port) { - s += ':' + self.port; - } - } - if (self.path) { - s += self.path; - } - if (self.query) { - s += '?' + self.query; - } - if (self.anchor) { - s += '#' + self.anchor; - } - self.source = s; - } - return self.source; - } - }; - URI.parseDataUri = function (uri) { - var type, matches; - uri = decodeURIComponent(uri).split(','); - matches = /data:([^;]+)/.exec(uri[0]); - if (matches) { - type = matches[1]; - } - return { - type: type, - data: uri[1] - }; - }; - URI.getDocumentBaseUrl = function (loc) { - var baseUrl; - if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') { - baseUrl = loc.href; - } else { - baseUrl = loc.protocol + '//' + loc.host + loc.pathname; - } - if (/^[^:]+:\/\/\/?[^\/]+\//.test(baseUrl)) { - baseUrl = baseUrl.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); - if (!/[\/\\]$/.test(baseUrl)) { - baseUrl += '/'; - } - } - return baseUrl; - }; - - var defaultFormat = 'html'; - var trimEmptyContents = function (editor, html) { - var blockName = Settings.getForcedRootBlock(editor); - var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>( | |\\s|\xA0|
        |)<\\/' + blockName + '>[\r\n]*|
        [\r\n]*)$'); - return html.replace(emptyRegExp, ''); - }; - var getContentFromBody = function (editor, args, body) { - var content; - args.format = args.format ? args.format : defaultFormat; - args.get = true; - args.getInner = true; - if (!args.no_events) { - editor.fire('BeforeGetContent', args); - } - if (args.format === 'raw') { - content = Tools.trim(TrimHtml.trimExternal(editor.serializer, body.innerHTML)); - } else if (args.format === 'text') { - content = Zwsp.trim(body.innerText || body.textContent); - } else if (args.format === 'tree') { - return editor.serializer.serialize(body, args); - } else { - content = trimEmptyContents(editor, editor.serializer.serialize(body, args)); - } - if (args.format !== 'text' && !isWsPreserveElement(Element.fromDom(body))) { - args.content = Tools.trim(content); - } else { - args.content = content; - } - if (!args.no_events) { - editor.fire('GetContent', args); - } - return args.content; - }; - var getContent$1 = function (editor, args) { - if (args === void 0) { - args = {}; - } - return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$1('body', 11) : ''), function (body) { - return getContentFromBody(editor, args, body); - }); - }; - - var traverse = function (node, fn) { - fn(node); - if (node.firstChild) { - traverse(node.firstChild, fn); - } - if (node.next) { - traverse(node.next, fn); - } - }; - var findMatchingNodes = function (nodeFilters, attributeFilters, node) { - var nodeMatches = {}; - var attrMatches = {}; - var matches = []; - if (node.firstChild) { - traverse(node.firstChild, function (node) { - each(nodeFilters, function (filter) { - if (filter.name === node.name) { - if (nodeMatches[filter.name]) { - nodeMatches[filter.name].nodes.push(node); - } else { - nodeMatches[filter.name] = { - filter: filter, - nodes: [node] - }; - } - } - }); - each(attributeFilters, function (filter) { - if (typeof node.attr(filter.name) === 'string') { - if (attrMatches[filter.name]) { - attrMatches[filter.name].nodes.push(node); - } else { - attrMatches[filter.name] = { - filter: filter, - nodes: [node] - }; - } - } - }); - }); - } - for (var name in nodeMatches) { - if (nodeMatches.hasOwnProperty(name)) { - matches.push(nodeMatches[name]); - } - } - for (var name in attrMatches) { - if (attrMatches.hasOwnProperty(name)) { - matches.push(attrMatches[name]); - } - } - return matches; - }; - var filter$3 = function (nodeFilters, attributeFilters, node) { - var matches = findMatchingNodes(nodeFilters, attributeFilters, node); - each(matches, function (match) { - each(match.filter.callbacks, function (callback) { - callback(match.nodes, match.filter.name, {}); - }); - }); - }; - - var defaultFormat$1 = 'html'; - var isTreeNode = function (content) { - return content instanceof Node$1; - }; - var moveSelection = function (editor) { - if (EditorFocus.hasFocus(editor)) { - CaretFinder.firstPositionIn(editor.getBody()).each(function (pos) { - var node = pos.getNode(); - var caretPos = NodeType.isTable(node) ? CaretFinder.firstPositionIn(node).getOr(pos) : pos; - editor.selection.setRng(caretPos.toRange()); - }); - } - }; - var setEditorHtml = function (editor, html) { - editor.dom.setHTML(editor.getBody(), html); - moveSelection(editor); - }; - var setContentString = function (editor, body, content, args) { - var forcedRootBlockName, padd; - if (content.length === 0 || /^\s+$/.test(content)) { - padd = '
        '; - if (body.nodeName === 'TABLE') { - content = ''; - } else if (/^(UL|OL)$/.test(body.nodeName)) { - content = '
      34. ' + padd + '
      35. '; - } - forcedRootBlockName = Settings.getForcedRootBlock(editor); - if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) { - content = padd; - content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content); - } else if (!content) { - content = '
        '; - } - setEditorHtml(editor, content); - editor.fire('SetContent', args); - } else { - if (args.format !== 'raw') { - content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, { - isRootContent: true, - insert: true - })); - } - args.content = isWsPreserveElement(Element.fromDom(body)) ? content : Tools.trim(content); - setEditorHtml(editor, args.content); - if (!args.no_events) { - editor.fire('SetContent', args); - } - } - return args.content; - }; - var setContentTree = function (editor, body, content, args) { - filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content); - var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content); - args.content = isWsPreserveElement(Element.fromDom(body)) ? html : Tools.trim(html); - setEditorHtml(editor, args.content); - if (!args.no_events) { - editor.fire('SetContent', args); - } - return content; - }; - var setContent$1 = function (editor, content, args) { - if (args === void 0) { - args = {}; - } - args.format = args.format ? args.format : defaultFormat$1; - args.set = true; - args.content = isTreeNode(content) ? '' : content; - if (!isTreeNode(content) && !args.no_events) { - editor.fire('BeforeSetContent', args); - content = args.content; - } - return Option.from(editor.getBody()).fold(constant(content), function (body) { - return isTreeNode(content) ? setContentTree(editor, body, content, args) : setContentString(editor, body, content, args); - }); - }; - - var DOM$6 = DOMUtils$1.DOM; - var restoreOriginalStyles = function (editor) { - DOM$6.setStyle(editor.id, 'display', editor.orgDisplay); - }; - var safeDestroy = function (x) { - return Option.from(x).each(function (x) { - return x.destroy(); - }); - }; - var clearDomReferences = function (editor) { - editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null; - editor.bodyElement = editor.contentDocument = editor.contentWindow = null; - editor.iframeElement = editor.targetElm = null; - if (editor.selection) { - editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null; - } - }; - var restoreForm = function (editor) { - var form = editor.formElement; - if (form) { - if (form._mceOldSubmit) { - form.submit = form._mceOldSubmit; - form._mceOldSubmit = null; - } - DOM$6.unbind(form, 'submit reset', editor.formEventDelegate); - } - }; - var remove$7 = function (editor) { - if (!editor.removed) { - var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload; - var body = editor.getBody(); - var element = editor.getElement(); - if (body) { - editor.save({ is_removing: true }); - } - editor.removed = true; - editor.unbindAllNativeEvents(); - if (editor.hasHiddenInput && element) { - DOM$6.remove(element.nextSibling); - } - Events.fireRemove(editor); - editor.editorManager.remove(editor); - if (!editor.inline && body) { - restoreOriginalStyles(editor); - } - Events.fireDetach(editor); - DOM$6.remove(editor.getContainer()); - safeDestroy(_selectionOverrides); - safeDestroy(editorUpload); - editor.destroy(); - } - }; - var destroy = function (editor, automatic) { - var selection = editor.selection, dom = editor.dom; - if (editor.destroyed) { - return; - } - if (!automatic && !editor.removed) { - editor.remove(); - return; - } - if (!automatic) { - editor.editorManager.off('beforeunload', editor._beforeUnload); - if (editor.theme && editor.theme.destroy) { - editor.theme.destroy(); - } - safeDestroy(selection); - safeDestroy(dom); - } - restoreForm(editor); - clearDomReferences(editor); - editor.destroyed = true; - }; - - var DOM$7 = DOMUtils$1.DOM; - var extend$4 = Tools.extend, each$l = Tools.each; - var resolve$4 = Tools.resolve; - var ie$2 = Env.ie; - var Editor = function (id, settings, editorManager) { - var self = this; - var documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL; - var baseUri = editorManager.baseURI; - settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings); - self.settings = settings; - AddOnManager.language = settings.language || 'en'; - AddOnManager.languageLoad = settings.language_load; - AddOnManager.baseURL = editorManager.baseURL; - self.id = id; - self.setDirty(false); - self.plugins = {}; - self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri }); - self.baseURI = baseUri; - self.contentCSS = []; - self.contentStyles = []; - self.shortcuts = new Shortcuts(self); - self.loadedCSS = {}; - self.editorCommands = new EditorCommands(self); - self.suffix = editorManager.suffix; - self.editorManager = editorManager; - self.inline = settings.inline; - self.buttons = {}; - self.menuItems = {}; - if (settings.cache_suffix) { - Env.cacheSuffix = settings.cache_suffix.replace(/^[\?\&]+/, ''); - } - if (settings.override_viewport === false) { - Env.overrideViewPort = false; - } - editorManager.fire('SetupEditor', { editor: self }); - self.execCallback('setup', self); - self.$ = DomQuery.overrideDefaults(function () { - return { - context: self.inline ? self.getBody() : self.getDoc(), - element: self.getBody() - }; - }); - }; - Editor.prototype = { - render: function () { - Render.render(this); - }, - focus: function (skipFocus) { - EditorFocus.focus(this, skipFocus); - }, - hasFocus: function () { - return EditorFocus.hasFocus(this); - }, - execCallback: function (name) { - var x = []; - for (var _i = 1; _i < arguments.length; _i++) { - x[_i - 1] = arguments[_i]; - } - var self = this; - var callback = self.settings[name], scope; - if (!callback) { - return; - } - if (self.callbackLookup && (scope = self.callbackLookup[name])) { - callback = scope.func; - scope = scope.scope; - } - if (typeof callback === 'string') { - scope = callback.replace(/\.\w+$/, ''); - scope = scope ? resolve$4(scope) : 0; - callback = resolve$4(callback); - self.callbackLookup = self.callbackLookup || {}; - self.callbackLookup[name] = { - func: callback, - scope: scope - }; - } - return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1)); - }, - translate: function (text) { - if (text && Tools.is(text, 'string')) { - var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n; - text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\{\#([^\}]+)\}/g, function (a, b) { - return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}'; - }); - } - return this.editorManager.translate(text); - }, - getLang: function (name, defaultVal) { - return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}'); - }, - getParam: function (name, defaultVal, type) { - return getParam(this, name, defaultVal, type); - }, - nodeChanged: function (args) { - this._nodeChangeDispatcher.nodeChanged(args); - }, - addButton: function (name, settings) { - var self = this; - if (settings.cmd) { - settings.onclick = function () { - self.execCommand(settings.cmd); - }; - } - if (settings.stateSelector && typeof settings.active === 'undefined') { - settings.active = false; - } - if (!settings.text && !settings.icon) { - settings.icon = name; - } - settings.tooltip = settings.tooltip || settings.title; - self.buttons[name] = settings; - }, - addSidebar: function (name, settings) { - return Sidebar.add(this, name, settings); - }, - addMenuItem: function (name, settings) { - var self = this; - if (settings.cmd) { - settings.onclick = function () { - self.execCommand(settings.cmd); - }; - } - self.menuItems[name] = settings; - }, - addContextToolbar: function (predicate, items) { - var self = this; - var selector; - self.contextToolbars = self.contextToolbars || []; - if (typeof predicate === 'string') { - selector = predicate; - predicate = function (elm) { - return self.dom.is(elm, selector); - }; - } - self.contextToolbars.push({ - id: Uuid.uuid('mcet'), - predicate: predicate, - items: items - }); - }, - addCommand: function (name, callback, scope) { - this.editorCommands.addCommand(name, callback, scope); - }, - addQueryStateHandler: function (name, callback, scope) { - this.editorCommands.addQueryStateHandler(name, callback, scope); - }, - addQueryValueHandler: function (name, callback, scope) { - this.editorCommands.addQueryValueHandler(name, callback, scope); - }, - addShortcut: function (pattern, desc, cmdFunc, scope) { - this.shortcuts.add(pattern, desc, cmdFunc, scope); - }, - execCommand: function (cmd, ui, value, args) { - return this.editorCommands.execCommand(cmd, ui, value, args); - }, - queryCommandState: function (cmd) { - return this.editorCommands.queryCommandState(cmd); - }, - queryCommandValue: function (cmd) { - return this.editorCommands.queryCommandValue(cmd); - }, - queryCommandSupported: function (cmd) { - return this.editorCommands.queryCommandSupported(cmd); - }, - show: function () { - var self = this; - if (self.hidden) { - self.hidden = false; - if (self.inline) { - self.getBody().contentEditable = true; - } else { - DOM$7.show(self.getContainer()); - DOM$7.hide(self.id); - } - self.load(); - self.fire('show'); - } - }, - hide: function () { - var self = this, doc = self.getDoc(); - if (!self.hidden) { - if (ie$2 && doc && !self.inline) { - doc.execCommand('SelectAll'); - } - self.save(); - if (self.inline) { - self.getBody().contentEditable = false; - if (self === self.editorManager.focusedEditor) { - self.editorManager.focusedEditor = null; - } - } else { - DOM$7.hide(self.getContainer()); - DOM$7.setStyle(self.id, 'display', self.orgDisplay); - } - self.hidden = true; - self.fire('hide'); - } - }, - isHidden: function () { - return !!this.hidden; - }, - setProgressState: function (state, time) { - this.fire('ProgressState', { - state: state, - time: time - }); - }, - load: function (args) { - var self = this; - var elm = self.getElement(), html; - if (self.removed) { - return ''; - } - if (elm) { - args = args || {}; - args.load = true; - html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args); - args.element = elm; - if (!args.no_events) { - self.fire('LoadContent', args); - } - args.element = elm = null; - return html; - } - }, - save: function (args) { - var self = this; - var elm = self.getElement(), html, form; - if (!elm || !self.initialized || self.removed) { - return; - } - args = args || {}; - args.save = true; - args.element = elm; - html = args.content = self.getContent(args); - if (!args.no_events) { - self.fire('SaveContent', args); - } - if (args.format === 'raw') { - self.fire('RawSaveContent', args); - } - html = args.content; - if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) { - if (args.is_removing || !self.inline) { - elm.innerHTML = html; - } - if (form = DOM$7.getParent(self.id, 'form')) { - each$l(form.elements, function (elm) { - if (elm.name === self.id) { - elm.value = html; - return false; - } - }); - } - } else { - elm.value = html; - } - args.element = elm = null; - if (args.set_dirty !== false) { - self.setDirty(false); - } - return html; - }, - setContent: function (content, args) { - return setContent$1(this, content, args); - }, - getContent: function (args) { - return getContent$1(this, args); - }, - insertContent: function (content, args) { - if (args) { - content = extend$4({ content: content }, args); - } - this.execCommand('mceInsertContent', false, content); - }, - isDirty: function () { - return !this.isNotDirty; - }, - setDirty: function (state) { - var oldState = !this.isNotDirty; - this.isNotDirty = !state; - if (state && state !== oldState) { - this.fire('dirty'); - } - }, - setMode: function (mode) { - setMode(this, mode); - }, - getContainer: function () { - var self = this; - if (!self.container) { - self.container = DOM$7.get(self.editorContainer || self.id + '_parent'); - } - return self.container; - }, - getContentAreaContainer: function () { - return this.contentAreaContainer; - }, - getElement: function () { - if (!this.targetElm) { - this.targetElm = DOM$7.get(this.id); - } - return this.targetElm; - }, - getWin: function () { - var self = this; - var elm; - if (!self.contentWindow) { - elm = self.iframeElement; - if (elm) { - self.contentWindow = elm.contentWindow; - } - } - return self.contentWindow; - }, - getDoc: function () { - var self = this; - var win; - if (!self.contentDocument) { - win = self.getWin(); - if (win) { - self.contentDocument = win.document; - } - } - return self.contentDocument; - }, - getBody: function () { - var doc = this.getDoc(); - return this.bodyElement || (doc ? doc.body : null); - }, - convertURL: function (url, name, elm) { - var self = this, settings = self.settings; - if (settings.urlconverter_callback) { - return self.execCallback('urlconverter_callback', url, elm, true, name); - } - if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) { - return url; - } - if (settings.relative_urls) { - return self.documentBaseURI.toRelative(url); - } - url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host); - return url; - }, - addVisual: function (elm) { - var self = this; - var settings = self.settings; - var dom = self.dom; - var cls; - elm = elm || self.getBody(); - if (self.hasVisual === undefined) { - self.hasVisual = settings.visual; - } - each$l(dom.select('table,a', elm), function (elm) { - var value; - switch (elm.nodeName) { - case 'TABLE': - cls = settings.visual_table_class || 'mce-item-table'; - value = dom.getAttrib(elm, 'border'); - if ((!value || value === '0') && self.hasVisual) { - dom.addClass(elm, cls); - } else { - dom.removeClass(elm, cls); - } - return; - case 'A': - if (!dom.getAttrib(elm, 'href')) { - value = dom.getAttrib(elm, 'name') || elm.id; - cls = settings.visual_anchor_class || 'mce-item-anchor'; - if (value && self.hasVisual) { - dom.addClass(elm, cls); - } else { - dom.removeClass(elm, cls); - } - } - return; - } - }); - self.fire('VisualAid', { - element: elm, - hasVisual: self.hasVisual - }); - }, - remove: function () { - remove$7(this); - }, - destroy: function (automatic) { - destroy(this, automatic); - }, - uploadImages: function (callback) { - return this.editorUpload.uploadImages(callback); - }, - _scanForImages: function () { - return this.editorUpload.scanForImages(); - } - }; - extend$4(Editor.prototype, EditorObservable$1); - - var isEditorUIElement = function (elm) { - return elm.className.toString().indexOf('mce-') !== -1; - }; - var FocusManager = { isEditorUIElement: isEditorUIElement }; - - var isManualNodeChange = function (e) { - return e.type === 'nodechange' && e.selectionChange; - }; - var registerPageMouseUp = function (editor, throttledStore) { - var mouseUpPage = function () { - throttledStore.throttle(); - }; - DOMUtils$1.DOM.bind(domGlobals.document, 'mouseup', mouseUpPage); - editor.on('remove', function () { - DOMUtils$1.DOM.unbind(domGlobals.document, 'mouseup', mouseUpPage); - }); - }; - var registerFocusOut = function (editor) { - editor.on('focusout', function () { - SelectionBookmark.store(editor); - }); - }; - var registerMouseUp = function (editor, throttledStore) { - editor.on('mouseup touchend', function (e) { - throttledStore.throttle(); - }); - }; - var registerEditorEvents = function (editor, throttledStore) { - var browser = PlatformDetection$1.detect().browser; - if (browser.isIE()) { - registerFocusOut(editor); - } else { - registerMouseUp(editor, throttledStore); - } - editor.on('keyup nodechange', function (e) { - if (!isManualNodeChange(e)) { - SelectionBookmark.store(editor); - } - }); - }; - var register$3 = function (editor) { - var throttledStore = first(function () { - SelectionBookmark.store(editor); - }, 0); - if (editor.inline) { - registerPageMouseUp(editor, throttledStore); - } - editor.on('init', function () { - registerEditorEvents(editor, throttledStore); - }); - editor.on('remove', function () { - throttledStore.cancel(); - }); - }; - var SelectionRestore = { register: register$3 }; - - var documentFocusInHandler; - var DOM$8 = DOMUtils$1.DOM; - var isEditorUIElement$1 = function (elm) { - return FocusManager.isEditorUIElement(elm); - }; - var isUIElement = function (editor, elm) { - var customSelector = editor ? editor.settings.custom_ui_selector : ''; - var parent = DOM$8.getParent(elm, function (elm) { - return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false); - }); - return parent !== null; - }; - var getActiveElement = function () { - try { - return domGlobals.document.activeElement; - } catch (ex) { - return domGlobals.document.body; - } - }; - var registerEvents = function (editorManager, e) { - var editor = e.editor; - SelectionRestore.register(editor); - editor.on('focusin', function () { - var self = this; - var focusedEditor = editorManager.focusedEditor; - if (focusedEditor !== self) { - if (focusedEditor) { - focusedEditor.fire('blur', { focusedEditor: self }); - } - editorManager.setActive(self); - editorManager.focusedEditor = self; - self.fire('focus', { blurredEditor: focusedEditor }); - self.focus(true); - } - }); - editor.on('focusout', function () { - var self = this; - Delay.setEditorTimeout(self, function () { - var focusedEditor = editorManager.focusedEditor; - if (!isUIElement(self, getActiveElement()) && focusedEditor === self) { - self.fire('blur', { focusedEditor: null }); - editorManager.focusedEditor = null; - } - }); - }); - if (!documentFocusInHandler) { - documentFocusInHandler = function (e) { - var activeEditor = editorManager.activeEditor; - var target; - target = e.target; - if (activeEditor && target.ownerDocument === domGlobals.document) { - if (target !== domGlobals.document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) { - activeEditor.fire('blur', { focusedEditor: null }); - editorManager.focusedEditor = null; - } - } - }; - DOM$8.bind(domGlobals.document, 'focusin', documentFocusInHandler); - } - }; - var unregisterDocumentEvents = function (editorManager, e) { - if (editorManager.focusedEditor === e.editor) { - editorManager.focusedEditor = null; - } - if (!editorManager.activeEditor) { - DOM$8.unbind(domGlobals.document, 'focusin', documentFocusInHandler); - documentFocusInHandler = null; - } - }; - var setup$h = function (editorManager) { - editorManager.on('AddEditor', curry(registerEvents, editorManager)); - editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager)); - }; - var FocusController = { - setup: setup$h, - isEditorUIElement: isEditorUIElement$1, - isUIElement: isUIElement - }; - - var DOM$9 = DOMUtils$1.DOM; - var explode$4 = Tools.explode, each$m = Tools.each, extend$5 = Tools.extend; - var instanceCounter = 0, beforeUnloadDelegate, EditorManager, boundGlobalEvents = false; - var legacyEditors = []; - var editors = []; - var isValidLegacyKey = function (id) { - return id !== 'length'; - }; - var globalEventDelegate = function (e) { - var type = e.type; - each$m(EditorManager.get(), function (editor) { - switch (type) { - case 'scroll': - editor.fire('ScrollWindow', e); - break; - case 'resize': - editor.fire('ResizeWindow', e); - break; - } - }); - }; - var toggleGlobalEvents = function (state) { - if (state !== boundGlobalEvents) { - if (state) { - DomQuery(window).on('resize scroll', globalEventDelegate); - } else { - DomQuery(window).off('resize scroll', globalEventDelegate); - } - boundGlobalEvents = state; - } - }; - var removeEditorFromList = function (targetEditor) { - var oldEditors = editors; - delete legacyEditors[targetEditor.id]; - for (var i = 0; i < legacyEditors.length; i++) { - if (legacyEditors[i] === targetEditor) { - legacyEditors.splice(i, 1); - break; - } - } - editors = filter(editors, function (editor) { - return targetEditor !== editor; - }); - if (EditorManager.activeEditor === targetEditor) { - EditorManager.activeEditor = editors.length > 0 ? editors[0] : null; - } - if (EditorManager.focusedEditor === targetEditor) { - EditorManager.focusedEditor = null; - } - return oldEditors.length !== editors.length; - }; - var purgeDestroyedEditor = function (editor) { - if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) { - removeEditorFromList(editor); - editor.unbindAllNativeEvents(); - editor.destroy(true); - editor.removed = true; - editor = null; - } - return editor; - }; - EditorManager = { - defaultSettings: {}, - $: DomQuery, - majorVersion: '4', - minorVersion: '9.11', - releaseDate: '2020-07-13', - editors: legacyEditors, - i18n: I18n, - activeEditor: null, - settings: {}, - setup: function () { - var self = this; - var baseURL, documentBaseURL, suffix = ''; - documentBaseURL = URI.getDocumentBaseUrl(domGlobals.document.location); - if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) { - documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); - if (!/[\/\\]$/.test(documentBaseURL)) { - documentBaseURL += '/'; - } - } - var preInit = window.tinymce || window.tinyMCEPreInit; - if (preInit) { - baseURL = preInit.base || preInit.baseURL; - suffix = preInit.suffix; - } else { - var scripts = domGlobals.document.getElementsByTagName('script'); - for (var i = 0; i < scripts.length; i++) { - var src = scripts[i].src || ''; - if (src === '') { - continue; - } - var srcScript = src.substring(src.lastIndexOf('/')); - if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) { - if (srcScript.indexOf('.min') !== -1) { - suffix = '.min'; - } - baseURL = src.substring(0, src.lastIndexOf('/')); - break; - } - } - if (!baseURL && domGlobals.document.currentScript) { - var src = domGlobals.document.currentScript.src; - if (src.indexOf('.min') !== -1) { - suffix = '.min'; - } - baseURL = src.substring(0, src.lastIndexOf('/')); - } - } - self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL); - self.documentBaseURL = documentBaseURL; - self.baseURI = new URI(self.baseURL); - self.suffix = suffix; - FocusController.setup(self); - }, - overrideDefaults: function (defaultSettings) { - var baseUrl, suffix; - baseUrl = defaultSettings.base_url; - if (baseUrl) { - this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\/+$/, '')); - this.baseURI = new URI(this.baseURL); - } - suffix = defaultSettings.suffix; - if (defaultSettings.suffix) { - this.suffix = suffix; - } - this.defaultSettings = defaultSettings; - var pluginBaseUrls = defaultSettings.plugin_base_urls; - for (var name in pluginBaseUrls) { - AddOnManager.PluginManager.urls[name] = pluginBaseUrls[name]; - } - }, - init: function (settings) { - var self = this; - var result, invalidInlineTargets; - invalidInlineTargets = Tools.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' '); - var isInvalidInlineTarget = function (settings, elm) { - return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets; - }; - var createId = function (elm) { - var id = elm.id; - if (!id) { - id = elm.name; - if (id && !DOM$9.get(id)) { - id = elm.name; - } else { - id = DOM$9.uniqueId(); - } - elm.setAttribute('id', id); - } - return id; - }; - var execCallback = function (name) { - var callback = settings[name]; - if (!callback) { - return; - } - return callback.apply(self, Array.prototype.slice.call(arguments, 2)); - }; - var hasClass = function (elm, className) { - return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className); - }; - var findTargets = function (settings) { - var l, targets = []; - if (Env.ie && Env.ie < 11) { - ErrorReporter.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/'); - return []; - } - if (settings.types) { - each$m(settings.types, function (type) { - targets = targets.concat(DOM$9.select(type.selector)); - }); - return targets; - } else if (settings.selector) { - return DOM$9.select(settings.selector); - } else if (settings.target) { - return [settings.target]; - } - switch (settings.mode) { - case 'exact': - l = settings.elements || ''; - if (l.length > 0) { - each$m(explode$4(l), function (id) { - var elm; - if (elm = DOM$9.get(id)) { - targets.push(elm); - } else { - each$m(domGlobals.document.forms, function (f) { - each$m(f.elements, function (e) { - if (e.name === id) { - id = 'mce_editor_' + instanceCounter++; - DOM$9.setAttrib(e, 'id', id); - targets.push(e); - } - }); - }); - } - }); - } - break; - case 'textareas': - case 'specific_textareas': - each$m(DOM$9.select('textarea'), function (elm) { - if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) { - return; - } - if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) { - targets.push(elm); - } - }); - break; - } - return targets; - }; - var provideResults = function (editors) { - result = editors; - }; - var initEditors = function () { - var initCount = 0; - var editors = []; - var targets; - var createEditor = function (id, settings, targetElm) { - var editor = new Editor(id, settings, self); - editors.push(editor); - editor.on('init', function () { - if (++initCount === targets.length) { - provideResults(editors); - } - }); - editor.targetElm = editor.targetElm || targetElm; - editor.render(); - }; - DOM$9.unbind(window, 'ready', initEditors); - execCallback('onpageload'); - targets = DomQuery.unique(findTargets(settings)); - if (settings.types) { - each$m(settings.types, function (type) { - Tools.each(targets, function (elm) { - if (DOM$9.is(elm, type.selector)) { - createEditor(createId(elm), extend$5({}, settings, type), elm); - return false; - } - return true; - }); - }); - return; - } - Tools.each(targets, function (elm) { - purgeDestroyedEditor(self.get(elm.id)); - }); - targets = Tools.grep(targets, function (elm) { - return !self.get(elm.id); - }); - if (targets.length === 0) { - provideResults([]); - } else { - each$m(targets, function (elm) { - if (isInvalidInlineTarget(settings, elm)) { - ErrorReporter.initError('Could not initialize inline editor on invalid inline target element', elm); - } else { - createEditor(createId(elm), settings, elm); - } - }); - } - }; - self.settings = settings; - DOM$9.bind(window, 'ready', initEditors); - return new promiseObj(function (resolve) { - if (result) { - resolve(result); - } else { - provideResults = function (editors) { - resolve(editors); - }; - } - }); - }, - get: function (id) { - if (arguments.length === 0) { - return editors.slice(0); - } else if (isString(id)) { - return find(editors, function (editor) { - return editor.id === id; - }).getOr(null); - } else if (isNumber(id)) { - return editors[id] ? editors[id] : null; - } else { - return null; - } - }, - add: function (editor) { - var self = this; - var existingEditor; - existingEditor = legacyEditors[editor.id]; - if (existingEditor === editor) { - return editor; - } - if (self.get(editor.id) === null) { - if (isValidLegacyKey(editor.id)) { - legacyEditors[editor.id] = editor; - } - legacyEditors.push(editor); - editors.push(editor); - } - toggleGlobalEvents(true); - self.activeEditor = editor; - self.fire('AddEditor', { editor: editor }); - if (!beforeUnloadDelegate) { - beforeUnloadDelegate = function () { - self.fire('BeforeUnload'); - }; - DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate); - } - return editor; - }, - createEditor: function (id, settings) { - return this.add(new Editor(id, settings, this)); - }, - remove: function (selector) { - var self = this; - var i, editor; - if (!selector) { - for (i = editors.length - 1; i >= 0; i--) { - self.remove(editors[i]); - } - return; - } - if (isString(selector)) { - each$m(DOM$9.select(selector), function (elm) { - editor = self.get(elm.id); - if (editor) { - self.remove(editor); - } - }); - return; - } - editor = selector; - if (isNull(self.get(editor.id))) { - return null; - } - if (removeEditorFromList(editor)) { - self.fire('RemoveEditor', { editor: editor }); - } - if (editors.length === 0) { - DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate); - } - editor.remove(); - toggleGlobalEvents(editors.length > 0); - return editor; - }, - execCommand: function (cmd, ui, value) { - var self = this, editor = self.get(value); - switch (cmd) { - case 'mceAddEditor': - if (!self.get(value)) { - new Editor(value, self.settings, self).render(); - } - return true; - case 'mceRemoveEditor': - if (editor) { - editor.remove(); - } - return true; - case 'mceToggleEditor': - if (!editor) { - self.execCommand('mceAddEditor', 0, value); - return true; - } - if (editor.isHidden()) { - editor.show(); - } else { - editor.hide(); - } - return true; - } - if (self.activeEditor) { - return self.activeEditor.execCommand(cmd, ui, value); - } - return false; - }, - triggerSave: function () { - each$m(editors, function (editor) { - editor.save(); - }); - }, - addI18n: function (code, items) { - I18n.add(code, items); - }, - translate: function (text) { - return I18n.translate(text); - }, - setActive: function (editor) { - var activeEditor = this.activeEditor; - if (this.activeEditor !== editor) { - if (activeEditor) { - activeEditor.fire('deactivate', { relatedTarget: editor }); - } - editor.fire('activate', { relatedTarget: activeEditor }); - } - this.activeEditor = editor; - } - }; - extend$5(EditorManager, Observable); - EditorManager.setup(); - var EditorManager$1 = EditorManager; - - function RangeUtils(dom) { - var walk = function (rng, callback) { - return RangeWalk.walk(dom, rng, callback); - }; - var split = SplitRange.split; - var normalize = function (rng) { - return NormalizeRange.normalize(dom, rng).fold(constant(false), function (normalizedRng) { - rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset); - rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset); - return true; - }); - }; - return { - walk: walk, - split: split, - normalize: normalize - }; - } - (function (RangeUtils) { - RangeUtils.compareRanges = RangeCompare.isEq; - RangeUtils.getCaretRangeFromPoint = CaretRangeFromPoint.fromPoint; - RangeUtils.getSelectedNode = getSelectedNode; - RangeUtils.getNode = getNode; - }(RangeUtils || (RangeUtils = {}))); - var RangeUtils$1 = RangeUtils; - - var min = Math.min, max = Math.max, round$2 = Math.round; - var relativePosition = function (rect, targetRect, rel) { - var x, y, w, h, targetW, targetH; - x = targetRect.x; - y = targetRect.y; - w = rect.w; - h = rect.h; - targetW = targetRect.w; - targetH = targetRect.h; - rel = (rel || '').split(''); - if (rel[0] === 'b') { - y += targetH; - } - if (rel[1] === 'r') { - x += targetW; - } - if (rel[0] === 'c') { - y += round$2(targetH / 2); - } - if (rel[1] === 'c') { - x += round$2(targetW / 2); - } - if (rel[3] === 'b') { - y -= h; - } - if (rel[4] === 'r') { - x -= w; - } - if (rel[3] === 'c') { - y -= round$2(h / 2); - } - if (rel[4] === 'c') { - x -= round$2(w / 2); - } - return create$4(x, y, w, h); - }; - var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) { - var pos, i; - for (i = 0; i < rels.length; i++) { - pos = relativePosition(rect, targetRect, rels[i]); - if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) { - return rels[i]; - } - } - return null; - }; - var inflate = function (rect, w, h) { - return create$4(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2); - }; - var intersect = function (rect, cropRect) { - var x1, y1, x2, y2; - x1 = max(rect.x, cropRect.x); - y1 = max(rect.y, cropRect.y); - x2 = min(rect.x + rect.w, cropRect.x + cropRect.w); - y2 = min(rect.y + rect.h, cropRect.y + cropRect.h); - if (x2 - x1 < 0 || y2 - y1 < 0) { - return null; - } - return create$4(x1, y1, x2 - x1, y2 - y1); - }; - var clamp$1 = function (rect, clampRect, fixedSize) { - var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2; - x1 = rect.x; - y1 = rect.y; - x2 = rect.x + rect.w; - y2 = rect.y + rect.h; - cx2 = clampRect.x + clampRect.w; - cy2 = clampRect.y + clampRect.h; - underflowX1 = max(0, clampRect.x - x1); - underflowY1 = max(0, clampRect.y - y1); - overflowX2 = max(0, x2 - cx2); - overflowY2 = max(0, y2 - cy2); - x1 += underflowX1; - y1 += underflowY1; - if (fixedSize) { - x2 += underflowX1; - y2 += underflowY1; - x1 -= overflowX2; - y1 -= overflowY2; - } - x2 -= overflowX2; - y2 -= overflowY2; - return create$4(x1, y1, x2 - x1, y2 - y1); - }; - var create$4 = function (x, y, w, h) { - return { - x: x, - y: y, - w: w, - h: h - }; - }; - var fromClientRect = function (clientRect) { - return create$4(clientRect.left, clientRect.top, clientRect.width, clientRect.height); - }; - var Rect = { - inflate: inflate, - relativePosition: relativePosition, - findBestRelativePosition: findBestRelativePosition, - intersect: intersect, - clamp: clamp$1, - create: create$4, - fromClientRect: fromClientRect - }; - - var types = {}; - var Factory = { - add: function (type, typeClass) { - types[type.toLowerCase()] = typeClass; - }, - has: function (type) { - return !!types[type.toLowerCase()]; - }, - get: function (type) { - var lctype = type.toLowerCase(); - var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null; - if (controlType === null) { - throw new Error('Could not find module for type: ' + type); - } - return controlType; - }, - create: function (type, settings) { - var ControlType; - if (typeof type === 'string') { - settings = settings || {}; - settings.type = type; - } else { - settings = type; - type = settings.type; - } - type = type.toLowerCase(); - ControlType = types[type]; - if (!ControlType) { - throw new Error('Could not find control by type: ' + type); - } - ControlType = new ControlType(settings); - ControlType.type = type; - return ControlType; - } - }; - - var each$n = Tools.each, extend$6 = Tools.extend; - var extendClass, initializing; - var Class = function () { - }; - Class.extend = extendClass = function (prop) { - var self = this; - var _super = self.prototype; - var prototype, name, member; - var Class = function () { - var i, mixins, mixin; - var self = this; - if (!initializing) { - if (self.init) { - self.init.apply(self, arguments); - } - mixins = self.Mixins; - if (mixins) { - i = mixins.length; - while (i--) { - mixin = mixins[i]; - if (mixin.init) { - mixin.init.apply(self, arguments); - } - } - } - } - }; - var dummy = function () { - return this; - }; - var createMethod = function (name, fn) { - return function () { - var self = this; - var tmp = self._super; - var ret; - self._super = _super[name]; - ret = fn.apply(self, arguments); - self._super = tmp; - return ret; - }; - }; - initializing = true; - prototype = new self(); - initializing = false; - if (prop.Mixins) { - each$n(prop.Mixins, function (mixin) { - for (var name_1 in mixin) { - if (name_1 !== 'init') { - prop[name_1] = mixin[name_1]; - } - } - }); - if (_super.Mixins) { - prop.Mixins = _super.Mixins.concat(prop.Mixins); - } - } - if (prop.Methods) { - each$n(prop.Methods.split(','), function (name) { - prop[name] = dummy; - }); - } - if (prop.Properties) { - each$n(prop.Properties.split(','), function (name) { - var fieldName = '_' + name; - prop[name] = function (value) { - var self = this; - if (value !== undefined) { - self[fieldName] = value; - return self; - } - return self[fieldName]; - }; - }); - } - if (prop.Statics) { - each$n(prop.Statics, function (func, name) { - Class[name] = func; - }); - } - if (prop.Defaults && _super.Defaults) { - prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults); - } - for (name in prop) { - member = prop[name]; - if (typeof member === 'function' && _super[name]) { - prototype[name] = createMethod(name, member); - } else { - prototype[name] = member; - } - } - Class.prototype = prototype; - Class.constructor = Class; - Class.extend = extendClass; - return Class; - }; - - var min$1 = Math.min, max$1 = Math.max, round$3 = Math.round; - var Color = function (value) { - var self = {}; - var r = 0, g = 0, b = 0; - var rgb2hsv = function (r, g, b) { - var h, s, v, d, minRGB, maxRGB; - h = 0; - s = 0; - v = 0; - r = r / 255; - g = g / 255; - b = b / 255; - minRGB = min$1(r, min$1(g, b)); - maxRGB = max$1(r, max$1(g, b)); - if (minRGB === maxRGB) { - v = minRGB; - return { - h: 0, - s: 0, - v: v * 100 - }; - } - d = r === minRGB ? g - b : b === minRGB ? r - g : b - r; - h = r === minRGB ? 3 : b === minRGB ? 1 : 5; - h = 60 * (h - d / (maxRGB - minRGB)); - s = (maxRGB - minRGB) / maxRGB; - v = maxRGB; - return { - h: round$3(h), - s: round$3(s * 100), - v: round$3(v * 100) - }; - }; - var hsvToRgb = function (hue, saturation, brightness) { - var side, chroma, x, match; - hue = (parseInt(hue, 10) || 0) % 360; - saturation = parseInt(saturation, 10) / 100; - brightness = parseInt(brightness, 10) / 100; - saturation = max$1(0, min$1(saturation, 1)); - brightness = max$1(0, min$1(brightness, 1)); - if (saturation === 0) { - r = g = b = round$3(255 * brightness); - return; - } - side = hue / 60; - chroma = brightness * saturation; - x = chroma * (1 - Math.abs(side % 2 - 1)); - match = brightness - chroma; - switch (Math.floor(side)) { - case 0: - r = chroma; - g = x; - b = 0; - break; - case 1: - r = x; - g = chroma; - b = 0; - break; - case 2: - r = 0; - g = chroma; - b = x; - break; - case 3: - r = 0; - g = x; - b = chroma; - break; - case 4: - r = x; - g = 0; - b = chroma; - break; - case 5: - r = chroma; - g = 0; - b = x; - break; - default: - r = g = b = 0; - } - r = round$3(255 * (r + match)); - g = round$3(255 * (g + match)); - b = round$3(255 * (b + match)); - }; - var toHex = function () { - var hex = function (val) { - val = parseInt(val, 10).toString(16); - return val.length > 1 ? val : '0' + val; - }; - return '#' + hex(r) + hex(g) + hex(b); - }; - var toRgb = function () { - return { - r: r, - g: g, - b: b - }; - }; - var toHsv = function () { - return rgb2hsv(r, g, b); - }; - var parse = function (value) { - var matches; - if (typeof value === 'object') { - if ('r' in value) { - r = value.r; - g = value.g; - b = value.b; - } else if ('v' in value) { - hsvToRgb(value.h, value.s, value.v); - } - } else { - if (matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value)) { - r = parseInt(matches[1], 10); - g = parseInt(matches[2], 10); - b = parseInt(matches[3], 10); - } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) { - r = parseInt(matches[1], 16); - g = parseInt(matches[2], 16); - b = parseInt(matches[3], 16); - } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) { - r = parseInt(matches[1] + matches[1], 16); - g = parseInt(matches[2] + matches[2], 16); - b = parseInt(matches[3] + matches[3], 16); - } - } - r = r < 0 ? 0 : r > 255 ? 255 : r; - g = g < 0 ? 0 : g > 255 ? 255 : g; - b = b < 0 ? 0 : b > 255 ? 255 : b; - return self; - }; - if (value) { - parse(value); - } - self.toRgb = toRgb; - self.toHsv = toHsv; - self.toHex = toHex; - self.parse = parse; - return self; - }; - - var serialize = function (o, quote) { - var i, v, t, name; - 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 && Object.prototype.toString.call(o) === '[object Array]') { - for (i = 0, v = '['; i < o.length; i++) { - v += (i > 0 ? ',' : '') + serialize(o[i], quote); - } - return v + ']'; - } - v = '{'; - for (name in o) { - if (o.hasOwnProperty(name)) { - v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : ''; - } - } - return v + '}'; - } - return '' + o; - }; - var JSON$1 = { - serialize: serialize, - parse: function (text) { - try { - return JSON.parse(text); - } catch (ex) { - } - } - }; - - var JSONP = { - callbacks: {}, - count: 0, - send: function (settings) { - var self = this, dom = DOMUtils$1.DOM, count = settings.count !== undefined ? settings.count : self.count; - var id = 'tinymce_jsonp_' + count; - self.callbacks[count] = function (json) { - dom.remove(id); - delete self.callbacks[count]; - settings.callback(json); - }; - dom.add(dom.doc.body, 'script', { - id: id, - src: settings.url, - type: 'text/javascript' - }); - self.count++; - } - }; - - var XHR = { - send: function (settings) { - var xhr, count = 0; - var ready = function () { - if (!settings.async || xhr.readyState === 4 || count++ > 10000) { - if (settings.success && count < 10000 && xhr.status === 200) { - settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings); - } else if (settings.error) { - settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings); - } - xhr = null; - } else { - setTimeout(ready, 10); - } - }; - settings.scope = settings.scope || this; - settings.success_scope = settings.success_scope || settings.scope; - settings.error_scope = settings.error_scope || settings.scope; - settings.async = settings.async === false ? false : true; - settings.data = settings.data || ''; - XHR.fire('beforeInitialize', { settings: settings }); - xhr = XMLHttpRequest(); - if (xhr) { - if (xhr.overrideMimeType) { - xhr.overrideMimeType(settings.content_type); - } - xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async); - if (settings.crossDomain) { - xhr.withCredentials = true; - } - if (settings.content_type) { - xhr.setRequestHeader('Content-Type', settings.content_type); - } - if (settings.requestheaders) { - Tools.each(settings.requestheaders, function (header) { - xhr.setRequestHeader(header.key, header.value); - }); - } - xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); - xhr = XHR.fire('beforeSend', { - xhr: xhr, - settings: settings - }).xhr; - xhr.send(settings.data); - if (!settings.async) { - return ready(); - } - setTimeout(ready, 10); - } - } - }; - Tools.extend(XHR, Observable); - - var extend$7 = Tools.extend; - var JSONRequest = function (settings) { - this.settings = extend$7({}, settings); - this.count = 0; - }; - JSONRequest.sendRPC = function (o) { - return new JSONRequest().send(o); - }; - JSONRequest.prototype = { - send: function (args) { - var ecb = args.error, scb = args.success; - args = extend$7(this.settings, args); - args.success = function (c, x) { - c = JSON$1.parse(c); - if (typeof c === 'undefined') { - c = { error: 'JSON Parse error.' }; - } - if (c.error) { - ecb.call(args.error_scope || args.scope, c.error, x); - } else { - scb.call(args.success_scope || args.scope, c.result); - } - }; - args.error = function (ty, x) { - if (ecb) { - ecb.call(args.error_scope || args.scope, ty, x); - } - }; - args.data = JSON$1.serialize({ - id: args.id || 'c' + this.count++, - method: args.method, - params: args.params - }); - args.content_type = 'application/json'; - XHR.send(args); - } - }; - - var create$5 = function () { - return function () { - var data = {}; - var keys = []; - var storage = { - getItem: function (key) { - var item = data[key]; - return item ? item : null; - }, - setItem: function (key, value) { - keys.push(key); - data[key] = String(value); - }, - key: function (index) { - return keys[index]; - }, - removeItem: function (key) { - keys = keys.filter(function (k) { - return k === key; - }); - delete data[key]; - }, - clear: function () { - keys = []; - data = {}; - }, - length: 0 - }; - Object.defineProperty(storage, 'length', { - get: function () { - return keys.length; - }, - configurable: false, - enumerable: false - }); - return storage; - }(); - }; - - var localStorage; - try { - localStorage = domGlobals.window.localStorage; - } catch (e) { - localStorage = create$5(); - } - var LocalStorage = localStorage; - - var tinymce = EditorManager$1; - var publicApi = { - geom: { Rect: Rect }, - util: { - Promise: promiseObj, - Delay: Delay, - Tools: Tools, - VK: VK, - URI: URI, - Class: Class, - EventDispatcher: Dispatcher, - Observable: Observable, - I18n: I18n, - XHR: XHR, - JSON: JSON$1, - JSONRequest: JSONRequest, - JSONP: JSONP, - LocalStorage: LocalStorage, - Color: Color - }, - dom: { - EventUtils: EventUtils, - Sizzle: Sizzle, - DomQuery: DomQuery, - TreeWalker: TreeWalker, - DOMUtils: DOMUtils$1, - ScriptLoader: ScriptLoader, - RangeUtils: RangeUtils$1, - Serializer: DomSerializer$1, - ControlSelection: ControlSelection, - BookmarkManager: BookmarkManager$1, - Selection: Selection$1, - Event: EventUtils.Event - }, - html: { - Styles: Styles, - Entities: Entities, - Node: Node$1, - Schema: Schema, - SaxParser: SaxParser$1, - DomParser: DomParser, - Writer: Writer, - Serializer: HtmlSerializer - }, - ui: { Factory: Factory }, - Env: Env, - AddOnManager: AddOnManager, - Annotator: Annotator, - Formatter: Formatter, - UndoManager: UndoManager, - EditorCommands: EditorCommands, - WindowManager: WindowManager, - NotificationManager: NotificationManager, - EditorObservable: EditorObservable$1, - Shortcuts: Shortcuts, - Editor: Editor, - FocusManager: FocusManager, - EditorManager: EditorManager$1, - DOM: DOMUtils$1.DOM, - ScriptLoader: ScriptLoader.ScriptLoader, - PluginManager: AddOnManager.PluginManager, - ThemeManager: AddOnManager.ThemeManager, - trim: Tools.trim, - isArray: Tools.isArray, - is: Tools.is, - toArray: Tools.toArray, - makeMap: Tools.makeMap, - each: Tools.each, - map: Tools.map, - grep: Tools.grep, - inArray: Tools.inArray, - extend: Tools.extend, - create: Tools.create, - walk: Tools.walk, - createNS: Tools.createNS, - resolve: Tools.resolve, - explode: Tools.explode, - _addCacheSuffix: Tools._addCacheSuffix, - isOpera: Env.opera, - isWebKit: Env.webkit, - isIE: Env.ie, - isGecko: Env.gecko, - isMac: Env.mac - }; - tinymce = Tools.extend(tinymce, publicApi); - var Tinymce = tinymce; - - var exportToModuleLoaders = function (tinymce) { - if (typeof module === 'object') { - try { - module.exports = tinymce; - } catch (_) { - } - } - }; - var exportToWindowGlobal = function (tinymce) { - window.tinymce = tinymce; - window.tinyMCE = tinymce; - }; - exportToWindowGlobal(Tinymce); - exportToModuleLoaders(Tinymce); - -}(window)); -})(); diff --git a/wp-includes/js/tinymce/wp-tinymce.js b/wp-includes/js/tinymce/wp-tinymce.js deleted file mode 100644 index 5d47877..0000000 --- a/wp-includes/js/tinymce/wp-tinymce.js +++ /dev/null @@ -1,49 +0,0 @@ -// Source: wp-includes/js/tinymce/tinymce.min.js -// 4.9.11 (2020-07-13) -!function(V){"use strict";var o=function(){},H=function(n,r){return function(){for(var e=[],t=0;t+~]|"+at+")"+at+"*"),mt=new RegExp("="+at+"*([^\\]'\"]*?)"+at+"*\\]","g"),gt=new RegExp(ct),pt=new RegExp("^"+ut+"$"),ht={ID:new RegExp("^#("+ut+")"),CLASS:new RegExp("^\\.("+ut+")"),TAG:new RegExp("^("+ut+"|[*])"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+ct),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+at+"*(even|odd|(([+-]|)(\\d*)n|)"+at+"*(?:([+-]|)"+at+"*(\\d+)|))"+at+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+at+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+at+"*((?:-\\d)?\\d*)"+at+"*\\)|)(?=[^-]|$)","i")},vt=/^(?:input|select|textarea|button)$/i,yt=/^h\d$/i,bt=/^[^{]+\{\s*\[native \w/,Ct=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,xt=/[+~]/,wt=/'|\\/g,Nt=new RegExp("\\\\([\\da-f]{1,6}"+at+"?|("+at+")|.)","ig"),Et=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{rt.apply(et=ot.call($e.childNodes),$e.childNodes),et[$e.childNodes.length].nodeType}catch(iE){rt={apply:et.length?function(e,t){nt.apply(e,ot.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var St=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:$e)!==Me&&Fe(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Me).nodeType)&&9!==u)return[];if(Ue&&!r){if(o=Ct.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&He(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return rt.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&ke.getElementsByClassName)return rt.apply(n,t.getElementsByClassName(a)),n}if(ke.qsa&&(!je||!je.test(e))){if(f=l=qe,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=De(e),(l=t.getAttribute("id"))?f=l.replace(wt,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Pt(c[s]);d=xt.test(e)&&Ot(t.parentNode)||t,m=c.join(",")}if(m)try{return rt.apply(n,d.querySelectorAll(m)),n}catch(g){}finally{l||t.removeAttribute("id")}}}return Be(e.replace(lt,"$1"),t,n,r)};function Tt(){var r=[];return function e(t,n){return r.push(t+" ")>_e.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function kt(e){return e[qe]=!0,e}function _t(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function At(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Rt(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Dt(a){return kt(function(i){return i=+i,kt(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Ot(e){return e&&typeof e.getElementsByTagName!==Qe&&e}for(Te in ke=St.support={},Re=St.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Fe=St.setDocument=function(e){var t,s=e?e.ownerDocument||e:$e,n=s.defaultView;return s!==Me&&9===s.nodeType&&s.documentElement?(ze=(Me=s).documentElement,Ue=!Re(s),n&&n!==function(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Fe()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Fe()})),ke.attributes=!0,ke.getElementsByTagName=!0,ke.getElementsByClassName=bt.test(s.getElementsByClassName),ke.getById=!0,_e.find.ID=function(e,t){if(typeof t.getElementById!==Qe&&Ue){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},_e.filter.ID=function(e){var t=e.replace(Nt,Et);return function(e){return e.getAttribute("id")===t}},_e.find.TAG=ke.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==Qe)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},_e.find.CLASS=ke.getElementsByClassName&&function(e,t){if(Ue)return t.getElementsByClassName(e)},Ve=[],je=[],ke.disconnectedMatch=!0,je=je.length&&new RegExp(je.join("|")),Ve=Ve.length&&new RegExp(Ve.join("|")),t=bt.test(ze.compareDocumentPosition),He=t||bt.test(ze.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Je=t?function(e,t){if(e===t)return Le=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!ke.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===$e&&He($e,e)?-1:t===s||t.ownerDocument===$e&&He($e,t)?1:Ie?it.call(Ie,e)-it.call(Ie,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Le=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Ie?it.call(Ie,e)-it.call(Ie,t):0;if(o===i)return _t(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?_t(a[r],u[r]):a[r]===$e?-1:u[r]===$e?1:0},s):Me},St.matches=function(e,t){return St(e,null,null,t)},St.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Me&&Fe(e),t=t.replace(mt,"='$1']"),ke.matchesSelector&&Ue&&(!Ve||!Ve.test(t))&&(!je||!je.test(t)))try{var n=(void 0).call(e,t);if(n||ke.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(iE){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Nt,Et),e[3]=(e[3]||e[4]||e[5]||"").replace(Nt,Et),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||St.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&St.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return ht.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&>.test(n)&&(t=De(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Nt,Et).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Xe[e+" "];return t||(t=new RegExp("(^|"+at+")"+e+"("+at+"|$)"))&&Xe(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Qe&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=St.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1)[^>]*$|#([\w\-]*)$)/,Zt=Se.Event,en=Xt.makeMap("children,contents,next,prev"),tn=function(e){return void 0!==e},nn=function(e){return"string"==typeof e},rn=function(e,t){var n,r,o;for(o=(t=t||Yt).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n},on=function(e,t,n,r){var o;if(nn(t))t=rn(t,bn(e[0]));else if(t.length&&!t.nodeType){if(t=gn.makeArray(t),r)for(o=t.length-1;0<=o;o--)on(e,t[o],n,r);else for(o=0;o"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Qt.exec(e)))return gn(t).find(e);if(n[1])for(r=rn(e,bn(t)).firstChild;r;)Gt.call(o,r),r=r.nextSibling;else{if(!(r=bn(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Xt.toArray(this)},add:function(e,t){var n,r,o=this;if(nn(e))return o.add(gn(e));if(!1!==t)for(n=gn.unique(o.toArray().concat(gn.makeArray(e))),o.length=n.length,r=0;r=a.length&&r(o)}))})})},co=function(e){return so(e,uo.nu)},lo=function(n){return{is:function(e){return n===e},isValue:C,isError:b,getOr:q(n),getOrThunk:q(n),getOrDie:q(n),or:function(e){return lo(n)},orThunk:function(e){return lo(n)},fold:function(e,t){return t(n)},map:function(e){return lo(e(n))},mapError:function(e){return lo(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return _.some(n)}}},fo=function(n){return{is:b,isValue:b,isError:C,getOr:$,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return fo(n)},mapError:function(e){return fo(e(n))},each:o,bind:function(e){return fo(n)},exists:b,forall:C,toOption:_.none}},mo={value:lo,error:fo,fromOption:function(e,t){return e.fold(function(){return fo(t)},lo)}};function go(e,u){var t=e,n=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==u){if(o=e[n])return o;for(i=e.parentNode;i&&i!==u;i=i.parentNode)if(o=i[n])return o}}};this.current=function(){return t},this.next=function(e){return t=n(t,"firstChild","nextSibling",e)},this.prev=function(e){return t=n(t,"lastChild","previousSibling",e)},this.prev2=function(e){return t=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],u&&o===u)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==u)return i}}(t,"lastChild","previousSibling",e)}}var po,ho,vo,yo=function(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Ko=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Xo=/[<>&\"\']/g,Yo=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Go={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"};ho={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},vo={"<":"<",">":">","&":"&",""":'"',"'":"'"};var Jo=function(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n>10),56320+(1023&t))):Go[t]||String.fromCharCode(t):vo[e]||po[e]||(n=e,(r=ar.fromTag("div").dom()).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},ni={},ri={},oi=Xt.makeMap,ii=Xt.each,ai=Xt.extend,ui=Xt.explode,si=Xt.inArray,ci=function(e,t){return(e=Xt.trim(e))?e.split(t||" "):[]},li=function(e){var u,t,n,r,o,i,s={},a=function(e,t,n){var r,o,i,a=function(e,t){var n,r,o={};for(n=0,r=e.length;n":/^(UL|OL)$/.test(n.nodeName)&&(r="
      36. "+a+"
      37. "),(i=Nl(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),i.toLowerCase())?(r=a,r=t.dom.createHTML(i,t.settings.forced_root_block_attrs,r)):r||(r='
        '),qw(t,r),t.fire("SetContent",o)):("raw"!==o.format&&(r=al({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=Ao(ar.fromDom(n))?r:Xt.trim(r),qw(t,o.content),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})},Ww=Si.DOM,Kw=function(e){return _.from(e).each(function(e){return e.destroy()})},Xw=function(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&Ww.remove(o.nextSibling),Np(e),e.editorManager.remove(e),!e.inline&&r&&(i=e,Ww.setStyle(i.id,"display",i.orgDisplay)),Ep(e),Ww.remove(e.getContainer()),Kw(t),Kw(n),e.destroy()}var i},Yw=function(e,t){var n,r,o,i=e.selection,a=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),Kw(i),Kw(a)),(r=(n=e).formElement)&&(r._mceOldSubmit&&(r.submit=r._mceOldSubmit,r._mceOldSubmit=null),Ww.unbind(r,"submit reset",n.formEventDelegate)),(o=e).contentAreaContainer=o.formElement=o.container=o.editorContainer=null,o.bodyElement=o.contentDocument=o.contentWindow=null,o.iframeElement=o.targetElm=null,o.selection&&(o.selection=o.selection.win=o.selection.dom=o.selection.dom.doc=null),e.destroyed=!0):e.remove())},Gw=Si.DOM,Jw=Xt.extend,Qw=Xt.each,Zw=Xt.resolve,eN=fe.ie,tN=function(e,t,n){var r,o,i,a,u,s,c,l=this,f=l.documentBaseUrl=n.documentBaseURL,d=n.baseURI;r=l,o=e,i=f,a=n.defaultSettings,u=t,c={id:o,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:i,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"",visual:!0,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%",forced_root_block:"p",hidden_input:!0,render_ui:!0,indentation:"40px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:(s=r).convertURL,url_converter_scope:s,ie7_compat:!0},t=$p(zp,c,a,u),l.settings=t,Bi.language=t.language||"en",Bi.languageLoad=t.language_load,Bi.baseURL=n.baseURL,l.id=e,l.setDirty(!1),l.plugins={},l.documentBaseURI=new zw(t.document_base_url,{base_uri:d}),l.baseURI=d,l.contentCSS=[],l.contentStyles=[],l.shortcuts=new Qp(l),l.loadedCSS={},l.editorCommands=new pp(l),l.suffix=n.suffix,l.editorManager=n,l.inline=t.inline,l.buttons={},l.menuItems={},t.cache_suffix&&(fe.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),!1===t.override_viewport&&(fe.overrideViewPort=!1),n.fire("SetupEditor",{editor:l}),l.execCallback("setup",l),l.$=gn.overrideDefaults(function(){return{context:l.inline?l.getBody():l.getDoc(),element:l.getBody()}})};Jw(tN.prototype={render:function(){Bw(this)},focus:function(e){uh(this,e)},hasFocus:function(){return sh(this)},execCallback:function(e){for(var t=[],n=1;n=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=ON(e.x,t.x),r=ON(e.y,t.y),o=DN(e.x+e.w,t.x+t.w),i=DN(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:IN(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=ON(0,t.x-u),o=ON(0,t.y-s),i=ON(0,c-f),a=ON(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),IN(u,s,(c-=i)-u,(l-=a)-s)},create:IN,fromClientRect:function(e){return IN(e.left,e.top,e.width,e.height)}},FN={},MN={add:function(e,t){FN[e.toLowerCase()]=t},has:function(e){return!!FN[e.toLowerCase()]},get:function(e){var t=e.toLowerCase(),n=FN.hasOwnProperty(t)?FN[t]:null;if(null===n)throw new Error("Could not find module for type: "+e);return n},create:function(e,t){var n;if("string"==typeof e?(t=t||{}).type=e:e=(t=e).type,e=e.toLowerCase(),!(n=FN[e]))throw new Error("Could not find control by type: "+e);return(n=new n(t)).type=e,n}},zN=Xt.each,UN=Xt.extend,jN=function(){};jN.extend=_N=function(n){var e,t,r,o=this.prototype,i=function(){var e,t,n;if(!AN&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)},a=function(){return this},u=function(n,r){return function(){var e,t=this._super;return this._super=o[n],e=r.apply(this,arguments),this._super=t,e}};for(t in AN=!0,e=new this,AN=!1,n.Mixins&&(zN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&zN(n.Methods.split(","),function(e){n[e]=a}),n.Properties&&zN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&zN(n.Statics,function(e,t){i[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=UN({},o.Defaults,n.Defaults)),n)"function"==typeof(r=n[t])&&o[t]?e[t]=u(t,r):e[t]=r;return i.prototype=e,(i.constructor=i).extend=_N,i};var VN=Math.min,HN=Math.max,qN=Math.round,$N=function(e,n){var r,o,t,i;if(n=n||'"',null===e)return"null";if("string"==(t=typeof e))return o="\bb\tt\nn\ff\rr\"\"''\\\\",n+e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=o.indexOf(t))+1?"\\"+o.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e)})+n;if("object"===t){if(e.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(e)){for(r=0,o="[";rTiny']),u=t.getParam("branding",!0,"boolean")?{type:"label",classes:"branding",html:" "+l}:null;i.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:t},r,u]})}return x(t),t.on("SwitchMode",(a=i,function(e){a.find("*").disabled("readonly"===e.mode)})),i.renderBefore(n.targetNode).reflow(),t.getParam("readonly",!1,"boolean")&&t.setMode("readonly"),n.width&&pe.setStyle(i.getEl(),"width",n.width),t.on("remove",function(){i.remove(),i=null}),R(t,i),F(t),{iframeContainer:i.find("#iframe")[0].getEl(),editorContainer:i.getEl()}},ye=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),xe=0,we={id:function(){return"mceu_"+xe++},create:function(e,t,n){var i=_.document.createElement(e);return p.DOM.setAttribs(i,t),"string"==typeof n?i.innerHTML=n:w.each(n,function(e){e.nodeType&&i.appendChild(e)}),i},createFragment:function(e){return p.DOM.createFragment(e)},getWindowSize:function(){return p.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var i=e.getBoundingClientRect();t=Math.max(i.width||i.right-i.left,e.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return p.DOM.getPos(e,t||we.getContainer())},getContainer:function(){return ce.container?ce.container:_.document.body},getViewPort:function(e){return p.DOM.getViewPort(e)},get:function(e){return _.document.getElementById(e)},addClass:function(e,t){return p.DOM.addClass(e,t)},removeClass:function(e,t){return p.DOM.removeClass(e,t)},hasClass:function(e,t){return p.DOM.hasClass(e,t)},toggleClass:function(e,t,n){return p.DOM.toggleClass(e,t,n)},css:function(e,t,n){return p.DOM.setStyle(e,t,n)},getRuntimeStyle:function(e,t){return p.DOM.getStyle(e,t,!0)},on:function(e,t,n,i){return p.DOM.bind(e,t,n,i)},off:function(e,t,n){return p.DOM.unbind(e,t,n)},fire:function(e,t,n){return p.DOM.fire(e,t,n)},innerHtml:function(e,t){p.DOM.setHTML(e,t)}},_e=function(e){return"static"===we.getRuntimeStyle(e,"position")},Re=function(e){return e.state.get("fixed")};function Ce(e,t,n){var i,r,o,s,a,l,u,c,d,f;return d=Ee(),o=(r=we.getPos(t,W.getUiContainer(e))).x,s=r.y,Re(e)&&_e(_.document.body)&&(o-=d.x,s-=d.y),i=e.getEl(),a=(f=we.getSize(i)).width,l=f.height,u=(f=we.getSize(t)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var Ee=function(){var e=_.window;return{x:Math.max(e.pageXOffset,_.document.body.scrollLeft,_.document.documentElement.scrollLeft),y:Math.max(e.pageYOffset,_.document.body.scrollTop,_.document.documentElement.scrollTop),w:e.innerWidth||_.document.documentElement.clientWidth,h:e.innerHeight||_.document.documentElement.clientHeight}},ke=function(e){var t,n=W.getUiContainer(e);return n&&!Re(e)?{x:0,y:0,w:(t=n).scrollWidth-1,h:t.scrollHeight-1}:Ee()},He={testMoveRel:function(e,t){for(var n=ke(this),i=0;in.x&&r.x+r.wn.y&&r.y+r.h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,ze=/^\s*|\s*$/g,Ie=Se.extend({init:function(e){var o=this.match;function s(e,t,n){var i;function r(e){e&&t.push(e)}return r(function(t){if(t)return t=t.toLowerCase(),function(e){return"*"===t||e.type===t}}((i=Be.exec(e.replace(ze,"")))[1])),r(function(t){if(t)return function(e){return e._name===t}}(i[2])),r(function(n){if(n)return n=n.split("."),function(e){for(var t=n.length;t--;)if(!e.classes.contains(n[t]))return!1;return!0}}(i[3])),r(function(n,i,r){if(n)return function(e){var t=e[n]?e[n]():"";return i?"="===i?t===r:"*="===i?0<=t.indexOf(r):"~="===i?0<=(" "+t+" ").indexOf(" "+r+" "):"!="===i?t!==r:"^="===i?0===t.indexOf(r):"$="===i&&t.substr(t.length-r.length)===r:!!r}}(i[4],i[5],i[6])),r(function(i){var t;if(i)return(i=/(?:not\((.+)\))|(.+)/i.exec(i))[1]?(t=a(i[1],[]),function(e){return!o(e,t)}):(i=i[2],function(e,t,n){return"first"===i?0===t:"last"===i?t===n-1:"even"===i?t%2==0:"odd"===i?t%2==1:!!e[i]&&e[i]()})}(i[7])),t.pseudo=!!i[7],t.direct=n,t}function a(e,t){var n,i,r,o=[];do{if(Le.exec(""),(i=Le.exec(e))&&(e=i[3],o.push(i[1]),i[2])){n=i[3];break}}while(i);for(n&&a(n,t),e=[],r=0;r"!==o[r]&&e.push(s(o[r],[],">"===o[r-1]));return t.push(e),t}this._selectors=a(e,[])},match:function(e,t){var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(t=t||this._selectors).length;na.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=e.h)!==undefined&&(n=(n=na.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=e.innerW)!==undefined&&(n=(n=na.maxW-i?a.maxW-i:n,a.innerW=n,a.w=n+i),(n=e.innerH)!==undefined&&(n=(n=na.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),e.contentW!==undefined&&(a.contentW=e.contentW),e.contentH!==undefined&&(a.contentH=e.contentH),(t=s._lastLayoutRect).x===a.x&&t.y===a.y&&t.w===a.w&&t.h===a.h||((o=je.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),t.x=a.x,t.y=a.y,t.w=a.w,t.h=a.h),s):a},repaint:function(){var e,t,n,i,r,o,s,a,l,u,c=this;l=_.document.createRange?function(e){return e}:Math.round,e=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(e.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(e.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),e.width=(0<=u?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),e.height=(0<=u?u:0)+"px",a.h=i.h),c._hasBody&&i.innerW!==a.innerW&&(u=l(i.innerW),(n=c.getEl("body"))&&((t=n.style).width=(0<=u?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((t=t||n.style).height=(0<=u?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,we.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){var n,i,r,o=this;return nt(o).on(e,"string"!=typeof(n=t)?n:function(e){return i||o.parentsAndSelf().each(function(e){var t=e.settings.callbacks;if(t&&(i=t[n]))return r=e,!1}),i?i.call(r,e):(e.action=n,void this.fire("execute",e))}),o},off:function(e,t){return nt(this).off(e,t),this},fire:function(e,t,n){if((t=t||{}).control||(t.control=this),t=nt(this).fire(e,t),!1!==n&&this.parent)for(var i=this.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return nt(this).has(e)},parents:function(e){var t,n=new Ve;for(t=this.parent();t;t=t.parent())n.add(t);return e&&(n=n.filter(e)),n},parentsAndSelf:function(e){return new Ve(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=ye("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,i=n.getEl(n.ariaTarget);return void 0===t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&i.setAttribute("role"===e?e:"aria-"+e,t),n)},encode:function(e,t){return!1!==t&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return je.translate?je.translate(e):e},before:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this),!0),this},after:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this)),this},remove:function(){var t,e,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(e=o.length;e--;)o[e].remove()}r&&r.items&&(t=[],r.items().each(function(e){e!==n&&t.push(e)}),r.items().set(t),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&ye(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild(i),n.state.set("rendered",!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(e){return ye(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return ye(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'
        '},postRender:function(){var e,t,n,i,r,o=this,s=o.settings;for(i in o.$el=ye(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}it(o),s.style&&(e=o.getEl())&&(e.setAttribute("style",s.style),e.style.cssText=s.style),o.settings.border&&(t=o.borderBox,o.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),(a.controlIdLookup[o._id]=o)._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none"),o.bindStates(),o.state.on("change:visible",function(e){var t,n=e.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(t=o.parent())&&(t._lastRect=null),o.fire(n?"show":"hide"),Ke.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){var t,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(e,t){var n,i,r=e;for(n=i=0;r&&r!==t&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return t=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight,"end"===e?(t-=o-i,n-=s-r):"center"===e&&(t-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=t,l.scrollTop=n,this},getRoot:function(){for(var e,t=this,n=[];t;){if(t.rootControl){e=t.rootControl;break}n.push(t),t=(e=t).parent()}e||(e=this);for(var i=n.length;i--;)n[i].rootControl=e;return e},reflow:function(){Ke.remove(this);var e=this.parent();return e&&e._layout&&!e._layout.isNative()&&e.reflow(),this}};function nt(n){return n._eventDispatcher||(n._eventDispatcher=new Te({scope:n,toggleEvent:function(e,t){t&&Te.isNative(e)&&(n._nativeEvents||(n._nativeEvents={}),n._nativeEvents[e]=!0,n.state.get("rendered")&&it(n))}})),n._eventDispatcher}function it(a){var e,t,n,l,i,r;function o(e){var t=a.getParentCtrl(e.target);t&&t.fire(e.type,e)}function s(){var e=l._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),l._lastHoverCtrl=null)}function u(e){var t,n,i,r=a.getParentCtrl(e.target),o=l._lastHoverCtrl,s=0;if(r!==o){if((n=(l._lastHoverCtrl=r).parents().toArray().reverse()).push(r),o){for((i=o.parents().toArray().reverse()).push(o),s=0;s=t.length&&(e=0),t[e]&&t[e].focus(),e}function h(e,t){var n=-1,i=d();t=t||c(i.getEl());for(var r=0;r
        '+(e.settings.html||"")+t.renderHtml(e)+"
        "},postRender:function(){var e,t=this;return t.items().exec("postRender"),t._super(),t._layout.postRender(t),t.state.set("rendered",!0),t.settings.style&&t.$el.css(t.settings.style),t.settings.border&&(e=t.borderBox,t.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left})),t.parent()||(t.keyboardNav=st({root:t})),t},initLayoutRect:function(){var e=this._super();return this._layout.recalc(this),e},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!==t.w||n.h!==t.h)return e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var e;if(Ke.remove(this),this.visible()){for(rt.repaintControls=[],rt.repaintControls.map={},this.recalc(),e=rt.repaintControls.length;e--;)rt.repaintControls[e].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),rt.repaintControls=[]}return this}});function ut(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n").css({position:"absolute",top:0,left:0,width:f.width,height:f.height,zIndex:2147483647,opacity:1e-4,cursor:d}).appendTo(x.body),ye(x).on("mousemove touchmove",v).on("mouseup touchend",p),h.start(e)},v=function(e){if(ut(e),e.button!==g)return p(e);e.deltaX=e.screenX-b,e.deltaY=e.screenY-y,e.preventDefault(),h.drag(e)},p=function(e){ut(e),ye(x).off("mousemove touchmove",v).off("mouseup touchend",p),m.remove(),h.stop&&h.stop(e)},this.destroy=function(){ye(w).off()},ye(w).on("mousedown touchstart",t)}var dt,ft,ht,mt,gt={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var p=this,v=2;function n(){var m,g,e;function t(e,t,n,i,r,o){var s,a,l,u,c,d,f,h;if(a=p.getEl("scroll"+e)){if(f=t.toLowerCase(),h=n.toLowerCase(),ye(p.getEl("absend")).css(f,p.layoutRect()[i]-1),!r)return void ye(a).css("display","none");ye(a).css("display","block"),s=p.getEl("body"),l=p.getEl("scroll"+e+"t"),u=s["client"+n]-2*v,c=(u-=m&&g?a["client"+o]:0)/s["scroll"+n],(d={})[f]=s["offset"+t]+v,d[h]=u,ye(a).css(d),(d={})[f]=s["scroll"+t]*c,d[h]=u*c,ye(l).css(d)}}e=p.getEl("body"),m=e.scrollWidth>e.clientWidth,g=e.scrollHeight>e.clientHeight,t("h","Left","Width","contentW",m,"Height"),t("v","Top","Height","contentH",g,"Width")}p.settings.autoScroll&&(p._hasScroll||(p._hasScroll=!0,function(){function e(s,a,l,u,c){var d,e=p._id+"-scroll"+s,t=p.classPrefix;ye(p.getEl()).append('
        '),p.draghelper=new ct(e+"t",{start:function(){d=p.getEl("body")["scroll"+a],ye("#"+e).addClass(t+"active")},drag:function(e){var t,n,i,r,o=p.layoutRect();n=o.contentW>o.innerW,i=o.contentH>o.innerH,r=p.getEl("body")["client"+l]-2*v,t=(r-=n&&i?p.getEl("scroll"+s)["client"+c]:0)/p.getEl("body")["scroll"+l],p.getEl("body")["scroll"+a]=d+e["delta"+u]/t},stop:function(){ye("#"+e).removeClass(t+"active")}})}p.classes.add("scroll"),e("v","Top","Height","Y","Width"),e("h","Left","Width","X","Height")}(),p.on("wheel",function(e){var t=p.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),ye(p.getEl("body")).on("scroll",n)),n())}},pt=lt.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[gt],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),void 0===n?n='
        '+t.renderHtml(e)+"
        ":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'
        '+(e._preBodyHtml||"")+n+"
        "}}),vt={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(e,t){if(e<=1||t<=1){var n=we.getWindowSize();e=e<=1?e*n.w:e,t=t<=1?t*n.h:t}return this._layoutRect.autoResize=!1,this.layoutRect({minW:e,minH:t,w:e,h:t}).reflow()},resizeBy:function(e,t){var n=this.layoutRect();return this.resizeTo(n.w+e,n.h+t)}},bt=[],yt=[];function xt(e,t){for(;e;){if(e===t)return!0;e=e.parent()}}function wt(){dt||(dt=function(e){2!==e.button&&function(e){for(var t=bt.length;t--;){var n=bt[t],i=n.getParentCtrl(e.target);if(n.settings.autohide){if(i&&(xt(i,n)||n.parent()===i))continue;(e=n.fire("autohide",{target:e.target})).isDefaultPrevented()||n.hide()}}}(e)},ye(_.document).on("click touchstart",dt))}function _t(r){var e=we.getViewPort().y;function t(e,t){for(var n,i=0;ie&&(r.fixed(!1).layoutRect({y:r._autoFixY}).repaint(),t(!1,r._autoFixY-e)):(r._autoFixY=r.layoutRect().y,r._autoFixY').appendTo(i.getContainerElm())),u.setTimeout(function(){t.addClass(n+"in"),ye(i.getEl()).addClass(n+"in")}),mt=!0),Rt(!0,i)}}),i.on("show",function(){i.parents().each(function(e){if(e.state.get("fixed"))return i.fixed(!0),!1})}),e.popover&&(i._preBodyHtml='
        ',i.classes.add("popover").add("bottom").add(i.isRtl()?"end":"start")),i.aria("label",e.ariaLabel),i.aria("labelledby",i._id),i.aria("describedby",i.describedBy||i._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!==e){if(t.state.get("rendered")){var n=we.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e,t=this._super();for(e=bt.length;e--&&bt[e]!==this;);return-1===e&&bt.push(this),t},hide:function(){return Et(this),Rt(!1,this),this._super()},hideAll:function(){Ct.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Rt(!1,this)),this},remove:function(){Et(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Et(e){var t;for(t=bt.length;t--;)bt[t]===e&&bt.splice(t,1);for(t=yt.length;t--;)yt[t]===e&&yt.splice(t,1)}Ct.hideAll=function(){for(var e=bt.length;e--;){var t=bt[e];t&&t.settings.autohide&&(t.hide(),bt.splice(e,1))}};var kt=function(s,n,e){var a,i,l=p.DOM,t=s.getParam("fixed_toolbar_container");t&&(i=l.select(t)[0]);var r=function(){if(a&&a.moveRel&&a.visible()&&!a._fixed){var e=s.selection.getScrollContainer(),t=s.getBody(),n=0,i=0;if(e){var r=l.getPos(t),o=l.getPos(e);n=Math.max(0,o.x-r.x),i=Math.max(0,o.y-r.y)}a.fixed(!1).moveRel(t,s.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(n,i)}},o=function(){a&&(a.show(),r(),l.addClass(s.getBody(),"mce-edit-focus"))},u=function(){a&&(a.hide(),Ct.hideAll(),l.removeClass(s.getBody(),"mce-edit-focus"))},c=function(){var e,t;a?a.visible()||o():(a=n.panel=v.create({type:i?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:(e=i,t=s,!(!e||t.settings.ui_container)),border:1,items:[!1===d(s)?null:{type:"menubar",border:"0 0 1 0",items:re(s)},A(s,f(s))]}),W.setUiContainer(s,a),x(s),i?a.renderTo(i).reflow():a.renderTo().reflow(),R(s,a),o(),F(s),s.on("nodeChange",r),s.on("ResizeWindow",r),s.on("activate",o),s.on("deactivate",u),s.nodeChanged())};return s.settings.content_editable=!0,s.on("focus",function(){!1===m(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,c,c):c()}),s.on("blur hide",u),s.on("remove",function(){a&&(a.remove(),a=null)}),!1===m(s)&&e.skinUiCss?l.styleSheetLoader.load(e.skinUiCss,ge(s)):ge(s)(),{}};function Ht(i,r){var o,s,a=this,l=rt.classPrefix;a.show=function(e,t){function n(){o&&(ye(i).append('
        '),t&&t())}return a.hide(),o=!0,e?s=u.setTimeout(n,e):n(),a},a.hide=function(){var e=i.lastChild;return u.clearTimeout(s),e&&-1!==e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,a}}var St=function(e,t){var n;e.on("ProgressState",function(e){n=n||new Ht(t.panel.getEl("body")),e.state?n.show(e.time):n.hide()})},Tt=function(e,t,n){var i=function(e){var t=e.settings,n=t.skin,i=t.skin_url;if(!1!==n){var r=n||"lightgray";i=i?e.documentBaseURI.toAbsolute(i):l.baseURL+"/skins/"+r}return i}(e);return i&&(n.skinUiCss=i+"/skin.min.css",e.contentCSS.push(i+"/content"+(e.inline?".inline":"")+".min.css")),St(e,t),e.getParam("inline",!1,"boolean")?kt(e,t,n):be(e,t,n)},Mt=rt.extend({Mixins:[He],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().lastChild.innerHTML=t.encode(e.value)}),t._super()},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=131070}}),Nt=rt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.canFocus=!0,i.tooltip&&!1!==Nt.tooltips&&(r.on("mouseenter",function(e){var t=r.tooltip().moveTo(-65535);if(e.control===r){var n=t.text(i.tooltip).show().testMoveRel(r.getEl(),["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===n),t.classes.toggle("tooltip-nw","bc-tl"===n),t.classes.toggle("tooltip-ne","bc-tr"===n),t.moveRel(r.getEl(),n)}else t.hide()}),r.on("mouseleave mousedown click",function(){r.tooltip().remove(),r._tooltip=null})),r.aria("label",i.ariaLabel||i.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new Mt({type:"tooltip"}),W.inheritUiContainer(this,this._tooltip),this._tooltip.renderTo()),this._tooltip},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){var t=this;function n(e){t.aria("disabled",e),t.classes.toggle("disabled",e)}function i(e){t.aria("pressed",e),t.classes.toggle("active",e)}return t.state.on("change:disabled",function(e){n(e.value)}),t.state.on("change:active",function(e){i(e.value)}),t.state.get("disabled")&&n(!0),t.state.get("active")&&i(!0),t._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),Pt=Nt.extend({Defaults:{value:0},init:function(e){this._super(e),this.classes.add("progress"),this.settings.filter||(this.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this._id,t=this.classPrefix;return'
        0%
        '},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var t=this;function n(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}return t.state.on("change:value",function(e){n(e.value)}),n(t.state.get("value")),t._super()}}),Wt=function(e,t){e.getEl().lastChild.textContent=t+(e.progressBar?" "+e.progressBar.value()+"%":"")},Dt=rt.extend({Mixins:[He],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),t.maxWidth=e.maxWidth,e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||0'),e=' style="max-width: '+t.maxWidth+"px;"+(t.color?"background-color: "+t.color+';"':'"'),t.closeButton&&(r=''),t.progressBar&&(o=t.progressBar.renderHtml()),''},postRender:function(){var e=this;return u.setTimeout(function(){e.$el.addClass(e.classPrefix+"in"),Wt(e,e.state.get("text"))},100),e._super()},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().firstChild.innerHTML=e.value,Wt(t,e.value)}),t.progressBar&&(t.progressBar.bindStates(),t.progressBar.state.on("change:value",function(e){Wt(t,t.state.get("text"))})),t._super()},close:function(){return this.fire("close").isDefaultPrevented()||this.remove(),this},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=65534}});function Ot(o){var s=function(e){return e.inline?e.getElement():e.getContentAreaContainer()};return{open:function(e,t){var n,i=w.extend(e,{maxWidth:(n=s(o),we.getSize(n).width)}),r=new Dt(i);return 0<(r.args=i).timeout&&(r.timer=setTimeout(function(){r.close(),t()},i.timeout)),r.on("close",function(){t()}),r.renderTo(),r},close:function(e){e.close()},reposition:function(e){K(e,function(e){e.moveTo(0,0)}),function(n){if(0e.w&&(n=e.x-Math.max(0,t/2),r.layoutRect({w:t,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(t=o.layoutRect().minW+e.deltaW)>e.w&&(n=e.x-Math.max(0,t-e.w),r.layoutRect({w:t,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var e,t=this,n=t._super(),i=0;if(t.settings.title&&!t._fullscreen){e=t.getEl("head");var r=we.getSize(e);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}t.statusbar&&(i+=t.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=we.getWindowSize();return n.x=t.settings.x||Math.max(0,o.w/2-n.w/2),n.y=t.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var e=this,t=e._layout,n=e._id,i=e.classPrefix,r=e.settings,o="",s="",a=r.html;return e.preRender(),t.preRender(e),r.title&&(o='
        '+e.encode(r.title)+'
        '),r.url&&(a=''),void 0===a&&(a=t.renderHtml(e)),e.statusbar&&(s=e.statusbar.renderHtml()),'
        '+o+'
        '+a+"
        "+s+"
        "},fullscreen:function(e){var n,t,i=this,r=_.document.documentElement,o=i.classPrefix;if(e!==i._fullscreen)if(ye(_.window).on("resize",function(){var e;if(i._fullscreen)if(n)i._timer||(i._timer=u.setTimeout(function(){var e=we.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),i._timer=0},50));else{e=(new Date).getTime();var t=we.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),50<(new Date).getTime()-e&&(n=!0)}}),t=i.layoutRect(),i._fullscreen=e){i._initial={x:t.x,y:t.y,w:t.w,h:t.h},i.borderBox=Me("0"),i.getEl("head").style.display="none",t.deltaH-=t.headerH+2,ye([r,_.document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=we.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Me(i.settings.border),i.getEl("head").style.display="",t.deltaH+=t.headerH,ye([r,_.document.body]).removeClass(o+"fullscreen"),i.classes.remove("fullscreen"),i.moveTo(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var t,n=this;setTimeout(function(){n.classes.add("in"),n.fire("open")},0),n._super(),n.statusbar&&n.statusbar.postRender(),n.focus(),this.dragHelper=new ct(n._id+"-dragh",{start:function(){t={x:n.layoutRect().x,y:n.layoutRect().y}},drag:function(e){n.moveTo(t.x+e.deltaX,t.y+e.deltaY)}}),n.on("submit",function(e){e.isDefaultPrevented()||n.close()}),At.push(n),Lt(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e,t=this;for(t.dragHelper.destroy(),t._super(),t.statusbar&&this.statusbar.remove(),zt(t.classPrefix,!1),e=At.length;e--;)At[e]===t&&At.splice(e,1);Lt(0'+this._super(e)}}),jt=Nt.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t,n=this;n._super(e),e=n.settings,t=n.settings.size,n.on("click mousedown",function(e){e.preventDefault()}),n.on("touchstart",function(e){n.fire("click",e),e.preventDefault()}),e.subtype&&n.classes.add(e.subtype),t&&n.classes.add("btn-"+t),e.icon&&n.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e,t=this.getEl().firstChild;t&&((e=t.style).width=e.height="100%"),this._super()},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a="",l=n.settings;return(e=l.image)?(o="none","string"!=typeof e&&(e=_.window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",s&&(n.classes.add("btn-has-text"),a=''+n.encode(s)+""),o=o?r+"ico "+r+"i-"+o:"",t="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'
        "},bindStates:function(){var o=this,n=o.$,i=o.classPrefix+"txt";function s(e){var t=n("span."+i,o.getEl());e?(t[0]||(n("button:first",o.getEl()).append(''),t=n("span."+i,o.getEl())),t.html(o.encode(e))):t.remove(),o.classes.toggle("btn-has-text",!!e)}return o.state.on("change:text",function(e){s(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=_.document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r),s(o.state.get("text"))}),o._super()}}),Jt=jt.extend({init:function(e){e=w.extend({text:"Browse...",multiple:!1,accept:null},e),this._super(e),this.classes.add("browsebutton"),e.multiple&&this.classes.add("multiple")},postRender:function(){var n=this,t=we.create("input",{type:"file",id:n._id+"-browse",accept:n.settings.accept});n._super(),ye(t).on("change",function(e){var t=e.target.files;n.value=function(){return t.length?n.settings.multiple?t:t[0]:null},e.preventDefault(),t.length&&n.fire("change",e)}),ye(t).on("click",function(e){e.stopPropagation()}),ye(n.getEl("button")).on("click touchstart",function(e){e.stopPropagation(),t.click(),e.preventDefault()}),n.getEl().appendChild(t)},remove:function(){ye(this.getEl("button")).off(),ye(this.getEl("input")).off(),this._super()}}),Gt=lt.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'
        '+(e.settings.html||"")+t.renderHtml(e)+"
        "}}),Kt=Nt.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'
        '+e.encode(e.state.get("text"))+"
        "},bindStates:function(){var o=this;function t(e){o.classes.toggle("checked",e),o.aria("checked",e)}return o.state.on("change:text",function(e){o.getEl("al").firstChild.data=o.translate(e.value)}),o.state.on("change:checked change:value",function(e){o.fire("change"),t(e.value)}),o.state.on("change:icon",function(e){var t=e.value,n=o.classPrefix;if(void 0===t)return o.settings.icon;t=(o.settings.icon=t)?n+"ico "+n+"i-"+o.settings.icon:"";var i=o.getEl().firstChild,r=i.getElementsByTagName("i")[0];t?(r&&r===i.firstChild||(r=_.document.createElement("i"),i.insertBefore(r,i.firstChild)),r.className=t):r&&i.removeChild(r)}),o.state.get("checked")&&t(!0),o._super()}}),Zt=tinymce.util.Tools.resolve("tinymce.util.VK"),Qt=Nt.extend({init:function(i){var r=this;r._super(i),i=r.settings,r.classes.add("combobox"),r.subinput=!0,r.ariaTarget="inp",i.menu=i.menu||i.values,i.menu&&(i.icon="caret"),r.on("click",function(e){var t=e.target,n=r.getEl();if(ye.contains(n,t)||t===n)for(;t&&t!==n;)t.id&&-1!==t.id.indexOf("-open")&&(r.fire("action"),i.menu&&(r.showMenu(),e.aria&&r.menu.items()[0].focus())),t=t.parentNode}),r.on("keydown",function(e){var t;13===e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),r.parents().reverse().each(function(e){if(e.toJSON)return t=e,!1}),r.fire("submit",{data:t.toJSON()}))}),r.on("keyup",function(e){if("INPUT"===e.target.nodeName){var t=r.state.get("value"),n=e.target.value;n!==t&&(r.state.set("value",n),r.fire("autocomplete",e))}}),r.on("mouseover",function(e){var t=r.tooltip().moveTo(-65535);if(r.statusLevel()&&-1!==e.target.className.indexOf(r.classPrefix+"status")){var n=r.statusMessage()||"Ok",i=t.text(n).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);t.classes.toggle("tooltip-n","bc-tc"===i),t.classes.toggle("tooltip-nw","bc-tl"===i),t.classes.toggle("tooltip-ne","bc-tr"===i),t.moveRel(e.target,i)}})},statusLevel:function(e){return 0
        ' + padd + '
        "+a+"
        ',i=0;i",a=0;a
        '+s+"
        "}else t+="
        "}return t+=""},d=function(e){for(;e;){if("TD"===e.nodeName)return e;e=e.parentNode}},m=function(n){var o,e={type:"container",html:u(s(n)),onclick:function(e){var t=e.target;if(/^(TD|DIV)$/.test(t.nodeName)){var a=d(t).firstChild;if(a&&a.hasAttribute("data-chr")){var i=a.getAttribute("data-chr"),r=parseInt(i,10);isNaN(r)||l(n,String.fromCharCode(r)),e.ctrlKey||o.close()}}},onmouseover:function(e){var t=d(e.target);t&&t.firstChild?(o.find("#preview").text(t.firstChild.firstChild.data),o.find("#previewTitle").text(t.title)):(o.find("#preview").text(" "),o.find("#previewTitle").text(" "))}};o=n.windowManager.open({title:"Special character",spacing:10,padding:10,items:[e,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"spacer",minHeight:20},{type:"label",name:"previewTitle",text:" ",style:"white-space: pre-wrap;",border:1,minWidth:140}]}],buttons:[{text:"Close",onclick:function(){o.close()}}]})},g=function(e){e.addCommand("mceShowCharmap",function(){m(e)})},p=function(e){e.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"})};e.add("charmap",function(e){return g(e),p(e),t(e)})}(); -// Source: wp-includes/js/tinymce/plugins/colorpicker/plugin.min.js -!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Color"),a=function(e,n){e.find("#preview")[0].getEl().style.background=n},o=function(e,n){var i=l(n),t=i.toRgb();e.fromJSON({r:t.r,g:t.g,b:t.b,hex:i.toHex().substr(1)}),a(e,i.toHex())},t=function(e,n,i){var t=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:i,onchange:function(){var e=this.rgb();t&&(t.find("#r").value(e.r),t.find("#g").value(e.g),t.find("#b").value(e.b),t.find("#hex").value(this.value().substr(1)),a(t,this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,i=t.find("colorpicker")[0];if(e=this.name(),n=this.value(),"hex"===e)return o(t,n="#"+n),void i.value(n);n={r:t.find("#r").value(),g:t.find("#g").value(),b:t.find("#b").value()},i.value(n),o(t,n)}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+t.toJSON().hex)}});o(t,i)};e.add("colorpicker",function(i){i.settings.color_picker_callback||(i.settings.color_picker_callback=function(e,n){t(i,e,n)})})}(); -// Source: wp-includes/js/tinymce/plugins/compat3x/plugin.min.js -!function(u){var t;function l(){}function f(e){!t&&window&&window.console&&(t=!0,console.log("Deprecated TinyMCE API call: "+e))}function i(i,a,d,s){i=i||this;var c=[];a?(this.add=function(o,r,e){function t(e){var t=[];if("string"==typeof d&&(d=d.split(" ")),d&&"function"!=typeof d)for(var n=0;n.on"+a+".add(..)"),i.on(a,t,e);var n={original:o,patched:t};return c.push(n),t},this.addToTop=function(e,t){this.add(e,t,!0)},this.remove=function(n){return c.forEach(function(e,t){if(e.original===n)return c.splice(t,1),i.off(a,e.patched)}),i.off(a,n)},this.dispatch=function(){return i.fire(a),!0}):this.add=this.addToTop=this.remove=this.dispatch=l}function n(s){function e(e,t){u.each(e.split(" "),function(e){s["on"+e]=new i(s,e,t)})}function n(e,t,n){return[t.level,n]}function o(n){return function(e,t){if(!t.selection&&!n||t.selection==n)return[t]}}if(!s.controlManager){s.controlManager={buttons:{},setDisabled:function(e,t){f("controlManager.setDisabled(..)"),this.buttons[e]&&this.buttons[e].disabled(t)},setActive:function(e,t){f("controlManager.setActive(..)"),this.buttons[e]&&this.buttons[e].active(t)},onAdd:new i,onPostRender:new i,add:function(e){return e},createButton:r,createColorSplitButton:r,createControl:r,createDropMenu:r,createListBox:r,createMenuButton:r,createSeparator:r,createSplitButton:r,createToolbar:r,createToolbarGroup:r,destroy:l,get:l,setControlType:r},e("PreInit BeforeRenderUI PostRender Load Init Remove Activate Deactivate","editor"),e("Click MouseUp MouseDown DblClick KeyDown KeyUp KeyPress ContextMenu Paste Submit Reset"),e("BeforeExecCommand ExecCommand","command ui value args"),e("PreProcess PostProcess LoadContent SaveContent Change"),e("BeforeSetContent BeforeGetContent SetContent GetContent",o(!1)),e("SetProgressState","state time"),e("VisualAid","element hasVisual"),e("Undo Redo",n),e("NodeChange",function(e,t){return[s.controlManager,t.element,s.selection.isCollapsed(),t]});var c=s.addButton;s.addButton=function(e,t){var n,o,r,i;function a(){if(s.controlManager.buttons[e]=this,n)return n.apply(this,arguments)}for(var d in t)"onpostrender"===d.toLowerCase()&&(n=t[d],t.onPostRender=a);return n||(t.onPostRender=a),t.title&&(t.title=(o=t.title,r=[s.settings.language||"en",o].join("."),i=u.i18n.translate(r),r!==i?i:u.i18n.translate(o))),c.call(this,e,t)},s.on("init",function(){var e=s.undoManager,t=s.selection;e.onUndo=new i(s,"Undo",n,null,e),e.onRedo=new i(s,"Redo",n,null,e),e.onBeforeAdd=new i(s,"BeforeAddUndo",null,e),e.onAdd=new i(s,"AddUndo",null,e),t.onBeforeGetContent=new i(s,"BeforeGetContent",o(!0),t),t.onGetContent=new i(s,"GetContent",o(!0),t),t.onBeforeSetContent=new i(s,"BeforeSetContent",o(!0),t),t.onSetContent=new i(s,"SetContent",o(!0),t)}),s.on("BeforeRenderUI",function(){var e=s.windowManager;e.onOpen=new i,e.onClose=new i,e.createInstance=function(e,t,n,o,r,i){return f("windowManager.createInstance(..)"),new(u.resolve(e))(t,n,o,r,i)}})}function r(){var t={};function n(){return r()}return f("editor.controlManager.*"),u.each("add addMenu addSeparator collapse createMenu destroy displayColor expand focus getLength hasMenus hideMenu isActive isCollapsed isDisabled isRendered isSelected mark postRender remove removeAll renderHTML renderMenu renderNode renderTo select selectByIndex setActive setAriaProperty setColor setDisabled setSelected setState showMenu update".split(" "),function(e){t[e]=n}),t}}u.util.Dispatcher=i,u.onBeforeUnload=new i(u,"BeforeUnload"),u.onAddEditor=new i(u,"AddEditor","editor"),u.onRemoveEditor=new i(u,"RemoveEditor","editor"),u.util.Cookie={get:l,getHash:l,remove:l,set:l,setHash:l},u.on("SetupEditor",function(e){n(e.editor)}),u.PluginManager.add("compat3x",n),u.addI18n=function(n,e){var r=u.util.I18n,t=u.each;"string"!=typeof n||-1!==n.indexOf(".")?u.is(n,"string")?t(e,function(e,t){r.data[n+"."+t]=e}):t(n,function(e,o){t(e,function(e,n){t(e,function(e,t){"common"===n?r.data[o+"."+t]=e:r.data[o+"."+n+"."+t]=e})})}):r.add(n,e)}}(tinymce); -// Source: wp-includes/js/tinymce/plugins/directionality/plugin.min.js -!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(t,e){var i,n=t.dom,o=t.selection.getSelectedBlocks();o.length&&(i=n.getAttrib(o[0],"dir"),c.each(o,function(t){n.getParent(t.parentNode,'*[dir="'+e+'"]',n.getRoot())||n.setAttrib(t,"dir",i!==e?e:null)}),t.nodeChanged())},i=function(t){t.addCommand("mceDirectionLTR",function(){e(t,"ltr")}),t.addCommand("mceDirectionRTL",function(){e(t,"rtl")})},n=function(e){var i=[];return c.each("h1 h2 h3 h4 h5 h6 div p".split(" "),function(t){i.push(t+"[dir="+e+"]")}),i.join(",")},o=function(t){t.addButton("ltr",{title:"Left to right",cmd:"mceDirectionLTR",stateSelector:n("ltr")}),t.addButton("rtl",{title:"Right to left",cmd:"mceDirectionRTL",stateSelector:n("rtl")})};t.add("directionality",function(t){i(t),o(t)})}(); -// Source: wp-includes/js/tinymce/plugins/fullscreen/plugin.min.js -!function(m){"use strict";var i=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=function(e,n){e.fire("FullscreenStateChanged",{state:n})},w=n.DOM,r=function(e,n){var t,r,l,i,o,c,s=m.document.body,u=m.document.documentElement,d=n.get(),a=function(){var e,n,t,i;w.setStyle(l,"height",(t=m.window,i=m.document.body,i.offsetWidth&&(e=i.offsetWidth,n=i.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(r.clientHeight-l.clientHeight))},h=function(){w.unbind(m.window,"resize",a)};if(t=(r=e.getContainer()).style,i=(l=e.getContentAreaContainer().firstChild).style,d)i.width=d.iframeWidth,i.height=d.iframeHeight,d.containerWidth&&(t.width=d.containerWidth),d.containerHeight&&(t.height=d.containerHeight),w.removeClass(s,"mce-fullscreen"),w.removeClass(u,"mce-fullscreen"),w.removeClass(r,"mce-fullscreen"),o=d.scrollPos,m.window.scrollTo(o.x,o.y),w.unbind(m.window,"resize",d.resizeHandler),e.off("remove",d.removeHandler),n.set(null),g(e,!1);else{var f={scrollPos:(c=w.getViewPort(),{x:c.x,y:c.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:i.width,iframeHeight:i.height,resizeHandler:a,removeHandler:h};i.width=i.height="100%",t.width=t.height="",w.addClass(s,"mce-fullscreen"),w.addClass(u,"mce-fullscreen"),w.addClass(r,"mce-fullscreen"),w.bind(m.window,"resize",a),e.on("remove",h),a(),n.set(f),g(e,!0)}},l=function(e,n){e.addCommand("mceFullScreen",function(){r(e,n)})},o=function(t){return function(e){var n=e.control;t.on("FullscreenStateChanged",function(e){n.active(e.state)})}},c=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:o(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:o(e)})};e.add("fullscreen",function(e){var n=i(null);return e.settings.inline||(l(e,n),c(e),e.addShortcut("Ctrl+Shift+F","","mceFullScreen")),t(n)})}(window); -// Source: wp-includes/js/tinymce/plugins/hr/plugin.min.js -!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"
        ")})},o=function(n){n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})};n.add("hr",function(n){t(n),o(n)})}(); -// Source: wp-includes/js/tinymce/plugins/image/plugin.min.js -!function(l){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},u=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},c=function(e){return e.getParam("image_list",!1)},s=function(e){return e.getParam("images_upload_url",!1)},g=function(e){return e.getParam("images_upload_handler",!1)},f=function(e){return e.getParam("images_upload_url")},p=function(e){return e.getParam("images_upload_handler")},h=function(e){return e.getParam("images_upload_base_path")},v=function(e){return e.getParam("images_upload_credentials")},b="undefined"!=typeof l.window?l.window:Function("return this;")(),y=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:b,r=0;r'),i.close()}}var r,a},A=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t,e){var n,o,i=["noopener"],r=t?t.split(/\s+/):[],a=function(t){return t.filter(function(t){return-1===A.inArray(i,t)})};return(r=e?(n=a(n=r)).length?n.concat(i):i:a(r)).length?(o=r,A.trim(o.sort().join(" "))):null},d=function(t,e){return e=e||t.selection.getNode(),v(e)?t.dom.select("a[href]",e)[0]:t.dom.getParent(e,"a[href]")},m=function(t){return t&&"A"===t.nodeName&&t.href},v=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},g=function(t,e){var n,o;(o=t.dom.select("img",e)[0])&&(n=t.dom.getParents(o,"a[href]",e)[0])&&(n.parentNode.insertBefore(o,n),t.dom.remove(n))},h=function(t,e,n){var o,i;(i=t.dom.select("img",e)[0])&&(o=t.dom.create("a",n),i.parentNode.insertBefore(o,i),o.appendChild(i))},L=function(i,r){return function(o){i.undoManager.transact(function(){var t=i.selection.getNode(),e=d(i,t),n={href:o.href,target:o.target?o.target:null,rel:o.rel?o.rel:null,"class":o["class"]?o["class"]:null,title:o.title?o.title:null};C(i.settings)||!1!==N(i.settings)||(n.rel=f(n.rel,"_blank"===n.target)),o.href===r.href&&(r.attach(),r={}),e?(i.focus(),o.hasOwnProperty("text")&&("innerText"in e?e.innerText=o.text:e.textContent=o.text),i.dom.setAttribs(e,n),i.selection.select(e),i.undoManager.add()):v(t)?h(i,t,n):o.hasOwnProperty("text")?i.insertContent(i.dom.createHTML("a",n,i.dom.encode(o.text))):i.execCommand("mceInsertLink",!1,n)})}},P=function(e){return function(){e.undoManager.transact(function(){var t=e.selection.getNode();v(t)?g(e,t):e.execCommand("unlink")})}},x=m,E=function(t){return 0]+>[^<]+<\/a>$/.test(t)||-1===t.indexOf("href=")))},I=d,K=function(t,e){var n=e?e.innerText||e.textContent:t.getContent({format:"text"});return n.replace(/\uFEFF/g,"")},U=f,D=tinymce.util.Tools.resolve("tinymce.util.Delay"),B=tinymce.util.Tools.resolve("tinymce.util.XHR"),F={},q=function(t,o,e){var i=function(t,n){return n=n||[],A.each(t,function(t){var e={text:t.text||t.title};t.menu?e.menu=i(t.menu):(e.value=t.value,o&&o(e)),n.push(e)}),n};return i(t,e||[])},V=function(e,t,n){var o=e.selection.getRng();D.setEditorTimeout(e,function(){e.windowManager.confirm(t,function(t){e.selection.setRng(o),n(t)})})},z=function(a,t){var e,l,o,u,n,i,r,c,s,f,d,m={},v=a.selection,g=a.dom,h=function(t){var e=o.find("#text");(!e.value()||t.lastControl&&e.value()===t.lastControl.text())&&e.value(t.control.text()),o.find("#href").value(t.control.value())},x=function(){l||!u||m.text||this.parent().parent().find("#text")[0].value(this.value())};u=S(v.getContent()),e=I(a),m.text=l=K(a.selection,e),m.href=e?g.getAttrib(e,"href"):"",e?m.target=g.getAttrib(e,"target"):k(a.settings)&&(m.target=y(a.settings)),(d=g.getAttrib(e,"rel"))&&(m.rel=d),(d=g.getAttrib(e,"class"))&&(m["class"]=d),(d=g.getAttrib(e,"title"))&&(m.title=d),u&&(n={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){m.text=this.value()}}),t&&(i={type:"listbox",label:"Link list",values:q(t,function(t){t.value=a.convertURL(t.value||t.url,"href")},[{text:"None",value:""}]),onselect:h,value:a.convertURL(m.href,"href"),onPostRender:function(){i=this}}),w(a.settings)&&(b(a.settings)===undefined&&_(a,[{text:"None",value:""},{text:"New window",value:"_blank"}]),c={name:"target",type:"listbox",label:"Target",values:q(b(a.settings))}),C(a.settings)&&(r={name:"rel",type:"listbox",label:"Rel",values:q(T(a.settings),function(t){!1===N(a.settings)&&(t.value=U(t.value,"_blank"===m.target))})}),O(a.settings)&&(s={name:"class",type:"listbox",label:"Class",values:q(M(a.settings),function(t){t.value&&(t.textStyle=function(){return a.formatter.getCssText({inline:"a",classes:[t.value]})})})}),R(a.settings)&&(f={name:"title",type:"textbox",label:"Title",value:m.title}),o=a.windowManager.open({title:"Insert link",data:m,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:function(t){var e=t.meta||{};i&&i.value(a.convertURL(this.value(),"href")),A.each(t.meta,function(t,e){var n=o.find("#"+e);"text"===e?0===l.length&&(n.value(t),m.text=t):n.value(t)}),e.attach&&(F={href:this.value(),attach:e.attach}),e.text||x.call(this)},onkeyup:x,onpaste:x,onbeforecall:function(t){t.meta=o.toJSON()}},n,f,function(n){var o=[];if(A.each(a.dom.select("a:not([href])"),function(t){var e=t.name||t.id;e&&o.push({text:e,value:"#"+e,selected:-1!==n.indexOf("#"+e)})}),o.length)return o.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:o,onselect:h}}(m.href),i,r,c,s],onSubmit:function(t){var e=p(a.settings),n=L(a,F),o=P(a),i=A.extend({},m,t.data),r=i.href;r?(u&&i.text!==l||delete i.text,0=e.childNodes.length?t.data.length:0}:t.previousSibling&&y(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&y(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},x=function(e){var n=e.cloneRange(),t=A(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=A(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},R=g.DOM,I=function(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=R.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):R.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},_=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,R.remove(r),!n.hasChildNodes()&&R.isBlock(n)&&n.appendChild(R.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=R.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),x(n)},B=function(){},P=function(e){return function(){return e}},M=function(t){return function(){for(var e=[],n=0;ne.length?Sn(t,e,n):Nn(t,e,n)},[]),oe(o).map(function(e){return e.list})).toArray();var t,r,o},Pn=function(e){var n,t,r=J(ve.getSelectedListItems(e),ye.fromDom);return Ne(te(r,M(On)),te((n=r,(t=Y.call(n,0)).reverse(),t),M(On)),function(e,n){return{start:e,end:n}})},Mn=function(s,e,a){var n,t,r,o=(n=e,t=Pn(s),r=kn(!1),J(n,function(e){return{sourceList:e,entries:xn(0,t,r,e)}}));Z(o,function(e){var n,t,r,o,i,u;n=e.entries,t=a,Z(ee(n,Tn),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)}),r=e.sourceList,i=s,u=e.entries,o=re(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i"):"application/x-shockwave-flash"===n.source1mime?(d='',m.poster&&(d+=''),d+=""):-1!==n.source1mime.indexOf("audio")?(s=n,(l=p)?l(s):'"):"script"===n.type?' - - - - - - - - - - - - - - - - - - - - - - - - @@ -1550,7 +1342,7 @@ function wp_print_media_templates() { /** * Fires when the custom Backbone media templates are printed. * - * @since 3.5.0 + * @since WP-3.5.0 */ do_action( 'print_media_templates' ); } diff --git a/wp-includes/media.php b/wp-includes/media.php index 0de8cf8..078f6d7 100644 --- a/wp-includes/media.php +++ b/wp-includes/media.php @@ -7,9 +7,9 @@ */ /** - * Retrieves additional image sizes. + * Retrieve additional image sizes. * - * @since 4.7.0 + * @since WP-4.7.0 * * @global array $_wp_additional_image_sizes * @@ -17,16 +17,14 @@ */ function wp_get_additional_image_sizes() { global $_wp_additional_image_sizes; - if ( ! $_wp_additional_image_sizes ) { $_wp_additional_image_sizes = array(); } - return $_wp_additional_image_sizes; } /** - * Scales down the default size of an image. + * Scale down the default size of an image. * * This is so that the image is a better fit for the editor and theme. * @@ -38,24 +36,23 @@ function wp_get_additional_image_sizes() { * not set. * * Finally, there is a filter named {@see 'editor_max_image_size'}, that will be - * called on the calculated array for width and height, respectively. + * called on the calculated array for width and height, respectively. The second + * parameter will be the value that was in the $size parameter. The returned + * type for the hook is an array with the width as the first element and the + * height as the second element. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @global int $content_width + * @global int $content_width * * @param int $width Width of the image in pixels. * @param int $height Height of the image in pixels. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array - * of width and height values in pixels (in that order). Default 'medium'. + * @param string|array $size Optional. Image size. Accepts any valid image size, or an array + * of width and height values in pixels (in that order). + * Default 'medium'. * @param string $context Optional. Could be 'display' (like in a theme) or 'edit' * (like inserting into an editor). Default null. - * @return int[] { - * An array of width and height values. - * - * @type int $0 The maximum width in pixels. - * @type int $1 The maximum height in pixels. - * } + * @return array Width and height of what the result image should resize to. */ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $context = null ) { global $content_width; @@ -70,23 +67,23 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co $max_width = $size[0]; $max_height = $size[1]; } elseif ( 'thumb' === $size || 'thumbnail' === $size ) { - $max_width = (int) get_option( 'thumbnail_size_w' ); - $max_height = (int) get_option( 'thumbnail_size_h' ); - // Last chance thumbnail size defaults. + $max_width = intval( get_option( 'thumbnail_size_w' ) ); + $max_height = intval( get_option( 'thumbnail_size_h' ) ); + // last chance thumbnail size defaults if ( ! $max_width && ! $max_height ) { $max_width = 128; $max_height = 96; } } elseif ( 'medium' === $size ) { - $max_width = (int) get_option( 'medium_size_w' ); - $max_height = (int) get_option( 'medium_size_h' ); + $max_width = intval( get_option( 'medium_size_w' ) ); + $max_height = intval( get_option( 'medium_size_h' ) ); } elseif ( 'medium_large' === $size ) { - $max_width = (int) get_option( 'medium_large_size_w' ); - $max_height = (int) get_option( 'medium_large_size_h' ); + $max_width = intval( get_option( 'medium_large_size_w' ) ); + $max_height = intval( get_option( 'medium_large_size_h' ) ); - if ( (int) $content_width > 0 ) { - $max_width = min( (int) $content_width, $max_width ); + if ( intval( $content_width ) > 0 ) { + $max_width = min( intval( $content_width ), $max_width ); } } elseif ( 'large' === $size ) { /* @@ -95,20 +92,19 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co * 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 = (int) get_option( 'large_size_w' ); - $max_height = (int) get_option( 'large_size_h' ); - - if ( (int) $content_width > 0 ) { - $max_width = min( (int) $content_width, $max_width ); + $max_width = intval( get_option( 'large_size_w' ) ); + $max_height = intval( get_option( 'large_size_h' ) ); + if ( intval( $content_width ) > 0 ) { + $max_width = min( intval( $content_width ), $max_width ); } - } elseif ( ! empty( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ), true ) ) { - $max_width = (int) $_wp_additional_image_sizes[ $size ]['width']; - $max_height = (int) $_wp_additional_image_sizes[ $size ]['height']; + } elseif ( ! empty( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ) ) ) { + $max_width = intval( $_wp_additional_image_sizes[ $size ]['width'] ); + $max_height = intval( $_wp_additional_image_sizes[ $size ]['height'] ); // Only in admin. Assume that theme authors know what they're doing. - if ( (int) $content_width > 0 && 'edit' === $context ) { - $max_width = min( (int) $content_width, $max_width ); + if ( intval( $content_width ) > 0 && 'edit' === $context ) { + $max_width = min( intval( $content_width ), $max_width ); } - } else { // $size === 'full' has no constraint. + } else { // $size == 'full' has no constraint $max_width = $width; $max_height = $height; } @@ -116,19 +112,14 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co /** * Filters the maximum image size dimensions for the editor. * - * @since 2.5.0 - * - * @param int[] $max_image_size { - * An array of width and height values. + * @since WP-2.5.0 * - * @type int $0 The maximum width in pixels. - * @type int $1 The maximum height in pixels. - * } - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). - * @param string $context The context the image is being resized for. - * Possible values are 'display' (like in a theme) - * or 'edit' (like inserting into an editor). + * @param array $max_image_size An array with the width as the first element, + * and the height as the second element. + * @param string|array $size Size of what the result image should be. + * @param string $context The context the image is being resized for. + * Possible values are 'display' (like in a theme) + * or 'edit' (like inserting into an editor). */ list( $max_width, $max_height ) = apply_filters( 'editor_max_image_size', array( $max_width, $max_height ), $size, $context ); @@ -136,7 +127,7 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co } /** - * Retrieves width and height attributes using given width and height values. + * Retrieve width and height attributes using given width and height values. * * Both attributes are required in the sense that both parameters must have a * value, but are optional in that if you set them to false or null, then they @@ -146,7 +137,7 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co * If you wish to put 'px' after the numbers, then it will be stripped out of * the return. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int|string $width Image width in pixels. * @param int|string $height Image height in pixels. @@ -155,16 +146,20 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co function image_hwstring( $width, $height ) { $out = ''; if ( $width ) { - $out .= 'width="' . (int) $width . '" '; + $out .= 'width="' . intval( $width ) . '" '; } if ( $height ) { - $out .= 'height="' . (int) $height . '" '; + $out .= 'height="' . intval( $height ) . '" '; } return $out; } /** - * Scales an image to fit a particular size (such as 'thumb' or 'medium'). + * Scale an image to fit a particular size (such as 'thumb' or 'medium'). + * + * Array with image url, width, height, and whether is intermediate size, in + * that order is returned on success is returned. $is_intermediate is true if + * $url is a resized image, false if it is the original. * * The URL might be the original image, or it might be a resized version. This * function won't create a new resized copy, it will just return an already @@ -172,21 +167,17 @@ function image_hwstring( $width, $height ) { * * A plugin may use the {@see 'image_downsize'} filter to hook into and offer image * resizing services for images. The hook must return an array with the same - * elements that are normally returned from the function. + * elements that are returned in the function. The first element being the URL + * to the new image that was resized. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $id Attachment ID for image. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array - * of width and height values in pixels (in that order). Default 'medium'. - * @return array|false { - * Array of image data, or boolean false if no image is available. - * - * @type string $0 Image source URL. - * @type int $1 Image width in pixels. - * @type int $2 Image height in pixels. - * @type bool $3 Whether the image is a resized image. - * } + * @param array|string $size Optional. Image size to scale to. Accepts any valid image size, + * or an array of width and height values in pixels (in that order). + * Default 'medium'. + * @return false|array Array containing the image URL, width, height, and boolean for whether + * the image is an intermediate size. False on failure. */ function image_downsize( $id, $size = 'medium' ) { $is_image = wp_attachment_is_image( $id ); @@ -194,33 +185,30 @@ function image_downsize( $id, $size = 'medium' ) { /** * Filters whether to preempt the output of image_downsize(). * - * Returning a truthy value from the filter will effectively short-circuit - * down-sizing the image, returning that value instead. + * Passing a truthy value to the filter will effectively short-circuit + * down-sizing the image, returning that value as output instead. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param bool|array $downsize Whether to short-circuit the image downsize. + * @param bool $downsize Whether to short-circuit the image downsize. Default false. * @param int $id Attachment ID for image. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). + * @param array|string $size Size of image. Image size or array of width and height values (in that order). + * Default 'medium'. */ - $out = apply_filters( 'image_downsize', false, $id, $size ); - - if ( $out ) { + if ( $out = apply_filters( 'image_downsize', false, $id, $size ) ) { return $out; } $img_url = wp_get_attachment_url( $id ); $meta = wp_get_attachment_metadata( $id ); - $width = 0; - $height = 0; + $width = $height = 0; $is_intermediate = false; $img_url_basename = wp_basename( $img_url ); // If the file isn't an image, attempt to replace its URL with a rendered image from its meta. // Otherwise, a non-image type could be returned. if ( ! $is_image ) { - if ( ! empty( $meta['sizes']['full'] ) ) { + if ( ! empty( $meta['sizes'] ) ) { $img_url = str_replace( $img_url_basename, $meta['sizes']['full']['file'], $img_url ); $img_url_basename = $meta['sizes']['full']['file']; $width = $meta['sizes']['full']['width']; @@ -230,63 +218,64 @@ function image_downsize( $id, $size = 'medium' ) { } } - // Try for a new style intermediate size. - $intermediate = image_get_intermediate_size( $id, $size ); - - if ( $intermediate ) { + // try for a new style intermediate size + if ( $intermediate = image_get_intermediate_size( $id, $size ) ) { $img_url = str_replace( $img_url_basename, $intermediate['file'], $img_url ); $width = $intermediate['width']; $height = $intermediate['height']; $is_intermediate = true; - } elseif ( 'thumbnail' === $size && ! empty( $meta['thumb'] ) && is_string( $meta['thumb'] ) ) { + } elseif ( 'thumbnail' === $size ) { // Fall back to the old thumbnail. - $imagefile = get_attached_file( $id ); - $thumbfile = str_replace( wp_basename( $imagefile ), wp_basename( $meta['thumb'] ), $imagefile ); + $thumb_file = wp_get_attachment_thumb_file( $id ); + $info = null; - if ( file_exists( $thumbfile ) ) { - $info = wp_getimagesize( $thumbfile ); + if ( $thumb_file ) { + $info = @getimagesize( $thumb_file ); + } - if ( $info ) { - $img_url = str_replace( $img_url_basename, wp_basename( $thumbfile ), $img_url ); - $width = $info[0]; - $height = $info[1]; - $is_intermediate = true; - } + if ( $thumb_file && $info ) { + $img_url = str_replace( $img_url_basename, wp_basename( $thumb_file ), $img_url ); + $width = $info[0]; + $height = $info[1]; + $is_intermediate = true; } } - if ( ! $width && ! $height && isset( $meta['width'], $meta['height'] ) ) { - // Any other type: use the real image. + // any other type: use the real image $width = $meta['width']; $height = $meta['height']; } if ( $img_url ) { - // We have the actual image size, but might need to further constrain it if content_width is narrower. + // we have the actual image size, but might need to further constrain it if content_width is narrower list( $width, $height ) = image_constrain_size_for_editor( $width, $height, $size ); return array( $img_url, $width, $height, $is_intermediate ); } - return false; + } /** - * Registers a new image size. + * Register a new image size. * - * @since 2.9.0 + * Cropping behavior for the image size is dependent on the value of $crop: + * 1. If false (default), images will be scaled, not cropped. + * 2. If an array in the form of array( x_crop_position, y_crop_position ): + * - x_crop_position accepts 'left' 'center', or 'right'. + * - y_crop_position accepts 'top', 'center', or 'bottom'. + * Images will be cropped to the specified dimensions within the defined crop area. + * 3. If true, images will be cropped to the specified dimensions using center positions. + * + * @since WP-2.9.0 * * @global array $_wp_additional_image_sizes Associative array of additional image sizes. * * @param string $name Image size identifier. - * @param int $width Optional. Image width in pixels. Default 0. - * @param int $height Optional. Image height in pixels. Default 0. - * @param bool|array $crop Optional. Image cropping behavior. If false, the image will be scaled (default), - * If true, image will be cropped to the specified dimensions using center positions. - * If an array, the image will be cropped using the array to specify the crop location. - * Array values must be in the format: array( x_crop_position, y_crop_position ) where: - * - x_crop_position accepts: 'left', 'center', or 'right'. - * - y_crop_position accepts: 'top', 'center', or 'bottom'. + * @param int $width Image width in pixels. + * @param int $height Image height in pixels. + * @param bool|array $crop Optional. Whether to crop images to specified width and height or resize. + * An array can specify positioning of the crop area. Default false. */ function add_image_size( $name, $width = 0, $height = 0, $crop = false ) { global $_wp_additional_image_sizes; @@ -299,9 +288,9 @@ function add_image_size( $name, $width = 0, $height = 0, $crop = false ) { } /** - * Checks if an image size exists. + * Check if an image size exists. * - * @since 3.9.0 + * @since WP-3.9.0 * * @param string $name The image size to check. * @return bool True if the image size exists, false if not. @@ -312,9 +301,9 @@ function has_image_size( $name ) { } /** - * Removes a new image size. + * Remove a new image size. * - * @since 3.9.0 + * @since WP-3.9.0 * * @global array $_wp_additional_image_sizes * @@ -335,7 +324,7 @@ function remove_image_size( $name ) { /** * Registers an image size for the post thumbnail. * - * @since 2.9.0 + * @since WP-2.9.0 * * @see add_image_size() for details on cropping behavior. * @@ -353,22 +342,23 @@ function set_post_thumbnail_size( $width = 0, $height = 0, $crop = false ) { * * The {@see 'get_image_tag_class'} filter allows for changing the class name for the * image without having to use regular expressions on the HTML content. The - * parameters are: what WordPress will use for the class, the Attachment ID, + * parameters are: what ClassicPress will use for the class, the Attachment ID, * image align value, and the size the image should be. * * The second filter, {@see 'get_image_tag'}, has the HTML content, which can then be * further manipulated by a plugin to change all attribute values and even HTML * content. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $id Attachment ID. - * @param string $alt Image description for the alt attribute. - * @param string $title Image description for the title attribute. + * @param string $alt Image Description for the alt attribute. + * @param string $title Image Description for the title attribute. * @param string $align Part of the class name for aligning the image. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of - * width and height values in pixels (in that order). Default 'medium'. - * @return string HTML IMG element for given image attachment? + * @param string|array $size Optional. Registered image size to retrieve a tag for. Accepts any + * valid image size, or an array of width and height values in pixels + * (in that order). Default 'medium'. + * @return string HTML IMG element for given image attachment */ function get_image_tag( $id, $alt, $title, $align, $size = 'medium' ) { @@ -377,36 +367,35 @@ function get_image_tag( $id, $alt, $title, $align, $size = 'medium' ) { $title = $title ? 'title="' . esc_attr( $title ) . '" ' : ''; - $size_class = is_array( $size ) ? implode( 'x', $size ) : $size; - $class = 'align' . esc_attr( $align ) . ' size-' . esc_attr( $size_class ) . ' wp-image-' . $id; + $class = 'align' . esc_attr( $align ) . ' size-' . esc_attr( $size ) . ' wp-image-' . $id; /** * Filters the value of the attachment's image tag class attribute. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param string $class CSS class name or space-separated list of classes. * @param int $id Attachment ID. * @param string $align Part of the class name for aligning the image. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). + * @param string|array $size Size of image. Image size or array of width and height values (in that order). + * Default 'medium'. */ $class = apply_filters( 'get_image_tag_class', $class, $id, $align, $size ); - $html = '' . esc_attr( $alt ) . ''; + $html = '' . esc_attr( $alt ) . ''; /** * Filters the HTML content for the image tag. * - * @since 2.6.0 + * @since WP-2.6.0 * * @param string $html HTML content for the image. * @param int $id Attachment ID. - * @param string $alt Image description for the alt attribute. - * @param string $title Image description for the title attribute. + * @param string $alt Alternate text. + * @param string $title Attachment title. * @param string $align Part of the class name for aligning the image. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). + * @param string|array $size Size of image. Image size or array of width and height values (in that order). + * Default 'medium'. */ return apply_filters( 'get_image_tag', $html, $id, $alt, $title, $align, $size ); } @@ -417,28 +406,21 @@ function get_image_tag( $id, $alt, $title, $align, $size = 'medium' ) { * If either width or height are empty, no constraint is applied on * that dimension. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $current_width Current width of the image. * @param int $current_height Current height of the image. * @param int $max_width Optional. Max width in pixels to constrain to. Default 0. * @param int $max_height Optional. Max height in pixels to constrain to. Default 0. - * @return int[] { - * An array of width and height values. - * - * @type int $0 The width in pixels. - * @type int $1 The height in pixels. - * } + * @return array First item is the width, the second item is the height. */ function wp_constrain_dimensions( $current_width, $current_height, $max_width = 0, $max_height = 0 ) { if ( ! $max_width && ! $max_height ) { return array( $current_width, $current_height ); } - $width_ratio = 1.0; - $height_ratio = 1.0; - $did_width = false; - $did_height = false; + $width_ratio = $height_ratio = 1.0; + $did_width = $did_height = false; if ( $max_width > 0 && $current_width > 0 && $current_width > $max_width ) { $width_ratio = $max_width / $current_width; @@ -450,7 +432,7 @@ function wp_constrain_dimensions( $current_width, $current_height, $max_width = $did_height = true; } - // Calculate the larger/smaller ratios. + // Calculate the larger/smaller ratios $smaller_ratio = min( $width_ratio, $height_ratio ); $larger_ratio = max( $width_ratio, $height_ratio ); @@ -466,35 +448,26 @@ function wp_constrain_dimensions( $current_width, $current_height, $max_width = $w = max( 1, (int) round( $current_width * $ratio ) ); $h = max( 1, (int) round( $current_height * $ratio ) ); - /* - * Sometimes, due to rounding, we'll end up with a result like this: - * 465x700 in a 177x177 box is 117x176... a pixel short. - * We also have issues with recursive calls resulting in an ever-changing result. - * Constraining to the result of a constraint should yield the original result. - * Thus we look for dimensions that are one pixel shy of the max value and bump them up. - */ + // Sometimes, due to rounding, we'll end up with a result like this: 465x700 in a 177x177 box is 117x176... a pixel short + // We also have issues with recursive calls resulting in an ever-changing result. Constraining to the result of a constraint should yield the original result. + // Thus we look for dimensions that are one pixel shy of the max value and bump them up // Note: $did_width means it is possible $smaller_ratio == $width_ratio. - if ( $did_width && $w === $max_width - 1 ) { - $w = $max_width; // Round it up. + if ( $did_width && $w == $max_width - 1 ) { + $w = $max_width; // Round it up } // Note: $did_height means it is possible $smaller_ratio == $height_ratio. - if ( $did_height && $h === $max_height - 1 ) { - $h = $max_height; // Round it up. + if ( $did_height && $h == $max_height - 1 ) { + $h = $max_height; // Round it up } /** * Filters dimensions to constrain down-sampled images to. * - * @since 4.1.0 + * @since WP-4.1.0 * - * @param int[] $dimensions { - * An array of width and height values. - * - * @type int $0 The width in pixels. - * @type int $1 The height in pixels. - * } + * @param array $dimensions The image width and height. * @param int $current_width The current width of the image. * @param int $current_height The current height of the image. * @param int $max_width The maximum width permitted. @@ -517,7 +490,7 @@ function wp_constrain_dimensions( $current_width, $current_height, $max_width = * Images will be cropped to the specified dimensions within the defined crop area. * 3. If true, images will be cropped to the specified dimensions using center positions. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $orig_w Original width in pixels. * @param int $orig_h Original height in pixels. @@ -525,14 +498,14 @@ function wp_constrain_dimensions( $current_width, $current_height, $max_width = * @param int $dest_h New height in pixels. * @param bool|array $crop Optional. Whether to crop image to specified width and height or resize. * An array can specify positioning of the crop area. Default false. - * @return array|false Returned array matches parameters for `imagecopyresampled()`. False on failure. + * @return false|array False on failure. Returned array matches parameters for `imagecopyresampled()`. */ function image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = false ) { if ( $orig_w <= 0 || $orig_h <= 0 ) { return false; } - // At least one of $dest_w or $dest_h must be specific. + // at least one of dest_w or dest_h must be specific if ( $dest_w <= 0 && $dest_h <= 0 ) { return false; } @@ -540,10 +513,10 @@ function image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = fa /** * Filters whether to preempt calculating the image resize dimensions. * - * Returning a non-null value from the filter will effectively short-circuit + * Passing a non-null value to the filter will effectively short-circuit * image_resize_dimensions(), returning that value instead. * - * @since 3.4.0 + * @since WP-3.4.0 * * @param null|mixed $null Whether to preempt output of the resize dimensions. * @param int $orig_w Original width in pixels. @@ -554,35 +527,12 @@ function image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = fa * An array can specify positioning of the crop area. Default false. */ $output = apply_filters( 'image_resize_dimensions', null, $orig_w, $orig_h, $dest_w, $dest_h, $crop ); - if ( null !== $output ) { return $output; } - // Stop if the destination size is larger than the original image dimensions. - if ( empty( $dest_h ) ) { - if ( $orig_w < $dest_w ) { - return false; - } - } elseif ( empty( $dest_w ) ) { - if ( $orig_h < $dest_h ) { - return false; - } - } else { - if ( $orig_w < $dest_w && $orig_h < $dest_h ) { - return false; - } - } - if ( $crop ) { - /* - * Crop the largest possible portion of the original image that we can size to $dest_w x $dest_h. - * Note that the requested crop dimensions are used as a maximum bounding box for the original image. - * If the original image's width or height is less than the requested width or height - * only the greater one will be cropped. - * For example when the original image is 600x300, and the requested crop dimensions are 400x400, - * the resulting image will be 400x300. - */ + // 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; $new_w = min( $dest_w, $orig_w ); $new_h = min( $dest_h, $orig_h ); @@ -622,7 +572,7 @@ function image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = fa $s_y = floor( ( $orig_h - $crop_h ) / 2 ); } } else { - // Resize using $dest_w x $dest_h as a maximum bounding box. + // don't crop, just resize using $dest_w x $dest_h as a maximum bounding box $crop_w = $orig_w; $crop_h = $orig_h; @@ -632,29 +582,15 @@ function image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = fa list( $new_w, $new_h ) = wp_constrain_dimensions( $orig_w, $orig_h, $dest_w, $dest_h ); } - if ( wp_fuzzy_number_match( $new_w, $orig_w ) && wp_fuzzy_number_match( $new_h, $orig_h ) ) { - // The new size has virtually the same dimensions as the original image. - - /** - * Filters whether to proceed with making an image sub-size with identical dimensions - * with the original/source image. Differences of 1px may be due to rounding and are ignored. - * - * @since 5.3.0 - * - * @param bool $proceed The filtered value. - * @param int $orig_w Original image width. - * @param int $orig_h Original image height. - */ - $proceed = (bool) apply_filters( 'wp_image_resize_identical_dimensions', false, $orig_w, $orig_h ); - - if ( ! $proceed ) { - return false; - } + // if the resulting image would be the same size or larger we don't want to resize it + if ( $new_w >= $orig_w && $new_h >= $orig_h && $dest_w != $orig_w && $dest_h != $orig_h ) { + return false; } - // The return array matches the parameters to imagecopyresampled(). + // the return array matches the parameters to imagecopyresampled() // int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h ); + } /** @@ -664,14 +600,14 @@ function image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = fa * {@see 'image_make_intermediate_size'} filter can be used to hook in and change the * values of the returned array. The only parameter is the resized file path. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param string $file File path. * @param int $width Image width. * @param int $height Image height. * @param bool $crop Optional. Whether to crop image to specified width and height or resize. * Default false. - * @return array|false Metadata array on success. False if no image was created. + * @return false|array False, if no image was created. Metadata array on success. */ function image_make_intermediate_size( $file, $width, $height, $crop = false ) { if ( $width || $height ) { @@ -694,7 +630,7 @@ function image_make_intermediate_size( $file, $width, $height, $crop = false ) { /** * Helper function to test if aspect ratios for two images match. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param int $source_width Width of the first image in pixels. * @param int $source_height Height of the first image in pixels. @@ -716,7 +652,7 @@ function wp_image_matches_ratio( $source_width, $source_height, $target_width, $ } // If the image dimensions are within 1px of the expected size, we consider it a match. - $matched = ( wp_fuzzy_number_match( $constrained_size[0], $expected_size[0] ) && wp_fuzzy_number_match( $constrained_size[1], $expected_size[1] ) ); + $matched = ( abs( $constrained_size[0] - $expected_size[0] ) <= 1 && abs( $constrained_size[1] - $expected_size[1] ) <= 1 ); return $matched; } @@ -740,26 +676,25 @@ function wp_image_matches_ratio( $source_width, $source_height, $target_width, $ * efficient than having to find the closest-sized image and then having the * browser scale down the image. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $post_id Attachment ID. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array - * of width and height values in pixels (in that order). Default 'thumbnail'. - * @return array|false { + * @param array|string $size Optional. Image size. Accepts any valid image size, or an array + * of width and height values in pixels (in that order). + * Default 'thumbnail'. + * @return false|array $data { * Array of file relative path, width, and height on success. Additionally includes absolute - * path and URL if registered size is passed to `$size` parameter. False on failure. + * path and URL if registered size is passed to $size parameter. False on failure. * - * @type string $file Path of image relative to uploads directory. - * @type int $width Width of image in pixels. - * @type int $height Height of image in pixels. - * @type string $path Absolute filesystem path of image. - * @type string $url URL of image. + * @type string $file Image's path relative to uploads directory + * @type int $width Width of image + * @type int $height Height of image + * @type string $path Image's absolute filesystem path. + * @type string $url Image's URL. * } */ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { - $imagedata = wp_get_attachment_metadata( $post_id ); - - if ( ! $size || ! is_array( $imagedata ) || empty( $imagedata['sizes'] ) ) { + if ( ! $size || ! is_array( $imagedata = wp_get_attachment_metadata( $post_id ) ) || empty( $imagedata['sizes'] ) ) { return false; } @@ -776,7 +711,7 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { foreach ( $imagedata['sizes'] as $_size => $data ) { // If there's an exact match to an existing image size, short circuit. - if ( (int) $data['width'] === (int) $size[0] && (int) $data['height'] === (int) $size[1] ) { + if ( $data['width'] == $size[0] && $data['height'] == $size[1] ) { $candidates[ $data['width'] * $data['height'] ] = $data; break; } @@ -805,7 +740,7 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { $data = array_shift( $candidates ); /* * When the size requested is smaller than the thumbnail dimensions, we - * fall back to the thumbnail size to maintain backward compatibility with + * fall back to the thumbnail size to maintain backwards compatibility with * pre 4.6 versions of WordPress. */ } elseif ( ! empty( $imagedata['sizes']['thumbnail'] ) && $imagedata['sizes']['thumbnail']['width'] >= $size[0] && $imagedata['sizes']['thumbnail']['width'] >= $size[1] ) { @@ -826,7 +761,7 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { return false; } - // Include the full filesystem path of the intermediate file. + // include the full filesystem path of the intermediate file if ( empty( $data['path'] ) && ! empty( $data['file'] ) && ! empty( $imagedata['file'] ) ) { $file_url = wp_get_attachment_url( $post_id ); $data['path'] = path_join( dirname( $imagedata['file'] ), $data['file'] ); @@ -836,196 +771,109 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) { /** * Filters the output of image_get_intermediate_size() * - * @since 4.4.0 + * @since WP-4.4.0 * * @see image_get_intermediate_size() * * @param array $data Array of file relative path, width, and height on success. May also include * file absolute path and URL. - * @param int $post_id The ID of the image attachment. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). + * @param int $post_id The post_id of the image attachment + * @param string|array $size Registered image size or flat array of initially-requested height and width + * dimensions (in that order). */ return apply_filters( 'image_get_intermediate_size', $data, $post_id, $size ); } /** - * Gets the available intermediate image size names. + * Gets the available intermediate image sizes. * - * @since 3.0.0 + * @since WP-3.0.0 * - * @return string[] An array of image size names. + * @return array Returns a filtered array of image size strings. */ function get_intermediate_image_sizes() { - $default_sizes = array( 'thumbnail', 'medium', 'medium_large', 'large' ); - $additional_sizes = wp_get_additional_image_sizes(); - - if ( ! empty( $additional_sizes ) ) { - $default_sizes = array_merge( $default_sizes, array_keys( $additional_sizes ) ); + $_wp_additional_image_sizes = wp_get_additional_image_sizes(); + $image_sizes = array( 'thumbnail', 'medium', 'medium_large', 'large' ); // Standard sizes + if ( ! empty( $_wp_additional_image_sizes ) ) { + $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) ); } /** * Filters the list of intermediate image sizes. * - * @since 2.5.0 + * @since WP-2.5.0 * - * @param string[] $default_sizes An array of intermediate image size names. Defaults - * are 'thumbnail', 'medium', 'medium_large', 'large'. + * @param array $image_sizes An array of intermediate image sizes. Defaults + * are 'thumbnail', 'medium', 'medium_large', 'large'. */ - return apply_filters( 'intermediate_image_sizes', $default_sizes ); + return apply_filters( 'intermediate_image_sizes', $image_sizes ); } /** - * Returns a normalized list of all currently registered image sub-sizes. + * Retrieve an image to represent an attachment. * - * @since 5.3.0 - * @uses wp_get_additional_image_sizes() - * @uses get_intermediate_image_sizes() + * A mime icon for files, thumbnail or intermediate size for images. * - * @return array[] Associative array of arrays of image sub-size information, - * keyed by image size name. - */ -function wp_get_registered_image_subsizes() { - $additional_sizes = wp_get_additional_image_sizes(); - $all_sizes = array(); - - foreach ( get_intermediate_image_sizes() as $size_name ) { - $size_data = array( - 'width' => 0, - 'height' => 0, - 'crop' => false, - ); - - if ( isset( $additional_sizes[ $size_name ]['width'] ) ) { - // For sizes added by plugins and themes. - $size_data['width'] = (int) $additional_sizes[ $size_name ]['width']; - } else { - // For default sizes set in options. - $size_data['width'] = (int) get_option( "{$size_name}_size_w" ); - } - - if ( isset( $additional_sizes[ $size_name ]['height'] ) ) { - $size_data['height'] = (int) $additional_sizes[ $size_name ]['height']; - } else { - $size_data['height'] = (int) get_option( "{$size_name}_size_h" ); - } - - if ( empty( $size_data['width'] ) && empty( $size_data['height'] ) ) { - // This size isn't set. - continue; - } - - if ( isset( $additional_sizes[ $size_name ]['crop'] ) ) { - $size_data['crop'] = $additional_sizes[ $size_name ]['crop']; - } else { - $size_data['crop'] = get_option( "{$size_name}_crop" ); - } - - if ( ! is_array( $size_data['crop'] ) || empty( $size_data['crop'] ) ) { - $size_data['crop'] = (bool) $size_data['crop']; - } - - $all_sizes[ $size_name ] = $size_data; - } - - return $all_sizes; -} - -/** - * Retrieves an image to represent an attachment. + * The returned array contains four values: the URL of the attachment image src, + * the width of the image file, the height of the image file, and a boolean + * representing whether the returned array describes an intermediate (generated) + * image size or the original, full-sized upload. * - * @since 2.5.0 + * @since WP-2.5.0 * * @param int $attachment_id Image attachment ID. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of - * width and height values in pixels (in that order). Default 'thumbnail'. - * @param bool $icon Optional. Whether the image should fall back to a mime type icon. Default false. - * @return array|false { - * Array of image data, or boolean false if no image is available. - * - * @type string $0 Image source URL. - * @type int $1 Image width in pixels. - * @type int $2 Image height in pixels. - * @type bool $3 Whether the image is a resized image. - * } + * @param string|array $size Optional. Image size. Accepts any valid image size, or an array of width + * and height values in pixels (in that order). Default 'thumbnail'. + * @param bool $icon Optional. Whether the image should be treated as an icon. Default false. + * @return false|array Returns an array (url, width, height, is_intermediate), or false, if no image is available. */ function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon = false ) { - // Get a thumbnail or intermediate image if there is one. + // get a thumbnail or intermediate image if there is one $image = image_downsize( $attachment_id, $size ); if ( ! $image ) { $src = false; - if ( $icon ) { - $src = wp_mime_type_icon( $attachment_id ); + if ( $icon && $src = wp_mime_type_icon( $attachment_id ) ) { + /** This filter is documented in wp-includes/post.php */ + $icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' ); - if ( $src ) { - /** This filter is documented in wp-includes/post.php */ - $icon_dir = apply_filters( 'icon_dir', ABSPATH . WPINC . '/images/media' ); - - $src_file = $icon_dir . '/' . wp_basename( $src ); - list( $width, $height ) = wp_getimagesize( $src_file ); - } + $src_file = $icon_dir . '/' . wp_basename( $src ); + list( $width, $height ) = @getimagesize( $src_file ); } if ( $src && $width && $height ) { - $image = array( $src, $width, $height, false ); + $image = array( $src, $width, $height ); } } /** - * Filters the attachment image source result. + * Filters the image src result. * - * @since 4.3.0 + * @since WP-4.3.0 * - * @param array|false $image { - * Array of image data, or boolean false if no image is available. - * - * @type string $0 Image source URL. - * @type int $1 Image width in pixels. - * @type int $2 Image height in pixels. - * @type bool $3 Whether the image is a resized image. - * } + * @param array|false $image Either array with src, width & height, icon src, or false. * @param int $attachment_id Image attachment ID. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). - * @param bool $icon Whether the image should be treated as an icon. + * @param string|array $size Size of image. Image size or array of width and height values + * (in that order). Default 'thumbnail'. + * @param bool $icon Whether the image should be treated as an icon. Default false. */ return apply_filters( 'wp_get_attachment_image_src', $image, $attachment_id, $size, $icon ); } /** - * Gets an HTML img element representing an image attachment. + * Get an HTML img element representing an image attachment * * While `$size` will accept an array, it is better to register a size with * add_image_size() so that a cropped version is generated. It's much more * efficient than having to find the closest-sized image and then having the * browser scale down the image. * - * @since 2.5.0 - * @since 4.4.0 The `$srcset` and `$sizes` attributes were added. - * @since 5.5.0 The `$loading` attribute was added. - * @since 6.1.0 The `$decoding` attribute was added. + * @since WP-2.5.0 * * @param int $attachment_id Image attachment ID. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array - * of width and height values in pixels (in that order). Default 'thumbnail'. + * @param string|array $size Optional. Image size. Accepts any valid image size, or an array of width + * and height values in pixels (in that order). Default 'thumbnail'. * @param bool $icon Optional. Whether the image should be treated as an icon. Default false. - * @param string|array $attr { - * Optional. Attributes for the image markup. - * - * @type string $src Image attachment URL. - * @type string $class CSS class name or space-separated list of classes. - * Default `attachment-$size_class size-$size_class`, - * where `$size_class` is the image size being requested. - * @type string $alt Image description for the alt attribute. - * @type string $srcset The 'srcset' attribute value. - * @type string $sizes The 'sizes' attribute value. - * @type string|false $loading The 'loading' attribute value. Passing a value of false - * will result in the attribute being omitted for the image. - * Defaults to 'lazy', depending on wp_lazy_loading_enabled(). - * @type string $decoding The 'decoding' attribute value. Possible values are - * 'async' (default), 'sync', or 'auto'. Passing false or an empty - * string will result in the attribute being omitted. - * } + * @param string|array $attr Optional. Attributes for the image markup. Default empty. * @return string HTML img element or empty string on failure. */ function wp_get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = false, $attr = '' ) { @@ -1035,19 +883,18 @@ function wp_get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = f if ( $image ) { list( $src, $width, $height ) = $image; - $attachment = get_post( $attachment_id ); - $hwstring = image_hwstring( $width, $height ); - $size_class = $size; + $attachment = get_post( $attachment_id ); + $hwstring = image_hwstring( $width, $height ); + $size_class = $size; if ( is_array( $size_class ) ) { - $size_class = implode( 'x', $size_class ); + $size_class = join( 'x', $size_class ); } $default_attr = array( - 'src' => $src, - 'class' => "attachment-$size_class size-$size_class", - 'alt' => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ), - 'decoding' => 'async', + 'src' => $src, + 'class' => "attachment-$size_class size-$size_class", + 'alt' => trim( strip_tags( get_post_meta( $attachment_id, '_wp_attachment_image_alt', true ) ) ), ); // Add `loading` attribute. @@ -1057,13 +904,8 @@ function wp_get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = f $attr = wp_parse_args( $attr, $default_attr ); - // Omit the `decoding` attribute if the value is invalid according to the spec. - if ( empty( $attr['decoding'] ) || ! in_array( $attr['decoding'], array( 'async', 'sync', 'auto' ), true ) ) { - unset( $attr['decoding'] ); - } - - // If the default value of `lazy` for the `loading` attribute is overridden - // to omit the attribute for this image, ensure it is not included. + // If `loading` attribute default of `lazy` is overridden for this + // image to omit the attribute, ensure it is not included. if ( array_key_exists( 'loading', $attr ) && ! $attr['loading'] ) { unset( $attr['loading'] ); } @@ -1090,13 +932,13 @@ function wp_get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = f /** * Filters the list of attachment image attributes. * - * @since 2.8.0 + * @since WP-2.8.0 * - * @param string[] $attr Array of attribute values for the image markup, keyed by attribute name. + * @param array $attr Array of attribute values for the image markup, keyed by attribute name. * See wp_get_attachment_image(). * @param WP_Post $attachment Image attachment post. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). + * @param string|array $size Requested size. Image size or array of width and height values + * (in that order). Default 'thumbnail'. */ $attr = apply_filters( 'wp_get_attachment_image_attributes', $attr, $attachment, $size ); @@ -1107,46 +949,32 @@ function wp_get_attachment_image( $attachment_id, $size = 'thumbnail', $icon = f $html .= " $name=" . '"' . $value . '"'; } - $html .= '>'; + $html .= ' />'; } - /** - * Filters the HTML img element representing an image attachment. - * - * @since 5.6.0 - * - * @param string $html HTML img element or empty string on failure. - * @param int $attachment_id Image attachment ID. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). - * @param bool $icon Whether the image should be treated as an icon. - * @param string[] $attr Array of attribute values for the image markup, keyed by attribute name. - * See wp_get_attachment_image(). - */ - return apply_filters( 'wp_get_attachment_image', $html, $attachment_id, $size, $icon, $attr ); + return $html; } /** - * Gets the URL of an image attachment. + * Get the URL of an image attachment. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param int $attachment_id Image attachment ID. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of - * width and height values in pixels (in that order). Default 'thumbnail'. + * @param string|array $size Optional. Image size to retrieve. Accepts any valid image size, or an array + * of width and height values in pixels (in that order). Default 'thumbnail'. * @param bool $icon Optional. Whether the image should be treated as an icon. Default false. - * @return string|false Attachment URL or false if no image is available. If `$size` does not match - * any registered image size, the original image URL will be returned. + * @return string|false Attachment URL or false if no image is available. */ function wp_get_attachment_image_url( $attachment_id, $size = 'thumbnail', $icon = false ) { $image = wp_get_attachment_image_src( $attachment_id, $size, $icon ); - return isset( $image[0] ) ? $image[0] : false; + return isset( $image['0'] ) ? $image['0'] : false; } /** - * Gets the attachment path relative to the upload directory. + * Get the attachment path relative to the upload directory. * - * @since 4.4.1 + * @since WP-4.4.1 * @access private * * @param string $file Attachment file name. @@ -1160,7 +988,7 @@ function _wp_get_attachment_relative_path( $file ) { } if ( false !== strpos( $dirname, 'wp-content/uploads' ) ) { - // Get the directory name relative to the upload directory (back compat for pre-2.7 uploads). + // Get the directory name relative to the upload directory (back compat for pre-2.7 uploads) $dirname = substr( $dirname, strpos( $dirname, 'wp-content/uploads' ) + 18 ); $dirname = ltrim( $dirname, '/' ); } @@ -1169,21 +997,17 @@ function _wp_get_attachment_relative_path( $file ) { } /** - * Gets the image size as array from its meta data. + * Get the image size as array from its meta data. * * Used for responsive images. * - * @since 4.4.0 + * @since WP-4.4.0 * @access private * - * @param string $size_name Image size. Accepts any registered image size name. + * @param string $size_name Image size. Accepts any valid image size name ('thumbnail', 'medium', etc.). * @param array $image_meta The image meta data. - * @return array|false { - * Array of width and height or false if the size isn't present in the meta data. - * - * @type int $0 Image width. - * @type int $1 Image height. - * } + * @return array|bool Array of width and height values in pixels (in that order) + * or false if the size doesn't exist. */ function _wp_get_image_size_from_meta( $size_name, $image_meta ) { if ( 'full' === $size_name ) { @@ -1204,21 +1028,19 @@ function _wp_get_image_size_from_meta( $size_name, $image_meta ) { /** * Retrieves the value for an image attachment's 'srcset' attribute. * - * @since 4.4.0 + * @since WP-4.4.0 * * @see wp_calculate_image_srcset() * * @param int $attachment_id Image attachment ID. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of + * @param array|string $size Optional. Image size. Accepts any valid image size, or an array of * width and height values in pixels (in that order). Default 'medium'. * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. * Default null. - * @return string|false A 'srcset' value string or false. + * @return string|bool A 'srcset' value string or false. */ function wp_get_attachment_image_srcset( $attachment_id, $size = 'medium', $image_meta = null ) { - $image = wp_get_attachment_image_src( $attachment_id, $size ); - - if ( ! $image ) { + if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) { return false; } @@ -1238,32 +1060,22 @@ function wp_get_attachment_image_srcset( $attachment_id, $size = 'medium', $imag /** * A helper function to calculate the image sources to include in a 'srcset' attribute. * - * @since 4.4.0 - * - * @param int[] $size_array { - * An array of width and height values. + * @since WP-4.4.0 * - * @type int $0 The width in pixels. - * @type int $1 The height in pixels. - * } + * @param array $size_array Array of width and height values in pixels (in that order). * @param string $image_src The 'src' of the image. * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'. - * @param int $attachment_id Optional. The image attachment ID. Default 0. - * @return string|false The 'srcset' attribute value. False on error or when only one source exists. + * @param int $attachment_id Optional. The image attachment ID to pass to the filter. Default 0. + * @return string|bool The 'srcset' attribute value. False on error or when only one source exists. */ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attachment_id = 0 ) { /** - * Pre-filters the image meta to be able to fix inconsistencies in the stored data. + * Let plugins pre-filter the image meta to be able to fix inconsistencies in the stored data. * - * @since 4.5.0 + * @since WP-4.5.0 * * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'. - * @param int[] $size_array { - * An array of requested width and height values. - * - * @type int $0 The width in pixels. - * @type int $1 The height in pixels. - * } + * @param array $size_array Array of width and height values in pixels (in that order). * @param string $image_src The 'src' of the image. * @param int $attachment_id The image attachment ID or 0 if not supplied. */ @@ -1287,7 +1099,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac $image_basename = wp_basename( $image_meta['file'] ); /* - * WordPress flattens animated GIFs into one frame when generating intermediate sizes. + * ClassicPress flattens animated GIFs into one frame when generating intermediate sizes. * To avoid hiding animation in user content, if src is a full size GIF, a srcset attribute is not generated. * If src is an intermediate size GIF, the full size is excluded from srcset to keep a flattened GIF from becoming animated. */ @@ -1320,7 +1132,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac } /* - * Images that have been edited in WordPress after being uploaded will + * Images that have been edited in ClassicPress after being uploaded will * contain a unique hash. Look for that hash and use it later to filter * out images that are leftovers from previous versions. */ @@ -1329,17 +1141,12 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac /** * Filters the maximum image width to be included in a 'srcset' attribute. * - * @since 4.4.0 - * - * @param int $max_width The maximum image width to be included in the 'srcset'. Default '2048'. - * @param int[] $size_array { - * An array of requested width and height values. + * @since WP-4.4.0 * - * @type int $0 The width in pixels. - * @type int $1 The height in pixels. - * } + * @param int $max_width The maximum image width to be included in the 'srcset'. Default '1600'. + * @param array $size_array Array of width and height values in pixels (in that order). */ - $max_srcset_image_width = apply_filters( 'max_srcset_image_width', 2048, $size_array ); + $max_srcset_image_width = apply_filters( 'max_srcset_image_width', 1600, $size_array ); // Array to hold URL candidates. $sources = array(); @@ -1347,7 +1154,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac /** * To make sure the ID matches our image src, we will check to see if any sizes in our attachment * meta match our $image_src. If no matches are found we don't return a srcset to avoid serving - * an incorrect image. See #35045. + * an incorrect image. See https://core.trac.wordpress.org/ticket/35045. */ $src_matched = false; @@ -1365,8 +1172,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac // If the file name is part of the `src`, we've confirmed a match. if ( ! $src_matched && false !== strpos( $image_src, $dirname . $image['file'] ) ) { - $src_matched = true; - $is_src = true; + $src_matched = $is_src = true; } // Filter out images that are from previous edits. @@ -1391,7 +1197,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac 'value' => $image['width'], ); - // The 'src' image has to be the first in the 'srcset', because of a bug in iOS8. See #35030. + // The 'src' image has to be the first in the 'srcset', because of a bug in iOS8. See https://core.trac.wordpress.org/ticket/35030. if ( $is_src ) { $sources = array( $image['width'] => $source ) + $sources; } else { @@ -1403,7 +1209,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac /** * Filters an image's 'srcset' sources. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param array $sources { * One or more arrays of source data to include in the 'srcset'. @@ -1416,12 +1222,7 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac * pixel density value if paired with an 'x' descriptor. * } * } - * @param array $size_array { - * An array of requested width and height values. - * - * @type int $0 The width in pixels. - * @type int $1 The height in pixels. - * } + * @param array $size_array Array of width and height values in pixels (in that order). * @param string $image_src The 'src' of the image. * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'. * @param int $attachment_id Image attachment ID or 0. @@ -1445,21 +1246,19 @@ function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attac /** * Retrieves the value for an image attachment's 'sizes' attribute. * - * @since 4.4.0 + * @since WP-4.4.0 * * @see wp_calculate_image_sizes() * * @param int $attachment_id Image attachment ID. - * @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array of - * width and height values in pixels (in that order). Default 'medium'. + * @param array|string $size Optional. Image size. Accepts any valid image size, or an array of width + * and height values in pixels (in that order). Default 'medium'. * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. * Default null. - * @return string|false A valid source size value for use in a 'sizes' attribute or false. + * @return string|bool A valid source size value for use in a 'sizes' attribute or false. */ function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image_meta = null ) { - $image = wp_get_attachment_image_src( $attachment_id, $size ); - - if ( ! $image ) { + if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) { return false; } @@ -1479,16 +1278,16 @@ function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image /** * Creates a 'sizes' attribute value for an image. * - * @since 4.4.0 + * @since WP-4.4.0 * - * @param string|int[] $size Image size. Accepts any registered image size name, or an array of - * width and height values in pixels (in that order). + * @param array|string $size Image size to retrieve. Accepts any valid image size, or an array + * of width and height values in pixels (in that order). Default 'medium'. * @param string $image_src Optional. The URL to the image file. Default null. * @param array $image_meta Optional. The image meta data as returned by 'wp_get_attachment_metadata()'. * Default null. * @param int $attachment_id Optional. Image attachment ID. Either `$image_meta` or `$attachment_id` * is needed when using the image size name as argument for `$size`. Default 0. - * @return string|false A valid source size value for use in a 'sizes' attribute or false. + * @return string|bool A valid source size value for use in a 'sizes' attribute or false. */ function wp_calculate_image_sizes( $size, $image_src = null, $image_meta = null, $attachment_id = 0 ) { $width = 0; @@ -1518,11 +1317,11 @@ function wp_calculate_image_sizes( $size, $image_src = null, $image_meta = null, /** * Filters the output of 'wp_calculate_image_sizes()'. * - * @since 4.4.0 + * @since WP-4.4.0 * * @param string $sizes A source size value for use in a 'sizes' attribute. - * @param string|int[] $size Requested image size. Can be any registered image size name, or - * an array of width and height values in pixels (in that order). + * @param array|string $size Requested size. Image size or array of width and height values + * in pixels (in that order). * @param string|null $image_src The URL to the image file or null. * @param array|null $image_meta The image meta data as returned by wp_get_attachment_metadata() or null. * @param int $attachment_id Image attachment ID of the original image or 0. @@ -1538,25 +1337,24 @@ function wp_calculate_image_sizes( $size, $image_src = null, $image_meta = null, * attachment post IDs that are in post_content for the exported website may not match * the same attachments at the new website. * - * @since 5.5.0 + * @since WP-5.5.0 * - * @param string $image_location The full path or URI to the image file. - * @param array $image_meta The attachment meta data as returned by 'wp_get_attachment_metadata()'. - * @param int $attachment_id Optional. The image attachment ID. Default 0. + * @param string $image_location The full path or URI to the image file. + * @param array $image_meta The attachment meta data as returned by 'wp_get_attachment_metadata()'. * @return bool Whether the image meta is for this image file. */ -function wp_image_file_matches_image_meta( $image_location, $image_meta, $attachment_id = 0 ) { +function wp_image_file_matches_image_meta( $image_location, $image_meta ) { $match = false; // Ensure the $image_meta is valid. if ( isset( $image_meta['file'] ) && strlen( $image_meta['file'] ) > 4 ) { - // Remove query args in image URI. + // Remove quiery args if image URI. list( $image_location ) = explode( '?', $image_location ); // Check if the relative image path from the image meta is at the end of $image_location. if ( strrpos( $image_location, $image_meta['file'] ) === strlen( $image_location ) - strlen( $image_meta['file'] ) ) { $match = true; - } else { + } elseif ( ! empty( $image_meta['sizes'] ) ) { // Retrieve the uploads sub-directory from the full size image. $dirname = _wp_get_attachment_relative_path( $image_meta['file'] ); @@ -1564,101 +1362,73 @@ function wp_image_file_matches_image_meta( $image_location, $image_meta, $attach $dirname = trailingslashit( $dirname ); } - if ( ! empty( $image_meta['original_image'] ) ) { - $relative_path = $dirname . $image_meta['original_image']; + foreach ( $image_meta['sizes'] as $image_size_data ) { + $relative_path = $dirname . $image_size_data['file']; if ( strrpos( $image_location, $relative_path ) === strlen( $image_location ) - strlen( $relative_path ) ) { $match = true; - } - } - - if ( ! $match && ! empty( $image_meta['sizes'] ) ) { - foreach ( $image_meta['sizes'] as $image_size_data ) { - $relative_path = $dirname . $image_size_data['file']; - - if ( strrpos( $image_location, $relative_path ) === strlen( $image_location ) - strlen( $relative_path ) ) { - $match = true; - break; - } + break; } } } } /** - * Filters whether an image path or URI matches image meta. + * Filter whether an image path or URI matches image meta. * - * @since 5.5.0 + * @since WP-5.5.0 * * @param bool $match Whether the image relative path from the image meta * matches the end of the URI or path to the image file. * @param string $image_location Full path or URI to the tested image file. - * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'. - * @param int $attachment_id The image attachment ID or 0 if not supplied. + * @param array $image_meta The image meta data being tested. */ - return apply_filters( 'wp_image_file_matches_image_meta', $match, $image_location, $image_meta, $attachment_id ); + return apply_filters( 'wp_image_file_matches_image_meta', $match, $image_location, $image_meta ); } /** * Determines an image's width and height dimensions based on the source file. * - * @since 5.5.0 + * @since WP-5.5.0 * - * @param string $image_src The image source file. - * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'. - * @param int $attachment_id Optional. The image attachment ID. Default 0. + * @param string $image_src The image source file. + * @param array $image_meta The image meta data as returned by 'wp_get_attachment_metadata()'. * @return array|false Array with first element being the width and second element being the height, * or false if dimensions cannot be determined. */ -function wp_image_src_get_dimensions( $image_src, $image_meta, $attachment_id = 0 ) { - $dimensions = false; +function wp_image_src_get_dimensions( $image_src, $image_meta ) { + if ( ! wp_image_file_matches_image_meta( $image_src, $image_meta ) ) { + return false; + } // Is it a full size image? - if ( - isset( $image_meta['file'] ) && - strpos( $image_src, wp_basename( $image_meta['file'] ) ) !== false - ) { - $dimensions = array( + if ( strpos( $image_src, $image_meta['file'] ) !== false ) { + return array( (int) $image_meta['width'], (int) $image_meta['height'], ); } - if ( ! $dimensions && ! empty( $image_meta['sizes'] ) ) { + if ( ! empty( $image_meta['sizes'] ) ) { $src_filename = wp_basename( $image_src ); foreach ( $image_meta['sizes'] as $image_size_data ) { if ( $src_filename === $image_size_data['file'] ) { - $dimensions = array( + return array( (int) $image_size_data['width'], (int) $image_size_data['height'], ); - - break; } } } - /** - * Filters the 'wp_image_src_get_dimensions' value. - * - * @since 5.7.0 - * - * @param array|false $dimensions Array with first element being the width - * and second element being the height, or - * false if dimensions could not be determined. - * @param string $image_src The image source file. - * @param array $image_meta The image meta data as returned by - * 'wp_get_attachment_metadata()'. - * @param int $attachment_id The image attachment ID. Default 0. - */ - return apply_filters( 'wp_image_src_get_dimensions', $dimensions, $image_src, $image_meta, $attachment_id ); + return false; } /** * Adds 'srcset' and 'sizes' attributes to an existing 'img' element. * - * @since 4.4.0 + * @since WP-4.4.0 * * @see wp_calculate_image_srcset() * @see wp_calculate_image_sizes() @@ -1721,21 +1491,20 @@ function wp_image_add_srcset_and_sizes( $image, $image_meta, $attachment_id ) { } // Add the srcset and sizes attributes to the image markup. - return preg_replace( '/]+?)[\/ ]*>/', '', $image ); + return preg_replace( '/]+?)[\/ ]*>/', '', $image ); } return $image; } /** - * Determines whether to add the `loading` attribute to the specified tag in the specified context. + * Determine whether to add the `loading` attribute to the specified tag in the specified context. * - * @since 5.5.0 - * @since 5.7.0 Now returns `true` by default for `iframe` tags. + * @since WP-5.5.0 + * @since WP-5.7.0 Now returns `true` by default for `iframe` tags. * * @param string $tag_name The tag name. - * @param string $context Additional context, like the current filter name - * or the function name from where this was called. + * @param string $context Additional context, like the current filter name or the function name from where this was called. * @return bool Whether to add the attribute. */ function wp_lazy_loading_enabled( $tag_name, $context ) { @@ -1747,12 +1516,11 @@ function wp_lazy_loading_enabled( $tag_name, $context ) { /** * Filters whether to add the `loading` attribute to the specified tag in the specified context. * - * @since 5.5.0 + * @since WP-5.5.0 * - * @param bool $default Default value. + * @param bool $default Default value. * @param string $tag_name The tag name. - * @param string $context Additional context, like the current filter name - * or the function name from where this was called. + * @param string $context Additional context, like the current filter name or the function name from where this was called. */ return (bool) apply_filters( 'wp_lazy_loading_enabled', $default, $tag_name, $context ); } @@ -1766,8 +1534,8 @@ function wp_lazy_loading_enabled( $tag_name, $context ) { * as adding `loading` attributes to `iframe` HTML tags. * Future similar optimizations should be added/expected here. * - * @since 5.5.0 - * @since 5.7.0 Now supports adding `loading` attributes to `iframe` tags. + * @since WP-5.5.0 + * @since WP-5.7.0 Now supports adding `loading` attributes to `iframe` tags. * * @see wp_img_tag_add_width_and_height_attr() * @see wp_img_tag_add_srcset_and_sizes_attr() @@ -1775,8 +1543,7 @@ function wp_lazy_loading_enabled( $tag_name, $context ) { * @see wp_iframe_tag_add_loading_attr() * * @param string $content The HTML content to be filtered. - * @param string $context Optional. Additional context to pass to the filters. - * Defaults to `current_filter()` when not set. + * @param string $context Optional. Additional context to pass to the filters. Defaults to `current_filter()` when not set. * @return string Converted content with images modified. */ function wp_filter_content_tags( $content, $context = null ) { @@ -1808,8 +1575,8 @@ function wp_filter_content_tags( $content, $context = null ) { if ( $attachment_id ) { // If exactly the same image tag is used more than once, overwrite it. // All identical tags will be replaced later with 'str_replace()'. - $images[ $tag ] = $attachment_id; - break; + $images[ $tag ] = $attachment_id; + break; } } $images[ $tag ] = 0; @@ -1853,31 +1620,9 @@ function wp_filter_content_tags( $content, $context = null ) { $filtered_image = wp_img_tag_add_loading_attr( $filtered_image, $context ); } - // Add 'decoding=async' attribute unless a 'decoding' attribute is already present. - if ( ! str_contains( $filtered_image, ' decoding=' ) ) { - $filtered_image = wp_img_tag_add_decoding_attr( $filtered_image, $context ); - } - - /** - * Filters an img tag within the content for a given context. - * - * @since 6.0.0 - * - * @param string $filtered_image Full img tag with attributes that will replace the source img tag. - * @param string $context Additional context, like the current filter name or the function name from where this was called. - * @param int $attachment_id The image attachment ID. May be 0 in case the image is not an attachment. - */ - $filtered_image = apply_filters( 'wp_content_img_tag', $filtered_image, $context, $attachment_id ); - if ( $filtered_image !== $match[0] ) { $content = str_replace( $match[0], $filtered_image, $content ); } - - /* - * Unset image lookup to not run the same logic again unnecessarily if the same image tag is used more than - * once in the same blob of content. - */ - unset( $images[ $match[0] ] ); } // Filter an iframe match. @@ -1892,12 +1637,6 @@ function wp_filter_content_tags( $content, $context = null ) { if ( $filtered_iframe !== $match[0] ) { $content = str_replace( $match[0], $filtered_iframe, $content ); } - - /* - * Unset iframe lookup to not run the same logic again unnecessarily if the same iframe tag is used more - * than once in the same blob of content. - */ - unset( $iframes[ $match[0] ] ); } } @@ -1907,7 +1646,7 @@ function wp_filter_content_tags( $content, $context = null ) { /** * Adds `loading` attribute to an `img` HTML tag. * - * @since 5.5.0 + * @since WP-5.5.0 * * @param string $image The HTML `img` tag where the attribute should be added. * @param string $context Additional context to pass to the filters. @@ -1929,12 +1668,12 @@ function wp_img_tag_add_loading_attr( $image, $context ) { * Returning `false` or an empty string will not add the attribute. * Returning `true` will add the default value. * - * @since 5.5.0 + * @since WP-5.5.0 * * @param string|bool $value The `loading` attribute value. Returning a falsey value will result in * the attribute being omitted for the image. - * @param string $image The HTML `img` tag to be filtered. - * @param string $context Additional context about how the function was called or where the img tag is. + * @param string $image The HTML `img` tag to be filtered. + * @param string $context Additional context about how the function was called or where the img tag is. */ $value = apply_filters( 'wp_img_tag_add_loading_attr', $value, $image, $context ); @@ -1943,55 +1682,12 @@ function wp_img_tag_add_loading_attr( $image, $context ) { $value = 'lazy'; } - return str_replace( '` or `
        `. - * @type string $caption_id ID of the caption element, i.e. `
        ` or `

        `. - * @type string $align Class name that aligns the caption. Default 'alignnone'. Accepts 'alignleft', - * 'aligncenter', alignright', 'alignnone'. - * @type int $width The width of the caption, in pixels. - * @type string $caption The caption text. - * @type string $class Additional class name(s) added to the caption container. + * @type string $id ID of the div element for the caption. + * @type string $align Class name that aligns the caption. Default 'alignnone'. Accepts 'alignleft', + * 'aligncenter', alignright', 'alignnone'. + * @type int $width The width of the caption, in pixels. + * @type string $caption The caption text. + * @type string $class Additional class name(s) added to the caption container. * } - * @param string $content Optional. Shortcode content. Default empty string. + * @param string $content Shortcode content. * @return string HTML content to display the caption. */ -function img_caption_shortcode( $attr, $content = '' ) { +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( '#((?:]+>\s*)?]+>(?:\s*)?)(.*)#is', $content, $matches ) ) { @@ -2219,7 +1916,7 @@ function img_caption_shortcode( $attr, $content = '' ) { * If the filtered output isn't empty, it will be used instead of generating * the default caption template. * - * @since 2.6.0 + * @since WP-2.6.0 * * @see img_caption_shortcode() * @@ -2228,54 +1925,36 @@ function img_caption_shortcode( $attr, $content = '' ) { * @param string $content The image element, possibly wrapped in a hyperlink. */ $output = apply_filters( 'img_caption_shortcode', '', $attr, $content ); - - if ( ! empty( $output ) ) { + if ( $output != '' ) { return $output; } $atts = shortcode_atts( array( - 'id' => '', - 'caption_id' => '', - 'align' => 'alignnone', - 'width' => '', - 'caption' => '', - 'class' => '', + 'id' => '', + 'align' => 'alignnone', + 'width' => '', + 'caption' => '', + 'class' => '', ), $attr, 'caption' ); $atts['width'] = (int) $atts['width']; - if ( $atts['width'] < 1 || empty( $atts['caption'] ) ) { return $content; } - $id = ''; - $caption_id = ''; - $describedby = ''; - - if ( $atts['id'] ) { - $atts['id'] = sanitize_html_class( $atts['id'] ); - $id = 'id="' . esc_attr( $atts['id'] ) . '" '; - } - - if ( $atts['caption_id'] ) { - $atts['caption_id'] = sanitize_html_class( $atts['caption_id'] ); - } elseif ( $atts['id'] ) { - $atts['caption_id'] = 'caption-' . str_replace( '_', '-', $atts['id'] ); - } - - if ( $atts['caption_id'] ) { - $caption_id = 'id="' . esc_attr( $atts['caption_id'] ) . '" '; - $describedby = 'aria-describedby="' . esc_attr( $atts['caption_id'] ) . '" '; + if ( ! empty( $atts['id'] ) ) { + $atts['id'] = 'id="' . esc_attr( sanitize_html_class( $atts['id'] ) ) . '" '; } $class = trim( 'wp-caption ' . $atts['align'] . ' ' . $atts['class'] ); - // HTML5 captions never added the extra 10px to the image width. - $width = ( 10 + $atts['width'] ); + $html5 = current_theme_supports( 'html5', 'caption' ); + // HTML5 captions never added the extra 10px to the image width + $width = $html5 ? $atts['width'] : ( 10 + $atts['width'] ); /** * Filters the width of an image's caption. @@ -2283,7 +1962,7 @@ function img_caption_shortcode( $attr, $content = '' ) { * By default, the caption is 10 pixels greater than the width of the image, * to prevent post content from running up against a floated image. * - * @since 3.7.0 + * @since WP-3.7.0 * * @see img_caption_shortcode() * @@ -2295,24 +1974,17 @@ function img_caption_shortcode( $attr, $content = '' ) { $caption_width = apply_filters( 'img_caption_shortcode_width', $width, $atts, $content ); $style = ''; - if ( $caption_width ) { $style = 'style="width: ' . (int) $caption_width . 'px" '; } - $html = sprintf( - '

        %s%s
        ', - $id, - $describedby, - $style, - esc_attr( $class ), - do_shortcode( $content ), - sprintf( - '
        %s
        ', - $caption_id, - $atts['caption'] - ) - ); + if ( $html5 ) { + $html = '
        ' + . do_shortcode( $content ) . '
        ' . $atts['caption'] . '
        '; + } else { + $html = '
        ' + . do_shortcode( $content ) . '

        ' . $atts['caption'] . '

        '; + } return $html; } @@ -2323,28 +1995,11 @@ function img_caption_shortcode( $attr, $content = '' ) { * Builds the Gallery shortcode output. * * This implements the functionality of the Gallery Shortcode for displaying - * WordPress images on a post. - * - * @since 2.5.0 - * @since 2.8.0 Added the `$attr` parameter to set the shortcode output. New attributes included - * such as `size`, `itemtag`, `icontag`, `captiontag`, and columns. Changed markup from - * `div` tags to `dl`, `dt` and `dd` tags. Support more than one gallery on the - * same page. - * @since 2.9.0 Added support for `include` and `exclude` to shortcode. - * @since 3.5.0 Use get_post() instead of global `$post`. Handle mapping of `ids` to `include` - * and `orderby`. - * @since 3.6.0 Added validation for tags used in gallery shortcode. Add orientation information to items. - * @since 3.7.0 Introduced the `link` attribute. - * @since 3.9.0 `html5` gallery support, accepting 'itemtag', 'icontag', and 'captiontag' attributes. - * @since 4.0.0 Removed use of `extract()`. - * @since 4.1.0 Added attribute to `wp_get_attachment_link()` to output `aria-describedby`. - * @since 4.2.0 Passed the shortcode instance ID to `post_gallery` and `post_playlist` filters. - * @since 4.6.0 Standardized filter docs to match documentation standards for PHP. - * @since 5.1.0 Code cleanup for WPCS 1.0.0 coding standards. - * @since 5.3.0 Saved progress of intermediate image creation after upload. - * @since 5.5.0 Ensured that galleries can be output as a list of links in feeds. - * @since 5.6.0 Replaced order-style PHP type conversion functions with typecasts. Fix logic for - * an array of image dimensions. + * ClassicPress images on a post. + * + * @since WP-2.5.0 + * + * @staticvar int $instance * * @param array $attr { * Attributes of the gallery shortcode. @@ -2360,8 +2015,8 @@ function img_caption_shortcode( $attr, $content = '' ) { * @type string $captiontag HTML tag to use for each image's caption. * Default 'dd', or 'figcaption' when the theme registers HTML5 gallery support. * @type int $columns Number of columns of images to display. Default 3. - * @type string|int[] $size Size of the images to display. Accepts any registered image size name, or an array - * of width and height values in pixels (in that order). Default 'thumbnail'. + * @type string|array $size Size of the images to display. Accepts any valid image size, or an array of width + * and height values in pixels (in that order). Default 'thumbnail'. * @type string $ids A comma-separated list of IDs of attachments to display. Default empty. * @type string $include A comma-separated list of IDs of attachments to include. Default empty. * @type string $exclude A comma-separated list of IDs of attachments to exclude. Default empty. @@ -2390,8 +2045,8 @@ function gallery_shortcode( $attr ) { * If the filtered output isn't empty, it will be used instead of generating * the default gallery template. * - * @since 2.5.0 - * @since 4.2.0 The `$instance` parameter was added. + * @since WP-2.5.0 + * @since WP-4.2.0 The `$instance` parameter was added. * * @see gallery_shortcode() * @@ -2400,19 +2055,19 @@ function gallery_shortcode( $attr ) { * @param int $instance Unique numeric ID of this gallery shortcode instance. */ $output = apply_filters( 'post_gallery', '', $attr, $instance ); - - if ( ! empty( $output ) ) { + if ( $output != '' ) { return $output; } + $html5 = current_theme_supports( 'html5', 'gallery' ); $atts = shortcode_atts( array( 'order' => 'ASC', 'orderby' => 'menu_order ID', 'id' => $post ? $post->ID : 0, - 'itemtag' => 'figure', - 'icontag' => 'div', - 'captiontag' => 'figcaption', + 'itemtag' => $html5 ? 'figure' : 'dl', + 'icontag' => $html5 ? 'div' : 'dt', + 'captiontag' => $html5 ? 'figcaption' : 'dd', 'columns' => 3, 'size' => 'thumbnail', 'include' => '', @@ -2423,7 +2078,7 @@ function gallery_shortcode( $attr ) { 'gallery' ); - $id = (int) $atts['id']; + $id = intval( $atts['id'] ); if ( ! empty( $atts['include'] ) ) { $_attachments = get_posts( @@ -2443,7 +2098,7 @@ function gallery_shortcode( $attr ) { } } elseif ( ! empty( $atts['exclude'] ) ) { $post_parent_id = $id; - $attachments = get_children( + $attachments = get_children( array( 'post_parent' => $id, 'exclude' => $atts['exclude'], @@ -2456,7 +2111,7 @@ function gallery_shortcode( $attr ) { ); } else { $post_parent_id = $id; - $attachments = get_children( + $attachments = get_children( array( 'post_parent' => $id, 'post_status' => 'inherit', @@ -2486,16 +2141,7 @@ function gallery_shortcode( $attr ) { if ( is_feed() ) { $output = "\n"; foreach ( $attachments as $att_id => $attachment ) { - if ( ! empty( $atts['link'] ) ) { - if ( 'none' === $atts['link'] ) { - $output .= wp_get_attachment_image( $att_id, $atts['size'], false, $attr ); - } else { - $output .= wp_get_attachment_link( $att_id, $atts['size'], false ); - } - } else { - $output .= wp_get_attachment_link( $att_id, $atts['size'], true ); - } - $output .= "\n"; + $output .= wp_get_attachment_link( $att_id, $atts['size'], true ) . "\n"; } return $output; } @@ -2514,7 +2160,7 @@ function gallery_shortcode( $attr ) { $icontag = 'dt'; } - $columns = (int) $atts['columns']; + $columns = intval( $atts['columns'] ); $itemwidth = $columns > 0 ? floor( 100 / $columns ) : 100; $float = is_rtl() ? 'right' : 'left'; @@ -2525,14 +2171,17 @@ function gallery_shortcode( $attr ) { /** * Filters whether to print default gallery styles. * - * @since 3.1.0 + * @since WP-3.1.0 * * @param bool $print Whether to print default gallery styles. - * Defaults to false. + * Defaults to false if the theme supports HTML5 galleries. + * Otherwise, defaults to true. */ - if ( apply_filters( 'use_default_gallery_style', false ) ) { + if ( apply_filters( 'use_default_gallery_style', ! $html5 ) ) { + $type_attr = current_theme_supports( 'html5', 'style' ) ? '' : ' type="text/css"'; + $gallery_style = " - \n\t\t"; } - $size_class = sanitize_html_class( is_array( $atts['size'] ) ? implode( 'x', $atts['size'] ) : $atts['size'] ); + $size_class = sanitize_html_class( $atts['size'] ); $gallery_div = ". ?> - - -
        -
        - - - - 'language-switcher-locales', - 'name' => 'wp_lang', - 'selected' => determine_locale(), - 'show_available_translations' => false, - 'explicit_option_en_us' => true, - 'languages' => $languages, - ); - - /** - * Filters default arguments for the Languages select input on the login screen. - * - * The arguments get passed to the wp_dropdown_languages() function. - * - * @since 5.9.0 - * - * @param array $args Arguments for the Languages select input on the login screen. - */ - wp_dropdown_languages( apply_filters( 'login_language_dropdown_args', $args ) ); - ?> - - - - - - - - - - - - - - - -
        -
        - - - - if ( ! empty( $input_id ) ) { - ?> - - + + +
        @@ -369,34 +253,32 @@ function login_footer( $input_id = '' ) { } /** - * Outputs the JavaScript to handle the form shaking on the login page. - * - * @since 3.0.0 + * @since WP-3.0.0 */ function wp_shake_js() { ?> - + - + 0 ) { - update_option( 'admin_email_lifespan', time() + $remind_interval ); - } - - $redirect_to = add_query_arg( 'admin_email_remind_later', 1, $redirect_to ); - wp_safe_redirect( $redirect_to ); - exit; - } - - if ( ! empty( $_POST['correct-admin-email'] ) ) { - if ( ! check_admin_referer( 'confirm_admin_email', 'confirm_admin_email_nonce' ) ) { - wp_safe_redirect( wp_login_url() ); - exit; - } - - /** - * Filters the interval for redirecting the user to the admin email confirmation screen. - * - * If `0` (zero) is returned, the user will not be redirected. - * - * @since 5.3.0 - * - * @param int $interval Interval time (in seconds). Default is 6 months. - */ - $admin_email_check_interval = (int) apply_filters( 'admin_email_check_interval', 6 * MONTH_IN_SECONDS ); - - if ( $admin_email_check_interval > 0 ) { - update_option( 'admin_email_lifespan', time() + $admin_email_check_interval ); - } - - wp_safe_redirect( $redirect_to ); - exit; - } - - login_header( __( 'Confirm your administration email' ), '', $errors ); - - /** - * Fires before the admin email confirm form. - * - * @since 5.3.0 - * - * @param WP_Error $errors A `WP_Error` object containing any errors generated by using invalid - * credentials. Note that the error object may not contain any errors. - */ - do_action( 'admin_email_confirm', $errors ); - - ?> - -
        - - - -

        - -

        -

        - administration email for this website is still correct.' ); ?> - %s', - /* translators: Hidden accessibility text. */ - __( '(opens in a new tab)' ) - ); - - printf( - '%s%s', - esc_url( $admin_email_help_url ), - __( 'Why is this important?' ), - $accessibility_text - ); - - ?> -

        -

        - ' . esc_html( $admin_email ) . '' - ); - - ?> -

        -

        - -

        - -
        -
        - - - -
        - 0 ) : ?> -
        - 'confirm_admin_email', - 'remind_me_later' => wp_create_nonce( 'remind_me_later_nonce' ), - ), - $remind_me_link - ); - - ?> - -
        - -
        -
        - - HashPassword( wp_unslash( $_POST['post_password'] ) ), $expire, COOKIEPATH, COOKIE_DOMAIN, $secure ); + if ( $switched_locale ) { + restore_previous_locale(); + } + wp_safe_redirect( wp_get_referer() ); exit; @@ -726,28 +396,24 @@ function wp_login_viewport_meta() { $redirect_to = $_REQUEST['redirect_to']; $requested_redirect_to = $redirect_to; } else { - $redirect_to = add_query_arg( - array( - 'loggedout' => 'true', - 'wp_lang' => get_user_locale( $user ), - ), - wp_login_url() - ); - + $redirect_to = 'wp-login.php?loggedout=true'; $requested_redirect_to = ''; } + if ( $switched_locale ) { + restore_previous_locale(); + } + /** * Filters the log out redirect URL. * - * @since 4.2.0 + * @since WP-4.2.0 * * @param string $redirect_to The redirect destination URL. * @param string $requested_redirect_to The requested redirect destination URL passed as a parameter. * @param WP_User $user The WP_User object for the user that's logging out. */ $redirect_to = apply_filters( 'logout_redirect', $redirect_to, $requested_redirect_to, $user ); - wp_safe_redirect( $redirect_to ); exit; @@ -755,7 +421,6 @@ function wp_login_viewport_meta() { case 'retrievepassword': if ( $http_post ) { $errors = retrieve_password(); - if ( ! is_wp_error( $errors ) ) { $redirect_to = ! empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : 'wp-login.php?checkemail=confirm'; wp_safe_redirect( $redirect_to ); @@ -764,10 +429,10 @@ function wp_login_viewport_meta() { } if ( isset( $_GET['error'] ) ) { - if ( 'invalidkey' === $_GET['error'] ) { - $errors->add( 'invalidkey', __( 'Error: Your password reset link appears to be invalid. Please request a new link below.' ) ); - } elseif ( 'expiredkey' === $_GET['error'] ) { - $errors->add( 'expiredkey', __( 'Error: Your password reset link has expired. Please request a new link below.' ) ); + if ( 'invalidkey' == $_GET['error'] ) { + $errors->add( 'invalidkey', __( 'Your password reset link appears to be invalid. Please request a new link below.' ) ); + } elseif ( 'expiredkey' == $_GET['error'] ) { + $errors->add( 'expiredkey', __( 'Your password reset link has expired. Please request a new link below.' ) ); } } @@ -775,7 +440,7 @@ function wp_login_viewport_meta() { /** * Filters the URL redirected to after submitting the lostpassword/retrievepassword form. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $lostpassword_redirect The redirect destination URL. */ @@ -784,15 +449,11 @@ function wp_login_viewport_meta() { /** * Fires before the lost password form. * - * @since 1.5.1 - * @since 5.1.0 Added the `$errors` parameter. - * - * @param WP_Error $errors A `WP_Error` object containing any errors generated by using invalid - * credentials. Note that the error object may not contain any errors. + * @since WP-1.5.1 */ - do_action( 'lost_password', $errors ); + do_action( 'lost_password' ); - login_header( __( 'Lost Password' ), '

        ' . __( 'Please enter your username or email address. You will receive an email message with instructions on how to reset your password.' ) . '

        ', $errors ); + login_header( __( 'Lost Password' ), '

        ' . __( 'Please enter your username or email address. You will receive a link to create a new password via email.' ) . '

        ', $errors ); $user_login = ''; @@ -802,65 +463,60 @@ function wp_login_viewport_meta() { ?> -
        -

        - - -

        - - -

        - -

        -
        - -

        + +

        + + +

        + - if ( get_option( 'users_can_register' ) ) { - $registration_url = sprintf( '%s', esc_url( wp_registration_url() ), __( 'Register' ) ); + - ?> -

        get_error_code() === 'expired_key' ) { wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=expiredkey' ) ); } else { wp_redirect( site_url( 'wp-login.php?action=lostpassword&error=invalidkey' ) ); } - exit; } $errors = new WP_Error(); - // Check if password is one or all empty spaces. - if ( ! empty( $_POST['pass1'] ) ) { - $_POST['pass1'] = trim( $_POST['pass1'] ); - - if ( empty( $_POST['pass1'] ) ) { - $errors->add( 'password_reset_empty_space', __( 'The password cannot be a space or all spaces.' ) ); - } - } - - // Check if password fields do not match. - if ( ! empty( $_POST['pass1'] ) && trim( $_POST['pass2'] ) !== $_POST['pass1'] ) { - $errors->add( 'password_reset_mismatch', __( 'Error: The passwords do not match.' ) ); + if ( isset( $_POST['pass1'] ) && $_POST['pass1'] != $_POST['pass2'] ) { + $errors->add( 'password_reset_mismatch', __( 'The passwords do not match.' ) ); } /** * Fires before the password reset procedure is validated. * - * @since 3.5.0 + * @since WP-3.5.0 * - * @param WP_Error $errors WP Error object. + * @param object $errors WP Error object. * @param WP_User|WP_Error $user WP_User object if the login and reset key match. WP_Error object otherwise. */ do_action( 'validate_password_reset', $errors, $user ); - if ( ( ! $errors->has_errors() ) && isset( $_POST['pass1'] ) && ! empty( $_POST['pass1'] ) ) { + if ( ( ! $errors->get_error_code() ) && isset( $_POST['pass1'] ) && ! empty( $_POST['pass1'] ) ) { reset_password( $user, $_POST['pass1'] ); setcookie( $rp_cookie, ' ', time() - YEAR_IN_SECONDS, $rp_path, COOKIE_DOMAIN, is_ssl(), true ); login_header( __( 'Password Reset' ), '

        ' . __( 'Your password has been reset.' ) . ' ' . __( 'Log in' ) . '

        ' ); @@ -917,76 +561,77 @@ function wp_login_viewport_meta() { wp_enqueue_script( 'utils' ); wp_enqueue_script( 'user-profile' ); - login_header( __( 'Reset Password' ), '

        ' . __( 'Enter your new password below or generate one.' ) . '

        ', $errors ); + login_header( __( 'Reset Password' ), '

        ' . __( 'Enter your new password below.' ) . '

        ', $errors ); ?> -
        - - -
        -

        - -

        - -
        - - - -
        -
        -
        - - -
        -
        - -

        - - -

        + + -

        -
        - - +

        + +

        - /** - * Fires following the 'Strength indicator' meter in the user password reset form. - * - * @since 3.9.0 - * - * @param WP_User $user User object of the user whose password is being reset. - */ - do_action( 'resetpass_form', $user ); +
        +
        + + + + +
        +
        +
        +
        + +
        +
        + +

        +
        + +

        + +

        +
        - ?> - -

        - - -

        - - -

        + - if ( get_option( 'users_can_register' ) ) { - $registration_url = sprintf( '%s', esc_url( wp_registration_url() ), __( 'Register' ) ); + - ?> -

        ' . __( 'Register For This Site' ) . '

        ', $errors ); - ?> -
        -

        - - -

        -

        - - -

        - -

        - -

        -
        - -

        - -

        -
        - - +
        +

        + +

        +

        + +

        +

        +
        + +

        +
        + + + add( - 'confirm', - sprintf( - /* translators: %s: Link to the login page. */ - __( 'Check your email for the confirmation link, then visit the login page.' ), - wp_login_url() - ), - 'message' - ); - } elseif ( 'registered' === $_GET['checkemail'] ) { - $errors->add( - 'registered', - sprintf( - /* translators: %s: Link to the login page. */ - __( 'Registration complete. Please check your email, then visit the login page.' ), - wp_login_url() - ), - 'message' - ); + if ( $switched_locale ) { + restore_previous_locale(); } - /** This action is documented in wp-login.php */ - $errors = apply_filters( 'wp_login_errors', $errors, $redirect_to ); - - login_header( __( 'Check your email' ), '', $errors ); - login_footer(); break; case 'confirmaction': if ( ! isset( $_GET['request_id'] ) ) { - wp_die( __( 'Missing request ID.' ) ); - } - - if ( ! isset( $_GET['confirm_key'] ) ) { - wp_die( __( 'Missing confirm key.' ) ); + wp_die( __( 'Invalid request.' ) ); } $request_id = (int) $_GET['request_id']; - $key = sanitize_text_field( wp_unslash( $_GET['confirm_key'] ) ); - $result = wp_validate_user_request_key( $request_id, $key ); + + if ( isset( $_GET['confirm_key'] ) ) { + $key = sanitize_text_field( wp_unslash( $_GET['confirm_key'] ) ); + $result = wp_validate_user_request_key( $request_id, $key ); + } else { + $result = new WP_Error( 'invalid_key', __( 'Invalid key' ) ); + } if ( is_wp_error( $result ) ) { wp_die( $result ); @@ -1151,8 +748,6 @@ function wp_login_viewport_meta() { * After firing this action hook the page will redirect to wp-login a callback * redirects or exits first. * - * @since 4.9.6 - * * @param int $request_id Request ID. */ do_action( 'user_request_action_confirmed', $request_id ); @@ -1167,14 +762,13 @@ function wp_login_viewport_meta() { default: $secure_cookie = ''; $customize_login = isset( $_REQUEST['customize-login'] ); - if ( $customize_login ) { wp_enqueue_script( 'customize-base' ); } - // If the user wants SSL but the session is not SSL, force a secure cookie. + // If the user wants ssl but the session is not ssl, force a secure cookie. if ( ! empty( $_POST['log'] ) && ! force_ssl_admin() ) { - $user_name = sanitize_user( wp_unslash( $_POST['log'] ) ); + $user_name = sanitize_user( $_POST['log'] ); $user = get_user_by( 'login', $user_name ); if ( ! $user && strpos( $user_name, '@' ) ) { @@ -1191,7 +785,7 @@ function wp_login_viewport_meta() { if ( isset( $_REQUEST['redirect_to'] ) ) { $redirect_to = $_REQUEST['redirect_to']; - // Redirect to HTTPS if user wants SSL. + // Redirect to https if user wants ssl if ( $secure_cookie && false !== strpos( $redirect_to, 'wp-admin' ) ) { $redirect_to = preg_replace( '|^http://|', 'https://', $redirect_to ); } @@ -1205,23 +799,23 @@ function wp_login_viewport_meta() { if ( empty( $_COOKIE[ LOGGED_IN_COOKIE ] ) ) { if ( headers_sent() ) { + /* translators: 1: Browser cookie documentation URL, 2: Support forums URL */ $user = new WP_Error( 'test_cookie', sprintf( - /* translators: 1: Browser cookie documentation URL, 2: Support forums URL. */ - __( 'Error: Cookies are blocked due to unexpected output. For help, please see this documentation or try the support forums.' ), - __( 'https://wordpress.org/documentation/article/cookies/' ), + __( 'ERROR: Cookies are blocked due to unexpected output. For help, please see this documentation or try the support forums.' ), + __( 'https://codex.wordpress.org/Cookies' ), __( 'https://forums.classicpress.net/c/support' ) ) ); } elseif ( isset( $_POST['testcookie'] ) && empty( $_COOKIE[ TEST_COOKIE ] ) ) { - // If cookies are disabled, the user can't log in even with a valid username and password. + // If cookies are disabled we can't log in even with a valid user+pass + /* translators: 1: Browser cookie documentation URL */ $user = new WP_Error( 'test_cookie', sprintf( - /* translators: %s: Browser cookie documentation URL. */ - __( 'Error: Cookies are blocked or not supported by your browser. You must enable cookies to use ClassicPress.' ), - __( 'https://wordpress.org/documentation/article/cookies/#enable-cookies-in-your-browser' ) + __( 'ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use ClassicPress.' ), + __( 'https://codex.wordpress.org/Cookies' ) ) ); } @@ -1231,7 +825,7 @@ function wp_login_viewport_meta() { /** * Filters the login redirect URL. * - * @since 3.0.0 + * @since WP-3.0.0 * * @param string $redirect_to The redirect destination URL. * @param string $requested_redirect_to The requested redirect destination URL passed as a parameter. @@ -1244,48 +838,20 @@ function wp_login_viewport_meta() { $message = '

        ' . __( 'You have logged in successfully.' ) . '

        '; $interim_login = 'success'; login_header( '', $message ); - ?> -
        +
        - - - + + + + exists() && $user->has_cap( 'manage_options' ) ) { - $admin_email_lifespan = (int) get_option( 'admin_email_lifespan' ); - - /* - * If `0` (or anything "falsey" as it is cast to int) is returned, the user will not be redirected - * to the admin email confirmation screen. - */ - /** This filter is documented in wp-login.php */ - $admin_email_check_interval = (int) apply_filters( 'admin_email_check_interval', 6 * MONTH_IN_SECONDS ); - - if ( $admin_email_check_interval > 0 && time() > $admin_email_lifespan ) { - $redirect_to = add_query_arg( - array( - 'action' => 'confirm_admin_email', - 'wp_lang' => get_user_locale( $user ), - ), - wp_login_url( $redirect_to ) - ); - } - } if ( ( empty( $redirect_to ) || 'wp-admin/' === $redirect_to || admin_url() === $redirect_to ) ) { // If the user doesn't belong to a blog, send them to user admin. If the user can't edit posts, send them to their profile. @@ -1298,11 +864,10 @@ function wp_login_viewport_meta() { } wp_redirect( $redirect_to ); - exit; + exit(); } - wp_safe_redirect( $redirect_to ); - exit; + exit(); } $errors = $user; @@ -1311,50 +876,34 @@ function wp_login_viewport_meta() { $errors = new WP_Error(); } - if ( empty( $_POST ) && $errors->get_error_codes() === array( 'empty_username', 'empty_password' ) ) { - $errors = new WP_Error( '', '' ); - } - if ( $interim_login ) { - if ( ! $errors->has_errors() ) { + if ( ! $errors->get_error_code() ) { $errors->add( 'expired', __( 'Your session has expired. Please log in to continue where you left off.' ), 'message' ); } } else { - // Some parts of this script use the main login form to display a message. - if ( isset( $_GET['loggedout'] ) && $_GET['loggedout'] ) { + // Some parts of this script use the main login form to display a message + 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', __( 'Error: User registration is currently not allowed.' ) ); + } elseif ( isset( $_GET['registration'] ) && 'disabled' == $_GET['registration'] ) { + $errors->add( 'registerdisabled', __( 'User registration is currently not allowed.' ) ); + } elseif ( isset( $_GET['checkemail'] ) && 'confirm' == $_GET['checkemail'] ) { + $errors->add( 'confirm', __( 'Check your email for the confirmation link.' ), 'message' ); + } elseif ( isset( $_GET['checkemail'] ) && 'newpass' == $_GET['checkemail'] ) { + $errors->add( 'newpass', __( 'Check your email for your new password.' ), 'message' ); + } elseif ( isset( $_GET['checkemail'] ) && 'registered' == $_GET['checkemail'] ) { + $errors->add( 'registered', __( 'Registration complete. Please check your email.' ), 'message' ); } elseif ( strpos( $redirect_to, 'about.php?updated' ) ) { $errors->add( 'updated', __( 'You have successfully updated ClassicPress! Please log back in to see what’s new.' ), 'message' ); - } elseif ( WP_Recovery_Mode_Link_Service::LOGIN_ACTION_ENTERED === $action ) { - $errors->add( 'enter_recovery_mode', __( 'Recovery Mode Initialized. Please log in to continue.' ), 'message' ); - } elseif ( isset( $_GET['redirect_to'] ) && false !== strpos( $_GET['redirect_to'], 'wp-admin/authorize-application.php' ) ) { - $query_component = wp_parse_url( $_GET['redirect_to'], PHP_URL_QUERY ); - $query = array(); - if ( $query_component ) { - parse_str( $query_component, $query ); - } - - if ( ! empty( $query['app_name'] ) ) { - /* translators: 1: Website name, 2: Application name. */ - $message = sprintf( 'Please log in to %1$s to authorize %2$s to connect to your account.', get_bloginfo( 'name', 'display' ), '' . esc_html( $query['app_name'] ) . '' ); - } else { - /* translators: %s: Website name. */ - $message = sprintf( 'Please log in to %s to proceed with authorization.', get_bloginfo( 'name', 'display' ) ); - } - - $errors->add( 'authorize_application', $message, 'message' ); } } /** * Filters the login page errors. * - * @since 3.6.0 + * @since WP-3.6.0 * - * @param WP_Error $errors WP Error object. - * @param string $redirect_to Redirect destination URL. + * @param object $errors WP Error object. + * @param string $redirect_to Redirect destination URL. */ $errors = apply_filters( 'wp_login_errors', $errors, $redirect_to ); @@ -1366,165 +915,120 @@ function wp_login_viewport_meta() { login_header( __( 'Log In' ), '', $errors ); if ( isset( $_POST['log'] ) ) { - $user_login = ( 'incorrect_password' === $errors->get_error_code() || 'empty_password' === $errors->get_error_code() ) ? esc_attr( wp_unslash( $_POST['log'] ) ) : ''; + $user_login = ( 'incorrect_password' == $errors->get_error_code() || 'empty_password' == $errors->get_error_code() ) ? esc_attr( wp_unslash( $_POST['log'] ) ) : ''; } - $rememberme = ! empty( $_POST['rememberme'] ); - $aria_describedby = ''; - $has_errors = $errors->has_errors(); - - if ( $has_errors ) { - $aria_describedby = ' aria-describedby="login_error"'; - } - - if ( $has_errors && 'message' === $errors->get_error_data() ) { - $aria_describedby = ' aria-describedby="login-message"'; + if ( ! empty( $errors->errors ) ) { + $aria_describedby_error = ' aria-describedby="login_error"'; + } else { + $aria_describedby_error = ''; } - - wp_enqueue_script( 'user-profile' ); ?> -
        -

        - - class="input" value="" size="20" autocapitalize="off" autocomplete="username"> -

        - -
        - -
        - class="input password-input" value="" size="20" autocomplete="current-password" spellcheck="false"> - -
        -
        - -

        >

        -

        - - - - - - - - - -

        -
        - +
        +

        + +

        +

        + +

        -

        +

        + + + + + + + + + + +

        +
        + + + - "> + +

        + - if ( $errors->get_error_code() === 'invalid_username' ) { - $login_script .= 'd.value = "";'; + - ?> - - - quit(); - wp_die( __( 'There does not seem to be any new mail.' ) ); + wp_die( __( 'There doesn’t seem to be any new mail.' ) ); } // Always run as an unauthenticated user. @@ -80,9 +80,6 @@ $content_transfer_encoding = ''; $post_author = 1; $author_found = false; - $post_date = null; - $post_date_gmt = null; - foreach ( $message as $line ) { // Body signal. if ( strlen( $line ) < 3 ) { @@ -107,7 +104,7 @@ $content_transfer_encoding = explode( ';', $content_transfer_encoding ); $content_transfer_encoding = $content_transfer_encoding[0]; } - if ( ( 'multipart/alternative' === $content_type ) && ( false !== strpos( $line, 'boundary="' ) ) && ( '' === $boundary ) ) { + if ( ( $content_type == 'multipart/alternative' ) && ( false !== strpos( $line, 'boundary="' ) ) && ( '' == $boundary ) ) { $boundary = trim( $line ); $boundary = explode( '"', $boundary ); $boundary = $boundary[1]; @@ -115,7 +112,7 @@ if ( preg_match( '/Subject: /i', $line ) ) { $subject = trim( $line ); $subject = substr( $subject, 9, strlen( $subject ) - 9 ); - // Captures any text in the subject before $phone_delim as the subject. + // Captures any text in the subject before $phone_delim as the subject if ( function_exists( 'iconv_mime_decode' ) ) { $subject = iconv_mime_decode( $subject, 2, get_option( 'blog_charset' ) ); } else { @@ -145,18 +142,17 @@ } } - if ( preg_match( '/Date: /i', $line ) ) { // Of the form '20 Mar 2002 20:32:37 +0100'. - $ddate = str_replace( 'Date: ', '', trim( $line ) ); - // Remove parenthesized timezone string if it exists, as this confuses strtotime(). - $ddate = preg_replace( '!\s*\(.+\)\s*$!', '', $ddate ); - $ddate_timestamp = strtotime( $ddate ); - $post_date = gmdate( 'Y-m-d H:i:s', $ddate_timestamp + $time_difference ); - $post_date_gmt = gmdate( 'Y-m-d H:i:s', $ddate_timestamp ); + if ( preg_match( '/Date: /i', $line ) ) { // of the form '20 Mar 2002 20:32:37 +0100' + $ddate = str_replace( 'Date: ', '', trim( $line ) ); + $ddate = preg_replace( '!\s*\(.+\)\s*$!', '', $ddate ); // remove parenthesised timezone string if it exists, as this confuses strtotime + $ddate_U = strtotime( $ddate ); + $post_date = gmdate( 'Y-m-d H:i:s', $ddate_U + $time_difference ); + $post_date_gmt = gmdate( 'Y-m-d H:i:s', $ddate_U ); } } } - // Set $post_status based on $author_found and on author's publish_posts capability. + // Set $post_status based on $author_found and on author's publish_posts capability if ( $author_found ) { $user = new WP_User( $post_author ); $post_status = ( $user->has_cap( 'publish_posts' ) ) ? 'publish' : 'pending'; @@ -167,11 +163,11 @@ $subject = trim( $subject ); - if ( 'multipart/alternative' === $content_type ) { + if ( $content_type == 'multipart/alternative' ) { $content = explode( '--' . $boundary, $content ); $content = $content[2]; - // Match case-insensitive Content-Transfer-Encoding. + // Match case-insensitive content-transfer-encoding. if ( preg_match( '/Content-Transfer-Encoding: quoted-printable/i', $content, $delim ) ) { $content = explode( $delim[0], $content ); $content = $content[1]; @@ -186,7 +182,7 @@ * Give Post-By-Email extending plugins full access to the content, either * the raw content, or the content of the last quoted-printable section. * - * @since 2.8.0 + * @since WP-2.8.0 * * @param string $content The original email content. */ @@ -200,7 +196,7 @@ $content = iconv( $charset, get_option( 'blog_charset' ), $content ); } - // Captures any text in the body after $phone_delim as the body. + // Captures any text in the body after $phone_delim as the body $content = explode( $phone_delim, $content ); $content = empty( $content[1] ) ? $content[0] : $content[1]; @@ -209,7 +205,7 @@ /** * Filters the content of the post submitted by email before saving. * - * @since 1.2.0 + * @since WP-1.2.0 * * @param string $content The email content. */ @@ -217,7 +213,7 @@ $post_title = xmlrpc_getposttitle( $content ); - if ( '' === trim( $post_title ) ) { + if ( $post_title == '' ) { $post_title = $subject; } @@ -231,7 +227,7 @@ echo "\n" . $post_ID->get_error_message(); } - // The post wasn't inserted or updated, for whatever reason. Better move forward to the next email. + // We couldn't post, for whatever reason. Better move forward to the next email. if ( empty( $post_ID ) ) { continue; } @@ -239,7 +235,7 @@ /** * Fires after a post submitted by email is published. * - * @since 1.2.0 + * @since WP-1.2.0 * * @param int $post_ID The post ID. */ @@ -250,7 +246,7 @@ if ( ! $pop3->delete( $i ) ) { echo '

        ' . sprintf( - /* translators: %s: POP3 error. */ + /* translators: %s: POP3 error */ __( 'Oops: %s' ), esc_html( $pop3->ERROR ) ) . '

        '; @@ -258,7 +254,7 @@ exit; } else { echo '

        ' . sprintf( - /* translators: %s: The message ID. */ + /* translators: %s: the message ID */ __( 'Mission complete. Message %s deleted.' ), '' . $i . '' ) . '

        '; diff --git a/wp-settings.php b/wp-settings.php index e0c079e..9f81150 100644 --- a/wp-settings.php +++ b/wp-settings.php @@ -11,57 +11,37 @@ /** * Stores the location of the ClassicPress directory of functions, classes, and core content. * - * @since 1.0.0 + * @since WP-1.0.0 */ define( 'WPINC', 'wp-includes' ); -/** - * Version information for the current WordPress release. - * +// Include files required for initialization. +require ABSPATH . WPINC . '/load.php'; +require ABSPATH . WPINC . '/default-constants.php'; +require_once ABSPATH . WPINC . '/plugin.php'; + +/* * These can't be directly globalized in version.php. When updating, - * include version.php from another installation and don't override - * these values if already set. - * - * @global string $wp_version The WordPress version string. - * @global int $wp_db_version WordPress database version. - * @global string $tinymce_version TinyMCE version. - * @global string $required_php_version The required PHP version string. - * @global string $required_mysql_version The required MySQL version string. - * @global string $wp_local_package Locale code of the package. + * we're including version.php from another installation and don't want + * these values to be overridden if already set. */ global $wp_version, $wp_db_version, $tinymce_version, $required_php_version, $required_mysql_version, $wp_local_package; require ABSPATH . WPINC . '/version.php'; -require ABSPATH . WPINC . '/load.php'; - -// Check for the required PHP version and for the MySQL extension or a database drop-in. -wp_check_php_mysql_versions(); - -// Include files required for initialization. -require ABSPATH . WPINC . '/class-wp-paused-extensions-storage.php'; -require ABSPATH . WPINC . '/class-wp-fatal-error-handler.php'; -require ABSPATH . WPINC . '/class-wp-recovery-mode-cookie-service.php'; -require ABSPATH . WPINC . '/class-wp-recovery-mode-key-service.php'; -require ABSPATH . WPINC . '/class-wp-recovery-mode-link-service.php'; -require ABSPATH . WPINC . '/class-wp-recovery-mode-email-service.php'; -require ABSPATH . WPINC . '/class-wp-recovery-mode.php'; -require ABSPATH . WPINC . '/error-protection.php'; -require ABSPATH . WPINC . '/default-constants.php'; -require_once ABSPATH . WPINC . '/plugin.php'; /** * If not already configured, `$blog_id` will default to 1 in a single site * configuration. In multisite, it will be overridden by default in ms-settings.php. * * @global int $blog_id - * @since 2.0.0 + * @since WP-2.0.0 */ global $blog_id; // Set initial default constants including WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT, WP_DEBUG, SCRIPT_DEBUG, WP_CONTENT_DIR and WP_CACHE. wp_initial_constants(); -// Register the shutdown handler for fatal errors as soon as possible. -wp_register_fatal_error_handler(); +// Check for the required PHP version and for the MySQL extension or a database drop-in. +wp_check_php_mysql_versions(); // ClassicPress calculates offsets from UTC. // phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set @@ -70,13 +50,16 @@ // Standardize $_SERVER variables across setups. wp_fix_server_vars(); -// Check if the site is in maintenance mode. +// Check if we have received a request due to missing favicon.ico +wp_favicon_request(); + +// Check if we're in maintenance mode. wp_maintenance(); // Start loading timer. timer_start(); -// Check if WP_DEBUG mode is enabled. +// Check if we're in WP_DEBUG mode. wp_debug_mode(); /** @@ -85,7 +68,7 @@ * This filter runs before it can be used by plugins. It is designed for non-web * run-times. If false is returned, advanced-cache.php will never be loaded. * - * @since 4.6.0 + * @since WP-4.6.0 * * @param bool $enable_advanced_cache Whether to enable loading advanced-cache.php (if present). * Default true. @@ -94,7 +77,7 @@ // For an advanced caching plugin to use. Uses a static drop-in because you would only want one. include WP_CONTENT_DIR . '/advanced-cache.php'; - // Re-initialize any hooks added manually by advanced-cache.php. + // Re-initialize any hooks added manually by advanced-cache.php if ( $wp_filter ) { $wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter ); } @@ -106,21 +89,14 @@ // Load early ClassicPress files. require ABSPATH . WPINC . '/compat.php'; require ABSPATH . WPINC . '/class-wp-list-util.php'; -require ABSPATH . WPINC . '/formatting.php'; -require ABSPATH . WPINC . '/meta.php'; require ABSPATH . WPINC . '/functions.php'; -require ABSPATH . WPINC . '/class-wp-meta-query.php'; require ABSPATH . WPINC . '/class-wp-matchesmapregex.php'; require ABSPATH . WPINC . '/class-wp.php'; require ABSPATH . WPINC . '/class-wp-error.php'; require ABSPATH . WPINC . '/pomo/mo.php'; -/** - * @global wpdb $wpdb WordPress database abstraction object. - * @since 0.71 - */ -global $wpdb; // Include the wpdb class and, if present, a db.php database drop-in. +global $wpdb; require_wp_db(); // Set the database table prefix and the format specifiers for database table columns. @@ -145,14 +121,13 @@ register_shutdown_function( 'shutdown_action_hook' ); -// Stop most of ClassicPress from being loaded if SHORTINIT is enabled. +// Stop most of ClassicPress from being loaded if we just want the basics. if ( SHORTINIT ) { return false; } // Load the L10n library. require_once ABSPATH . WPINC . '/l10n.php'; -require_once ABSPATH . WPINC . '/class-wp-textdomain-registry.php'; require_once ABSPATH . WPINC . '/class-wp-locale.php'; require_once ABSPATH . WPINC . '/class-wp-locale-switcher.php'; @@ -162,6 +137,7 @@ // Load most of ClassicPress. require ABSPATH . WPINC . '/class-wp-walker.php'; require ABSPATH . WPINC . '/class-wp-ajax-response.php'; +require ABSPATH . WPINC . '/formatting.php'; require ABSPATH . WPINC . '/capabilities.php'; require ABSPATH . WPINC . '/class-wp-roles.php'; require ABSPATH . WPINC . '/class-wp-role.php'; @@ -172,17 +148,16 @@ require ABSPATH . WPINC . '/theme.php'; require ABSPATH . WPINC . '/class-wp-theme.php'; require ABSPATH . WPINC . '/template.php'; -require ABSPATH . WPINC . '/https-detection.php'; -require ABSPATH . WPINC . '/https-migration.php'; -require ABSPATH . WPINC . '/class-wp-user-request.php'; require ABSPATH . WPINC . '/user.php'; require ABSPATH . WPINC . '/class-wp-user-query.php'; require ABSPATH . WPINC . '/class-wp-session-tokens.php'; require ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php'; +require ABSPATH . WPINC . '/meta.php'; +require ABSPATH . WPINC . '/class-wp-meta-query.php'; +require ABSPATH . WPINC . '/class-wp-metadata-lazyloader.php'; require ABSPATH . WPINC . '/general-template.php'; require ABSPATH . WPINC . '/link-template.php'; require ABSPATH . WPINC . '/author-template.php'; -require ABSPATH . WPINC . '/robots-template.php'; require ABSPATH . WPINC . '/post.php'; require ABSPATH . WPINC . '/class-walker-page.php'; require ABSPATH . WPINC . '/class-walker-page-dropdown.php'; @@ -224,7 +199,7 @@ require ABSPATH . WPINC . '/class-wp-oembed-controller.php'; require ABSPATH . WPINC . '/media.php'; require ABSPATH . WPINC . '/http.php'; -require ABSPATH . WPINC . '/class-wp-http.php'; +require ABSPATH . WPINC . '/class-http.php'; require ABSPATH . WPINC . '/class-wp-http-streams.php'; require ABSPATH . WPINC . '/class-wp-http-curl.php'; require ABSPATH . WPINC . '/class-wp-http-proxy.php'; @@ -236,10 +211,9 @@ require ABSPATH . WPINC . '/widgets.php'; require ABSPATH . WPINC . '/class-wp-widget.php'; require ABSPATH . WPINC . '/class-wp-widget-factory.php'; -require ABSPATH . WPINC . '/nav-menu-template.php'; require ABSPATH . WPINC . '/nav-menu.php'; +require ABSPATH . WPINC . '/nav-menu-template.php'; require ABSPATH . WPINC . '/admin-bar.php'; -require ABSPATH . WPINC . '/class-wp-application-passwords.php'; require ABSPATH . WPINC . '/rest-api.php'; require ABSPATH . WPINC . '/rest-api/class-wp-rest-server.php'; require ABSPATH . WPINC . '/rest-api/class-wp-rest-response.php'; @@ -250,60 +224,22 @@ require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-types-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-statuses-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-revisions-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-autosaves-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-taxonomies-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-terms-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-menu-items-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-menus-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-menu-locations-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-users-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-comments-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-search-controller.php'; require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-settings-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-themes-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-plugins-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-application-passwords-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-site-health-controller.php'; -require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-sidebars-controller.php'; require ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-meta-fields.php'; require ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-comment-meta-fields.php'; require ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-post-meta-fields.php'; require ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-term-meta-fields.php'; require ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-user-meta-fields.php'; -require ABSPATH . WPINC . '/rest-api/search/class-wp-rest-search-handler.php'; -require ABSPATH . WPINC . '/rest-api/search/class-wp-rest-post-search-handler.php'; -require ABSPATH . WPINC . '/rest-api/search/class-wp-rest-term-search-handler.php'; -require ABSPATH . WPINC . '/rest-api/search/class-wp-rest-post-format-search-handler.php'; -require ABSPATH . WPINC . '/sitemaps.php'; -require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps.php'; -require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-index.php'; -require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-provider.php'; -require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-registry.php'; -require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-renderer.php'; -require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-stylesheet.php'; -require ABSPATH . WPINC . '/sitemaps/providers/class-wp-sitemaps-posts.php'; -require ABSPATH . WPINC . '/sitemaps/providers/class-wp-sitemaps-taxonomies.php'; -require ABSPATH . WPINC . '/sitemaps/providers/class-wp-sitemaps-users.php'; -if ( 0 !== (int) get_option( 'blocks_compatibility_level', 1 ) ) { - require ABSPATH . WPINC . '/classicpress/class-wp-compat.php'; -} if ( defined( 'WP_CLI' ) && WP_CLI ) { require ABSPATH . WPINC . '/class-fix-wpcli.php'; } $GLOBALS['wp_embed'] = new WP_Embed(); -/** - * WordPress Textdomain Registry object. - * - * Used to support just-in-time translations for manually loaded text domains. - * - * @since 6.1.0 - * - * @global WP_Textdomain_Registry $wp_textdomain_registry WordPress Textdomain Registry. - */ -$GLOBALS['wp_textdomain_registry'] = new WP_Textdomain_Registry(); - // Load multisite-specific files. if ( is_multisite() ) { require ABSPATH . WPINC . '/ms-functions.php'; @@ -319,46 +255,23 @@ // Load must-use plugins. foreach ( wp_get_mu_plugins() as $mu_plugin ) { - $_wp_plugin_file = $mu_plugin; include_once $mu_plugin; - $mu_plugin = $_wp_plugin_file; // Avoid stomping of the $mu_plugin variable in a plugin. - - /** - * Fires once a single must-use plugin has loaded. - * - * @since 5.1.0 - * - * @param string $mu_plugin Full path to the plugin's main file. - */ - do_action( 'mu_plugin_loaded', $mu_plugin ); } -unset( $mu_plugin, $_wp_plugin_file ); +unset( $mu_plugin ); // Load network activated plugins. if ( is_multisite() ) { foreach ( wp_get_active_network_plugins() as $network_plugin ) { wp_register_plugin_realpath( $network_plugin ); - - $_wp_plugin_file = $network_plugin; include_once $network_plugin; - $network_plugin = $_wp_plugin_file; // Avoid stomping of the $network_plugin variable in a plugin. - - /** - * Fires once a single network-activated plugin has loaded. - * - * @since 5.1.0 - * - * @param string $network_plugin Full path to the plugin's main file. - */ - do_action( 'network_plugin_loaded', $network_plugin ); } - unset( $network_plugin, $_wp_plugin_file ); + unset( $network_plugin ); } /** * Fires once all must-use and network-activated plugins have loaded. * - * @since 2.8.0 + * @since WP-2.8.0 */ do_action( 'muplugins_loaded' ); @@ -369,7 +282,7 @@ // Define constants after multisite is loaded. wp_cookie_constants(); -// Define and enforce our SSL constants. +// Define and enforce our SSL constants wp_ssl_constants(); // Create common globals. @@ -382,32 +295,15 @@ wp_start_scraping_edited_file_errors(); -// Register the default theme directory root. +// Register the default theme directory root register_theme_directory( get_theme_root() ); -if ( ! is_multisite() && wp_is_fatal_error_handler_enabled() ) { - // Handle users requesting a recovery mode link and initiating recovery mode. - wp_recovery_mode()->initialize(); -} - // Load active plugins. foreach ( wp_get_active_and_valid_plugins() as $plugin ) { wp_register_plugin_realpath( $plugin ); - - $_wp_plugin_file = $plugin; include_once $plugin; - $plugin = $_wp_plugin_file; // Avoid stomping of the $plugin variable in a plugin. - - /** - * Fires once a single activated plugin has loaded. - * - * @since 5.1.0 - * - * @param string $plugin Full path to the plugin's main file. - */ - do_action( 'plugin_loaded', $plugin ); } -unset( $plugin, $_wp_plugin_file ); +unset( $plugin ); // Load pluggable functions. require ABSPATH . WPINC . '/pluggable.php'; @@ -426,76 +322,70 @@ * * Pluggable functions are also available at this point in the loading order. * - * @since 1.5.0 + * @since WP-1.5.0 */ do_action( 'plugins_loaded' ); // Define constants which affect functionality if not already defined. wp_functionality_constants(); -// Add magic quotes and set up $_REQUEST ( $_GET + $_POST ). +// Add magic quotes and set up $_REQUEST ( $_GET + $_POST ) wp_magic_quotes(); /** * Fires when comment cookies are sanitized. * - * @since 2.0.11 + * @since WP-2.0.11 */ do_action( 'sanitize_comment_cookies' ); /** * ClassicPress Query object - * - * @global WP_Query $wp_the_query WordPress Query object. - * @since 2.0.0 + * @global WP_Query $wp_the_query + * @since WP-2.0.0 */ $GLOBALS['wp_the_query'] = new WP_Query(); /** * Holds the reference to @see $wp_the_query * Use this global for ClassicPress queries - * - * @global WP_Query $wp_query WordPress Query object. - * @since 1.5.0 + * @global WP_Query $wp_query + * @since WP-1.5.0 */ $GLOBALS['wp_query'] = $GLOBALS['wp_the_query']; /** * Holds the ClassicPress Rewrite object for creating pretty URLs - * - * @global WP_Rewrite $wp_rewrite WordPress rewrite component. - * @since 1.5.0 + * @global WP_Rewrite $wp_rewrite + * @since WP-1.5.0 */ $GLOBALS['wp_rewrite'] = new WP_Rewrite(); /** * ClassicPress Object - * - * @global WP $wp Current WordPress environment instance. - * @since 2.0.0 + * @global WP $wp + * @since WP-2.0.0 */ $GLOBALS['wp'] = new WP(); /** * ClassicPress Widget Factory Object - * * @global WP_Widget_Factory $wp_widget_factory - * @since 2.8.0 + * @since WP-2.8.0 */ $GLOBALS['wp_widget_factory'] = new WP_Widget_Factory(); /** - * WordPress User Roles - * - * @global WP_Roles $wp_roles WordPress role management object. - * @since 2.0.0 + * ClassicPress User Roles + * @global WP_Roles $wp_roles + * @since WP-2.0.0 */ $GLOBALS['wp_roles'] = new WP_Roles(); /** * Fires before the theme is loaded. * - * @since 2.6.0 + * @since WP-2.6.0 */ do_action( 'setup_theme' ); @@ -514,43 +404,38 @@ /** * ClassicPress Locale object for loading locale domain date and various strings. - * - * @global WP_Locale $wp_locale WordPress date and time locale object. - * @since 2.1.0 + * @global WP_Locale $wp_locale + * @since WP-2.1.0 */ $GLOBALS['wp_locale'] = new WP_Locale(); /** * ClassicPress Locale Switcher object for switching locales. * - * @since 4.7.0 + * @since WP-4.7.0 * - * @global WP_Locale_Switcher $wp_locale_switcher WordPress locale switcher object. + * @global WP_Locale_Switcher $wp_locale_switcher ClassicPress locale switcher object. */ $GLOBALS['wp_locale_switcher'] = new WP_Locale_Switcher(); $GLOBALS['wp_locale_switcher']->init(); // Load the functions for the active theme, for both parent and child theme if applicable. -foreach ( wp_get_active_and_valid_themes() as $theme ) { - if ( file_exists( $theme . '/functions.php' ) ) { - include $theme . '/functions.php'; +if ( ! wp_installing() || 'wp-activate.php' === $pagenow ) { + if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) ) { + include STYLESHEETPATH . '/functions.php'; + } + if ( file_exists( TEMPLATEPATH . '/functions.php' ) ) { + include TEMPLATEPATH . '/functions.php'; } } -unset( $theme ); /** * Fires after the theme is loaded. * - * @since 3.0.0 + * @since WP-3.0.0 */ do_action( 'after_setup_theme' ); -// Create an instance of WP_Site_Health so that Cron events may fire. -if ( ! class_exists( 'WP_Site_Health' ) ) { - require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php'; -} -WP_Site_Health::get_instance(); - // Set up current user. $GLOBALS['wp']->init(); @@ -563,11 +448,11 @@ * * If you wish to plug an action once WP is loaded, use the {@see 'wp_loaded'} hook below. * - * @since 1.5.0 + * @since WP-1.5.0 */ do_action( 'init' ); -// Check site status. +// Check site status if ( is_multisite() ) { $file = ms_site_check(); if ( true !== $file ) { @@ -585,6 +470,6 @@ * * @link https://codex.wordpress.org/AJAX_in_Plugins * - * @since 3.0.0 + * @since WP-3.0.0 */ do_action( 'wp_loaded' ); diff --git a/wp-signup.php b/wp-signup.php index 447c1d0..c2c79a4 100644 --- a/wp-signup.php +++ b/wp-signup.php @@ -1,11 +1,11 @@ is_404 = false; /** - * Fires before the Site Sign-up page is loaded. + * Fires before the Site Signup page is loaded. * - * @since 4.4.0 + * @since WP-4.4.0 */ do_action( 'before_signup_header' ); /** - * Prints styles for front-end Multisite Sign-up pages. + * Prints styles for front-end Multisite signup pages * - * @since MU (3.0.0) + * @since WP-MU (3.0.0) */ function wpmu_signup_stylesheet() { ?> -
        -